Obsah:

Meteorologická stanica používajúca Raspberry Pi s BME280 v Pythone: 6 krokov
Meteorologická stanica používajúca Raspberry Pi s BME280 v Pythone: 6 krokov

Video: Meteorologická stanica používajúca Raspberry Pi s BME280 v Pythone: 6 krokov

Video: Meteorologická stanica používajúca Raspberry Pi s BME280 v Pythone: 6 krokov
Video: Arduino mini weather station 2024, Júl
Anonim
Image
Image
Účet za nevyhnutné vybavenie
Účet za nevyhnutné vybavenie

je maith an scéalaí an goalsir (The Weather is a Good Storyteller)

Vzhľadom na problémy s globálnym otepľovaním a zmenou klímy sa globálny model počasia v celom svete stáva nevyrovnaným, čo vedie k mnohým prírodným katastrofám súvisiacim s počasím (suchá, extrémne teploty, záplavy, búrky a požiare), zdá sa, že meteorologická stanica je potrebná zlo doma. Naučíte sa veľa o základnej elektronike z projektu meteorologickej stanice s použitím mnohých lacných dielov a senzorov. Je veľmi jednoduché ho nastaviť a čoskoro ho budete mať k dispozícii.

Krok 1: Účet za nevyhnutné vybavenie

Účet za nevyhnutné vybavenie
Účet za nevyhnutné vybavenie
Účet za nevyhnutné vybavenie
Účet za nevyhnutné vybavenie
Účet za nevyhnutné vybavenie
Účet za nevyhnutné vybavenie

1. Raspberry Pi

Dajte do ruky dosku Raspberry Pi. Raspberry Pi je jednodoskový počítač poháňaný systémom Linux. Raspberry Pi je skutočne lacný, malý a univerzálny, postavený z prístupného a funkčného počítača, v ktorom si študenti môžu precvičiť základy programovania a vývoja softvéru.

2. I2C štít pre Raspberry Pi

INPI2 (adaptér I2C) poskytuje port Raspberry Pi 2/3 a I²C na použitie s viacerými zariadeniami I2C. Je k dispozícii v obchode DCUBE.

3. Digitálny snímač vlhkosti, tlaku a teploty, BME280

BME280 je snímač vlhkosti, tlaku a teploty, ktorý má rýchly čas odozvy a vysokú celkovú presnosť. Tento senzor sme kúpili v obchode DCUBE.

4. Pripojovací kábel I2C

Použili sme kábel I²C, ktorý je k dispozícii tu, Obchod DCUBE.

5. Kábel Micro USB

Micro USB kábel Napájací zdroj je ideálnou voľbou pre napájanie Raspberry Pi.

6. Interpretujte prístup na internet prostredníctvom ethernetového kábla/adaptéra WiFi

Prístup na internet je možné povoliť pomocou ethernetového kábla pripojeného k lokálnej sieti a internetu. Prípadne sa môžete pripojiť k bezdrôtovej sieti pomocou bezdrôtového kľúča USB, ktorý bude vyžadovať konfiguráciu.

7. Kábel HDMI (kábel pre zobrazenie a pripojenie)

Akýkoľvek monitor HDMI/DVI a akýkoľvek televízor by mali fungovať ako displeje pre Pi. Prípadne môžete k systému Pi pristupovať na diaľku prostredníctvom SSH, čím sa eliminuje potreba monitora (iba pokročilí používatelia).

Krok 2: Hardvérové pripojenia pre obvod

Hardvérové pripojenia pre obvod
Hardvérové pripojenia pre obvod
Hardvérové pripojenia pre obvod
Hardvérové pripojenia pre obvod

Vytvorte obvod podľa zobrazenej schémy. Vo všeobecnosti sú pripojenia veľmi jednoduché. Zachovajte pokoj a riaďte sa vyššie uvedenými pokynmi a obrázkami a nemali by ste mať žiadne problémy. Počas učenia sme sa dôkladne zoznámili so základmi elektroniky, pokiaľ ide o znalosti hardvéru a softvéru. Chceli sme pre tento projekt vypracovať jednoduchú schému elektroniky. Elektronické schémy sú ako plány. Vypracujte plán a starostlivo postupujte podľa návrhu. Tu môže byť užitočných niekoľko základných konceptov elektroniky!

Pripojenie štítu Raspberry Pi a I2C

Najprv vezmite Raspberry Pi a umiestnite naň štít I²C. Jemne stlačte štít a tento krok máme hotový rovnako ľahko ako koláč (pozri obrázok).

Pripojenie senzora a Raspberry Pi

Vezmite snímač a pripojte k nemu kábel I²C. Zaistite, aby sa výstup I²C VŽDY pripájal k vstupu I²C. To isté je potrebné dodržať pri Raspberry Pi s I²C štítom namontovaným na GPIO pinech. Odporúčame použiť I²C káble, pretože to vylučuje potrebu čítania vývodov, spájkovania a malátnosti spôsobenej aj tým najmenším preklzom. S týmto jednoduchým káblom typu plug and play môžete do aplikácie jednoducho inštalovať, vymieňať alebo pridávať ďalšie dosky.

Poznámka: Hnedý vodič by mal vždy nasledovať po uzemnení (GND) medzi výstupom jedného zariadenia a vstupom iného zariadenia

Internetové pripojenie je kľúčové

Tu máte dve možnosti. Buď môžete Raspberry Pi pripojiť k sieti pomocou ethernetového kábla alebo použiť adaptér USB na WiFi na pripojenie WIFI. Tak či onak, pokiaľ je pripojený k internetu, máte pokrytie.

Zapínanie obvodu

Zapojte kábel Micro USB do napájacieho konektora Raspberry Pi. Porazte a voila! Náš tím je informácia.

Pripojenie k obrazovke

Buď môžeme mať kábel HDMI pripojený k monitoru alebo k televízoru. Okrem toho máme prístup k Raspberry Pi bez pripojenia k monitoru pomocou vzdialeného prístupu. SSH je praktický nástroj pre bezpečný vzdialený prístup. Na to môžete použiť aj softvér PUTTY. Táto možnosť je pre pokročilých používateľov, preto sa jej tu nebudeme podrobne venovať.

Je to ekonomická metóda, ak nechcete veľa míňať

Krok 3: Programovanie Raspberry Pi v Pythone

Programovanie Raspberry Pi v Pythone
Programovanie Raspberry Pi v Pythone

Kód Python pre snímač Raspberry Pi a BME280. Je k dispozícii v našom úložisku Github.

Predtým, ako prejdete na kód, prečítajte si pokyny uvedené v súbore Readme a nakonfigurujte podľa neho svoje Raspberry Pi. Len málo času vás pripraví na nastavenie. Meteorologická stanica je zariadenie, či už na pevnine alebo na mori, s prístrojmi a zariadením na meranie atmosférických podmienok, ktoré poskytujú informácie o predpovediach počasia a študujú počasie a podnebie.

Kód je jasne pred vami a je v najjednoduchšej forme, akú si dokážete predstaviť, a nemali by ste mať žiadne problémy. Stále sa pýtajte, či nejaké (Aj keď viete tisíc vecí, stále sa pýtajte niekoho, kto to vie).

Odtiaľto môžete skopírovať funkčný kód Pythonu pre tento senzor.

# Distribuované s licenciou slobodnej vôle.# Používajte ho akýmkoľvek spôsobom chcete, so ziskom alebo zadarmo, za predpokladu, že sa zmestí do licencií k ním pridruženým dielam. # BME280 # Tento kód je navrhnutý tak, aby fungoval s mini modulom BME280_I2CS I2C, ktorý je k dispozícii na ControlEverything.com. #

import smbus

čas importu

# Získajte autobus I2C

bus = smbus. SMBus (1)

# Adresa BME280, 0x76 (118)

# Čítajte údaje späť z 0x88 (136), 24 bajtov b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Previesť údaje

# Teplotné koeficienty dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2], ak 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] ak dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] ak dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] ak dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] ak dig_P5> 32767: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] ak dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] ak dig_P7> 32767: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] ak dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] ak dig_P9> 32767: dig_P9 -= 65536

# Adresa BME280, 0x76 (118)

# Načítajte údaje späť z 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

# Adresa BME280, 0x76 (118)

# Načítať údaje späť z 0xE1 (225), 7 bajtov b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Previesť údaje

# Koeficienty vlhkosti dig_H2 = b1 [1] * 256 + b1 [0], ak dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) ak dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) ak dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] ak dig_H6> 127: dig_H6 -= 256

# Adresa BME280, 0x76 (118)

# Vyberte kontrolný register vlhkosti, 0xF2 (242) # 0x01 (01) Prevzorkovanie vlhkosti = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # Adresa BME280, 0x76 (118) # Vyberte kontrolný merací register, 0xF4 (244) # 0x27 (39) Rýchlosť prevzorkovania tlaku a teploty = 1 # zbernica v normálnom režime. Write_byte_data (0x76, 0xF4, 0x27) # adresa BME280, 0x76 (118) # vyberte konfiguračný register, 0xF5 (245) # 0xA0 (00) pohotovostná doba = 1000 ms zbernica.write_byte_data (0x76, 0xF5, 0xA0)

čas.spánok (0,5)

# Adresa BME280, 0x76 (118)

# Prečítajte si údaje späť z 0xF7 (247), 8 bajtov # Tlak MSB, Tlak LSB, Tlak xLSB, Teplota MSB, Teplota LSB # Teplota xLSB, Vlhkosť MSB, Vlhkosť LSB údaje = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Konvertujte údaje o tlaku a teplote na 19-bitové

adc_p = ((údaje [0] * 65536) + (údaje [1] * 256) + (údaje [2] a 0xF0)) / 16 adc_t = ((údaje [3] * 65536) + (údaje [4] * 256) + (údaje [5] a 0xF0)) / 16

# Skonvertujte údaje o vlhkosti

adc_h = údaje [6] * 256 + údaje [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))) vlhkosť = var_H * (1,0 - dig_H1 * var_H / 524288.0), ak je vlhkosť> 100,0: vlhkosť = 100,0 vlhkosti vzduchu <0,0: vlhkosť = 0,0

# Výstup údajov na obrazovku

tlač "Teplota v stupňoch Celzia: %.2f C" %cTemp tlač "Teplota vo Fahrenheite: %.2f F" %fTemp tlač "Tlak: %.2f hPa" %tlaková tlač "Relatívna vlhkosť: %.2f %%" %vlhkosť

Krok 4: Bežiaci kód

Bežecký kód
Bežecký kód

Teraz si stiahnite (alebo git pull) kód a otvorte ho v Raspberry Pi.

Spustite príkazy na kompiláciu a nahranie kódu na terminál a pozrite sa na výstup na displeji. Po niekoľkých sekundách sa zobrazia všetky parametre. Keď sa ubezpečíte, že všetko funguje skvele, môžete vyvinúť ďalšie zaujímavé.

Krok 5: Využitie v praktickom svete

BME280 dosahuje vysoký výkon vo všetkých aplikáciách vyžadujúcich meranie vlhkosti a tlaku. Tieto vznikajúce aplikácie sú Kontextové povedomie, napr. Detekcia pokožky, Detekcia zmeny miestnosti, Monitorovanie pohody / pohody, Varovanie týkajúce sa sucha alebo vysokých teplôt, Meranie objemu a prietoku vzduchu, Ovládanie domácej automatizácie, Riadiace kúrenie, Vetranie, Klimatizácia (HVAC), Internet vecí (IoT), Vylepšenie GPS (napr. Zlepšenie času do prvej opravy, Zúčtovanie mŕtveho, Detekcia sklonu), Vnútorná navigácia (zmena detekcie podlahy, Detekcia výťahu), Vonkajšia navigácia, Voľnočasové a športové aplikácie, Predpoveď počasia a Indikácia vertikálnej rýchlosti (Vzostup/Potopenie) Rýchlosť).

Krok 6: Záver

Dúfam, že tento projekt inšpiruje ďalšie experimentovanie. Sofistikovanejšia meteorologická stanica môže zahŕňať niekoľko ďalších senzorov, ako je napríklad Rain Gauge, svetelný senzor, anemometer (rýchlosť vetra) atď. Môžete ich pridať a zmeniť kód. Máme video návod na YouTube, ktorý má základné fungovanie senzora I²C s Rasp Pi. Je skutočne úžasné vidieť výsledky a fungovanie komunikácie I²C. Pozrite sa tiež. Bavte sa s budovaním a učením! Dajte nám vedieť, čo si myslíte o tomto pokyne. V prípade potreby radi urobíme niekoľko vylepšení.

Odporúča: