Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
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
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 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
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
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.