Obsah:

Meteorologická stanice využívající Raspberry Pi s BME280 v Pythonu: 6 kroků
Meteorologická stanice využívající Raspberry Pi s BME280 v Pythonu: 6 kroků

Video: Meteorologická stanice využívající Raspberry Pi s BME280 v Pythonu: 6 kroků

Video: Meteorologická stanice využívající Raspberry Pi s BME280 v Pythonu: 6 kroků
Video: Wemos D1 mini Pro-jednoduchá meteostanice (ESP8266, Bosch BME280 a ThingSpeak) 2024, Červenec
Anonim
Image
Image
Imperativní vybavení Bill
Imperativní vybavení Bill

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í

Imperativní vybavení Bill
Imperativní vybavení Bill
Imperativní vybavení Bill
Imperativní vybavení Bill
Imperativní vybavení Bill
Imperativní vybavení Bill

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

Hardwarová připojení pro obvod
Hardwarová připojení pro obvod
Hardwarová připojení pro obvod
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

Programování Raspberry Pi v Pythonu
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

Běžecký kód
Běžecký 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: