Taula de continguts:

Estació meteorològica Inky_pHAT: 5 passos
Estació meteorològica Inky_pHAT: 5 passos

Vídeo: Estació meteorològica Inky_pHAT: 5 passos

Vídeo: Estació meteorològica Inky_pHAT: 5 passos
Vídeo: Como fazer um Projeto de pesquisa passo a passo Aula completa 2024, Desembre
Anonim
Estació meteorològica Inky_pHAT
Estació meteorològica Inky_pHAT
Estació meteorològica Inky_pHAT
Estació meteorològica Inky_pHAT
Estació meteorològica Inky_pHAT
Estació meteorològica Inky_pHAT
Estació meteorològica Inky_pHAT
Estació meteorològica Inky_pHAT

Aquí m’agradaria descriure una estació meteorològica molt senzilla i compacta, basada en Raspberry Pi Zero, que mostra els valors mesurats per un sensor de temperatura / pressió / humitat BME280 en una pantalla de paper electrònic / tinta electrònica PIMORONI Inky pHAT. Per permetre la connexió de sensors i el pHAT al GPIO del Pi, he col·locat un hacker Pimorini Pico HAT amb dues capçaleres femenines connectades entre el GPIO i la pantalla. El dispositiu s’ha utilitzat per connectar diversos sensors, de manera que la versió BME280 que es descriu aquí és només un exemple.

A diferència de les pantalles LCD, les pantalles de tinta electrònica mantenen la imatge encara que s’hagi apagat l’alimentació. Per tant, són una molt bona solució si voleu mostrar informació que s’actualitza de tant en tant, especialment per construir dispositius de baix consum. El principal avantatge de la versió monocroma / negra de l'Inky pHAT és que l'actualització de la pantalla triga aproximadament un segon, en lloc de deu a quinze segons que requereixen les versions de tres colors. Veure pel·lícula.

La biblioteca Blinka d’Adafruit permet executar el codi de Circuit Python al Raspberry Pi, i a Adafruit hi ha disponibles mostres de Circuit Python per a una àmplia varietat de sensors. Podeu trobar una descripció detallada de com instal·lar els codis Blinka i Circuit Python al lloc web d’Adafruit. Les biblioteques que he provat fins ara (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) funcionaven molt bé, mentre que hi havia problemes menors en alguns dels codis d'exemple.

BME280 és un sensor per mesurar la temperatura, la humitat i la pressió atmosfèrica. Els brots BMP280 estan disponibles a molts proveïdors, inclòs Adafruit, però jo aquí estava fent servir una versió xinesa barata. Tingueu en compte que utilitzen adreces i2c diferents (Adafruit: 0x77, altres: 0x76).

El trencament està connectat al Pi mitjançant i2c i llegir el sensor és molt senzill mitjançant la biblioteca i el codi d’exemple.

Pas 1: materials utilitzats

Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats

Un Raspberry Pi Zero, amb una capçalera masculina connectada. Però qualsevol versió de Raspberry Pi ho faria.

A Pimoroni Inky pHAT, versió negre / monocrom, 25 € | 22 £ | 20US $, a Pimoroni.

Un pirata informàtic Pimoroni Pico HAT, de 2,50 € | 2 £, amb dues capçaleres femenines connectades, una d'elles una capçalera de reforç amb pins més llargs. He construït dues versions diferents, vegeu la descripció següent.

Una sortida BME280, lliurament AZ a través d'Amazon.de @ 7,50 €, amb la capçalera adjunta.

Cables de pont d'allargament

Opcional:

Un paquet d'alimentació USB, per a aplicacions mòbils

Una carcassa per al Pi o el dispositiu (no es mostra aquí)

Pas 2: Muntatge

muntatge
muntatge
muntatge
muntatge
muntatge
muntatge
  • Soldeu les capçaleres femenines a l’hacker Pico HAT. Abans de soldar, comproveu si hi ha una orientació correcta. N’he construït dues versions, amb finalitats diferents. Una amb la capçalera de reforç cap avall col·locada a la primera fila i una capçalera normal, cap amunt / cap amunt a la fila del darrere, i una versió amb la capçalera de reforç cap avall a la fila del darrere i una capçalera femenina d’angle dret a la primera fila. Veure imatges. La primera versió permet connectar i intercanviar sensors i cables molt fàcilment, mentre que la versió amb capçalera cap a l'interior permet incloure Pi, sensor i Inky pHAT en una carcassa. També podeu soldar els cables que connecten GPIO i el sensor directament a l’hacker Pico HAT i / o soldar el hacker Pico HAT directament als pins GPIO. En qualsevol cas, utilitzeu la quantitat mínima de soldadura necessària.
  • Soldeu la capçalera al sensor, si cal.
  • Apileu la unitat de pirates informàtics Pico HAT modificada al Pi i, a continuació, afegiu-hi l'Inky pHAT. Si cal, inseriu algun suport, p. Ex. Un bloc d'escuma o separacions, per a l'Inky pHAT.
  • Connecteu els cables i el sensor mitjançant els ports 3V, GND, SDA i SCL. No tots els sensors sobreviuran a 5V, així que comproveu-los abans de connectar-los als ports de 5V.
  • Instal·leu la biblioteca Blinka i, a continuació, instal·leu la biblioteca Circuit Python BME280 d’Adafruit.
  • Instal·leu la biblioteca Inky pHAT de Pimoroni.
  • Instal·leu l'exemple de codi Python descrit en un pas posterior i adjunt a aquest instructable.
  • Executeu el codi.

Pas 3: utilitzar el dispositiu

Ús del dispositiu
Ús del dispositiu

Hi ha dues opcions per utilitzar el dispositiu.

El codi que es mostra aquí s'iniciarà mitjançant una pantalla adjunta, però després es podrà executar sense.

Amb modificacions menors al codi, podeu utilitzar crontab per realitzar mesures en punts de temps definits. Això permetria reduir encara més el consum d’energia. Podeu trobar descripcions excel·lents sobre com utilitzar el crontab en altres llocs.

Juntament amb un paquet d'alimentació, podeu construir un dispositiu mòbil i utilitzar-lo per mesurar les condicions a l'interior o a l'exterior, a la nevera, a la sauna, al vostre humidor, al celler, en un avió, …

Si utilitzeu un Zero W, no només podeu mostrar els valors a la pantalla, sinó també enviar-los a un servidor o al vostre lloc web a través de WLAN, tal com es descriu en altres llocs.

Pas 4: l'script BME280

L’escriptura BME280
L’escriptura BME280

Com s’ha esmentat abans, heu d’instal·lar les biblioteques Adafruit Blinka i Circuit Python BME280, així com la biblioteca pHAT Pimoroni Inky.

El codi inicialitza inicialment el sensor i Inky pHAT, després llegeix els valors de temperatura, pressió i humitat del sensor i els mostra a la pantalla i a la pantalla de tinta electrònica. Mitjançant l'ordre time.sleep (), es prenen mesures cada minut. Ajusteu-ho segons calgui. Si configureu un paràmetre d'idioma, podeu canviar l'idioma utilitzat per mostrar els resultats.

Mitjançant la pantalla de tinta electrònica Inky pHAT, primer creeu la imatge que es mostrarà a la memòria abans que finalment es transfereixi a la pantalla mitjançant l'ordre inkyphat.show (). La biblioteca Inky pHAT simplifica el procés, oferint ordres per dibuixar i formatar text, línies, rectangles, cercles o utilitzar imatges de fons.

A més dels valors mesurats, també es mostra el temps de mesura.

Tingueu en compte que l'script i les biblioteques s'escriuen en Python 3, de manera que obriu-lo i executeu-lo amb Py3 IDLE o equivalent.

# Un guió per al sensor de temperatura / pressió / humitat bme280 (versió que no és Adafruit) # i el color tinta pHAT - versió negra # # versió 01 de desembre de 2018, el Dr H # # Requereix les biblioteques Adafruit Blinka i Circuit Python BME280 # i el Pimoroni Inky Biblioteca pHAT importació temps importació datetime importació placa importació busio des adafruit_bme280 importació Adafruit_BME280 des adafruit_bme280 importació Adafruit_BME280_I2C importació inkyphat importació sys de la importació PIL ImageFont inkyphat.set_colour ('negre') # per b / w inky phat inkyphat.set_ 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Select font font font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Select standard font data # lang = "DE" # set language language, default ("") -> english lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # default i2c address (for Adafruit BMP280) 0x77 (default), 0x76 per a la ruptura xinesa) #set pressió de referència # requerida per al càlcul del títol, si us plau, ajusteu-lo. Valor estàndard 1013,25 hPa # entrada manual: #reference_hPa = input ("Introduïu la pressió de referència a hPa:") # o # configureu la pressió a l'hora d'inici com a referència, p. per a mesures d’alçada relativa time.sleep (1) # espereu un segon abans de la primera mesura j = 0 pres_norm_sum = 0 mentre que j en el rang (5): # feu cinc mesures per definir el valor de referència pres_norm_sum = pres_norm_sum + bmp.pression j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum / j) # defineix la mesura inicial com a punt de referència per habilitar les mesures d’alçada bmp.sea_level_pressure = float (reference_hPa) print () mentre és True: #runs forever, modifica per a la versió crontab # mida valors t = bmp.temperature p = bmp.pression h = bmp.humidity a = bmp.altitude # calculat per la biblioteca adafruit a partir de la pressió #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 alemany 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 = "Pressió:" pText_DE = "Luftdruck:" h Text_EN = "Humitat:" 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: # default english ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # valors d'impressió per mostrar print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, "%") print (aText, alt, "m") print () # valors d'impressió a Inky pHAT t1 = 5 # tab 1, columna frist, simplifica l'optimització del disseny t2 = 110 # tab 2, segona columna inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # escriure data de marca de temps inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # escriure hora de marca de temps inkyphat.line ((t1, 25, 207, 25), 1, 3) # dibuixar una línia 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. NEGRE, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + "%"), inkyphat. BLACK, font2) # també mostra l'alçada calculada # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # espereu uns segons abans de les properes mesures, +19 segons per cicle inkyphat.clear () # buit Procediment de visualització de pHAT d’inky, inkyphat.show () # silenci per a la versió crontab

Pas 5: l'script BMP280

El BMP280 és molt similar al sensor BME280, però només mesura la temperatura i la pressió. Els scripts són molt similars, però necessiteu diferents biblioteques de Circuit Python. Aquí, en lloc de la humitat, es mostra una alçada calculada, basada en una pressió de referència.

Adjunt trobareu l'script.

Recomanat: