Sadržaj:
- Korak 1: Korišteni materijali
- Korak 2: Montaža
- Korak 3: Upotreba uređaja
- Korak 4: Skripta BME280
- Korak 5: Skripta BMP280
Video: Meteorološka stanica Inky_pHAT: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Ovdje bih želio opisati vrlo jednostavnu i kompaktnu meteorološku stanicu zasnovanu na Raspberry Pi Zero, koja prikazuje vrijednosti izmjerene BME280 senzorom temperature/pritiska/vlažnosti na ekranu Pimoroni Inky pHAT e-papira/e-tinte. Da bih omogućio povezivanje senzora i pHAT -a sa GPIO -om Pi -a, postavio sam Pimorini Pico HAT haker sa dva ženska zaglavlja pričvršćena između GPIO -a i ekrana. Uređaj je korišten za priključivanje nekoliko senzora, pa je ovdje opisana verzija BME280 samo primjer.
Za razliku od LCD ekrana, ekrani sa e-mastilom zadržavaju sliku čak i ako je napajanje isključeno. Stoga su vrlo dobro rješenje ako želite prikazati informacije koje se povremeno ažuriraju, posebno za izradu niskoenergetskih uređaja. Glavna prednost jednobojne/crne verzije Inky pHAT-a je ta što ažuriranje ekrana traje samo jednu sekundu, umjesto deset do petnaest sekundi koliko zahtijevaju verzije u tri boje. Pogledajte film.
Adafruit -ova biblioteka Blinka omogućava pokretanje Circuit Python koda na Raspberry Pi -u, a uzorci Circuit Python -a za veliki broj senzora dostupni su u Adafruit -u. Detaljan opis kako instalirati Blinka i Circuit Python kodove možete pronaći na web stranici Adafruit. Biblioteke koje sam do sada testirao (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) radile su vrlo dobro, dok je u nekim primjerima bilo manjih problema.
BME280 je senzor za mjerenje temperature, vlažnosti i atmosferskog tlaka. BMP280 proboji dostupni su od mnogih prodavača, uključujući Adafruit, ali ovdje sam koristio jeftinu kinesku verziju. Imajte na umu da oni koriste različite i2c adrese (Adafruit: 0x77, drugi: 0x76).
Proboj je povezan sa Pi putem i2c, a čitanje senzora je vrlo jednostavno pomoću biblioteke i primjera koda.
Korak 1: Korišteni materijali
Raspberry Pi Zero, sa muškim zaglavljem. Ali svaka Raspberry Pi verzija bi bila dovoljna.
Pimoroni Inky pHAT, crna/jednobojna verzija, 25 € | 22 £ | 20US $, u Pimoroniju.
Pimoroni Pico HAT haker, 2,50 € | 2 £, sa dva pričvršćena ženska zaglavlja, od kojih jedno zaglavlje za pojačavanje sa dužim iglama. Napravio sam dvije različite verzije, pogledajte opis ispod.
Proboj BME280, AZ Dostava putem Amazon.de @ 7,50 €, sa zaglavljem u prilogu.
Kablovi kratkospojnika za produženje
Opciono:
USB napajanje za mobilne aplikacije
Kućište za Pi ili uređaj (nije prikazano ovdje)
Korak 2: Montaža
- Spajite ženska zaglavlja hakeru Pico HAT. Prije lemljenja provjerite ispravnu orijentaciju. Napravio sam dvije verzije ovoga, za različite svrhe. Jedan sa zaglavljem za povišenje pritiska okrenutim prema dolje u prednjem redu i normalnim zaglavljem prema gore/prema gore u zadnjem redu, a verzija sa pojačivačem za okretanje prema dolje u zadnjem redu i ženskim zaglavljem pod pravim uglom u prednjem redu. Pogledajte slike. Prva verzija omogućuje vrlo jednostavno priključivanje i zamjenu senzora i kabela, dok verzija sa zaglavljem prema unutra omogućava zatvaranje Pi, senzora i Inky pHAT -a u kućište. Alternativno, možete lemiti kabele koji povezuju GPIO i senzor direktno na Pico HAT haker i/ili lemiti Pico HAT haker direktno na GPIO pinove. U svakom slučaju koristite minimalnu potrebnu količinu lemljenja.
- Zalijepite zaglavlje na senzor, ako je potrebno.
- Složite izmijenjenu hakersku jedinicu Pico HAT na Pi, a zatim dodajte Inky pHAT. Ako je potrebno, umetnite podršku, npr. Blok od pjene ili izdvojeni materijali za Inky pHAT.
- Spojite kabele i senzor pomoću 3V, GND, SDA i SCL portova. Neće svi senzori preživjeti 5V, pa provjerite prije nego ih spojite na 5V portove.
- Instalirajte biblioteku Blinka, a zatim instalirajte biblioteku Circuit Python BME280 sa kompanije Adafruit.
- Instalirajte Inky pHAT biblioteku iz Pimoronija.
- Instalirajte primjer Python koda opisanog u kasnijem koraku i pridružen ovom uputstvu.
- Pokrenite kod.
Korak 3: Upotreba uređaja
Postoje dvije mogućnosti korištenja uređaja.
Kod kao što je prikazano ovdje će se pokrenuti pomoću prikačenog ekrana, ali bi se zatim mogao pokrenuti i bez njega.
Uz manje izmjene koda, možete koristiti crontab za izvođenje mjerenja u definiranim vremenskim točkama. To bi omogućilo dodatno smanjenje potrošnje energije. Odlični opisi upotrebe crontaba mogu se pronaći na drugom mjestu.
Zajedno sa napajanjem možete izgraditi mobilni uređaj i koristiti ga za mjerenje uslova unutar ili izvan, u frižideru, u sauni, vašem humidoru, vinskom podrumu, u avionu,….
Korištenjem Zero W ne možete samo prikazati vrijednosti na ekranu, već ih poslati i na server ili na svoju web stranicu putem WLAN -a, kao što je opisano na drugom mjestu.
Korak 4: Skripta BME280
Kao što je već spomenuto, morate instalirati biblioteke Adafruit Blinka i Circuit Python BME280, kao i Pimoroni Inky pHAT biblioteku.
Kod prvo inicijalizira senzor i Inky pHAT, zatim očitava vrijednosti temperature, tlaka i vlažnosti sa senzora i prikazuje ih na ekranu i ekranu e-tinte. Pomoću naredbe time.sleep () mjerenja se vrše svake minute. Podesite po potrebi. Postavljanjem parametra jezika možete promijeniti jezik koji se koristi za prikaz rezultata.
Koristeći Inky pHAT e-ink zaslon, prvo sastavljate sliku za prikaz u memoriji prije nego što se konačno prenese na ekran pomoću naredbe inkyphat.show (). Biblioteka Inky pHAT pojednostavljuje proces, nudeći naredbe za crtanje i oblikovanje teksta, linija, pravokutnika, krugova ili korištenje slika u pozadini.
Osim izmjerenih vrijednosti, prikazuje se i vrijeme mjerenja.
Imajte na umu da su skripta, kao i biblioteke, napisane u Pythonu 3, pa ih otvorite i pokrenite koristeći Py3 IDLE ili ekvivalent.
# Skripta za senzor temperature/pritiska/vlažnosti bme280 (verzija koja nije Adafruit) # i pHAT boje sa mastilom - crna verzija # # verzija 01. decembar 2018, Dr H # # Zahteva biblioteke Adafruit Blinka i Circuit Python BME280 # i Pimoroni Inky pHAT biblioteka vrijeme uvoza datum datum uvoz tabla uvoz busio iz adafruit_bme280 uvoz Adafruit_BME280 iz adafruit_bme280 uvoz Adafruit_BME280_I2C uvoz inkyphat uvoz sistema iz PIL uvoza ImageFont inkyphat.set_colour ('crno') # za b/w inky pint 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Odaberite standardni font font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Odaberite standardni podatak o fontu # lang = "DE" # postavite parametar jezika, default ("") -> engleski lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, adresa = 0x76) # zadana i2c adresa (za Adafruit BMP280) 0x77 (zadano), 0x76 za kineski proboj) # zadati referentni pritisak # potreban za al izračun naslova, prilagodite. Standardna vrijednost 1013,25 hPa # ručni unos: #reference_hPa = ulaz ("Unesite referentni tlak u hPa:") # ili # postavite tlak u vrijeme početka kao referencu, npr. za mjerenje relativne visine time.sleep (1) # pričekajte sekundu prije prvog mjerenja j = 0 pres_norm_sum = 0 dok je j u rasponu (5): # izvršite pet mjerenja za definiranje referentne vrijednosti pres_norm_sum = pres_norm_sum + bmp.pritisak j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum/j) # postavite početno mjerenje kao referentnu točku za omogućavanje mjerenja visine bmp.sea_level_pressure = float (reference_hPa) print () dok je True: # radi zauvijek, izmijenite za verziju crontab # izmjereno vrijednosti t = bmp.temperatura p = bmp.pritisak h = bmp. vlažnost a = bmp.altitude # izračunato u biblioteci adafruit iz pritiska #timestamp ts = datetime.datetime.now () # vremenska oznaka ts0_EN = '{:%Y-% m-%d} '. format (ts) # vremenska oznaka - datum, EN format ts0_DE =' {:%d.%m.%Y} '. format (ts) # vremenska oznaka - datum, njemački format ts1 =' {: %H:%M:%S} '. Format (ts) # vremenska oznaka - vrijeme 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 = "Pritisak:" pText_DE = "Luftdruck:" h Text_EN = "Vlažnost:" hText_DE = "rel. LF: "aText_EN =" Nadmorska visina: "aText_DE =" Höhe üNN: " # exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = hTextDE: # zadani engleski ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # vrijednosti ispisa za prikaz print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # vrijednosti ispisa do Inky pHAT t1 = 5 # tab 1, prva kolona, pojednostavljuje optimizaciju izgleda t2 = 110 # tab 2, druga kolona inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # zapis vremenske oznake datum inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # vrijeme upisivanja vremenske oznake inkyphat.line ((t1, 25, 207, 25), 1, 3) # povucite liniju 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. CRNO, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternativno prikazuje izračunatu visinu # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # sačekajte nekoliko sekundi pre sledećih merenja, +19 sekundi po ciklusu inkyphat.clear () # prazna procedura prikaza Inky pHAT, inkyphat.show () # tišina za verziju crontab
Korak 5: Skripta BMP280
BMP280 je vrlo sličan BME280 senzoru, ali samo mjeri temperaturu i pritisak. Skripte su vrlo slične, ali trebate različite biblioteke Circuit Python. Ovdje se umjesto vlažnosti prikazuje izračunata visina, zasnovana na referentnom tlaku.
U prilogu ćete pronaći skriptu.
Preporučuje se:
Profesionalna meteorološka stanica koja koristi ESP8266 i ESP32 DIY: 9 koraka (sa slikama)
Profesionalna meteorološka stanica koja koristi ESP8266 i ESP32 DIY: LineaMeteoStazione je potpuna meteorološka stanica koja se može povezati s profesionalnim senzorima iz Sensiriona, kao i nekim Davisovim instrumentom (mjerač kiše, anemometar) Projekt je namijenjen kao DIY meteorološka stanica, ali samo zahtijeva
Satelitska meteorološka stanica: 5 koraka
Satelitska meteorološka stanica: Ovaj je projekt namijenjen ljudima koji žele prikupiti vlastite vremenske podatke. Može mjeriti brzinu i smjer vjetra, temperaturu i vlažnost zraka. Takođe je u stanju slušati svakih 100 minuta vremenske satelite koji kruže oko Zemlje. Hoću
Fanair: meteorološka stanica za vašu sobu: 6 koraka (sa slikama)
Fanair: Meteorološka stanica za vašu sobu: Postoji bezbroj načina da saznate trenutno vrijeme, ali tada znate samo vrijeme vani. Šta ako želite znati kakvo je vrijeme u vašoj kući, u određenoj prostoriji? To pokušavam riješiti ovim projektom. Fanair koristi više
NaTaLia meteorološka stanica: Arduino solarna meteorološka stanica učinila pravi način: 8 koraka (sa slikama)
NaTaLia meteorološka stanica: Arduino solarna meteorološka stanica učinila je pravi put: Nakon godinu dana uspješnog rada na 2 različite lokacije, dijelim svoje planove projekta meteoroloških stanica na solarni pogon i objašnjavam kako je evoluirala u sistem koji zaista može opstati dugo vremena perioda iz solarne energije. Ako pratite
"Uradi sam" meteorološka stanica i WiFi senzorska stanica: 7 koraka (sa slikama)
DIY meteorološka stanica i WiFi senzorska stanica: U ovom projektu ću vam pokazati kako stvoriti meteorološku stanicu zajedno sa WiFi senzorskom stanicom. Senzorska stanica mjeri lokalne podatke o temperaturi i vlažnosti i šalje ih putem WiFi -a meteorološkoj stanici. Meteorološka stanica tada prikazuje t