Агуулгын хүснэгт:

Python дахь BME280 -тай Raspberry Pi ашиглан цаг уурын станц: 6 алхам
Python дахь BME280 -тай Raspberry Pi ашиглан цаг уурын станц: 6 алхам

Видео: Python дахь BME280 -тай Raspberry Pi ашиглан цаг уурын станц: 6 алхам

Видео: Python дахь BME280 -тай Raspberry Pi ашиглан цаг уурын станц: 6 алхам
Видео: Python! Tuples 2024, Долдугаар сарын
Anonim
Image
Image
Императив тоног төхөөрөмжийн тухай хуулийн төсөл
Императив тоног төхөөрөмжийн тухай хуулийн төсөл

isith scéalaí an aimir (Цаг агаар бол сайн үлгэр зохиогч)

Дэлхийн дулаарал, уур амьсгалын өөрчлөлттэй холбоотойгоор дэлхийн цаг агаарын нөхцөл байдал тогтворгүй болж, цаг агаартай холбоотой олон тооны байгалийн гамшиг (ган гачиг, эрс тэс температур, үер, шуурга, хээрийн түймэр) хүргэж, цаг уурын станц зайлшгүй шаардлагатай мэт санагдаж байна. гэртээ муу. Та хямд эд анги, мэдрэгч ашиглан цаг агаарын станцын төслөөс үндсэн электроникийн талаар маш их зүйлийг сурч мэдэх болно. Тохируулах нь маш хялбар бөгөөд үүнийг богино хугацаанд хийх боломжгүй юм.

Алхам 1: Тоног төхөөрөмжийн тухай хуулийн төсөл

Императив тоног төхөөрөмжийн тухай хуулийн төсөл
Императив тоног төхөөрөмжийн тухай хуулийн төсөл
Императив тоног төхөөрөмжийн тухай хуулийн төсөл
Императив тоног төхөөрөмжийн тухай хуулийн төсөл
Императив тоног төхөөрөмжийн тухай хуулийн төсөл
Императив тоног төхөөрөмжийн тухай хуулийн төсөл

1. Raspberry Pi

Raspberry Pi самбар дээр гараа тавь. Raspberry Pi бол Линукс дээр ажилладаг ганц самбар бүхий компьютер юм. Raspberry Pi бол үнэхээр хямдхан, жижигхэн, олон талт, хүртээмжтэй, ажиллагаатай компьютерээр бүтээгдсэн бөгөөд сурагчдад програмчлал, програм хангамжийн үндсийг хэрэгжүүлэх боломжийг олгодог.

2. Raspberry Pi -д зориулсан I2C бамбай

INPI2 (I2C адаптер) нь Raspberry Pi 2/3 ба I²C портыг олон I2C төхөөрөмжтэй ашиглах боломжийг олгодог. Үүнийг DCUBE дэлгүүрт ашиглах боломжтой.

3. Дижитал чийгшил, даралт ба температур мэдрэгч, BME280

BME280 бол чийгшил, даралт, температур мэдрэгч бөгөөд хурдан хариу өгөх хугацаа, өндөр нарийвчлалтай байдаг. Бид энэ мэдрэгчийг DCUBE дэлгүүрээс худалдаж авсан.

4. I2C холбох кабель

Бид энд DCUBE дэлгүүрт байгаа I²C кабелийг ашигласан.

5. Микро USB кабель

Микро USB кабель Цахилгаан хангамж нь Raspberry Pi -ийг тэжээх хамгийн тохиромжтой сонголт юм.

6. EthernetCable/WiFi адаптер ашиглан интернет хандалтыг тайлбарлах

Интернэт холболтыг дотоод сүлжээнд холбогдсон Ethernet кабелиар идэвхжүүлж болно. Эсвэл та USB утасгүй гогцоо ашиглан утасгүй сүлжээнд холбогдох боломжтой бөгөөд энэ нь тохиргоог хийх шаардлагатай болно.

7. HDMI кабель (Дэлгэц ба холболтын кабель)

Аливаа HDMI/DVI дэлгэц, ямар ч ТВ нь Pi -ийн дэлгэц болж ажиллах ёстой. Эсвэл та SSH -ээр дамжуулан Pi -д алсаас хандах боломжтой бөгөөд энэ нь дэлгэцийн хэрэгцээг үгүйсгэдэг (зөвхөн дэвшилтэт хэрэглэгчид).

Алхам 2: Хэлхээний техник хангамжийн холболт

Хэлхээний техник хангамжийн холболт
Хэлхээний техник хангамжийн холболт
Хэлхээний техник хангамжийн холболт
Хэлхээний техник хангамжийн холболт

Схемийг үзүүлсэн схемийн дагуу хий. Ерөнхийдөө холболтууд нь маш энгийн. Тайвширч, дээрх заавар, зургийг дагаж мөрдөөрэй, тэгвэл танд ямар ч асуудал гарахгүй. Сурч байхдаа бид техник хангамж, програм хангамжийн талаархи электроникийн үндсийг сайтар судалж үзсэн. Бид энэ төслийн электроникийн энгийн схемийг зурахыг хүссэн. Цахим схем нь зураг төсөлтэй адил юм. Зураг төсөл боловсруулж, дизайныг анхааралтай дагаж мөрдөөрэй. Электроникийн цөөн хэдэн үндсэн ойлголт энд ашигтай байж магадгүй юм!

Raspberry Pi ба I2C бамбай холболт

Нэгдүгээрт, Raspberry Pi -ийг аваад дээр нь I²C бамбайг тавь. Shield -ийг зөөлөн дарахад бид энэ алхамыг бялуу шиг амархан хийж чадна (зургийг үзнэ үү).

Мэдрэгч ба Raspberry Pi -ийн холболт

Мэдрэгчийг аваад I²C кабелийг холбоно уу. I²C гаралт нь үргэлж I²C оролттой холбогдсон эсэхийг шалгаарай. I²C бамбай дээр GPIO тээглүүр суурилуулсан Raspberry Pi-ийн хувьд үүнийг дагаж мөрдөх ёстой. I²C кабелийг ашиглахыг зөвлөж байна.. Энэхүү энгийн залгуур, тоглуулах кабелийн тусламжтайгаар та самбарыг хялбархан суулгаж, сольж эсвэл өөр самбар нэмж болно.

Тэмдэглэл: Хүрэн утас нь нэг төхөөрөмжийн гаралт болон өөр төхөөрөмжийн оролтын хоорондох Ground (GND) холболтыг үргэлж дагаж байх ёстой

Интернет холболт бол түлхүүр юм

Энд танд хоёр сонголт байна. Та Raspberry Pi -г Ethernet кабель ашиглан сүлжээнд холбож эсвэл WIFI холболтод USB -ээс WiFi -адаптер ашиглаж болно. Аль ч тохиолдолд, энэ нь интернетэд холбогдсон л бол танд хамрагдах болно.

Цахилгаан хэлхээг асаах

Микро USB кабелийг Raspberry Pi -ийн цахилгаан залгуурт залгаарай. Цохиж, voila! Манай баг бол мэдээлэл.

Дэлгэц рүү холбогдох

Бид HDMI кабелийг дэлгэц эсвэл телевизортой холбож болно. Нэмж дурдахад бид Raspberry Pi -ийг алсын хандалтыг ашиглан дэлгэц рүү холбохгүйгээр авах боломжтой. SSH бол алсаас аюулгүй нэвтрэх найдвартай хэрэгсэл юм. Үүний тулд та PUTTY програмыг ашиглаж болно. Энэ сонголт нь дэвшилтэт хэрэглэгчдэд зориулагдсан тул бид үүнийг энд дэлгэрэнгүй авч үзэхгүй.

Хэрэв та их мөнгө зарцуулахыг хүсэхгүй байгаа бол энэ нь хэмнэлттэй арга юм

Алхам 3: Python дээр Raspberry Pi програмчлал

Python дээр Raspberry Pi програмчлал
Python дээр Raspberry Pi програмчлал

Raspberry Pi болон BME280 мэдрэгчийн Python код. Үүнийг манай Github репозиторт ашиглах боломжтой.

Код руу орохын өмнө Readme файлд өгсөн зааврыг уншиж, үүний дагуу Raspberry Pi -ээ тохируулаарай. Цаг уурын станц нь цаг агаарын урьдчилсан мэдээ өгөх, цаг агаар, цаг уурыг судлах зориулалттай агаар мандлын нөхцлийг хэмжих багаж, тоног төхөөрөмж бүхий хуурай газар эсвэл далай дээрх байгууламж юм.

Код нь таны өмнө тодорхой байгаа бөгөөд таны төсөөлж буй хамгийн энгийн хэлбэрээр хийгдсэн бөгөөд танд ямар ч асуудал байх ёсгүй. Тийм эсэхийг асуугаарай (Та мянган зүйлийг мэддэг байсан ч мэддэг хүнээс асуугаарай).

Та энэ мэдрэгчийн Python кодыг эндээс хуулж болно.

# Чөлөөт зөвшөөрлийн лицензээр тараагдсан.# Холбогдох ажлын лицензтэй нийцэж байгаа тохиолдолд ашиг, үнэгүй ашиглах боломжтой. # BME280 # Энэхүү код нь ControlEverything.com дээрээс авах боломжтой BME280_I2CS I2C Mini модультай ажиллахад зориулагдсан болно. #

smbus импортлох

импортлох хугацаа

# I2C автобус авах

автобус = smbus. SMBus (1)

# BME280 хаяг, 0x76 (118)

# 0x88 (136), 24 байт b1 = bus.read_i2c_block_data (0x76, 0x88, 24) өгөгдлийг буцааж уншина уу.

# Өгөгдлийг хөрвүүлэх

# Темп коэффициент dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] хэрэв dig_T2> 32767 бол: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] хэрэв dig_T3> 32767 бол: dig_T3 -= 65536

# Даралтын коэффициент

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] хэрэв dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] бол dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] хэрэв dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] хэрэв dig_P5> 32767 бол: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] хэрэв dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] хэрэв dig_P7> 32767 бол: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] хэрэв dig_P8> 32767 бол: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] хэрэв dig_P9> 32767 бол: dig_P9 -= 65536

# BME280 хаяг, 0x76 (118)

# 0xA1 (161), 1 байт dig_H1 = bus.read_byte_data (0x76, 0xA1) өгөгдлийг буцааж уншина уу.

# BME280 хаяг, 0x76 (118)

# 0xE1 (225), 7 байт b1 = bus.read_i2c_block_data (0x76, 0xE1, 7) өгөгдлийг буцааж уншина уу.

# Өгөгдлийг хөрвүүлэх

# Чийглэгийн коэффициент dig_H2 = b1 [1] * 256 + b1 [0] хэрэв dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) хэрэв dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) хэрэв dig_H5> 32767 бол: dig_H5 -= 65536 dig_H6 = b1 [6] хэрэв dig_H6> 127: dig_H6 -= 256

# BME280 хаяг, 0x76 (118)

# Хяналтын чийгшлийн бүртгэлийг сонгоно уу, 0xF2 (242) # 0x01 (01) Чийгийн хэт дээж авах = 1 автобус.write_byte_data (0x76, 0xF2, 0x01) # BME280 хаяг, 0x76 (118) # Хяналтын хэмжилтийн регистрийг сонгох, 0xF4 (244) # 0x27 (39) Даралт ба температур хэт дээж авах хурд = 1 # Энгийн горим bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 хаяг, 0x76 (118) # Тохиргооны бүртгэлийг сонгох, 0xF5 (245) # 0xA0 (00) Зогсолтын хугацаа = 1000 ms автобус.write_byte_data (0x76, 0xF5, 0xA0)

цаг унтах (0.5)

# BME280 хаяг, 0x76 (118)

# 0xF7 (247), 8 байтаас өгөгдлийг буцааж унших # Даралт MSB, Pressure LSB, Pressure xLSB, Temperature MSB, Temperature LSB # Temperature xLSB, Humidity MSB, Dumidity LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Даралт ба температурын өгөгдлийг 19 бит болгон хөрвүүлэх

adc_p = ((өгөгдөл [0] * 65536) + (өгөгдөл [1] * 256) + (өгөгдөл [2] & 0xF0)) / 16 adc_t = ((өгөгдөл [3] * 65536) + (өгөгдөл [4] * 256) + (өгөгдөл [5] & 0xF0)) / 16

# Чийгийн өгөгдлийг хөрвүүлэх

adc_h = өгөгдөл [6] * 256 + өгөгдөл [7]

# Температурын офсет тооцоо

var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * [dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32

# Даралтын офсет тооцоо

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 даралт = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Чийгийг нөхөх тооцоо

var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 *))) чийгшил = var_H * (1.0 - dig_H1 * var_H / 524288.0) хэрэв чийгшил> 100.0: чийгшил = 100.0 элифийн чийгшил <0.0: чийгшил = 0.0

# Дэлгэц рүү өгөгдөл гаргана

"Цельсийн температур: %.2f C" %cTemp хэвлэх "Фаренгейт дэх температур: %.2f F" %fTemp хэвлэх "Даралт: %.2f hPa" %даралттай хэвлэх "Харьцангуй чийгшил: %.2f %%" %чийгшил

Алхам 4: Ажиллаж буй код

Ажиллаж буй код
Ажиллаж буй код

Одоо кодыг татаж аваад (эсвэл git pull) Raspberry Pi дээр нээнэ үү.

Терминал дээрх кодыг хөрвүүлэх, байршуулах командыг ажиллуулаад дэлгэц дээрх гаралтыг харна уу. Хэдэн секундын дараа бүх параметрүүдийг харуулна. Бүх зүйл үнэхээр сайн ажиллаж байгаа эсэхийг шалгасны дараа та илүү сонирхолтой зүйлийг боловсруулж болно.

Алхам 5: Практик ертөнцөд ашиглах

BME280 нь чийгшил, даралтыг хэмжих шаардлагатай бүх хэрэглээнд өндөр үзүүлэлттэй байдаг. Эдгээр шинээр гарч ирж буй програмууд нь контекстийн мэдлэг, жишээ нь. Арьс илрүүлэх, өрөөний өөрчлөлтийг илрүүлэх, фитнессийн хяналт / сайн сайхан байдал, хуурайшилт эсвэл өндөр температуртай холбоотой анхааруулга, эзлэхүүн ба агаарын урсгалыг хэмжих, гэрийн автоматжуулалтын хяналт, хяналтын халаалт, агааржуулалт, агааржуулагч (HVAC), эд зүйлсийн интернет (IoT), GPS-ийн сайжруулалт (жишээлбэл, засварыг цаг тухайд нь хийх, үхлийн тооцоо, налууг илрүүлэх), дотор навигаци (шалны өөрчлөлт, цахилгаан шатыг илрүүлэх), гадаа навигаци хийх, чөлөөт цагаа өнгөрүүлэх, спортоор хичээллэх, цаг агаарын урьдчилсан мэдээ, босоо хурдны заалт (өсөлт/живэх) Хурд).

Алхам 6: Дүгнэлт

Энэхүү төсөл нь цаашдын туршилтыг хийх болно гэж найдаж байна. Илүү боловсронгуй цаг уурын станц хийхэд бороо хэмжигч, гэрэл мэдрэгч, анемометр (салхины хурд) гэх мэт хэд хэдэн мэдрэгч орно. Та тэдгээрийг нэмж кодоо өөрчилж болно. Бид YouTube дээр Rasp Pi бүхий I²C мэдрэгчийн үндсэн функцтэй видео хичээлтэй. I²C холбооны үр дүн, ажлын үр дүнг харах үнэхээр гайхалтай. Үүнийг бас шалгаарай. Хөгжилтэй барилга барьж, суралцаарай! Энэхүү зааварчилгааны талаар юу гэж бодож байгаагаа бидэнд хэлээрэй. Шаардлагатай бол бид зарим зүйлийг сайжруулахыг хүсч байна.

Зөвлөмж болгож буй: