Obsah:

Meteorologická stanica Inky_pHAT: 5 krokov
Meteorologická stanica Inky_pHAT: 5 krokov

Video: Meteorologická stanica Inky_pHAT: 5 krokov

Video: Meteorologická stanica Inky_pHAT: 5 krokov
Video: Восточные Карпаты: Край изумрудных вершин | Интересные факты про Карпаты 2024, Júl
Anonim
Meteorologická stanica Inky_pHAT
Meteorologická stanica Inky_pHAT
Meteorologická stanica Inky_pHAT
Meteorologická stanica Inky_pHAT
Meteorologická stanica Inky_pHAT
Meteorologická stanica Inky_pHAT
Meteorologická stanica Inky_pHAT
Meteorologická stanica Inky_pHAT

Tu by som chcel popísať veľmi jednoduchú a kompaktnú meteorologickú stanicu Raspberry Pi Zero, ktorá zobrazuje hodnoty namerané snímačom teploty/tlaku/vlhkosti BME280 na displeji e-papiera/e-atramentu Pimoroni Inky pHAT. Aby bolo možné pripojiť senzory a pHAT k GPIO Pi, umiestnil som medzi GPIO a displej hacker Pimorini Pico HAT s dvoma ženskými hlavičkami. Zariadenie slúžilo na pripojenie niekoľkých senzorov, takže tu popísaná verzia BME280 je len príkladom.

Na rozdiel od displejov LCD, displeje s elektronickým atramentom zachovávajú obraz, aj keď je vypnuté napájanie. Preto sú veľmi dobrým riešením, ak chcete zobraziť informácie, ktoré sa z času na čas aktualizujú, najmä na stavbu nízkoenergetických zariadení. Hlavnou výhodou monochromatickej/čiernej verzie Inky pHAT je, že aktualizácia displeja trvá iba jednu sekundu, namiesto desať až pätnásť sekúnd, ktoré vyžadujú trojfarebné verzie. Pozri film.

Knižnica Blinka spoločnosti Adafruit umožňuje prevádzkovať kód Circuit Python na Raspberry Pi a od spoločnosti Adafruit sú k dispozícii vzorky Circuit Python pre širokú škálu senzorov. Podrobný popis inštalácie kódov Blinka a Circuit Python nájdete na webovej stránke Adafruit. Knižnice, ktoré som doteraz testoval (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) fungovali veľmi dobre, pričom v niektorých ukážkových kódoch boli menšie problémy.

BME280 je senzor na meranie teploty, vlhkosti a atmosférického tlaku. Breakout BMP280 je k dispozícii od mnohých predajcov vrátane Adafruit, ale ja som tu používal lacnú čínsku verziu. Uvedomte si, že tieto používajú rôzne adresy i2c (Adafruit: 0x77, ostatné: 0x76).

Breakout je k Pi pripojený i2c a čítanie senzora je veľmi jednoduché pomocou knižnice a ukážkového kódu.

Krok 1: Použitý materiál

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 pripojenou mužskou hlavičkou. Postačí však akákoľvek verzia Raspberry Pi.

A Pimoroni Inky pHAT, čierna/monochromatická verzia, 25 € | 22 £ | 20US $, v spoločnosti Pimoroni.

Hacker Pimoroni Pico HAT, 2,50 € | 2 £, s dvoma ženskými hlavičkami, z ktorých jedna je pomocná hlavička s dlhšími kolíkmi. Zostavil som dve rôzne verzie, pozri popis nižšie.

Breakout BME280, AZ Delivery via Amazon.de @ 7,50 €, with header header.

Predĺžovacie prepojovacie káble

Voliteľné:

Napájací zdroj USB pre mobilné aplikácie

Kryt pre Pi alebo zariadenie (tu nie je zobrazené)

Krok 2: Zostavenie

zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
  • Ženské hlavičky spájkujte s hackerom Pico HAT. Pred spájkovaním skontrolujte správnu orientáciu. Zostavil som dve verzie tohto softvéru na rôzne účely. Jedna so zosilňovacím záhlavím smerujúcim nadol umiestneným v prvom rade a normálnym záhlavím v smere nahor/proti smeru jazdy v zadnom rade a verzia so zosilňovacím záhlavím smerujúcim nadol v zadnom rade a pravouhlým ženským záhlavím v prvom rade. Viď obrázky. Prvá verzia umožňuje veľmi jednoduché pripojenie a výmenu senzorov a káblov, zatiaľ čo verzia s vnútorným záhlavím dovoľuje uzavrieť Pi, senzor a Inky pHAT do krytu. Alternatívne môžete káble spájajúce GPIO a senzor spájkovať priamo s hackerom Pico HAT a/alebo spájať hacker Pico HAT priamo s kolíkmi GPIO. V každom prípade použite minimálne množstvo potrebnej spájky.
  • V prípade potreby spájajte hlavičku so senzorom.
  • Upravenú hackerskú jednotku Pico HAT naskladajte na Pi a potom pridajte Inky pHAT. Ak je to potrebné, vložte nejakú podporu, napr. Penový blok alebo stojky pre Inky pHAT.
  • Pripojte káble a snímač pomocou portov 3V, GND, SDA a SCL. Nie všetky senzory vydržia 5 V, preto ich pred pripojením k 5 V portom skontrolujte.
  • Nainštalujte knižnicu Blinka a potom nainštalujte knižnicu Circuit Python BME280 od spoločnosti Adafruit.
  • Nainštalujte si knižnicu Inky pHAT od Pimoroni.
  • Nainštalujte si ukážkový kód Pythonu popísaný v neskoršom kroku a priložený k tomuto návodu.
  • Spustite kód.

Krok 3: Používanie zariadenia

Používanie zariadenia
Používanie zariadenia

Existujú dve možnosti použitia zariadenia.

Kód, ako je tu znázornený, sa musí spustiť pomocou priloženej obrazovky, ale potom môže bežať bez neho.

S malými úpravami kódu môžete použiť crontab na vykonávanie meraní v definovaných časových bodoch. To by umožnilo ešte viac znížiť spotrebu energie. Vynikajúci popis použitia crontabu nájdete inde.

V spojení s napájacím zdrojom môžete zostaviť mobilné zariadenie a použiť ho na meranie podmienok vo vnútri alebo vonku, v chladničke, saune, humidore, vínnej pivnici, v lietadle, …

Použitím nuly W môžete hodnoty nielen zobrazovať na displeji, ale tiež ich odosielať na server alebo na svoju webovú stránku prostredníctvom siete WLAN, ako je popísané inde.

Krok 4: Skript BME280

Skript BME280
Skript BME280

Ako už bolo spomenuté, musíte nainštalovať knižnice Adafruit Blinka a Circuit Python BME280, ako aj knižnicu Pimoroni Inky pHAT.

Kód najskôr inicializuje senzor a Inky pHAT, potom zo senzora načíta hodnoty teploty, tlaku a vlhkosti a zobrazí ich na obrazovke a displeji elektronického atramentu. Pomocou príkazu time.sleep () sa merania vykonávajú každú minútu. Upravte podľa potreby. Nastavením parametra jazyka môžete zmeniť jazyk používaný na zobrazenie výsledkov.

Pomocou e-ink displeja Inky pHAT najskôr vytvoríte obrázok, ktorý sa má zobraziť v pamäti, a potom sa nakoniec prenesie na obrazovku pomocou príkazu inkyphat.show (). Knižnica Inky pHAT zjednodušuje proces a ponúka príkazy na kreslenie a formátovanie textu, čiar, obdĺžnikov, kruhov alebo používanie obrázkov na pozadí.

Okrem nameraných hodnôt je zobrazený aj čas merania.

Majte na pamäti, že skript aj knižnice sú napísané v jazyku Python 3, preto ho otvorte a spustite pomocou Py3 IDLE alebo ekvivalentného.

# Skript pre snímač teploty/tlaku/vlhkosti bme280 (verzia nie pre Adafruit) # a atramentový pHAT - čierna verzia # # verzia pre 1. december 2018, Dr H # # Vyžaduje knižnice Adafruit Blinka a Circuit Python BME280 # a Pimoroni Inky knižnica pHAT import času importu datetime import tabule 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 štandardné písmo font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Vyberte štandardné údaje písma # lang = "DE" # nastavte parameter 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 pre čínsky odpočinok) # nastavte referenčný tlak # potrebný pre al titute výpočet, upravte. Štandardná hodnota 1013,25 hPa # manuálne zadanie: #reference_hPa = vstup ("Zadajte referenčný tlak v hPa:") # alebo # nastavte tlak v čase spustenia ako referenčný, napr. na meranie relatívnej výšky čas.spánok (1) # počkajte sekundu pred 1. meraním j = 0 pres_norm_sum = 0, kým j v rozsahu (5): # vykonajte päť meraní na definovanie referenčnej hodnoty pres_norm_sum = pres_norm_sum + bmp. tlak j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum/j) # set inital measurement as reference point to allow height measurement bmp.sea_level_pressure = float (reference_hPa) print () while True: #runs forever, modify for crontab-version # měření hodnoty t = bmp.teplota p = bmp.tlak h = bmp.vlhkosť a = bmp.altitude # vypočítané knižnicou 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} '. Format (ts) # timestamp - time tmp = "{0: 0,1f}". Format (t) pre = "{0: 0,1f}". Format (p) hyg = "{0: 0,1f}". Formát (h) alt="{0: 0,1f}". Formát (a) tText = "Teplota.:" pText_EN = "Tlak:" pText_DE = "Luftdruck:" h Text_EN = "Vlhkosť:" hText_DE = "rel. LF: "aText_EN =" Nadmorská výška: "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: # predvolená angličtina ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # tlačových hodnôt na zobrazenie tlače (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # tlačové hodnoty pre Inky pHAT t1 = 5 # tab 1, prvý stĺpec, zjednodušuje optimalizáciu rozloženia t2 = 110 # tab 2, druhý stĺpec inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # dátum časovej pečiatky inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # čas časovej pečiatky inkyphat.line ((t1, 25, 207, 25), 1, 3) # nakreslite čiaru 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. ČIERNY, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternatívne zobrazenie vypočítanej výšky # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # počkajte niekoľko sekúnd pred ďalšími meraniami, +19 s na cyklus inkyphat.clear () # prázdny postup zobrazenia Inky pHAT, inkyphat.show () # ticho pre verziu crontab

Krok 5: Skript BMP280

BMP280 je veľmi podobný senzoru BME280, ale iba meria teplotu a tlak. Skripty sú veľmi podobné, ale potrebujete rôzne knižnice Circuit Python. Tu sa namiesto vlhkosti zobrazuje vypočítaná výška na základe referenčného tlaku.

V prílohe nájdete skript.

Odporúča: