Sadržaj:

Meteorološka stanica Inky_pHAT: 5 koraka
Meteorološka stanica Inky_pHAT: 5 koraka

Video: Meteorološka stanica Inky_pHAT: 5 koraka

Video: Meteorološka stanica Inky_pHAT: 5 koraka
Video: Обсерватория Эдварда Поповича (Star Digger) под Кагарлыком. 2024, Juli
Anonim
Meteorološka stanica Inky_pHAT
Meteorološka stanica Inky_pHAT
Meteorološka stanica Inky_pHAT
Meteorološka stanica Inky_pHAT
Meteorološka stanica Inky_pHAT
Meteorološka stanica Inky_pHAT
Meteorološka stanica Inky_pHAT
Meteorološka stanica Inky_pHAT

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

Korišćeni materijali
Korišćeni materijali
Korišćeni materijali
Korišćeni materijali
Korišćeni materijali
Korišćeni materijali
Korišćeni materijali
Korišćeni 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

Montaža
Montaža
Montaža
Montaža
Montaža
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

Korišćenje uređaja
Korišćenje 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

Skripta BME280
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: