Talaan ng mga Nilalaman:

Inky_pHAT Weather Station: 5 Hakbang
Inky_pHAT Weather Station: 5 Hakbang

Video: Inky_pHAT Weather Station: 5 Hakbang

Video: Inky_pHAT Weather Station: 5 Hakbang
Video: Weather Monitor - Raspberry Pi Zero W with InkypHAT 2024, Hulyo
Anonim
Inky_pHAT Weather Station
Inky_pHAT Weather Station
Inky_pHAT Weather Station
Inky_pHAT Weather Station
Inky_pHAT Weather Station
Inky_pHAT Weather Station
Inky_pHAT Weather Station
Inky_pHAT Weather Station

Nais kong ilarawan ang isang napaka-simple at siksik, istasyon ng panahon na batay sa Raspberry Pi, na nagpapakita ng mga halagang sinusukat ng isang sensor ng temperatura / presyon / kahalumigmigan ng BME280 sa isang Pimoroni Inky pHAT e-paper / e-ink display. Upang payagan ang koneksyon ng mga sensor at ang pHAT sa GPIO ng Pi naglagay ako ng isang Pimorini Pico HAT hacker na may dalawang babaeng header na nakakabit sa pagitan ng GPIO at ng display. Ginamit ang aparato upang maglakip ng maraming mga sensor, kaya ang bersyon ng BME280 na inilarawan dito ay isang halimbawa lamang.

Hindi tulad ng mga LCD display, ang mga e-ink display ay panatilihin ang imahe kahit na ang kapangyarihan ay nakapatay. Samakatuwid ang mga ito ay isang napakahusay na solusyon kung nais mong ipakita ang impormasyon na na-update paminsan-minsan, lalo na upang bumuo ng mga mababang aparato sa enerhiya. Ang pangunahing pakinabang ng monochrome / itim na bersyon ng Inky pHAT ay ang pag-update sa display ay tumatagal ng halos isang segundo lamang, sa halip na sampu hanggang labinlimang segundo na kinakailangan ng mga bersyon ng tatlong kulay. Manuod ng pelikula.

Pinapayagan ng library ng Blinka ng Adafruit na patakbuhin ang code ng Circuit Python sa Raspberry Pi, at ang mga sample ng Circuit Python para sa isang iba't ibang mga sensor ay magagamit mula sa Adafruit. Ang isang detalyadong paglalarawan kung paano i-install ang Blinka at ang mga Circuit Python code ay matatagpuan sa Adafruit website. Ang mga aklatan na sinubukan ko sa ngayon (BMP280, BME280, TSL2591, TCS34785, VEML7065,…) ay gumagana nang maayos, habang may mga menor de edad na problema sa ilan sa mga halimbawang code.

Ang BME280 ay isang sensor upang masukat ang temperatura, halumigmig at presyon ng atmospera. Ang mga breakout ng BMP280 ay magagamit mula sa maraming mga vendor, kasama ang Adafruit, ngunit gumagamit ako dito ng isang murang bersyon ng Tsino. Mangyaring magkaroon ng kamalayan na gumagamit ito ng iba't ibang mga i2c address (Adafruit: 0x77, iba pa: 0x76).

Ang breakout ay konektado sa Pi sa pamamagitan ng i2c, at ang pagbabasa ng sensor ay napaka-simple gamit ang library at halimbawa ng code.

Hakbang 1: Ginamit na Mga Materyales

Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal

Isang Raspberry Pi Zero, na may kalakip na isang header na lalaki. Ngunit ang anumang bersyon ng Raspberry Pi ay gagawin.

Isang Pimoroni Inky pHAT, itim / monochrome na bersyon, 25 € | 22 £ | 20US $, sa Pimoroni.

Isang hacker ng Pimoroni Pico HAT, 2.50 € | 2 £, na may dalawang babaeng header na nakakabit, isa sa kanila isang booster header na may mas mahahabang mga pin. Bumuo ako ng dalawang magkakaibang bersyon, tingnan ang paglalarawan sa ibaba.

Isang breakout ng BME280, AZ Paghahatid sa pamamagitan ng Amazon.de @ 7.50 €, na may kalakip na header.

Elongation jumper cables

Opsyonal:

Isang USB power pack, para sa mga mobile application

Isang pabahay para sa Pi o aparato (hindi ipinakita dito)

Hakbang 2: Assembly

Assembly
Assembly
Assembly
Assembly
Assembly
Assembly
  • Solder ang mga babaeng header sa Pico HAT hacker. Bago ang paghihinang, suriin kung wastong oryentasyon. Bumuo ako ng dalawang bersyon nito, para sa iba't ibang mga layunin. Ang isa na may nakaharap na booster header na nakalagay sa harap na hilera at isang normal, pataas / nakaharap na header sa likod na hilera, at isang bersyon na may pababang nakaharap na booster header sa likod na hilera, at isang kanang-anggulo na babaeng header sa harap na hilera. Tingnan ang mga imahe. Pinapayagan ng unang bersyon na maglakip at makipagpalitan ng mga sensor at kable na napakadali, habang ang bersyon na may panloob na nakaharap na header ay pinapayagan na isara ang Pi, sensor at Inky pHAT sa isang pabahay. Bilang kahalili maaari kang maghinang ng mga kable na kumokonekta sa GPIO at sensor nang direkta sa Pico HAT hacker at / o solder ang Pico HAT hacker nang direkta sa mga pin ng GPIO. Sa anumang kaso gamitin ang kaunting halaga ng kinakailangan ng panghinang.
  • Paghinang ang header sa sensor, kung kinakailangan.
  • I-stack ang binagong Pico HAT hacker unit sa Pi, pagkatapos ay idagdag ang Inky pHAT. Kung kinakailangan, maglagay ng ilang suporta, hal. Isang foam block o stand-off, para sa Inky pHAT.
  • Ikabit ang mga kable at sensor, gamit ang mga port ng 3V, GND, SDA at SCL. Hindi lahat ng mga sensor ay makakaligtas sa 5V, kaya't mangyaring suriin bago mo ikonekta ang mga ito sa 5V port.
  • I-install ang library ng Blinka, pagkatapos ay i-install ang library ng Circuit Python BME280 mula sa Adafruit.
  • I-install ang Inky pHAT library mula sa Pimoroni.
  • I-install ang halimbawa ng Python code na inilarawan sa isang susunod na hakbang at naka-attach sa itinuturo na ito.
  • Patakbuhin ang code.

Hakbang 3: Paggamit ng Device

Paggamit ng Device
Paggamit ng Device

Mayroong dalawang mga pagpipilian upang magamit ang aparato.

Ang code na tulad ng ipinapakita dito ay dapat magsimula sa paggamit ng isang naka-attach na screen, ngunit pagkatapos ay maaaring tumakbo nang wala.

Sa mga menor de edad na pagbabago sa code maaari kang gumamit ng crontab upang maisagawa ang mga sukat sa tinukoy na mga puntos ng oras. Papayagan nitong bawasan pa ang pagkonsumo ng kuryente. Mahusay na paglalarawan kung paano gamitin ang crontab ay matatagpuan sa ibang lugar.

Kasabay ng isang power pack maaari kang bumuo ng isang mobile device at gamitin ito upang masukat ang mga kondisyon sa loob o labas, sa ref, sa sauna, iyong humidor, ang wine cellar, sa isang eroplano, ….

Gamit ang isang Zero W maaari mong ipakita hindi lamang ang mga halaga sa display, ngunit ipadala din ito sa isang server o iyong website sa pamamagitan ng WLAN, tulad ng inilarawan sa ibang lugar.

Hakbang 4: Ang BME280 Script

Ang BME280 Script
Ang BME280 Script

Tulad ng nabanggit dati, kailangan mong i-install ang mga aklatan ng Adafruit Blinka at Circuit Python BME280 pati na rin ang Pimoroni Inky pHAT library.

Una nang pinasimulan ng code ang sensor at Inky pHAT, pagkatapos ay binabasa ang mga halagang temperatura, presyon at halumigmig mula sa sensor at ipinapakita ang mga ito sa display ng screen at e-ink. Gamit ang utos ng oras.tulog (), ang mga sukat ay kinukuha bawat minuto. Ayusin kung kinakailangan. Sa pamamagitan ng pagtatakda ng isang parameter ng wika, maaari mong baguhin ang ginamit na wika upang ipakita ang mga resulta.

Gamit ang Inky pHAT e-ink display, unang binuo mo ang imahe upang maipakita sa memorya bago ito tuluyang mailipat sa screen gamit ang utos na inkyphat.show (). Pinapasimple ng library ng Inky pHAT ang proseso, nag-aalok ng mga utos upang gumuhit at mag-format ng teksto, mga linya, mga parihaba, bilog o gumamit ng mga imahe sa background.

Bilang karagdagan sa mga sinusukat na halaga, ang oras ng pagsukat ay ipinapakita rin.

Mangyaring tandaan na ang script pati na rin ang mga aklatan ay nakasulat sa Python 3, kaya buksan at patakbuhin ang paggamit ng Py3 IDLE o katumbas.

# Isang script para sa sensor ng temperatura / presyon / kahalumigmigan ng bme280 (bersyon na hindi Adafruit) # at ang inky pHAT - itim na bersyon # # bersyon Dis 01 2018, Kinakailangan ng Dr H # # ang mga aklatan ng Adafruit Blinka at Circuit Python BME280 # at ang Pimoroni Inky Ang oras ng pag-import ng library ng PHAT pag-import ng datime import board import busio mula sa adafruit_bme280 import Adafruit_BME280 mula sa adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys mula sa PIL import ImageFont inkyphat.set_colour ('black') # para sa b / w inky phat inkyphat.set_rotation 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Piliin ang karaniwang font font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Piliin ang karaniwang data ng font # lang = "DE" # na setting ng parameter ng wika, default ("") -> english lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # default i2c address (para sa Adafruit BMP280) 0x77 (default), 0x76 para sa chinese breakout) #set pressure pressure # kinakailangan para sa al pagkalkula ng titulo, mangyaring ayusin. Karaniwang halaga 1013.25 hPa # manu-manong pag-input: #referensi_hPa = input ("Ipasok ang presyon ng sanggunian sa hPa:") # o # itakda ang presyon sa oras ng pagsisimula bilang sanggunian, hal. para sa relatibong pagsukat ng taas ng oras. tulog (1) # maghintay ng isang segundo bago ang ika-1 pagsukat j = 0 pres_norm_sum = 0 habang j sa saklaw (5): # kumuha ng limang mga sukat upang tukuyin ang sangguniang halaga pres_norm_sum = pres_norm_sum + bmp.pressure j = j + 1 time.s Sleep (1) sanggunian_hPa = (pres_norm_sum / j) # itakda ang panukat na pagsukat bilang sanggunian upang paganahin ang mga sukat sa taas bmp.sea_level_pressure = float (sanggunian_hPa) i-print () habang Totoo: #runs magpakailanman, baguhin para sa crontab-bersyon # sinusukat mga halagang t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # kinakalkula ng adafruit library mula sa pressure #timestamp ts = datime.datetime.now () # timestamp ts0_EN = '{:% Y-% m-% d} '. format (ts) # timestamp - date, EN format ts0_DE =' {:% d.% m.% Y} '. format (ts) # timestamp - date, German format 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 = "Pressure:" pText_DE = "Luftdruck:" h Text_EN = "Humidity:" hText_DE = "rel. LF: "aText_EN =" Altitude: "aText_DE =" Höhe üNN: "# exakt: ü. NHN, über Normal Höhen Null kung (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = hText_DE iba pa: # default english ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # mga halaga ng pag-print upang maipakita ang print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, "%") print (aText, alt, "m") print () # print halaga sa Inky pHAT t1 = 5 # tab 1, frist haligi, pinapasimple ang pag-optimize ng layout t2 = 110 # tab 2, pangalawang haligi ng inkyphat. malinaw () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # isulat ang timestamp date inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # isulat ang timestamp time inkyphat.line ((t1, 25, 207, 25), 1, 3) # gumuhit ng isang linya na inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + "° C"), inkyphat. BLACK, font2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + "hPa"), inkyphat. BLACK, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + "%"), inkyphat. BLACK, font2) # kahalili ipakita ang kinalkulang taas # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sulog (51) # maghintay ng ilang segundo bago ang susunod na mga sukat, +19 sec bawat cycle inkyphat.clear () # walang laman na pamamaraan ng pagpapakita ng Inky pHAT, inkyphat.show () # katahimikan para sa crontab-bersyon

Hakbang 5: Ang BMP280 Script

Ang BMP280 ay halos kapareho sa sensor ng BME280, ngunit sumusukat lamang sa temperatura at presyon. Ang mga script ay halos magkatulad, ngunit kailangan mo ng iba't ibang mga aklatan ng Circuit Python. Dito sa halip na halumigmig ang isang kinakalkula na taas, batay sa isang presyon ng sanggunian, ay ipinakita.

Nakalakip na hanapin mo ang script.

Inirerekumendang: