Cuprins:

Stația meteo Inky_pHAT: 5 pași
Stația meteo Inky_pHAT: 5 pași

Video: Stația meteo Inky_pHAT: 5 pași

Video: Stația meteo Inky_pHAT: 5 pași
Video: Pentru ce nu s-a făcut vreme de 33 de ani în Sectorul 5... eu sunt vinovat! 2024, Noiembrie
Anonim
Stația meteo Inky_pHAT
Stația meteo Inky_pHAT
Stația meteo Inky_pHAT
Stația meteo Inky_pHAT
Stația meteo Inky_pHAT
Stația meteo Inky_pHAT
Stația meteo Inky_pHAT
Stația meteo Inky_pHAT

Aș dori aici să descriu o stație meteo bazată pe Raspberry Pi Zero, foarte simplă și compactă, care afișează valorile măsurate de un senzor de temperatură / presiune / umiditate BME280 pe un afișaj e-hârtie / cerneală electronică pHAT Pimoroni Inky. Pentru a permite conectarea senzorilor și a pHAT-ului la GPIO-ul Pi-ului, am plasat un hacker Pimorini Pico HAT cu două anteturi feminine atașate între GPIO și afișaj. Dispozitivul a fost folosit pentru a atașa mai mulți senzori, astfel încât versiunea BME280 descrisă aici este doar un exemplu.

Spre deosebire de afișajele LCD, afișajele cu cerneală electronică păstrează imaginea chiar dacă alimentarea a fost oprită. Prin urmare, acestea sunt o soluție foarte bună dacă doriți să afișați informații care sunt actualizate din când în când, în special pentru a construi dispozitive cu consum redus de energie. Avantajul major al versiunii monocrom / negru a Inky pHAT este că actualizarea afișajului durează doar aproximativ o secundă, în loc de zece până la cincisprezece secunde cerute de versiunile în trei culori. Vezi filmul.

Biblioteca Blinka Adafruit permite rularea codului Circuit Python pe Raspberry Pi, iar probele Circuit Python pentru o mare varietate de senzori sunt disponibile de la Adafruit. O descriere detaliată a modului de instalare a codurilor Blinka și Circuit Python poate fi găsită pe site-ul web Adafruit. Bibliotecile pe care le-am testat până acum (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) funcționau foarte bine, în timp ce au existat probleme minore în unele dintre exemplele de coduri.

BME280 este un senzor pentru măsurarea temperaturii, umidității și a presiunii atmosferice. Breakouts BMP280 sunt disponibile de la mulți furnizori, inclusiv Adafruit, dar eu foloseam aici o versiune chineză ieftină. Rețineți că acestea utilizează adrese i2c diferite (Adafruit: 0x77, altele: 0x76).

Breakout-ul este conectat la Pi prin i2c, iar citirea senzorului este foarte simplă folosind biblioteca și codul de exemplu.

Pasul 1: Materiale utilizate

Materiale utilizate
Materiale utilizate
Materiale utilizate
Materiale utilizate
Materiale utilizate
Materiale utilizate
Materiale utilizate
Materiale utilizate

Un Raspberry Pi Zero, cu un antet masculin atașat. Dar orice versiune Raspberry Pi ar face.

A Pimoroni Inky pHAT, versiunea neagră / monocromă, 25 € | 22 £ | 20US $, la Pimoroni.

Un hacker Pimoroni Pico HAT, 2,50 € | 2 £, cu două anteturi de sex feminin atașate, unul dintre ele un antet de rapel cu știfturi mai lungi. Am construit două versiuni diferite, a se vedea descrierea de mai jos.

Un break BME280, livrare AZ prin Amazon.de @ 7,50 €, cu antetul atașat.

Cabluri jumper de alungire

Opțional:

Un pachet de alimentare USB, pentru aplicații mobile

O carcasă pentru Pi sau dispozitiv (nu este prezentată aici)

Pasul 2: Asamblare

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
  • Lipiți anteturile feminine către hackerul Pico HAT. Înainte de lipire, verificați dacă este orientată corect. Am construit două versiuni ale acesteia, în scopuri diferite. Una cu antetul amplificator orientat în jos plasat în primul rând și un antet normal, sus / orientat în rândul din spate și o versiune cu antetul amplificator orientat în jos în rândul din spate și un antet feminin cu unghi drept în primul rând. Vezi imagini. Prima versiune permite atașarea și schimbul senzorilor și cablurilor foarte ușor, în timp ce versiunea cu antetul orientat spre interior permite încorporarea Pi, senzorului și Inky pHAT într-o carcasă. Alternativ, puteți lipi cablurile care conectează GPIO și senzorul direct la hackerul Pico HAT și / sau lipiți hackerul Pico HAT direct la pinii GPIO. În orice caz, utilizați cantitatea minimă de lipire necesară.
  • Lipiți antetul la senzor, dacă este necesar.
  • Stivați unitatea de hacker Pico HAT modificată pe Pi, apoi adăugați Inky pHAT. Dacă este necesar, introduceți un suport, de ex. Un bloc de spumă sau stand-offs, pentru Inky pHAT.
  • Atașați cablurile și senzorul, utilizând porturile 3V, GND, SDA și SCL. Nu toți senzorii vor supraviețui 5V, așa că vă rugăm să verificați înainte de a le conecta la porturile de 5V.
  • Instalați biblioteca Blinka, apoi instalați biblioteca Circuit Python BME280 de la Adafruit.
  • Instalați biblioteca Inky pHAT de la Pimoroni.
  • Instalați exemplul de cod Python descris într-un pas ulterior și atașat la acest instructable.
  • Rulați codul.

Pasul 3: Utilizarea dispozitivului

Utilizarea dispozitivului
Utilizarea dispozitivului

Există două opțiuni pentru a utiliza dispozitivul.

Codul așa cum se arată aici va fi început folosind un ecran atașat, dar apoi poate rula fără.

Cu modificări minore ale codului, puteți utiliza crontab pentru a efectua măsurători la momente de timp definite. Acest lucru ar permite reducerea consumului de energie și mai mult. Descrieri excelente despre cum să utilizați crontab pot fi găsite în altă parte.

Împreună cu un pachet de alimentare puteți construi un dispozitiv mobil și îl puteți utiliza pentru a măsura condițiile din interior sau din exterior, în frigider, în saună, în umidul dvs., în cramă, într-un avion,….

Folosind un Zero W, nu numai că puteți afișa valorile pe ecran, ci le puteți trimite și către un server sau site-ul dvs. web prin WLAN, așa cum este descris în altă parte.

Pasul 4: Scriptul BME280

Scriptul BME280
Scriptul BME280

Așa cum am menționat anterior, trebuie să instalați bibliotecile Adafruit Blinka și Circuit Python BME280, precum și biblioteca Pimoroni Inky pHAT.

Codul inițializează mai întâi senzorul și Inky pHAT, apoi citește valorile de temperatură, presiune și umiditate din senzor și le afișează pe ecran și pe afișajul cu cerneală electronică. Folosind comanda time.sleep (), măsurătorile sunt luate în fiecare minut. Reglați după cum este necesar. Prin setarea unui parametru de limbă, puteți schimba limba utilizată pentru a afișa rezultatele.

Folosind afișajul de cerneală electronică Inky pHAT, creați mai întâi imaginea care va fi afișată în memorie înainte de a fi transferată în cele din urmă pe ecran folosind comanda inkyphat.show (). Biblioteca Inky pHAT simplifică procesul, oferind comenzi pentru a desena și formata text, linii, dreptunghiuri, cercuri sau utiliza imagini de fundal.

În plus față de valorile măsurate, este afișat și timpul de măsurare.

Rețineți că scriptul, precum și bibliotecile sunt scrise în Python 3, deci deschideți și rulați folosind Py3 IDLE sau echivalent.

# Un script pentru senzorul de temperatură / presiune / umiditate bme280 (versiunea non-Adafruit) # și cerneala pHAT - versiunea neagră # # versiunea 01 decembrie 2018, Dr H # # Necesită bibliotecile Adafruit Blinka și Circuit Python BME280 # și Pimoroni Inky bibliotecă pHAT timp import import datetime import board import busio from adafruit_bme280 import Adafruit_BME280 from adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys from PIL import ImageFont inkyphat.set_colour ('black') # pentru b / w inky phat inkyphat.set_ 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Select font standard font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Select standard font data # lang = "DE" # set set language parameter, implicit ("") -> english lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # adresa i2c implicită (pentru Adafruit BMP280) 0x77 (implicit), 0x76 pentru spargerea chineză) # set presiune de referință # necesară pentru al calculul titlului, vă rugăm să ajustați. Valoare standard 1013.25 hPa # intrare manuală: #reference_hPa = input ("Introduceți presiunea de referință în hPa:") # sau # setați presiunea la ora de pornire ca referință, de ex. pentru măsurarea înălțimii relative. 1 time.sleep (1) reference_hPa = (pres_norm_sum / j) # setează măsurarea inițială ca punct de referință pentru a permite măsurarea înălțimii bmp.sea_level_pressure = float (reference_hPa) print () în timp ce True: #runs forever, modificați pentru versiunea crontab # măsurată valori t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # calculate by adafruit library from pressure #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:% Y-% m-% d} '. format (ts) # timestamp - date, EN format ts0_DE =' {:% d.% m.% Y} '. format (ts) # timestamp - date, format german 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 = "Presiune:" pText_DE = "Luftdruck:" h Text_EN = "Umiditate:" 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_DE else: # implicit engleză ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # print valori pentru a afișa print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, "%") print (aText, alt, "m") print () # valori de imprimare la Inky pHAT t1 = 5 # fila 1, coloană frist, simplifică optimizarea aspectului t2 = 110 # fila 2, a doua coloană inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # scrie data timestamp inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # scrie timestamp timp inkyphat.line ((t1, 25, 207, 25), 1, 3) # trasează o linie 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. NEGRU, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + "%"), inkyphat. BLACK, font2) # afișează alternativ înălțimea calculată # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # așteptați câteva secunde înainte de următoarele măsurători, +19 sec pe ciclu inkyphat.clear () # gol Procedura de afișare a pH-ului inkky, inkyphat.show () # tăcere pentru versiunea crontab

Pasul 5: Scriptul BMP280

BMP280 este foarte similar cu senzorul BME280, dar măsoară doar temperatura și presiunea. Scripturile sunt foarte asemănătoare, dar aveți nevoie de diferite biblioteci Circuit Python. Aici, în loc de umiditate, este afișată o înălțime calculată, bazată pe o presiune de referință.

Atașat găsiți scriptul.

Recomandat: