Indholdsfortegnelse:

Inky_pHAT vejrstation: 5 trin
Inky_pHAT vejrstation: 5 trin

Video: Inky_pHAT vejrstation: 5 trin

Video: Inky_pHAT vejrstation: 5 trin
Video: 3 дня на поезде с удивительными пейзажами Америки | Чикаго - Сан-Франциско 2024, Juli
Anonim
Inky_pHAT vejrstation
Inky_pHAT vejrstation
Inky_pHAT vejrstation
Inky_pHAT vejrstation
Inky_pHAT vejrstation
Inky_pHAT vejrstation
Inky_pHAT vejrstation
Inky_pHAT vejrstation

Jeg vil her beskrive en meget enkel og kompakt, Raspberry Pi Zero-baseret vejrstation, der viser værdierne målt ved en BME280 temperatur/tryk/fugtighedsføler på et Pimoroni Inky pHAT e-papir/e-ink display. For at tillade tilslutning af sensorer og pHAT til GPIO'en på Pi’en placerede jeg en Pimorini Pico HAT -hacker med to kvindelige headers fastgjort mellem GPIO’en og displayet. Enheden er blevet brugt til at tilslutte flere sensorer, så den her beskrevne BME280 -version er blot et eksempel.

I modsætning til LCD-skærme bevarer e-ink-skærme billedet, selvom der er slukket for strømmen. Derfor er de en meget god løsning, hvis du vil vise oplysninger, der opdateres lige fra tid til anden, især for at bygge lavenergienheder. Den største fordel ved den monokrome/sorte version af Inky pHAT er, at opdateringen af skærmen tager cirka et sekund i stedet for ti til femten sekunder, der kræves af de trefarvede versioner. Se film.

Adafruit's Blinka -bibliotek giver mulighed for at køre Circuit Python -kode på Raspberry Pi, og Circuit Python -prøver til en bred vifte af sensorer er tilgængelige fra Adafruit. En detaljeret beskrivelse af, hvordan du installerer Blinka og Circuit Python -koderne, findes på Adafruit -webstedet. De biblioteker, jeg har testet hidtil (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) fungerede meget godt, mens der var mindre problemer i nogle af eksemplerne.

BME280 er en sensor til måling af temperatur, fugtighed og atmosfærisk tryk. BMP280 breakouts er tilgængelige fra mange leverandører, herunder Adafruit, men jeg brugte her en billig kinesisk version. Vær opmærksom på, at disse bruger forskellige i2c -adresser (Adafruit: 0x77, andre: 0x76).

Udbruddet er forbundet til Pi med i2c, og aflæsning af sensoren er meget enkel ved hjælp af biblioteket og eksempelkoden.

Trin 1: Brugte materialer

Materialer brugt
Materialer brugt
Materialer brugt
Materialer brugt
Materialer brugt
Materialer brugt
Materialer brugt
Materialer brugt

En Raspberry Pi Zero, med et hanhoved vedhæftet. Men enhver Raspberry Pi -version ville gøre det.

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

En Pimoroni Pico HAT -hacker, 2,50 € | 2 £, med to kvindelige headers vedhæftet, en af dem en booster -header med længere stifter. Jeg har bygget to forskellige versioner, se beskrivelse nedenfor.

En BME280 breakout, AZ levering via Amazon.de @ 7,50 €, med header vedhæftet.

Forlængelse af jumperkabler

Valgfri:

En USB -strømforsyning til mobile applikationer

Et hus til Pi eller enheden (ikke vist her)

Trin 2: Montering

montage
montage
montage
montage
montage
montage
  • Lod de kvindelige headers til Pico HAT -hackeren. Inden lodning kontrolleres den korrekte retning. Jeg har bygget to versioner af dette til forskellige formål. En med den nedadvendte booster header placeret på den forreste række og en normal, op/vendende header i den bageste række, og en version med den nedadvendte booster header i den bageste række, og en retvinklet kvindelig header i den forreste række. Se billeder. Den første version giver mulighed for at montere og udveksle sensorer og kabler meget let, mens versionen med det indadvendte hoved giver mulighed for at omslutte Pi, sensor og Inky pHAT i et hus. Alternativt kan du lodde kablerne, der forbinder GPIO og sensor direkte til Pico HAT -hackeren og/eller lodde Pico HAT -hackeren direkte til GPIO -benene. Under alle omstændigheder skal du bruge den minimale mængde lodde, der kræves.
  • Lod om nødvendigt headeren til sensoren.
  • Stack den modificerede Pico HAT -hackerenhed på Pi, og tilføj derefter Inky pHAT. Indsæt om nødvendigt noget støtte, f.eks. En skumblok eller stand-offs til Inky pHAT.
  • Tilslut kablerne og sensoren ved hjælp af 3V-, GND-, SDA- og SCL -portene. Ikke alle sensorer overlever 5V, så tjek det, før du slutter dem til 5V -porte.
  • Installer Blinka -biblioteket, og installer derefter Circuit Python BME280 -biblioteket fra Adafruit.
  • Installer Inky pHAT -biblioteket fra Pimoroni.
  • Installer eksemplet på Python -kode, der er beskrevet i et senere trin, og knyttet til denne instruerbare.
  • Kør koden.

Trin 3: Brug af enheden

Brug af enheden
Brug af enheden

Der er to muligheder for at bruge enheden.

Koden som vist her skal startes ved hjælp af en vedhæftet skærm, men kan derefter køre uden.

Med mindre ændringer af koden kan du bruge crontab til at udføre målinger på bestemte tidspunkter. Dette ville gøre det muligt at reducere strømforbruget yderligere. Fremragende beskrivelser af, hvordan man bruger crontab, findes andre steder.

I forbindelse med en power pack kan du bygge en mobil enhed og bruge den til at måle forholdene inde eller ude, i køleskabet, i saunaen, din humidor, vinkælderen, i et fly,….

Ved hjælp af et Zero W kan du ikke kun vise værdierne på displayet, men også sende dem til en server eller dit websted via WLAN, som beskrevet andetsteds.

Trin 4: BME280 -scriptet

BME280 -scriptet
BME280 -scriptet

Som nævnt før skal du installere Adafruit Blinka og Circuit Python BME280 -bibliotekerne samt Pimoroni Inky pHAT -biblioteket.

Koden initialiserer først sensoren og Inky pHAT, læser derefter temperatur-, tryk- og fugtighedsværdierne fra sensoren og viser dem på skærmen og e-ink display. Ved hjælp af kommandoen time.sleep () foretages målinger hvert minut. Juster efter behov. Ved at indstille en sprogparameter kan du ændre det sprog, der bruges til at vise resultaterne.

Ved hjælp af Inky pHAT e-ink display, bygger du først det billede, der skal vises i hukommelsen, før det endelig overføres til skærmen ved hjælp af kommandoen inkyphat.show (). Inky pHAT -biblioteket forenkler processen og tilbyder kommandoer til at tegne og formatere tekst, linjer, rektangler, cirkler eller bruge baggrundsbilleder.

Ud over de målte værdier vises også målingstidspunktet.

Husk, at scriptet samt bibliotekerne er skrevet i Python 3, så åbn og kør ved hjælp af Py3 IDLE eller tilsvarende.

# Et script til bme280 temperatur/tryk/luftfugtighedssensor (ikke -Adafruit -version) # og den blækkede pHAT - sort version # # version 1. december 2018, Dr H # # Kræver 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 ('sort') # til s/h inky phat turnyat (180) 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Vælg standard skrifttype font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Vælg standard skrifttypedata # lang = "DE" # sæt sprogparameter, 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) # sæt referencetryk # påkrævet for al titutberegning, juster venligst. Standardværdi 1013,25 hPa # manuel indgang: #reference_hPa = input ("Indtast referencetryk i hPa:") # eller # indstil tryk ved starttidspunkt som reference, f.eks. for relative højdemålinger tid. søvn (1) # vent et sekund før 1. måling j = 0 pres_norm_sum = 0 mens j inden for område (5): # tag fem målinger for at definere referenceværdi pres_norm_sum = pres_norm_sum + bmp. tryk j = j + 1 gang. Søvn (1) reference_hPa = (pres_norm_sum/j) # indstil indledende måling som referencepunkt for at aktivere højdemålinger bmp.sea_level_pressure = float (reference_hPa) print () mens True: # kører for evigt, modificer for crontab-version # målt værdier t = bmp.temperatur p = bmp.tryk h = bmp.fugtighed a = bmp.altitude # beregnet af adafruit bibliotek fra tryk #timestamp ts = datetime.datetime.now () # tidsstempel ts0_DA = '{:%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) # tidsstempel - tid 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 = "Tryk:" pText_DE = "Luftdruck:" h Text_EN = "Fugtighed:" 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 # udskrivningsværdier for at vise print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # printværdier til Inky pHAT t1 = 5 # fane 1, fristkolonne, forenkler optimering af layout t2 = 110 # tab 2, anden kolonne inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # skrive tidsstempel dato inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # skriv 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. SORT, skrifttype2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternativt vis beregnet højde # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # vent nogle sekunder før næste målinger, +19 sek pr. cyklus inkyphat.clear () # tom Inky pHAT-visningsprocedure, inkyphat.show () # tavshed for crontab-version

Trin 5: BMP280 -scriptet

BMP280 ligner meget BME280 -sensoren, men måler bare temperatur og tryk. Scripts er meget ens, men du har brug for forskellige Circuit Python -biblioteker. Her vises i stedet for luftfugtigheden en beregnet højde baseret på et referencetryk.

Vedhæftet finder du scriptet.

Anbefalede: