Innehållsförteckning:
- Steg 1: Material som används
- Steg 2: Montering
- Steg 3: Använda enheten
- Steg 4: BME280 -skriptet
- Steg 5: BMP280 -skriptet
Video: Inky_pHAT Väderstation: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Jag här skulle vilja beskriva en mycket enkel och kompakt, Raspberry Pi Zero-baserad väderstation, som visar värdena uppmätta med en BME280 temperatur/tryck/fuktighetssensor på en Pimoroni Inky pHAT e-paper/e-ink display. För att möjliggöra anslutning av sensorer och pHAT till GPIO på Pi placerade jag en Pimorini Pico HAT -hackare med två kvinnliga headers anslutna mellan GPIO och displayen. Enheten har använts för att ansluta flera sensorer, så BME280 -versionen som beskrivs här är bara ett exempel.
Till skillnad från LCD-skärmar behåller e-bläckdisplayer bilden även om strömmen har stängts av. Därför är de en mycket bra lösning om du vill visa information som uppdateras bara då och då, särskilt för att bygga enheter med låg energi. Den största fördelen med den monokroma/svarta versionen av Inky pHAT är att uppdateringen av skärmen tar ungefär en sekund istället för tio till femton sekunder som krävs av trefärgsversionerna. Se film.
Adafruits Blinka -bibliotek gör det möjligt att köra Circuit Python -kod på Raspberry Pi, och Circuit Python -prover för en mängd olika sensorer är tillgängliga från Adafruit. En detaljerad beskrivning av hur du installerar Blinka och Circuit Python -koder finns på Adafruit -webbplatsen. De bibliotek jag testat hittills (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) fungerade mycket bra, medan det fanns mindre problem i några av exempelkoderna.
BME280 är en sensor för att mäta temperatur, luftfuktighet och atmosfärstryck. BMP280 -utbrott är tillgängliga från många leverantörer, inklusive Adafruit, men jag använde här en billig kinesisk version. Observera att dessa använder olika i2c -adresser (Adafruit: 0x77, andra: 0x76).
Utbrottet är anslutet till Pi med i2c, och att läsa sensorn är mycket enkelt med hjälp av biblioteket och exempelkoden.
Steg 1: Material som används
En Raspberry Pi Zero, med en manlig header bifogad. Men vilken Raspberry Pi -version som helst.
En Pimoroni Inky pHAT, svart/monokrom version, 25 € | 22 £ | 20US $, på Pimoroni.
En Pimoroni Pico HAT -hackare, 2,50 € | 2 £, med två kvinnliga rubriker fästa, en av dem en förstärkningsrubrik med längre stift. Jag har byggt två olika versioner, se beskrivning nedan.
Ett BME280 -utbrott, AZ -leverans via Amazon.de @ 7,50 €, med rubrik bifogad.
Förlängningsbygelkablar
Frivillig:
Ett USB -kraftpaket för mobila applikationer
Ett hus för Pi eller enheten (visas inte här)
Steg 2: Montering
- Löd de kvinnliga rubrikerna till Pico HAT -hackaren. Innan lödning, kontrollera för korrekt orientering. Jag har byggt två versioner av detta, för olika ändamål. En med den nedåtvända förstärkningsrubriken placerad på främre raden och en normal, uppåt/motstående rubrik i den bakre raden, och en version med den nedåtvända förstärkningsrubriken i den bakre raden, och en rätvinklig kvinnlig rubrik i den främre raden. Se bilder. Den första versionen gör det enkelt att fästa och byta sensorer och kablar, medan versionen med det inåtvända huvudet gör det möjligt att omsluta Pi, sensor och Inky pHAT i ett hölje. Alternativt kan du löda kablarna som ansluter GPIO och sensorn direkt till Pico HAT -hackaren och/eller löda Pico HAT -hackaren direkt till GPIO -stiften. I vilket fall som helst, använd den minimala mängd löd som krävs.
- Löd huvudet till sensorn, om det behövs.
- Stapla den modifierade Pico HAT -hackarenheten på Pi och lägg sedan till Inky pHAT. Sätt vid behov in lite stöd, t.ex. Ett skumblock eller avstängningar för Inky pHAT.
- Anslut kablarna och sensorn med 3V-, GND-, SDA- och SCL -portarna. Alla sensorer överlever inte 5V, så kolla innan du ansluter dem till 5V -portar.
- Installera Blinka -biblioteket och installera sedan Circuit Python BME280 -biblioteket från Adafruit.
- Installera Inky pHAT -biblioteket från Pimoroni.
- Installera exemplet Python -kod som beskrivs i ett senare steg och bifogad denna instruerbara.
- Kör koden.
Steg 3: Använda enheten
Det finns två alternativ för att använda enheten.
Koden som visas här ska startas med en bifogad skärm, men kan sedan köras utan.
Med mindre ändringar av koden kan du använda crontab för att utföra mätningar vid bestämda tidpunkter. Detta skulle göra det möjligt att minska strömförbrukningen ytterligare. Utmärkta beskrivningar av hur man använder crontab finns någon annanstans.
I kombination med ett kraftpaket kan du bygga en mobil enhet och använda den för att mäta förhållandena inne eller ute, i kylen, i bastun, din humidor, vinkällaren, i ett plan, ….
Genom att använda en Zero W kan du inte bara visa värdena på displayen utan också skicka dem till en server eller din webbplats via WLAN, som beskrivs på annat håll.
Steg 4: BME280 -skriptet
Som nämnts tidigare måste du installera Adafruit Blinka och Circuit Python BME280 -biblioteken samt Pimoroni Inky pHAT -biblioteket.
Koden initierar först sensorn och Inky pHAT, läser sedan temperatur-, tryck- och fuktighetsvärdena från sensorn och visar dem på skärmen och e-ink-displayen. Med hjälp av kommandot time.sleep () mäts varje minut. Justera efter behov. Genom att ställa in en språkparameter kan du ändra språket som används för att visa resultaten.
Med Inky pHAT e-ink display, bygger du först bilden som ska visas i minnet innan den slutligen överförs till skärmen med kommandot inkyphat.show (). Inky pHAT -biblioteket förenklar processen och erbjuder kommandon för att rita och formatera text, linjer, rektanglar, cirklar eller använda bakgrundsbilder.
Förutom mätvärdena visas också mättiden.
Tänk på att både skriptet och biblioteken är skrivna i Python 3, så öppna och kör med Py3 IDLE eller motsvarande.
# Ett skript för bme280 temperatur/tryck/fuktighetssensor (icke -Adafruit -version) # och den bläckfria pHAT - svart version # # version 01 december 2018, Dr H # # Kräver Adafruit Blinka och Circuit Python BME280 -bibliotek # och Pimoroni Inky pHAT bibliotek importtid import datetime import board import busio från adafruit_bme280 import Adafruit_BME280 från adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys från PIL import ImageFont inkyphat.set_colour ('svart') # för svartvitt inkyphat (180) 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Välj standard font font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Välj standard teckensnittsdata # lang = "DE" # set språkparameter, default ("") -> engelska lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # default i2c -adress (för Adafruit BMP280) 0x77 (standard), 0x76 för kinesisk breakout) # set referenstryck # krävs för al titelberäkning, justera. Standardvärde 1013,25 hPa # manuell ingång: #reference_hPa = input ("Ange referenstryck i hPa:") # eller # ställ in tryck vid starttid som referens, t.ex. för relativa höjdmätningar tid. sömn (1) # vänta en sekund innan första mätningen j = 0 pres_norm_sum = 0 medan j i intervallet (5): # ta fem mätningar för att definiera referensvärdet pres_norm_sum = pres_norm_sum + bmp. tryck j = j + 1 gång. Sömn (1) referens_hPa = (pres_norm_sum/j) # ställ in inledande mätning som referenspunkt för att möjliggöra höjdmätningar bmp.sea_level_pressure = float (reference_hPa) print () medan True: #runs forever, modifiera för crontab-version # uppmätt värden t = bmp.temperatur p = bmp.tryck h = bmp.fuktighet a = bmp.altitude # beräknat av adafruit bibliotek från tryck #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:%Y-% m-%d} '. format (ts) # tidsstämpel - datum, EN -format ts0_DE =' {:%d.%m.%Y} '. format (ts) # tidsstämpel - datum, tyskt 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 = "Tryck:" pText_DE = "Luftdruck:" h Text_EN = "Luftfuktighet:" 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 = h: # standard engelska ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # utskriftsvärden för att visa print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # utskriftsvärden till Inky pHAT t1 = 5 # tab 1, frist column, förenklar optimering av layout t2 = 110 # tab 2, andra kolumnens inkyphat. rensa () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # skriva tidsstämpel datum inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # skriva tidsstämpel tid inkyphat.line ((t1, 25, 207, 25), 1, 3) # rita 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 visa beräknad höjd # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # vänta några sekunder innan nästa mätning, +19 sek per cykel inkyphat.clear () # tom Inky pHAT display procedur, inkyphat.show () # tystnad för crontab-version
Steg 5: BMP280 -skriptet
BMP280 är mycket lik BME280 -sensorn, men mäter bara temperatur och tryck. Skripten är väldigt lika, men du behöver olika Circuit Python -bibliotek. Här visas istället för luftfuktigheten en beräknad höjd, baserat på ett referenstryck.
Bifogat hittar du manuset.
Rekommenderad:
Professionell väderstation med ESP8266 och ESP32 DIY: 9 steg (med bilder)
Professionell väderstation med hjälp av ESP8266 och ESP32 DIY: LineaMeteoStazione är en komplett väderstation som kan anslutas till professionella sensorer från Sensirion samt en viss Davis Instrument -komponent (regnmätare, vindmätare) Projektet är avsett som en DIY väderstation men kräver bara
HC-12 långväga väderstation och DHT-sensorer: 9 steg
HC-12 långdistansväderstation och DHT-sensorer: I den här självstudien lär vi oss hur man gör en fjärrväderstation på distans med två dht-sensorer, HC12-moduler och I2C LCD-skärmen. Se videon
Satellitassisterad väderstation: 5 steg
Satellitassisterad väderstation: Detta projekt är avsett för personer som vill samla in sina egna väderdata. Den kan mäta vindhastighet och riktning, temperatur och luftfuktighet. Den kan också lyssna på vädersatelliter som kretsar runt jorden en gång var 100: e minut. Jag vill
Handhållen väderstation: 4 steg
Handhållen väderstation: I den här instruktionsboken kommer vi att använda en Arduino, en oled display och en SparkFun miljösensorkombination med CCS811 och BME280 sensorer ombord för att bygga en handhållen enhet som mäter temperatur, fuktighet, TVOC -nivåer, barometertryck,
Fanair: en väderstation för ditt rum: 6 steg (med bilder)
Fanair: en väderstation för ditt rum: Det finns otaliga sätt att ta reda på det aktuella vädret, men då vet du bara vädret utanför. Vad händer om du vill veta vädret i ditt hus, inuti ett specifikt rum? Det är vad jag försöker lösa med det här projektet. Fanair använder flera