Obsah:

Meteorologická stanice Inky_pHAT: 5 kroků
Meteorologická stanice Inky_pHAT: 5 kroků

Video: Meteorologická stanice Inky_pHAT: 5 kroků

Video: Meteorologická stanice Inky_pHAT: 5 kroků
Video: 6 letý chlapec se ztratil. Když ho našli, byli v šoku z toho, co leželo vedle něj... 2024, Červenec
Anonim
Meteorologická stanice Inky_pHAT
Meteorologická stanice Inky_pHAT
Meteorologická stanice Inky_pHAT
Meteorologická stanice Inky_pHAT
Meteorologická stanice Inky_pHAT
Meteorologická stanice Inky_pHAT
Meteorologická stanice Inky_pHAT
Meteorologická stanice Inky_pHAT

Zde bych chtěl popsat velmi jednoduchou a kompaktní meteorologickou stanici Raspberry Pi Zero, která zobrazuje hodnoty naměřené snímačem teploty/tlaku/vlhkosti BME280 na displeji e-papíru/e-inkoustu Pimoroni Inky pHAT. Aby bylo možné připojit senzory a pHAT k GPIO Pi, umístil jsem mezi GPIO a displej hacker Pimorini Pico HAT se dvěma hlavičkami. Zařízení bylo použito k připojení několika senzorů, takže zde popsaná verze BME280 je jen příkladem.

Na rozdíl od displejů LCD uchovávají displeje e-ink obraz i po vypnutí napájení. Proto jsou velmi dobrým řešením, pokud chcete zobrazit informace, které jsou čas od času aktualizovány, zejména pro stavbu nízkoenergetických zařízení. Hlavní výhodou jednobarevné/černé verze Inky pHAT je, že aktualizace displeje trvá jen jednu sekundu, místo tří až patnácti sekund vyžaduje tříbarevná verze. Viz film.

Knihovna Blinka společnosti Adafruit umožňuje spouštět kód Circuit Python na Raspberry Pi a od společnosti Adafruit jsou k dispozici vzorky Circuit Python pro širokou škálu senzorů. Podrobný popis instalace kódů Blinka a Circuit Python najdete na webu Adafruit. Knihovny, které jsem dosud testoval (BMP280, BME280, TSL2591, TCS34785, VEML7065, …), fungovaly velmi dobře, zatímco u některých ukázkových kódů došlo k menším problémům.

BME280 je senzor pro měření teploty, vlhkosti a atmosférického tlaku. Prolomení BMP280 je k dispozici od mnoha prodejců, včetně Adafruit, ale já jsem zde používal levnou čínskou verzi. Uvědomte si prosím, že tyto používají různé adresy i2c (Adafruit: 0x77, ostatní: 0x76).

Breakout je připojen k Pi pomocí i2c a čtení senzoru je velmi jednoduché pomocí knihovny a ukázkového kódu.

Krok 1: Použité materiály

Použité materiály
Použité materiály
Použité materiály
Použité materiály
Použité materiály
Použité materiály
Použité materiály
Použité materiály

Raspberry Pi Zero, s připojeným samčím záhlavím. Ale jakákoli verze Raspberry Pi by stačila.

A Pimoroni Inky pHAT, černá/monochromatická verze, 25 € | 22 £ | 20US $, v Pimoroni.

Hacker Pimoroni Pico HAT, 2,50 EUR | 2 GBP, se dvěma hlavičkami, z nichž jeden je pomocný záhlaví s delšími kolíky. Vytvořil jsem dvě různé verze, viz popis níže.

Breakout BME280, AZ Delivery přes Amazon.de @ 7,50 €, s připojenou hlavičkou.

Prodlužovací propojovací kabely

Volitelný:

USB napájecí zdroj pro mobilní aplikace

Pouzdro pro Pi nebo zařízení (zde není zobrazeno)

Krok 2: Sestavení

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
  • Zapájejte ženské hlavičky k hackerovi Pico HAT. Před pájením zkontrolujte správnou orientaci. Vytvořil jsem dvě verze tohoto, pro různé účely. Jeden s bočním záhlavím směřujícím dolů umístěným v přední řadě a normálním záhlavím nahoru/čelem v zadní řadě a verzí s bočním záhlavím směřujícím dolů v zadní řadě a pravoúhlým samičím záhlavím v přední řadě. Viz obrázky. První verze umožňuje velmi snadné připojení a výměnu senzorů a kabelů, zatímco verze s hlavičkou směřující dovnitř umožňuje uzavřít Pi, senzor a Inky pHAT do pouzdra. Alternativně můžete kabely spojující GPIO a senzor připájet přímo k hackeru Pico HAT a/nebo hacker Pico HAT pájet přímo k pinům GPIO. V každém případě použijte minimální požadované množství pájky.
  • Je -li to nutné, připájejte konektor k senzoru.
  • Upravenou hackerskou jednotku Pico HAT naskládejte na Pi a poté přidejte Inky pHAT. V případě potřeby vložte podporu, např. Pěnový blok nebo distanční podložky pro Inky pHAT.
  • Připojte kabely a senzor pomocí portů 3V, GND, SDA a SCL. Ne všechny senzory přežijí 5V, proto prosím zkontrolujte, než je připojíte k 5V portům.
  • Nainstalujte si knihovnu Blinka a poté nainstalujte knihovnu Circuit Python BME280 od Adafruit.
  • Nainstalujte si knihovnu Inky pHAT od Pimoroni.
  • Nainstalujte si ukázkový kód Pythonu popsaný v pozdějším kroku a připojený k tomuto pokynu.
  • Spusťte kód.

Krok 3: Používání zařízení

Používání zařízení
Používání zařízení

Existují dvě možnosti použití zařízení.

Zde uvedený kód musí být spuštěn pomocí připojené obrazovky, ale poté může běžet bez něj.

S drobnými úpravami kódu můžete použít crontab k provádění měření v definovaných časových bodech. To by umožnilo ještě více snížit spotřebu energie. Vynikající popis použití crontabu najdete jinde.

Ve spojení s napájecím zdrojem můžete sestavit mobilní zařízení a použít ho k měření podmínek uvnitř nebo venku, v lednici, sauně, humidoru, vinném sklípku, v letadle,….

Pomocí nuly W můžete nejen zobrazovat hodnoty na displeji, ale také je odesílat na server nebo váš web přes WLAN, jak je popsáno jinde.

Krok 4: Skript BME280

Skript BME280
Skript BME280

Jak již bylo zmíněno dříve, je třeba nainstalovat knihovny Adafruit Blinka a Circuit Python BME280 a také knihovnu Pimoroni Inky pHAT.

Kód nejprve inicializuje senzor a Inky pHAT, poté ze senzoru načte hodnoty teploty, tlaku a vlhkosti a zobrazí je na obrazovce a displeji elektronického inkoustu. Pomocí příkazu time.sleep () se měření provádějí každou minutu. Upravte podle potřeby. Nastavením parametru jazyka můžete změnit jazyk používaný k zobrazení výsledků.

Pomocí e-inkoustového displeje Inky pHAT nejprve vytvoříte obrázek, který se má zobrazit v paměti, než bude nakonec přenesen na obrazovku pomocí příkazu inkyphat.show (). Knihovna Inky pHAT zjednodušuje proces a nabízí příkazy pro kreslení a formátování textu, čar, obdélníků, kruhů nebo použití obrázků na pozadí.

Kromě naměřených hodnot je zobrazen také čas měření.

Mějte na paměti, že skript i knihovny jsou napsány v Pythonu 3, takže je otevřete a spusťte pomocí Py3 IDLE nebo ekvivalentu.

# Skript pro snímač teploty/tlaku/vlhkosti bme280 (verze bez Adafruit) # a inkoustový pHAT - černá verze # # verze Prosinec 2018, Dr H # # Vyžaduje knihovny Adafruit Blinka a Circuit Python BME280 # a Pimoroni Inky knihovna phat čas importu datetime import deska import busio z adafruit_bme280 import Adafruit_BME280 z adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys z PIL import ImageFont inkyphat.set_colour ('black') # for b/w inky phat inkyphat.set 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Vyberte standardní písmo font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Vyberte standardní data písma # lang = "DE" # nastavte parametr jazyka, 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 pro čínský průlom) # nastavit referenční tlak # vyžadováno pro al titute výpočet, prosím upravte. Standardní hodnota 1013,25 hPa # manuální vstup: #reference_hPa = vstup ("Zadejte referenční tlak v hPa:") # nebo # nastavte tlak v době spuštění jako referenční, např. pro měření relativní výšky čas. spánek (1) # počkejte sekundu před 1. měřením j = 0 pres_norm_sum = 0 zatímco j v rozsahu (5): # proveďte pět měření k definování referenční hodnoty pres_norm_sum = pres_norm_sum + bmp. tlak j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum/j) # nastavit počáteční měření jako referenční bod pro umožnění měření výšky bmp.sea_level_pressure = float (reference_hPa) print () zatímco True: # běží navždy, upravit pro verzi crontab # měřeno hodnoty t = bmp.teplota p = bmp.tlak h = bmp.vlhkost a = bmp.altitude # vypočteno knihovnou adafruit z tlaku #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, German format ts1 =' {: %H:%M:%S} '. Formát (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 = "Pressure:" pText_DE = "Luftdruck:" h Text_EN = "Vlhkost:" hText_DE = "rel. LF: "aText_EN =" Nadmořská výška: "aText_DE =" Höhe üNN: " # exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pxteText hText: # výchozí angličtina ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # tiskové hodnoty pro zobrazení tisku (ts) tisk (tText, tmp, "° C") tisk (pText, pre, "hPa") tisk (hText, hyg, " %") print (aText, alt, "m") print () # tiskové hodnoty pro Inky pHAT t1 = 5 # tab 1, první sloupec, zjednodušuje optimalizaci rozložení t2 = 110 # tab 2, druhý sloupec inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # date timestamp date inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # write timestamp time inkyphat.line ((t1, 25, 207, 25), 1, 3) # nakreslete čáru 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. ČERNÁ, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternativně zobrazit vypočítanou výšku # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # počkejte několik sekund před dalším měřením, +19 s na cyklus inkyphat.clear () # prázdný postup zobrazení Inky pHAT, inkyphat.show () # ticho pro verzi crontab

Krok 5: Skript BMP280

BMP280 je velmi podobný senzoru BME280, ale pouze měří teplotu a tlak. Skripty jsou velmi podobné, ale potřebujete různé knihovny Circuit Python. Zde se místo vlhkosti zobrazuje vypočítaná výška na základě referenčního tlaku.

V příloze najdete skript.

Doporučuje: