Turinys:
- 1 žingsnis: naudojamos medžiagos
- 2 žingsnis: Surinkimas
- 3 žingsnis: Įrenginio naudojimas
- 4 žingsnis: BME280 scenarijus
- 5 žingsnis: BMP280 scenarijus
Video: „Inky_pHAT“orų stotis: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Čia norėčiau apibūdinti labai paprastą ir kompaktišką „Raspberry Pi Zero“pagrindu veikiančią oro stotį, kurioje rodomos BME280 temperatūros/slėgio/drėgmės jutiklio išmatuotos vertės „Pimoroni Inky pHAT“elektroninio popieriaus/rašalo ekrane. Kad būtų galima prijungti jutiklius ir pHAT prie „Pi“GPIO, tarp GPIO ir ekrano įdėjau „Pimorini Pico HAT“įsilaužėlį su dviem moteriškomis antraštėmis. Prietaisas buvo naudojamas keliems jutikliams pritvirtinti, todėl čia aprašyta BME280 versija yra tik pavyzdys.
Skirtingai nuo skystųjų kristalų ekranų, elektroninio rašalo ekranai išsaugo vaizdą, net jei maitinimas buvo išjungtas. Todėl jie yra labai geras sprendimas, jei norite rodyti retkarčiais atnaujinamą informaciją, ypač kuriant mažai energijos naudojančius įrenginius. Pagrindinis „Inky pHAT“vienspalvės/juodos versijos pranašumas yra tas, kad ekrano atnaujinimas užtrunka vos vieną sekundę, o ne dešimties-penkiolikos sekundžių, kurių reikalauja trijų spalvų versijos. Žiūrėti filmą.
„Adafruit“„Blinka“biblioteka leidžia paleisti „Circuit Python“kodą „Raspberry Pi“, o „Circuit Python“mėginius įvairiems jutikliams galima įsigyti iš „Adafruit“. Išsamų aprašymą, kaip įdiegti „Blinka“ir „Circuit Python“kodus, rasite „Adafruit“svetainėje. Bibliotekos, kurias iki šiol išbandžiau (BMP280, BME280, TSL2591, TCS34785, VEML7065, …), veikė labai gerai, o kai kuriuose pavyzdiniuose koduose buvo nedidelių problemų.
BME280 yra jutiklis, matuojantis temperatūrą, drėgmę ir atmosferos slėgį. BMP280 gedimus galima įsigyti iš daugelio pardavėjų, įskaitant „Adafruit“, bet aš čia naudojau pigią kinišką versiją. Atminkite, kad jie naudoja skirtingus „i2c“adresus („Adafruit“: 0x77, kiti: 0x76).
Pertrauka yra prijungta prie „Pi“naudojant „i2c“, o skaityti jutiklį yra labai paprasta naudojant biblioteką ir pavyzdinį kodą.
1 žingsnis: naudojamos medžiagos
„Raspberry Pi Zero“su pritvirtinta antrašte. Bet bet kuri „Raspberry Pi“versija tiktų.
„Pimoroni Inky pHAT“, juoda/nespalvota versija, 25 € | 22 £ | 20US $, „Pimoroni“.
„Pimoroni Pico HAT“įsilaužėlis, 2,50 € | 2 £, su dviem moteriškomis antraštėmis, viena iš jų - stiprintuvo antraštė su ilgesniais kaiščiais. Aš sukūriau dvi skirtingas versijas, žr. Aprašymą žemiau.
BME280 gedimas, AZ Pristatymas per „Amazon.de“@ 7.50 €, pridėjus antraštę.
Ilginamieji jungiamieji kabeliai
Neprivaloma:
USB maitinimo blokas, skirtas mobiliesiems įrenginiams
„Pi“arba prietaiso korpusas (čia neparodyta)
2 žingsnis: Surinkimas
- Lituokite moterų antraštes prie „Pico HAT“įsilaužėlio. Prieš litavimą patikrinkite, ar yra teisinga kryptis. Aš sukūriau dvi šios versijos skirtingiems tikslams. Viena su stiprintuvo antraštė žemyn nukreipta į priekinę eilę ir įprasta, į viršų/į viršų nukreipta antraštė galinėje eilutėje, o versija su žemyn nukreipta stiprintuvo antrašte galinėje eilutėje ir stačiakampė moteriška antraštė priekinėje eilėje. Žiūrėti vaizdus. Pirmoji versija leidžia labai lengvai prijungti ir pakeisti jutiklius ir kabelius, o versija su į vidų nukreipta antrašte leidžia į korpusą įdėti Pi, jutiklį ir rašalinį pHAT. Arba galite lituoti kabelius, jungiančius GPIO ir jutiklį tiesiai prie „Pico HAT“įsilaužėlio, ir (arba) lituoti „Pico HAT“įsilaužėlį tiesiai prie GPIO kaiščių. Bet kokiu atveju naudokite minimalų reikiamą lydmetalio kiekį.
- Jei reikia, lituokite antraštę prie jutiklio.
- Sudėkite modifikuotą „Pico HAT“įsilaužėlių įrenginį ant „Pi“, tada pridėkite „Inky pHAT“. Jei reikia, įdėkite tam tikrą atramą, pvz. Putplasčio blokas arba atsargos, skirtos rašaliniam pHAT.
- Prijunkite kabelius ir jutiklį naudodami 3V, GND, SDA ir SCL prievadus. Ne visi jutikliai išgyvens 5 V, todėl prieš prijungdami juos prie 5 V prievadų, patikrinkite.
- Įdiekite „Blinka“biblioteką, tada įdiekite „Circuit Python BME280“biblioteką iš „Adafruit“.
- Įdiekite „Pimoroni“„Inky pHAT“biblioteką.
- Įdiekite „Python“kodo pavyzdį, aprašytą vėliau ir pridėtą prie šios instrukcijos.
- Paleiskite kodą.
3 žingsnis: Įrenginio naudojimas
Yra dvi įrenginio naudojimo galimybės.
Kodas, kaip parodyta čia, turi būti paleistas naudojant pridedamą ekraną, bet tada gali būti paleistas be jo.
Su nedideliais kodo pakeitimais galite naudoti „crontab“, kad atliktumėte matavimus nustatytais laiko momentais. Tai leistų dar labiau sumažinti energijos suvartojimą. Puikus „crontab“naudojimo aprašymas yra kitur.
Kartu su maitinimo bloku galite sukurti mobilųjį įrenginį ir juo išmatuoti sąlygas viduje ar išorėje, šaldytuve, saunoje, humidoriuje, vyno rūsyje, lėktuve …
Naudodami „Zero W“galite ne tik rodyti vertes ekrane, bet ir siųsti jas į serverį arba savo svetainę per WLAN, kaip aprašyta kitur.
4 žingsnis: BME280 scenarijus
Kaip minėta anksčiau, turite įdiegti „Adafruit Blinka“ir „Circuit Python BME280“bibliotekas, taip pat „Pimoroni Inky pHAT“biblioteką.
Kodas pirmiausia inicijuoja jutiklį ir rašalinį pHAT, tada nuskaito jutiklio temperatūros, slėgio ir drėgmės vertes ir parodo jas ekrane bei elektroninio rašalo ekrane. Naudojant komandą time.sleep (), matavimai atliekami kas minutę. Prireikus sureguliuokite. Nustatę kalbos parametrą, galite pakeisti rezultatų rodymui naudojamą kalbą.
Naudodami „Inky pHAT“elektroninio rašalo ekraną, pirmiausia sukuriate vaizdą, kuris bus rodomas atmintyje, kol jis galiausiai bus perkeltas į ekraną naudojant komandą „inkyphat.show ()“. „Inky pHAT“biblioteka supaprastina procesą ir siūlo komandas piešti ir formatuoti tekstą, linijas, stačiakampius, apskritimus arba naudoti foninius vaizdus.
Be išmatuotų verčių, rodomas ir matavimo laikas.
Atminkite, kad scenarijus ir bibliotekos yra parašyti „Python 3“, todėl atidarykite ir paleiskite naudodami „Py3 IDLE“arba lygiavertį.
# Scenarijus „bme280“temperatūros/slėgio/drėgmės jutikliui (ne „Adafruit“versija) # ir rašalinis pHAT - juodoji versija # # versija 2018 m. Gruodžio 01 d., „Dr H # #“reikalauja „Adafruit Blinka“ir „Circuit Python BME280“bibliotekų # ir „Pimoroni Inky“pHAT bibliotekos importo laiko importavimo datos importavimo lentos importo autobusas iš adafruit_bme280 importas Adafruit_BME280 iš adafruit_bme280 importas Adafruit_BME280_I2C importuoti inkyphat importo sistemą iš PIL importo 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Pasirinkite standartinį šriftą2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Pasirinkite standartinius šrifto duomenis # lang = "DE" # nustatykite kalbos parametrą, numatytasis ("") -> english lang = "LT" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # numatytasis i2c adresas (skirtas Adafruit BMP280) 0x77 (numatytasis), 0x76 - Kinijos pertrauka) # nustatomas etaloninis slėgis # reikalingas al tituto apskaičiavimas, patikslinkite. Standartinė vertė 1013,25 hPa # rankinis įvestis: #reference_hPa = įvestis ("Įveskite etaloninį slėgį hPa:") # arba # nustatykite slėgį pradžios metu kaip atskaitą, pvz. santykinio aukščio matavimo laikas. užmigti (1) # palaukite sekundę prieš pirmą matavimą 1 time.sleep (1) reference_hPa = (pres_norm_sum/j) # nustatykite pradinį matavimą kaip atskaitos tašką, kad būtų galima išmatuoti aukštį reikšmės t = bmp.temperatūra p = bmp. slėgis h = bmp. drėgmė a = bmp.altitude # apskaičiuota pagal adafruit biblioteką pagal slėgį #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:%Y-% m-%d} '. format (ts) # timestamp - data, EN formatas ts0_DE =' {:%d.%m.%Y} '. format (ts) # timestamp - data, vokiečių formatas ts1 =' {: %H:%M:%S} '. Format (ts) # timestamp - time tmp = "{0: 0.1f}". Format (t) pre = "{0: 0.1f}". Format (p) hyg = "{0: 0.1f}". Format (h) alt="{0: 0.1f}". Format (a) tText = "Temp.:" pText_EN = "Slėgis:" pText_DE = "Luftdruck:" h Text_EN = "Drėgmė:" hText_DE = "rel. LF: "aText_EN =" Altitude: "aText_DE =" Höhe üNN: " # exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = hText: # numatytoji anglų kalba ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # spausdinimo reikšmės, kad būtų rodoma print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # spausdinimo reikšmės iki rašalo pHAT t1 = 5 # 1 skirtukas, pirmoji stulpelis, supaprastina išdėstymo optimizavimą t2 = 110 # 2 skirtukas, antrasis stulpelis inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # rašyti laiko žymos datą inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # rašyti laiko žymę inkyphat.line ((t1, 25, 207, 25), 1, 3) # nubrėžkite liniją inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + "° C"), inkyphat. BLACK, šriftas2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + "hPa"), inkyphat. JUODAS, šriftas2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # arba rodyti apskaičiuotą aukštį # inkyphat.text ((t1, 80), aText, inkyphat. JUODAS, šriftas2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, šriftas2) inkyphat.show () time.sleep (51) # palaukite kelias sekundes prieš kitus matavimus, +19 sek. per ciklą inkyphat.clear () # tuščias Inky pHAT rodymo procedūra, inkyphat.show () # tyla „crontab“versijai
5 žingsnis: BMP280 scenarijus
BMP280 yra labai panašus į BME280 jutiklį, tačiau tik matuoja temperatūrą ir slėgį. Scenarijai yra labai panašūs, tačiau jums reikia skirtingų „Circuit Python“bibliotekų. Čia vietoj drėgmės rodomas apskaičiuotas aukštis, pagrįstas etaloniniu slėgiu.
Pridedamas rasi scenarijų.
Rekomenduojamas:
Profesionali orų stotis naudojant „ESP8266“ir „ESP32 pasidaryk pats“: 9 žingsniai (su nuotraukomis)
Profesionali orų stotis, naudojant „pasidaryk pats“ESP8266 ir ESP32: „LineaMeteoStazione“yra visiška orų stotis, kurią galima sujungti su profesionaliais „Sensirion“jutikliais ir kai kuriais „Davis“prietaiso komponentais (lietaus matuoklis, anemometras)
Rankinė orų stotis: 4 žingsniai
Rankinė orų stotis: Šioje instrukcijoje mes naudosime „Arduino“, „OLED“ekraną ir „SparkFun“aplinkos jutiklių derinį su CCS811 ir BME280 jutikliais, kad sukurtume rankinį prietaisą, kuris matuoja temperatūrą, drėgmę, TVOC lygį, barometrinį slėgį
„Fanair“: jūsų kambario orų stotis: 6 žingsniai (su nuotraukomis)
„Fanair“: orų stotis jūsų kambariui: Yra daugybė būdų sužinoti dabartinį orą, bet tada jūs žinote tik orą lauke. Ką daryti, jei norite sužinoti orą savo namuose, konkrečioje patalpoje? Tai aš bandau išspręsti šiuo projektu. „Fanair“naudoja daug
Internetinė orų stotis: 6 žingsniai
Internetinė orų stotis: nepatikėsite! Bet nuo pradžių. Aš dirbau prie kitos „CoolPhone“versijos ir daug klaidų, kurias padariau ją kurdamas, privertė mane nuo jos pailsėti. Apsiavau batus ir išėjau į lauką. Pasirodė, kad šalta, todėl norėjau
„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai: 8 žingsniai (su nuotraukomis)
„NaTaLia“orų stotis: „Arduino Solar Powered Weather Station“padaryta teisingai: Po vienerių metų sėkmingo veikimo 2 skirtingose vietose dalinuosi saulės kolektorių projektų planais ir paaiškinu, kaip ji išsivystė į sistemą, kuri tikrai gali išgyventi ilgą laiką laikotarpius nuo saulės energijos. Jei sekate