Mundarija:

Python -da BME280 bilan Raspberry Pi yordamida ob -havo stantsiyasi: 6 qadam
Python -da BME280 bilan Raspberry Pi yordamida ob -havo stantsiyasi: 6 qadam

Video: Python -da BME280 bilan Raspberry Pi yordamida ob -havo stantsiyasi: 6 qadam

Video: Python -da BME280 bilan Raspberry Pi yordamida ob -havo stantsiyasi: 6 qadam
Video: Mesure de la vitesse du son 2024, Iyul
Anonim
Image
Image
Imperativ uskunalar hisobi
Imperativ uskunalar hisobi

Bu ob -havo va yaxshi maqsaddir (Ob -havo yaxshi hikoyachi)

Global isish va iqlim o'zgarishi muammosi bilan global ob-havo sharoiti o'zgarib bormoqda, bu ob-havo bilan bog'liq tabiiy ofatlarga (qurg'oqchilik, haddan tashqari harorat, toshqinlar, bo'ronlar va o'rmon yong'inlari) olib keladi. uyda yomonlik. Siz bir nechta arzon qismlar va datchiklar yordamida meteorologik stansiya loyihasidan asosiy elektronika haqida ko'p narsalarni bilib olasiz. O'rnatish juda oson va uni tezda olish mumkin emas.

1 -qadam: Imperativ uskunalar hisobi

Imperativ uskunalar hisobi
Imperativ uskunalar hisobi
Imperativ uskunalar hisobi
Imperativ uskunalar hisobi
Imperativ uskunalar hisobi
Imperativ uskunalar hisobi

1. Raspberry Pi

Qo'lingizni Raspberry Pi taxtasiga qo'ying. Raspberry Pi - bu Linux bilan ishlaydigan bitta taxtali kompyuter. Raspberry Pi - bu haqiqatan ham arzon, kichik va ko'p qirrali bo'lib, o'quvchilar dasturlash va dasturiy ta'minotni ishlab chiqish asoslarini o'rganishi uchun qulay va funktsional kompyuterdan qurilgan.

2. Raspberry Pi uchun I2C qalqoni

INPI2 (I2C adapteri) Raspberry Pi 2/3 va I²C portlarini bir nechta I2C qurilmalarida ishlatish uchun taqdim etadi. U DCUBE do'konida mavjud.

3. Raqamli namlik, bosim va harorat sensori, BME280

BME280 - namlik, bosim va harorat sensori, tez javob berish vaqti va umumiy aniqligi yuqori. Biz bu sensorni DCUBE do'konidan sotib oldik.

4. I2C ulanish kabeli

Biz DCUBE do'konida mavjud bo'lgan I²C kabelidan foydalandik.

5. Micro USB kabeli

Micro USB kabeli Quvvat manbai Raspberry Pi -ni quvvatlantirish uchun ideal tanlovdir.

6. EthernetCable/WiFi adapteri orqali Internetga kirishni izohlang

Mahalliy tarmoq va Internetga ulangan chekilgan kabel orqali Internetga kirishni yoqish mumkin. Shu bilan bir qatorda, siz simsiz tarmoqqa USB simsiz ulagich yordamida ulanishingiz mumkin, bu esa konfiguratsiyani talab qiladi.

7. HDMI kabeli (displey va ulanish kabeli)

Har qanday HDMI/DVI monitor va har qanday televizor Pi uchun displey sifatida ishlashi kerak. Shu bilan bir qatorda, siz SSH orqali Pi -ga masofadan kirishingiz mumkin, bu monitorga bo'lgan ehtiyojni inkor etadi (faqat ilg'or foydalanuvchilar uchun).

2 -qadam: O'chirish uchun apparat ulanishlari

O'chirish uchun apparat ulanishlari
O'chirish uchun apparat ulanishlari
O'chirish uchun apparat ulanishlari
O'chirish uchun apparat ulanishlari

O'chirish sxemasi ko'rsatilgan sxema bo'yicha amalga oshiriladi. Umuman olganda, ulanishlar juda oddiy. Tinchlaning va yuqoridagi ko'rsatmalar va rasmlarga rioya qiling, shunda sizda hech qanday muammo bo'lmasligi kerak. O'rganish jarayonida biz elektronika asoslari va dasturiy ta'minot haqidagi bilimlarga ega bo'ldik. Biz ushbu loyiha uchun elektronikaning oddiy sxemasini tuzmoqchi edik. Elektron sxemalar chizmalarga o'xshaydi. Loyihani tuzing va dizaynga diqqat bilan amal qiling. Bu erda elektronikaning bir nechta asosiy tushunchalari foydali bo'lishi mumkin!

Raspberry Pi va I2C qalqonining ulanishi

Birinchidan, Raspberry Pi -ni oling va unga I²C qalqonini qo'ying. Qalqonni sekin bosing va biz bu qadamni pirogdek oson bajaramiz (rasmga qarang).

Sensor va Raspberry Pi ulanishi

Sensorni oling va u bilan I²C kabelini ulang. I²C chiqishi har doim I²C kirishiga ulanganligiga ishonch hosil qiling. I²C qalqoni o'rnatilgan GPIO pinli Raspberry Pi uchun ham xuddi shunday qilish kerak, biz I²C kabellaridan foydalanishni tavsiya etamiz, chunki bu o'qlarni o'qish, lehimlash va hatto mayda siljish natijasida paydo bo'ladigan kasalliklarni ham yo'q qiladi.. Ushbu oddiy ulash kabeli yordamida siz taxtalarni osongina o'rnatishingiz, almashtirishingiz yoki ilovaga qo'shimcha taxtalarni qo'shishingiz mumkin.

E'tibor bering: jigarrang sim har doim bitta qurilmaning chiqishi va boshqa qurilmaning kirishi o'rtasidagi Ground (GND) aloqasini kuzatishi kerak

Internetga ulanish - bu kalit

Bu erda sizda ikkita tanlov bor. Yoki Raspberry Pi -ni tarmoq kabeli yordamida tarmoqqa ulashingiz yoki WIFI -ga ulanish uchun USB -dan WiFi -ga adapterdan foydalanishingiz mumkin. Qanday bo'lmasin, u Internetga ulangan ekan.

O'chirish davri

Micro USB kabelini Raspberry Pi quvvat manbaiga ulang. Yumshat va voila! Bizning guruh - bu ma'lumot.

Ekranga ulanish

Biz HDMI kabelini monitorga yoki televizorga ulashimiz mumkin. Bundan tashqari, biz Raspberry Pi -ni masofadan turib monitorga ulamasdan kirishimiz mumkin. SSH - bu xavfsiz masofadan kirish uchun qulay vosita. Buning uchun PUTTY dasturidan ham foydalanishingiz mumkin. Bu variant ilg'or foydalanuvchilar uchun mo'ljallangan, shuning uchun biz bu erda batafsil yoritmaymiz.

Agar siz ko'p pul sarflashni xohlamasangiz, bu iqtisodiy usul

3 -qadam: Pythonda Raspberry Pi dasturlash

Python -da Raspberry Pi dasturlash
Python -da Raspberry Pi dasturlash

Raspberry Pi va BME280 sensori uchun Python kodi. U bizning Github omborida mavjud.

Kodga o'tishdan oldin, Readme faylida berilgan ko'rsatmalarni o'qiganingizga va Raspberry Pi -ni unga muvofiq sozlaganingizga ishonch hosil qiling. Biroz vaqt o'tgach, siz qurilishga tayyor bo'lasiz. Ob -havo stantsiyasi - bu quruqlikda ham, dengizda ham, ob -havo ma'lumotlarini taqdim etish, ob -havo va iqlimni o'rganish uchun atmosfera sharoitlarini o'lchash uchun asboblar va uskunalar.

Kod sizning oldingizda aniq va siz tasavvur qila oladigan eng oddiy shaklda va sizda hech qanday muammo bo'lmasligi kerak. Hali ham bor -yo'qligini so'rang (Agar siz mingta narsani bilsangiz ham, bilgan odamdan so'rang).

Bu sensor uchun ishlaydigan Python kodini bu erdan ham ko'chirishingiz mumkin.

# Ixtiyoriy litsenziya bilan tarqatilgan.# Istalgan usulda, xoh foyda, xoh tekin, agar u tegishli ish litsenziyalariga mos keladigan bo'lsa, foydalaning. # BME280 # Bu kod ControlEverything.com saytida mavjud bo'lgan BME280_I2CS I2C Mini moduli bilan ishlash uchun mo'ljallangan. #

smbus import qilish

import vaqti

# I2C avtobusini oling

avtobus = smbus. SMBus (1)

# BME280 manzili, 0x76 (118)

# Ma'lumotni 0x88 (136) dan qaytarib o'qing, 24 bayt b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Ma'lumotni aylantirish

# Harorat koeffitsientlari dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] agar dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] agar dig_T3> 32767 bo'lsa: dig_T3 -= 65536

# Bosim koeffitsientlari

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] dig_P2> 32767 bo'lsa: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] dig_P3 bo'lsa > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] agar dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] agar dig_P5> 32767 bo'lsa: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] agar dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] agar dig_P7> 32767 bo'lsa: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] agar dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] agar dig_P9> 32767 bo'lsa: dig_P9 -= 65536

# BME280 manzili, 0x76 (118)

# Ma'lumotlarni 0xA1 (161) dan qaytarib o'qing, 1 bayt dig_H1 = bus.read_byte_data (0x76, 0xA1)

# BME280 manzili, 0x76 (118)

# Ma'lumotni 0xE1 (225) dan qaytaring, 7 bayt b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Ma'lumotni aylantirish

# Namlik koeffitsientlari dig_H2 = b1 [1] * 256 + b1 [0] agar dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) agar dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) agar dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] agar dig_H6> 127: dig_H6 -= 256

# BME280 manzili, 0x76 (118)

# Namlikni nazorat qilish registrini tanlang, 0xF2 (242) # 0x01 (01) Namlikni o'lchash = 1 avtobus.write_byte_data (0x76, 0xF2, 0x01) # BME280 manzili, 0x76 (118) # Boshqarish o'lchov registrini tanlang, 0xF4 (244) # 0x27 (39) Bosim va haroratning ortiqcha namuna olish tezligi = 1 # Oddiy rejim bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 manzili, 0x76 (118) # Konfiguratsiya registrini tanlang, 0xF5 (245) # 0xA0 (00) Kutish rejimida = 1000 ms avtobus.write_byte_data (0x76, 0xF5, 0xA0)

vaqt uyqu (0,5)

# BME280 manzili, 0x76 (118)

# Ma'lumotni 0xF7 (247), 8 baytdan o'qing

# Bosim va harorat ma'lumotlarini 19 bitga aylantiring

adc_p = ((ma'lumotlar [0] * 65536) + (ma'lumotlar [1] * 256) + (ma'lumotlar [2] va 0xF0)) / 16 adc_t = ((ma'lumotlar [3] * 65536) + (ma'lumotlar [4] * 256) + (ma'lumotlar [5] & 0xF0)) / 16

# Namlik ma'lumotlarini o'zgartiring

adc_h = ma'lumotlar [6] * 256 + ma'lumotlar [7]

# Haroratni almashtirish hisoblari

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

# Bosimning ofset hisoblari

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 bosim = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Namlik hisobini

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 *))) namlik = var_H * (1.0 - dig_H1 * var_H / 524288.0) agar namlik> 100.0: namlik = 100.0 elif namligi <0.0: namlik = 0.0

# Ma'lumotlarni ekranga chiqarish

chop etish "Selsiydagi harorat: %.2f C" %cTemp chop etish "Farengeytdagi harorat: %.2f F" %fTemp chop etish "Bosim: %.2f hPa" %bosim bosimi "Nisbiy namlik: %.2f %%" %namlik

4 -qadam: Ishlayotgan kod

Yugurish kodi
Yugurish kodi

Endi kodni yuklab oling (yoki git pull) va uni Raspberry Pi -da oching.

Kodni kompilyatsiya qilish va terminalga yuklash buyruqlarini bajaring va displeyda chiqishni ko'ring. Bir necha soniyadan so'ng, u barcha parametrlarni ko'rsatadi. Hammasi yaxshi ishlayotganiga ishonch hosil qilganingizdan so'ng, siz yana bir nechta qiziqarli narsalarni ishlab chiqishingiz mumkin.

5 -qadam: Amaliy dunyoda foydalanish

BME280 namlik va bosimni o'lchashni talab qiladigan barcha ilovalarda yuqori ko'rsatkichlarga erishadi. Bu paydo bo'lgan ilovalar Kontekstni bilish, masalan. Terini aniqlash, xonadagi o'zgarishlarni aniqlash, fitnesni kuzatish / farovonlik, quruqlik yoki yuqori harorat haqida ogohlantirish, tovush va havo oqimini o'lchash, uyni avtomatlashtirishni nazorat qilish, isitishni isitish, shamollatish, konditsionerlik (HVAC), narsalar Interneti (IoT), GPS-ni takomillashtirish (masalan, o'z vaqtida tuzatishni takomillashtirish, o'liklarni hisobga olish, qiyaliklarni aniqlash), ichki navigatsiya (polni aniqlash, liftni aniqlash), ochiq havoda navigatsiya, bo'sh vaqt va sport dasturlari, ob-havo ma'lumoti va vertikal tezlik ko'rsatkichi (ko'tarilish/cho'kish) Tezlik).

6 -qadam: Xulosa

Umid qilamanki, bu loyiha keyingi tajribalarni ilhomlantiradi. Murakkab ob -havo stantsiyasini yaratish yomg'ir o'lchagich, yorug'lik sensori, anemometr (shamol tezligi) va boshqalarni o'z ichiga olishi mumkin. Siz ularni qo'shishingiz va kodni o'zgartirishingiz mumkin. Bizda YouTube -da Rasp Pi bilan I²C sensorining asosiy ishlashiga ega bo'lgan video darslik bor. I²C aloqa natijalari va ishlashini ko'rish juda ajoyib. Buni ham tekshiring. Baxtli bo'ling va o'rganing! Iltimos, bu ko'rsatma haqida fikringizni bildiring. Agar kerak bo'lsa, biz ba'zi yaxshilanishlarni qilishni xohlaymiz.

Tavsiya: