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, Studeni
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/tlaka/vlažnosti na zaslonu Pimoroni Inky pHAT e-papira/e-tinte. Kako bih omogućio povezivanje senzora i pHAT -a s GPIO -om Pi, postavio sam Pimorini Pico HAT haker s dva ženska zaglavlja pričvršćena između GPIO -a i zaslona. Uređaj je korišten za priključivanje nekoliko senzora, pa je ovdje opisana verzija BME280 samo primjer.

Za razliku od LCD zaslona, zasloni s e-tintom 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 zaslona traje samo jednu sekundu, umjesto deset do petnaest sekundi koliko zahtijevaju verzije u tri boje. Pogledajte film.

Adafruit -ova biblioteka Blinka omogućuje pokretanje Circuit Python koda na Raspberry Pi -u, a uzorci Circuit Python -a za razne senzore dostupni su u Adafruit -u. Detaljan opis kako instalirati Blinka i Circuit Python kodove možete pronaći na web stranici Adafruit. Knjižnice 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. Proboji BMP280 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 s Pi pomoću i2c, a čitanje senzora vrlo je jednostavno pomoću knjižnice i primjera koda.

Korak 1: Korišteni materijali

Korišteni materijali
Korišteni materijali
Korišteni materijali
Korišteni materijali
Korišteni materijali
Korišteni materijali
Korišteni materijali
Korišteni materijali

Raspberry Pi Zero, s 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 £, s pričvršćenim dvama ženskim zaglavljima, od kojih je jedno zaglavlje za pojačavanje s dužim iglama. Napravio sam dvije različite verzije, pogledajte opis ispod.

Proboj BME280, AZ Dostava putem Amazon.de @ 7,50 €, s priloženim zaglavljem.

Kabeli kratkospojnika za produljenje

Izborno:

USB napajanje za mobilne aplikacije

Kućište za Pi ili uređaj (nije prikazano ovdje)

Korak 2: Montaža

Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
  • Lemiti ž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 gore/prema gore u zadnjem redu, a verzija s pojačivačem zaglavlja okrenuta prema dolje u zadnjem redu i pravokutnim zaglavljem za žene u prednjem redu. Pogledajte slike. Prva verzija omogućuje vrlo jednostavno povezivanje i izmjenu senzora i kabela, dok verzija s zaglavljem prema unutra omogućuje zatvaranje Pi, senzora i Inky pHAT -a u kućište. Alternativno, možete lemiti kabele koji spajaju GPIO i senzor izravno na Pico HAT haker i/ili lemiti Pico HAT haker izravno 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 potporu, npr. Blok od pjene ili izdvojeni sastojci, za Inky pHAT.
  • Spojite kabele i senzor pomoću priključaka 3V, GND, SDA i SCL. Neće svi senzori preživjeti 5V pa provjerite prije nego što ih spojite na 5V priključke.
  • Instalirajte knjižnicu Blinka, a zatim instalirajte knjižnicu Circuit Python BME280 s Adafruit -a.
  • Instalirajte Inky pHAT knjižnicu iz Pimoronija.
  • Instalirajte primjer Python koda koji je opisan u kasnijem koraku i priložen ovom uputstvu.
  • Pokrenite kôd.

Korak 3: Korištenje uređaja

Korištenje uređaja
Korištenje uređaja

Postoje dvije mogućnosti korištenja uređaja.

Kôd kao što je prikazano ovdje će se pokrenuti pomoću prikačenog zaslona, 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. Izvrsni opisi upotrebe crontaba mogu se pronaći na drugom mjestu.

Zajedno s napajanjem možete izgraditi mobilni uređaj i koristiti ga za mjerenje uvjeta unutar ili vani, u hladnjaku, u sauni, vašem humidoru, vinskom podrumu, u avionu,….

Korištenjem Zero W ne možete samo prikazati vrijednosti na zaslonu, već ih i poslati putem poslužitelja ili vaše web stranice putem WLAN -a, kako je opisano na drugom mjestu.

Korak 4: Skripta BME280

Skripta BME280
Skripta BME280

Kao što je već spomenuto, morate instalirati knjižnice Adafruit Blinka i Circuit Python BME280, kao i knjižnicu pHAT Pimoroni Inky.

Kôd prvo inicijalizira senzor i Inky pHAT, zatim očitava vrijednosti temperature, tlaka i vlažnosti sa senzora i prikazuje ih na ekranu i zaslonu e-tinte. Pomoću naredbe time.sleep () mjerenja se vrše svake minute. Podesite prema potrebi. Postavljanjem parametra jezika možete promijeniti jezik koji se koristi za prikaz rezultata.

Pomoću zaslona Inky pHAT e-tinta najprije sastavite sliku za prikaz u memoriji prije nego što se konačno prenese na zaslon pomoću naredbe inkyphat.show (). Knjižnica Inky pHAT pojednostavljuje proces, nudeći naredbe za crtanje i oblikovanje teksta, linija, pravokutnika, krugova ili korištenje pozadinskih slika.

Osim izmjerenih vrijednosti, prikazuje se i vrijeme mjerenja.

Imajte na umu da su skripta, kao i biblioteke, napisane na Pythonu 3, pa ih otvorite i pokrenite koristeći Py3 IDLE ili ekvivalent.

# Skripta za senzor temperature/tlaka/vlažnosti bme280 (inačica koja nije Adafruit) # i tintni pHAT - crna verzija # # verzija 01. prosinca 2018, Dr H # # Zahtijeva biblioteke Adafruit Blinka i Circuit Python BME280 # i Pimoroni Inky pHAT knjižnica vrijeme uvoza datum datum -uvoz ploča uvoz busio iz adafruit_bme280 uvoz Adafruit_BME280 iz adafruit_bme280 uvoz Adafruit_BME280_I2C uvoz inkyphat uvoz sistema iz PIL -a uvoz ImageFont inkyphat.set_colour ('crno') # za b/w inky pton # obrnuto 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) # zadani referentni tlak # 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): # napravite 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 crontab-verziju # izmjereno vrijednosti t = bmp.temperatura p = bmp.pritisak h = bmp.vlažnost a = bmp.visina # izračunata u biblioteci adafruit iz tlaka #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 = "Tlak:" 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 = hText_E: # zadani engleski ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # vrijednosti ispisa za prikaz ispisa (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # ispis vrijednosti na Inky pHAT t1 = 5 # tab 1, prvi stupac, pojednostavljuje optimizaciju izgleda t2 = 110 # tab 2, drugi stupac inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # zapis vremenske oznake datuma 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. CRNI, 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) # pričekajte nekoliko sekundi prije sljedećih mjerenja, +19 sekundi po ciklusu inkyphat.clear () # prazan postupak 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 tlak. Skripte su vrlo slične, ali trebate različite knjižnice Circuit Python. Ovdje se umjesto vlažnosti prikazuje izračunata visina, temeljena na referentnom tlaku.

U privitku ćete pronaći skriptu.

Preporučeni: