Obsah:
- Krok 1: Bill za imperativní vybavení
- Krok 2: Hardwarová připojení pro obvod
- Krok 3: Programování Raspberry Pi v Pythonu
- Krok 4: Spuštěný kód
- Krok 5: Využití v praktickém světě
- Krok 6: Závěr
Video: Meteorologická stanice využívající Raspberry Pi s BME280 v Pythonu: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
je maith an scéalaí an goalsir (The Weather is a Good Storyteller)
Vzhledem k problémům globálního oteplování a změny klimatu se globální povětrnostní model v našem světě stává nevyrovnaným, což vede k řadě přírodních katastrof souvisejících s počasím (sucha, extrémní teploty, záplavy, bouře a požáry), meteorologická stanice se zdá být nezbytnou zlo doma. Naučíte se hodně o základní elektronice z projektu meteorologické stanice pomocí spousty levných dílů a senzorů. Je to velmi snadné nastavení a během chvilky to můžete mít.
Krok 1: Bill za imperativní vybavení
1. Raspberry Pi
Získejte ruce na desce Raspberry Pi. Raspberry Pi je jednodeskový počítač s operačním systémem Linux. Raspberry Pi je opravdu levný, malý a univerzální, postavený z přístupného a funkčního počítače, kde si studenti mohou procvičit základy programování a vývoje softwaru.
2. I2C štít pro Raspberry Pi
INPI2 (adaptér I2C) poskytuje port Raspberry Pi 2/3 a I²C pro použití s více zařízeními I2C. Je k dispozici v obchodě DCUBE.
3. Digitální snímač vlhkosti, tlaku a teploty, BME280
BME280 je snímač vlhkosti, tlaku a teploty, který má rychlou dobu odezvy a vysokou celkovou přesnost. Tento senzor jsme zakoupili v obchodě DCUBE.
4. Propojovací kabel I2C
Použili jsme kabel I²C dostupný zde DCUBE Store.
5. Micro USB kabel
Micro USB kabel Napájecí zdroj je ideální volbou pro napájení Raspberry Pi.
6. Interpretujte přístup k internetu pomocí ethernetového kabelu/WiFi adaptéru
Přístup k internetu lze povolit pomocí ethernetového kabelu připojeného k místní síti a internetu. Alternativně se můžete připojit k bezdrátové síti pomocí bezdrátového klíče USB, který bude vyžadovat konfiguraci.
7. Kabel HDMI (kabel pro zobrazení a připojení)
Jakýkoli monitor HDMI/DVI a jakýkoli televizor by měl fungovat jako displej pro Pi. Případně můžete vzdáleně přistupovat k Pi prostřednictvím SSH, čímž se ruší potřeba monitoru (pouze pokročilí uživatelé).
Krok 2: Hardwarová připojení pro obvod
Vytvořte obvod podle zobrazeného schématu. Obecně je připojení velmi jednoduché. Zachovejte klid a postupujte podle výše uvedených pokynů a obrázků a neměli byste mít žádné problémy. Při učení jsme se důkladně seznámili se základy elektroniky ohledně znalostí hardwaru a softwaru. Chtěli jsme pro tento projekt vypracovat jednoduché schéma elektroniky. Elektronická schémata jsou jako plány. Vypracujte plán a pečlivě postupujte podle návrhu. Zde může být užitečné několik základních konceptů elektroniky!
Připojení Raspberry Pi a I2C Shield
Nejprve si vezměte Raspberry Pi a položte na něj I²C Shield. Jemně stiskněte štít a jsme s tímto krokem hotovi stejně snadno jako koláč (viz obrázek).
Připojení senzoru a Raspberry Pi
Vezměte snímač a připojte k němu kabel I²C. Ujistěte se, že se výstup I²C VŽDY připojí ke vstupu I²C. Totéž je třeba dodržovat u Raspberry Pi s I²C štítem přes GPIO piny. Doporučujeme použít kabely I²C, protože to vylučuje potřebu čtení vývodů, pájení a malátnosti způsobené i tím nejmenším prokluzem. Pomocí tohoto jednoduchého kabelu typu plug and play můžete do aplikace snadno instalovat, vyměňovat desky nebo přidávat další desky.
Poznámka: Hnědý vodič by měl vždy sledovat uzemnění (GND) mezi výstupem jednoho zařízení a vstupem jiného zařízení
Klíčové je připojení k internetu
Máte zde dvě možnosti. Buď můžete Raspberry Pi připojit k síti pomocí ethernetového kabelu nebo použít adaptér USB na WiFi pro připojení WIFI. Ať tak či onak, pokud je připojen k internetu, jste krytí.
Zapnutí obvodu
Zapojte kabel Micro USB do napájecího konektoru Raspberry Pi. Punch up a voila! Náš oddíl je informace.
Připojení k obrazovce
Můžeme mít buď kabel HDMI připojený k monitoru, nebo k televizi. Kromě toho můžeme k Raspberry Pi přistupovat bez připojení k monitoru pomocí vzdáleného přístupu. SSH je šikovný nástroj pro zabezpečený vzdálený přístup. K tomu můžete také použít software PUTTY. Tato možnost je pro pokročilé uživatele, takže se jí zde nebudeme podrobně zabývat.
Je to ekonomická metoda, pokud nechcete utrácet mnoho
Krok 3: Programování Raspberry Pi v Pythonu
Kód Pythonu pro snímač Raspberry Pi a BME280. Je k dispozici v našem úložišti Github.
Než přejdete ke kódu, přečtěte si pokyny uvedené v souboru Readme a podle něj nastavte svůj Raspberry Pi. Jen málo času vás připraví na nastavení. Meteorologická stanice je zařízení, ať už na zemi nebo na moři, s nástroji a zařízením pro měření atmosférických podmínek, které poskytuje informace o předpovědích počasí a studuje počasí a klima.
Kód je jasně před vámi a je v nejjednodušší formě, jakou si dokážete představit, a neměli byste mít žádné problémy. Stále se zeptejte, jestli nějaké (I když víte tisíc věcí, stále se zeptejte někoho, kdo ví).
Odtud také můžete zkopírovat funkční kód Pythonu pro tento senzor.
# Distribuováno s licencí svobodné vůle.# Používejte jej libovolným způsobem, ať už ziskem nebo zdarma, za předpokladu, že se vejde do licencí souvisejících děl. # BME280 # Tento kód je navržen pro práci s mini modulem BME280_I2CS I2C, který je k dispozici na ControlEverything.com. #
importovat smbus
čas importu
# Získejte autobus I2C
bus = smbus. SMBus (1)
# Adresa BME280, 0x76 (118)
# Přečíst data zpět z 0x88 (136), 24 bytů b1 = bus.read_i2c_block_data (0x76, 0x88, 24)
# Převeďte data
# Tepelné koeficienty dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] pokud dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] if dig_T3> 32767: dig_T3 -= 65536
# Tlakové koeficienty
dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] pokud dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] pokud dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] pokud dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] pokud dig_P5> 32767: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] pokud dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] pokud dig_P7> 32767: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] pokud dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] pokud dig_P9> 32767: dig_P9 -= 65536
# Adresa BME280, 0x76 (118)
# Přečíst data zpět z 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)
# Adresa BME280, 0x76 (118)
# Přečíst data zpět z 0xE1 (225), 7 bytů b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)
# Převeďte data
# Koeficienty vlhkosti dig_H2 = b1 [1] * 256 + b1 [0] pokud dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) pokud dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) pokud dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] pokud dig_H6> 127: dig_H6 -= 256
# Adresa BME280, 0x76 (118)
# Vyberte kontrolní vlhkostní registr, 0xF2 (242) # 0x01 (01) Převzorkování vlhkosti = 1 sběrnice. Zápis_byte_data (0x76, 0xF2, 0x01) # Adresa BME280, 0x76 (118) # Vyberte kontrolní měřicí registr, 0xF4 (244) # 0x27 (39) Rychlost převzorkování tlaku a teploty = 1 # sběrnice v normálním režimu. Zápis_byte_data (0x76, 0xF4, 0x27) # adresa BME280, 0x76 (118) # výběr konfiguračního registru, 0xF5 (245) # 0xA0 (00) pohotovostní doba = 1000 ms sběrnice.write_byte_data (0x76, 0xF5, 0xA0)
time.sleep (0,5)
# Adresa BME280, 0x76 (118)
# Přečíst data zpět z 0xF7 (247), 8 bytů # Tlak MSB, Tlak LSB, Tlak xLSB, Teplota MSB, Teplota LSB # Teplota xLSB, Vlhkost MSB, Vlhkost LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)
# Převeďte údaje o tlaku a teplotě na 19 bitů
adc_p = ((data [0] * 65536) + (data [1] * 256) + (data [2] & 0xF0)) / 16 adc_t = ((data [3] * 65536) + (data [4] * 256) + (data [5] a 0xF0)) / 16
# Převeďte údaje o vlhkosti
adc_h = data [6] * 256 + data [7]
# Výpočty teplotního ofsetu
var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120,0 fTemp = cTemp * 1,8 + 32
# Výpočty ofsetu tlaku
var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 tlak = (p + (var1 + var2 + (dig_P7)) / 16,0) / 100
# Výpočty ofsetu vlhkosti
var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))) vlhkost = var_H * (1,0 - dig_H1 * var_H / 524288.0) pokud vlhkost> 100,0: vlhkost = 100,0 elif vlhkosti <0,0: vlhkost = 0,0
# Výstup dat na obrazovku
tisk "Teplota ve stupních Celsia: %0,2 F"
Krok 4: Spuštěný kód
Nyní si stáhněte (nebo git pull) kód a otevřete jej v Raspberry Pi.
Spusťte příkazy pro kompilaci a nahrání kódu na terminál a podívejte se na výstup na displeji. Po několika sekundách se zobrazí všechny parametry. Poté, co se ujistíte, že vše funguje skvěle, můžete vyvinout další zajímavé.
Krok 5: Využití v praktickém světě
BME280 dosahuje vysokého výkonu ve všech aplikacích vyžadujících měření vlhkosti a tlaku. Tyto nově vznikající aplikace mají povědomí o kontextu, např. Detekce kůže, Detekce změny místnosti, Monitorování kondice / pohody, Varování týkající se sucha nebo vysokých teplot, Měření objemu a průtoku vzduchu, Ovládání domácí automatizace, Ovládání topení, Ventilace, Klimatizace (HVAC), Internet věcí (IoT), Vylepšení GPS (např. Vylepšení Time-to-First-Fix, Dead Reckoning, Slope Detection), Indoor Navigation (Change of Floor Detection, Elevator Detection), Outdoor Navigation, Leisure & Sports Applications, Forecast Weather and Vertical Velocity Indication (Rise/Sink Rychlost).
Krok 6: Závěr
Doufám, že tento projekt inspiruje k dalšímu experimentování. Vytvoření sofistikovanější meteorologické stanice může zahrnovat několik dalších senzorů, jako je Rain Gauge, světelný senzor, anemometr (rychlost větru) atd. Můžete je přidat a upravit kód. Na YouTube máme videonávod se základní funkcí senzoru I²C s Rasp Pi. Je opravdu úžasné sledovat výsledky a fungování komunikace I²C. Bavte se také při stavění a učení! Dejte nám prosím vědět, co si o tomto pokynu myslíte. V případě potřeby rádi provedeme některá vylepšení.
Doporučuje:
Profesionální meteorologická stanice využívající ESP8266 a ESP32 DIY: 9 kroků (s obrázky)
Profesionální meteorologická stanice využívající ESP8266 a ESP32 DIY: LineaMeteoStazione je kompletní meteorologická stanice, kterou lze propojit s profesionálními senzory od společnosti Sensirion a také s některou komponentou Davis Instrument (Rain Gauge, Anemometer) Projekt je zaměřen jako meteorologická stanice pro vlastní potřebu, ale vyžaduje pouze
Jednoduchá meteorologická stanice využívající ESP8266 .: 6 kroků (s obrázky)
Jednoduchá meteorologická stanice využívající ESP8266 .: V tomto Instructable budu sdílet, jak pomocí ESP8266 získávat data jako teplota, tlak, klima atd. A data z YouTube jako předplatitelé & Celkový počet zhlédnutí. a zobrazte data na sériovém monitoru a zobrazte je na LCD. Data budou f
Osobní meteorologická stanice využívající Raspberry Pi s BME280 v Javě: 6 kroků
Osobní meteorologická stanice využívající Raspberry Pi S BME280 v Javě: Špatné počasí vždy vypadá hůře oknem. Vždy jsme měli zájem sledovat naše místní počasí a to, co vidíme z okna. Také jsme chtěli lepší kontrolu nad naším systémem vytápění a klimatizace. Vybudování osobní meteorologické stanice je skvělý
Meteorologická stanice NaTaLia: Meteorologická stanice poháněná solární energií Arduino provedla správnou cestu: 8 kroků (s obrázky)
Meteorologická stanice NaTaLia: Meteostanice poháněná solární energií Arduino Správně: Po 1 roce úspěšného provozu na 2 různých místech sdílím své plány projektů solární elektrárny a vysvětluji, jak se vyvinuly do systému, který může skutečně přežít po dlouhou dobu období ze sluneční energie. Pokud budete dodržovat
Pokojová meteorologická stanice využívající Arduino a BME280: 4 kroky
Pokojová meteorologická stanice využívající Arduino a BME280: Dříve jsem sdílel jednoduchou meteorologickou stanici, která zobrazovala teplotu a vlhkost místní oblasti. Problém byl v tom, že aktualizace bude nějakou dobu trvat a data nebyla přesná. V tomto tutoriálu vytvoříme vnitřní monitor počasí