Inhoudsopgave:
- Stap 1: Gebruikte materialen
- Stap 2: Montage
- Stap 3: Het apparaat gebruiken
- Stap 4: Het BME280-script
- Stap 5: Het BMP280-script
Video: Inky_pHAT weerstation: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Ik zou hier een zeer eenvoudig en compact, op Raspberry Pi Zero gebaseerd weerstation willen beschrijven, dat de waarden weergeeft die zijn gemeten door een BME280 temperatuur/druk/vochtigheidssensor op een Pimoroni Inky pHAT e-paper/e-ink display. Om de aansluiting van sensoren en de pHAT op de GPIO van de Pi mogelijk te maken, heb ik een Pimorini Pico HAT-hacker met twee vrouwelijke headers tussen de GPIO en het display geplaatst. Het apparaat is gebruikt om meerdere sensoren aan te sluiten, dus de hier beschreven BME280-versie is slechts een voorbeeld.
In tegenstelling tot LCD-schermen behouden e-ink-schermen het beeld, zelfs als de stroom is uitgeschakeld. Daarom zijn ze een zeer goede oplossing als u informatie wilt weergeven die van tijd tot tijd wordt bijgewerkt, vooral om apparaten met een laag energieverbruik te bouwen. Het grote voordeel van de zwart-wit/zwarte versie van de Inky pHAT is dat het updaten van het display slechts ongeveer een seconde duurt, in plaats van tien tot vijftien seconden die nodig zijn voor de driekleurenversies. Film zien.
Adafruit's Blinka-bibliotheek maakt het mogelijk om Circuit Python-code op de Raspberry Pi uit te voeren, en Circuit Python-samples voor een breed scala aan sensoren zijn verkrijgbaar bij Adafruit. Een gedetailleerde beschrijving van het installeren van Blinka en de Circuit Python-codes is te vinden op de Adafruit-website. De bibliotheken die ik tot nu toe heb getest (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) werkten erg goed, terwijl er kleine problemen waren in sommige van de voorbeeldcodes.
BME280 is een sensor voor het meten van temperatuur, vochtigheid en atmosferische druk. BMP280-breakouts zijn verkrijgbaar bij veel leveranciers, waaronder Adafruit, maar ik gebruikte hier een goedkope Chinese versie. Houd er rekening mee dat deze verschillende i2c-adressen gebruiken (Adafruit: 0x77, anderen: 0x76).
De breakout is via i2c verbonden met de Pi en het lezen van de sensor is heel eenvoudig met behulp van de bibliotheek en voorbeeldcode.
Stap 1: Gebruikte materialen
Een Raspberry Pi Zero, met een mannelijke header eraan bevestigd. Maar elke Raspberry Pi-versie zou het doen.
Een Pimoroni Inky pHAT, zwart/monochrome versie, 25€|22£|20US$, bij Pimoroni.
Een Pimoroni Pico HAT-hacker, 2,50€|2£, met twee vrouwelijke headers bevestigd, een van hen een booster-header met langere pinnen. Ik heb twee verschillende versies gebouwd, zie onderstaande beschrijving.
Een BME280 breakout, AZ Delivery via Amazon.de @ 7,50 €, met bijgevoegde header.
Verlengde startkabels
Optioneel:
Een USB-voedingspakket, voor mobiele toepassingen
Een behuizing voor de Pi of het apparaat (hier niet afgebeeld)
Stap 2: Montage
- Soldeer de vrouwelijke headers aan de Pico HAT-hacker. Controleer voor het solderen de juiste oriëntatie. Ik heb hier twee versies van gebouwd, voor verschillende doeleinden. Een met de naar beneden gerichte booster-header op de voorste rij en een normale, omhoog / gerichte header op de achterste rij, en een versie met de naar beneden gerichte booster-header op de achterste rij en een rechthoekige vrouwelijke header op de voorste rij. Zie afbeeldingen. Met de eerste versie kunnen sensoren en kabels heel eenvoudig worden bevestigd en verwisseld, terwijl de versie met de naar binnen gerichte header het mogelijk maakt om Pi, sensor en Inky pHAT in een behuizing te plaatsen. Als alternatief kunt u de kabels die GPIO en sensor verbinden rechtstreeks op de Pico HAT-hacker solderen en/of de Pico HAT-hacker rechtstreeks op de GPIO-pinnen solderen. Gebruik in ieder geval de minimaal benodigde hoeveelheid soldeer.
- Soldeer de header aan de sensor, indien nodig.
- Stapel de aangepaste Pico HAT-hackereenheid op de Pi en voeg vervolgens de Inky pHAT toe. Plaats indien nodig een steun, b.v. Een schuimblok of afstandhouders, voor de Inky pHAT.
- Bevestig de kabels en de sensor met behulp van de 3V-, GND-, SDA- en SCL-poorten. Niet alle sensoren overleven 5V, dus controleer dit voordat u ze aansluit op 5V-poorten.
- Installeer de Blinka-bibliotheek en installeer vervolgens de Circuit Python BME280-bibliotheek van Adafruit.
- Installeer de Inky pHAT-bibliotheek van Pimoroni.
- Installeer de Python-voorbeeldcode die in een latere stap wordt beschreven en aan deze instructable is gekoppeld.
- Voer de code uit.
Stap 3: Het apparaat gebruiken
Er zijn twee mogelijkheden om het apparaat te gebruiken.
De code zoals hier wordt weergegeven, wordt gestart met een bijgevoegd scherm, maar kan ook zonder worden uitgevoerd.
Met kleine aanpassingen aan de code kun je crontab gebruiken om metingen uit te voeren op gedefinieerde tijdstippen. Dit zou het stroomverbruik nog verder kunnen verminderen. Uitstekende beschrijvingen voor het gebruik van crontab zijn elders te vinden.
In combinatie met een powerpack kan je een mobiel toestel bouwen en het gebruiken om de omstandigheden binnen of buiten, in de koelkast, in de sauna, je humidor, de wijnkelder, in een vliegtuig, … te meten.
Met een Zero W kunt u de waarden niet alleen op het display weergeven, maar ook via WLAN naar een server of uw website sturen, zoals elders beschreven.
Stap 4: Het BME280-script
Zoals eerder vermeld, moet u de Adafruit Blinka en Circuit Python BME280-bibliotheken installeren, evenals de Pimoroni Inky pHAT-bibliotheek.
De code initialiseert eerst de sensor en Inky pHAT, leest vervolgens de temperatuur-, druk- en vochtigheidswaarden van de sensor en geeft deze weer op het scherm en het e-ink-display. Met behulp van het time.sleep()-commando worden elke minuut metingen uitgevoerd. Pas zo nodig aan. Door een taalparameter in te stellen, kunt u de taal wijzigen die wordt gebruikt om de resultaten weer te geven.
Met het Inky pHAT e-ink display bouwt u eerst de afbeelding die in het geheugen moet worden weergegeven voordat deze uiteindelijk naar het scherm wordt overgebracht met behulp van de opdracht inkyphat.show(). De Inky pHAT-bibliotheek vereenvoudigt het proces en biedt opdrachten om tekst, lijnen, rechthoeken, cirkels te tekenen en op te maken of achtergrondafbeeldingen te gebruiken.
Naast de gemeten waarden wordt ook de tijd van de meting weergegeven.
Houd er rekening mee dat zowel het script als de bibliotheken zijn geschreven in Python 3, dus open en voer het uit met Py3 IDLE of gelijkwaardig.
# Een script voor de bme280 temperatuur/druk/vochtigheidssensor (niet-Adafruit-versie)# en de inktzwarte pHAT - zwarte versie # # versie 01 december 2018, Dr H # # Vereist Adafruit Blinka en Circuit Python BME280-bibliotheken # en de Pimoroni Inky pHAT bibliotheek import tijd import datetime import board import busio uit adafruit_bme280 import Adafruit_BME280 uit adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys uit PIL import ImageFont inkyphat.set_colour('black') # voor zwart/wit inky phat inkyphat) #set_rotation 180° font1 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 27) # Selecteer standaard lettertype font2 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 19) # Selecteer standaard lettertypegegevens # lang ="DE" # stel taalparameter in, default ("") -> english lang ="EN" i2c = busio. I2C(board. SCL, board. SDA) bmp = Adafruit_BME280_I2C(i2c, address=0x76) # default i2c-adres (voor Adafruit BMP280) 0x77 (standaard), 0x76 voor Chinese breakout) #set referentiedruk # vereist voor al titutieve berekening, gelieve aan te passen. Standaardwaarde 1013,25 hPa # handmatige invoer: #reference_hPa =input ("Voer referentiedruk in hPa in: ") # of # stel de druk op het starttijdstip in als referentie, b.v. voor relatieve hoogtemetingen time.sleep (1) # wacht een seconde voor de 1e meting j= 0 pres_norm_sum = 0 terwijl j binnen bereik (5): # voer vijf metingen uit om de referentiewaarde te definiëren pres_norm_sum = pres_norm_sum + bmp.pressure j= j+ 1 time.sleep (1) reference_hPa=(pres_norm_sum/j) # stel initiële meting in als referentiepunt om hoogtemetingen mogelijk te maken bmp.sea_level_pressure = float (reference_hPa) print () while True: #runs forever, wijzig voor crontab-versie # gemeten waarden t=bmp.temperatuur p=bmp.druk h=bmp.humidity a=bmp.altitude # berekend door adafruit-bibliotheek van druk #timestamp ts = datetime.datetime.now() # timestamp ts0_EN ='{:%Y-% m-%d}'.format(ts) # timestamp - date, EN-formaat ts0_DE ='{:%d.%m.%Y}'.format(ts) # timestamp - date, Duits formaat 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 = "Druk: " pText_DE = "Luftdruck: " h Text_EN = "Vochtigheid: " 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: # standaard engels ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # print waarden om print (ts) print (tText, tmp, "°C") print (pText, pre, " hPa") print (hText, hyg, " %") print (aText, alt, " m") print () # print waarden naar Inky pHAT t1 = 5 # tab 1, eerste kolom, vereenvoudigt optimalisatie van lay-out t2 = 110 # tab 2, tweede kolom inkyphat. clear() inkyphat.text((t1, 0), ts0, inkyphat. BLACK, font2) # schrijf tijdstempel datum inkyphat.text((t2, 0), ts1, inkyphat. BLACK, font2) # schrijf tijdstempel inkyphat.line ((t1, 25, 207, 25), 1, 3) # teken een lijn 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. ZWART, lettertype2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternatief berekende hoogte weergeven # inkyphat.text((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text((t2, 80), (alt + " m"), inkyphat. BLACK, font2) inkyphat.show() time.sleep(51) # wacht enkele seconden voor de volgende metingen, +19 sec per cyclus inkyphat.clear() # lege Inky pHAT weergave procedure, inkyphat.show() # stilte voor crontab-versie
Stap 5: Het BMP280-script
De BMP280 lijkt erg op de BME280 sensor, maar meet alleen temperatuur en druk. De scripts lijken erg op elkaar, maar je hebt verschillende Circuit Python-bibliotheken nodig. Hier wordt in plaats van de luchtvochtigheid een berekende hoogte, gebaseerd op een referentiedruk, weergegeven.
In bijlage vind je het script.
Aanbevolen:
Satellietondersteund weerstation: 5 stappen
Satellite Assisted Weather Station: Dit project is bedoeld voor mensen die hun eigen weergegevens willen verzamelen. Het kan windsnelheid en -richting, temperatuur en luchtvochtigheid meten. Het is ook in staat om elke 100 minuten naar weersatellieten te luisteren die om de aarde draaien. ik wil
Handheld weerstation: 4 stappen
Handheld weerstation: in deze Instructable zullen we een Arduino, een oled-display en een SparkFun-omgevingssensorcombinatie met CCS811- en BME280-sensoren aan boord gebruiken om een handheld-apparaat te bouwen dat temperatuur, vochtigheid, TVOC-niveaus, barometrische druk, een
Fanair: een weerstation voor uw kamer: 6 stappen (met afbeeldingen)
Fanair: een weerstation voor je kamer: Er zijn talloze manieren om het actuele weer te weten te komen, maar dan weet je alleen het weer buiten. Wat als u het weer in uw huis wilt weten, in een specifieke kamer? Dat probeer ik met dit project op te lossen. Fanair gebruikt mul
Online weerstation: 6 stappen
Online weerstation: je gelooft het niet! Maar vanaf het begin. Ik werkte aan de volgende versie van CoolPhone en het aantal fouten dat ik maakte toen het werd ontworpen, dwong me om er een pauze van te nemen. Ik deed mijn schoenen aan en ging naar buiten. Het bleek koud te zijn, dus ik ging
NaTaLia-weerstation: Arduino-weerstation op zonne-energie op de juiste manier gedaan - Ajarnpa
NaTaLia-weerstation: Arduino-weerstation op zonne-energie op de juiste manier gedaan: na 1 jaar succesvol gebruik op 2 verschillende locaties deel ik mijn projectplannen voor een weerstation op zonne-energie en leg ik uit hoe het is geëvolueerd tot een systeem dat echt kan overleven gedurende lange tijd perioden van zonne-energie. Als je volgt