Innholdsfortegnelse:

Inky_pHAT værstasjon: 5 trinn
Inky_pHAT værstasjon: 5 trinn

Video: Inky_pHAT værstasjon: 5 trinn

Video: Inky_pHAT værstasjon: 5 trinn
Video: Метеостанция + беспроводные датчики термогигрометр с выносными датчиками для дома и улицы 2024, Juli
Anonim
Inky_pHAT værstasjon
Inky_pHAT værstasjon
Inky_pHAT værstasjon
Inky_pHAT værstasjon
Inky_pHAT værstasjon
Inky_pHAT værstasjon
Inky_pHAT værstasjon
Inky_pHAT værstasjon

Jeg vil gjerne beskrive en veldig enkel og kompakt, Raspberry Pi Zero-basert værstasjon, som viser verdiene målt med en BME280 temperatur/trykk/fuktighetssensor på en Pimoroni Inky pHAT e-paper/e-ink display. For å tillate tilkobling av sensorer og pHAT til GPIO på Pi, plasserte jeg en Pimorini Pico HAT -hacker med to kvinnelige overskrifter festet mellom GPIO og displayet. Enheten har blitt brukt til å feste flere sensorer, så BME280 -versjonen som er beskrevet her er bare et eksempel.

I motsetning til LCD-skjermer beholder e-blekkbildet bildet selv om strømmen er slått av. Derfor er de en veldig god løsning hvis du vil vise informasjon som oppdateres bare fra tid til annen, spesielt for å bygge lavenergienheter. Den største fordelen med den monokrome/svarte versjonen av Inky pHAT er at oppdateringen av skjermen tar omtrent ett sekund, i stedet for ti til femten sekunder som treskjermversjonene krever. Se film.

Adafruit's Blinka -bibliotek lar deg kjøre Circuit Python -kode på Raspberry Pi, og Circuit Python -prøver for et stort utvalg sensorer er tilgjengelig fra Adafruit. En detaljert beskrivelse av hvordan du installerer Blinka og Circuit Python -kodene finner du på Adafruit -nettstedet. Bibliotekene jeg har testet så langt (BMP280, BME280, TSL2591, TCS34785, VEML7065,…) fungerte veldig bra, mens det var mindre problemer i noen av eksemplene.

BME280 er en sensor for å måle temperatur, fuktighet og atmosfærisk trykk. BMP280 breakouts er tilgjengelig fra mange leverandører, inkludert Adafruit, men jeg her brukte en billig kinesisk versjon. Vær oppmerksom på at disse bruker forskjellige i2c -adresser (Adafruit: 0x77, andre: 0x76).

Utbruddet er koblet til Pi med i2c, og lesing av sensoren er veldig enkelt ved å bruke biblioteket og eksempelkoden.

Trinn 1: Materialer som brukes

Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes

En Raspberry Pi Zero, med en mannlig header festet. Men enhver Raspberry Pi -versjon ville gjøre det.

En Pimoroni Inky pHAT, svart/monokrom versjon, 25 € | 22 £ | 20US $, hos Pimoroni.

En Pimoroni Pico HAT -hacker, 2,50 € | 2 £, med to kvinnelige overskrifter festet, en av dem en boost -header med lengre pins. Jeg har bygget to forskjellige versjoner, se beskrivelse nedenfor.

En BME280 breakout, AZ Delivery via Amazon.de @ 7.50 €, med topptekst vedlagt.

Forlengelses jumperkabler

Valgfri:

En USB -strømpakke, for mobile applikasjoner

Et hus for Pi eller enheten (ikke vist her)

Trinn 2: Montering

montering
montering
montering
montering
montering
montering
  • Lodd de kvinnelige hodene til Pico HAT -hackeren. Før lodding, sjekk for riktig retning. Jeg har bygget to versjoner av dette, til forskjellige formål. En med den nedovervendte booster-hodet plassert på første rad og en normal, opp/vendt header på bakre rad, og en versjon med den nedovervendte booster-headeren i den bakre raden, og en rettvinklet kvinnelig header i første rad. Se bilder. Den første versjonen gjør det enkelt å feste og bytte ut sensorer og kabler, mens versjonen med den innovervendte hodet tillater å omslutte Pi, sensor og Inky pHAT i et hus. Alternativt kan du lodde kablene som kobler GPIO og sensoren direkte til Pico HAT -hackeren og/eller lodde Pico HAT -hackeren direkte til GPIO -pinnene. Bruk i alle fall den minimale mengden lodde som kreves.
  • Lodd overskriften til sensoren, om nødvendig.
  • Stack den modifiserte Pico HAT -hackerenheten på Pi, og legg deretter til Inky pHAT. Om nødvendig, sett inn litt støtte, f.eks. En skumblokk eller stand-offs for Inky pHAT.
  • Fest kablene og sensoren ved hjelp av 3V-, GND-, SDA- og SCL -portene. Ikke alle sensorer overlever 5V, så sjekk før du kobler dem til 5V -porter.
  • Installer Blinka -biblioteket, og installer deretter Circuit Python BME280 -biblioteket fra Adafruit.
  • Installer Inky pHAT -biblioteket fra Pimoroni.
  • Installer eksempelet Python -kode som er beskrevet i et senere trinn og festet til denne instruksen.
  • Kjør koden.

Trinn 3: Bruke enheten

Bruke enheten
Bruke enheten

Det er to alternativer for å bruke enheten.

Koden som vist her skal startes ved hjelp av en skjerm festet, men kan deretter kjøres uten.

Med mindre endringer i koden kan du bruke crontab til å utføre målinger på bestemte tidspunkter. Dette vil gjøre det mulig å redusere strømforbruket ytterligere. Gode beskrivelser av hvordan du bruker crontab finnes andre steder.

I forbindelse med en strømpakke kan du bygge en mobil enhet og bruke den til å måle forholdene inne eller ute, i kjøleskapet, i badstuen, humidoren, vinkjelleren, i et fly,….

Ved bruk av en Zero W kan du ikke bare vise verdiene på skjermen, men også sende dem til en server eller nettstedet ditt via WLAN, som beskrevet andre steder.

Trinn 4: BME280 -skriptet

BME280 -skriptet
BME280 -skriptet

Som nevnt tidligere må du installere Adafruit Blinka og Circuit Python BME280 -bibliotekene samt Pimoroni Inky pHAT -biblioteket.

Koden initialiserer først sensoren og Inky pHAT, leser deretter temperatur-, trykk- og fuktighetsverdiene fra sensoren og viser dem på skjermen og e-blekkdisplayet. Ved hjelp av kommandoen time.sleep () måles hvert minutt. Juster etter behov. Ved å angi en språkparameter kan du endre språket som brukes til å vise resultatene.

Ved å bruke Inky pHAT e-ink display, bygger du først bildet som skal vises i minnet før det til slutt overføres til skjermen ved hjelp av kommandoen inkyphat.show (). Inky pHAT -biblioteket forenkler prosessen, og tilbyr kommandoer for å tegne og formatere tekst, linjer, rektangler, sirkler eller bruke bakgrunnsbilder.

I tillegg til måleverdiene, vises også målingstidspunktet.

Vær oppmerksom på at skriptet så vel som bibliotekene er skrevet i Python 3, så åpne og kjør det med Py3 IDLE eller tilsvarende.

# Et skript for bme280 temperatur-/trykk-/fuktighetssensor (ikke -Adafruit -versjon) # og blekk pHAT - svart versjon # # versjon 1. desember 2018, Dr H # # Krever Adafruit Blinka og Circuit Python BME280 -biblioteker # og Pimoroni Inky pHAT bibliotek import tid import datetime import board import busio fra adafruit_bme280 import Adafruit_BME280 fra adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys fra PIL import ImageFont inkyphat.set_colour ('svart') # for s/h inky phat inkyphat (180) 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Velg standard font font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Velg standard fontdata # lang = "DE" # sett språkparameter, default ("") -> engelsk lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, adresse = 0x76) # standard i2c adresse (for Adafruit BMP280) 0x77 (standard), 0x76 for kinesisk breakout) #sett referansetrykk # nødvendig for al tituleringsberegning, vennligst juster. Standardverdi 1013,25 hPa # manuell inngang: #reference_hPa = input ("Angi referansetrykk i hPa:") # eller # sett trykk ved starttid som referanse, f.eks. for relative høydemålinger tid. sove (1) # vent et sekund før første måling j = 0 pres_norm_sum = 0 mens j i område (5): # ta fem målinger for å definere referanseverdi pres_norm_sum = pres_norm_sum + bmp. trykk j = j + 1 gang. Søvn (1) referanse_hPa = (pres_norm_sum/j) # sett innledende måling som referansepunkt for å muliggjøre høydemålinger bmp.sea_level_pressure = float (reference_hPa) print () mens True: #runs forever, modifiser for crontab-versjon # målt verdier t = bmp.temperatur p = bmp.trykk h = bmp.fuktighet a = bmp.altitude # beregnet av adafruit bibliotek fra trykk #tidsstempel ts = datetime.datetime.now () # tidsstempel ts0_EN = '{:%Y-% m-%d} '. format (ts) # tidsstempel - dato, EN -format ts0_DE =' {:%d.%m.%Y} '. format (ts) # tidsstempel - dato, tysk format 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 = "Trykk:" pText_DE = "Luftdruck:" h Text_EN = "Fuktighet:" hText_DE = "rel. LF: "aText_EN =" Altitude: "aText_DE =" Höhe üNN: " # exact: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = h: # standard engelsk ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # utskriftsverdier for å vise print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # print verdier til Inky pHAT t1 = 5 # tab 1, frist column, forenkler optimalisering av layout t2 = 110 # tab 2, andre kolonne inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # skrive tidsstempel dato inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # skrive tidsstempel tid inkyphat.line ((t1, 25, 207, 25), 1, 3) # tegne en linje 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. SVART, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternativt vis beregnet høyde # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # vent noen sekunder før neste måling, +19 sek per syklus inkyphat.clear () # tom Inky pHAT visningsprosedyre, inkyphat.show () # stillhet for crontab-versjon

Trinn 5: BMP280 -skriptet

BMP280 er veldig lik BME280 -sensoren, men måler bare temperatur og trykk. Skriptene er veldig like, men du trenger forskjellige Circuit Python -biblioteker. Her vises i stedet for fuktigheten en beregnet høyde, basert på et referansetrykk.

Vedlagt finner du manuset.

Anbefalt: