Kazalo:

Vremenska postaja z uporabo Raspberry Pi z BME280 v Pythonu: 6 korakov
Vremenska postaja z uporabo Raspberry Pi z BME280 v Pythonu: 6 korakov

Video: Vremenska postaja z uporabo Raspberry Pi z BME280 v Pythonu: 6 korakov

Video: Vremenska postaja z uporabo Raspberry Pi z BME280 v Pythonu: 6 korakov
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Julij
Anonim
Image
Image
Zakon o nujni opremi
Zakon o nujni opremi

je maith an scéalaí an aimir (Vreme je dobra pripovedovalka)

Zaradi globalnega segrevanja in vprašanj podnebnih sprememb postaja globalni vremenski vzorec po vsem svetu nestabilen, kar vodi do številnih naravnih katastrof, povezanih z vremenom (suše, ekstremne temperature, poplave, nevihte in požari), se zdi, da je vremenska postaja nujna zlo doma. Iz projekta vremenske postaje se veliko naučite o osnovni elektroniki s kopico poceni delov in senzorjev. Nastavitev je precej enostavna in v kratkem času je ne morete imeti.

1. korak: Zakon o nujni opremi

Zakon o nujni opremi
Zakon o nujni opremi
Zakon o nujni opremi
Zakon o nujni opremi
Zakon o nujni opremi
Zakon o nujni opremi

1. Malina Pi

Vzemite v roke desko Raspberry Pi. Raspberry Pi je enokanalni računalnik z operacijskim sistemom Linux. Raspberry Pi je res poceni, majhen in vsestranski, zgrajen iz dostopnega in funkcionalnega računalnika za učence, da uveljavljajo osnove programiranja in razvoja programske opreme.

2. I2C ščit za Raspberry Pi

INPI2 (I2C adapter) ponuja vrata Raspberry Pi 2/3 in I²C za uporabo z več napravami I2C. Na voljo je v trgovini DCUBE.

3. Digitalni senzor vlažnosti, tlaka in temperature, BME280

BME280 je senzor vlažnosti, tlaka in temperature, ki ima hiter odzivni čas in visoko splošno natančnost. Ta senzor smo kupili v trgovini DCUBE.

4. Povezovalni kabel I2C

Uporabili smo kabel I²C, ki je na voljo tukaj DCUBE Store.

5. Kabel mikro USB

Napajalni kabel mikro USB je idealna izbira za napajanje Raspberry Pi.

6. Razlagajte dostop do interneta prek vmesnika EthernetCable/WiFi

Dostop do interneta je mogoč prek ethernetnega kabla, povezanega z lokalnim omrežjem in internetom. Druga možnost je, da se z brezžičnim ključem USB povežete v brezžično omrežje, kar bo zahtevalo konfiguracijo.

7. Kabel HDMI (kabel za prikaz in povezovanje)

Vsak monitor HDMI/DVI in kateri koli televizor bi moral delovati kot zaslon za Pi. Lahko pa tudi dostopate do Pi prek SSH na daljavo, pri čemer izklopite potrebo po monitorju (samo za napredne uporabnike).

2. korak: Strojne povezave za vezje

Strojne povezave za vezje
Strojne povezave za vezje
Strojne povezave za vezje
Strojne povezave za vezje

Naredite vezje po prikazani shemi. Na splošno so povezave zelo preproste. Bodite mirni in sledite zgornjim navodilom in slikam, zato ne bi smelo biti težav. Med učenjem smo temeljito preučili osnove elektronike glede znanja o strojni in programski opremi. Za ta projekt smo želeli sestaviti preprosto shemo elektronike. Elektronske sheme so kot načrti. Naredite načrt in natančno sledite načrtu. Nekaj osnovnih pojmov elektronike bi lahko bilo tukaj koristnih!

Povezava Raspberry Pi in I2C Shield

Najprej vzemite Raspberry Pi in nanj položite ščit I²C. Nežno pritisnite na ščit in s tem korakom smo končali tako enostavno kot pita (glej sliko).

Povezava senzorja in Raspberry Pi

Vzemite senzor in z njim povežite kabel I²C. Prepričajte se, da je izhod I²C VEDNO povezan z vhodom I²C. Enako je treba storiti za Raspberry Pi s ščitnikom I²C, nameščenim nanj prek zatičev GPIO. Priporočamo uporabo kablov I²C, saj odpravlja potrebo po branju izpiskov, spajkanja in slabosti, ki jih povzroči tudi najmanjši zdrs. S tem preprostim kablom plug and play lahko preprosto namestite, zamenjate plošče ali dodate več plošč v aplikacijo.

Opomba: Rjava žica mora vedno slediti ozemljitveni (GND) povezavi med izhodom ene naprave in vhodom druge naprave

Ključna je internetna povezava

Tu imate dve izbiri. Lahko povežete Raspberry Pi v omrežje z ethernetnim kablom ali uporabite adapter USB v WiFi za povezljivost WIFI. Kakorkoli, dokler je povezan z internetom, ste pokrito.

Napajanje vezja

Priključite kabel Micro USB v vtičnico za napajanje Raspberry Pi. Udari in voila! Naša ekipa je informacija.

Povezava z zaslonom

Kabel HDMI lahko priključimo na monitor ali televizor. Poleg tega lahko dostopamo do Raspberry Pi, ne da bi ga povezali z monitorjem z oddaljenim dostopom. SSH je priročno orodje za varen oddaljeni dostop. Za to lahko uporabite tudi programsko opremo PUTTY. Ta možnost je za napredne uporabnike, zato je tukaj ne bomo podrobno obravnavali.

To je ekonomična metoda, če ne želite porabiti veliko

3. korak: Programiranje Raspberry Pi v Pythonu

Programiranje Raspberry Pi v Pythonu
Programiranje Raspberry Pi v Pythonu

Koda Python za senzor Raspberry Pi in BME280. Na voljo je v našem skladišču Github.

Preden nadaljujete s kodo, se prepričajte, da ste prebrali navodila v datoteki Readme in v skladu z njimi nastavite Raspberry Pi. Le malo časa vas bo pripravilo na nastavitev. Vremenska postaja je objekt na kopnem ali morju z instrumenti in opremo za merjenje atmosferskih razmer, ki zagotavlja informacije za vremenske napovedi ter proučuje vreme in podnebje.

Koda je očitno pred vami in je v najpreprostejši obliki, ki si jo lahko zamislite, in ne bi smeli imeti težav. Še vedno vprašajte, če obstaja (tudi če veste tisoč stvari, še vedno vprašajte nekoga, ki ve).

Delovno kodo Python za ta senzor lahko kopirate tudi od tu.

# Razdeljeno z licenco za svobodno voljo.# Uporabite ga na kakršen koli način, dobičkonosno ali brezplačno, pod pogojem, da ustreza licencam povezanih del. # BME280 # Ta koda je zasnovana za delo z mini modulom BME280_I2CS I2C, ki je na voljo na spletnem mestu ControlEverything.com. #

uvoz smbus

čas uvoza

# Pridobite avtobus I2C

vodilo = smbus. SMBus (1)

# Naslov BME280, 0x76 (118)

# Preberite podatke nazaj iz 0x88 (136), 24 bajtov b1 = vodilo.read_i2c_block_data (0x76, 0x88, 24)

# Pretvorite podatke

# Temp koeficienti dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] če je dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] če je dig_T3> 32767: dig_T3 -= 65536

# Tlačni koeficienti

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] če je dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] če je dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] če je dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] če je dig_P5> 32767: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] če je dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] če je dig_P7> 32767: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] if dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] if dig_P9> 32767: dig_P9 -= 65536

# Naslov BME280, 0x76 (118)

# Preberite podatke nazaj iz 0xA1 (161), 1 bajt dig_H1 = vodilo.prebrani_bajtni_dati (0x76, 0xA1)

# Naslov BME280, 0x76 (118)

# Preberite podatke nazaj iz 0xE1 (225), 7 bajtov b1 = vodilo.read_i2c_block_data (0x76, 0xE1, 7)

# Pretvorite podatke

# Koeficienti vlažnosti dig_H2 = b1 [1] * 256 + b1 [0] če je dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF), če dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16), če je dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6], če dig_H6> 127: dig_H6 -= 256

# Naslov BME280, 0x76 (118)

# Izberite kontrolni register vlažnosti, 0xF2 (242) # 0x01 (01) Preveč vzorčenje vlažnosti = 1 vodilo.write_byte_data (0x76, 0xF2, 0x01) # Naslov BME280, 0x76 (118) # Izberite Nadzorni merilni register, 0xF4 (244) # 0x27 (39) Hitrost prevelikega vzorčenja tlaka in temperature = 1 # vodilo normalnega načina.write_byte_data (0x76, 0xF4, 0x27) # naslov BME280, 0x76 (118) # Izberite register konfiguracije, 0xF5 (245) # 0xA0 (00) čas pripravljenosti = vodilo 1000 ms.write_byte_data (0x76, 0xF5, 0xA0)

time.sleep (0,5)

# Naslov BME280, 0x76 (118)

# Preberite podatke nazaj iz 0xF7 (247), 8 bajtov # Tlak MSB, Tlak LSB, Tlak xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Vlažnost MSB, Vlažnost LSB podatki = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Pretvorite podatke o tlaku in temperaturi v 19 bitov

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

# Pretvorite podatke o vlažnosti

adc_h = podatki [6] * 256 + podatki [7]

# Izračuni odmika temperature

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

# Izračuni odmika tlaka

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

# Izračuni odmika vlažnosti

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_)) vlažnost = var_H * (1,0 - kopa_H1 * var_H / 524288,0), če je vlažnost> 100,0: vlažnost = 100,0 elif vlažnost <0,0: vlažnost = 0,0

# Iznesite podatke na zaslon

natisni "Temperatura v Celzijah: %.2f C" %cTemp print "Temperatura v Fahrenheitu: %.2f F" %fTemp natisni "Tlak: %.2f hPa" %tisk "Relativna vlažnost: %.2f %%" %vlažnosti

4. korak: Koda za izvajanje

Tekaška koda
Tekaška koda

Zdaj prenesite (ali git povlecite) kodo in jo odprite v Raspberry Pi.

Zaženite ukaze za sestavljanje in nalaganje kode na terminal in si oglejte izpis na zaslonu. Po nekaj sekundah bodo prikazani vsi parametri. Ko se prepričate, da vse deluje odlično, lahko razvijete še nekaj zanimivih.

5. korak: Uporaba v praktičnem svetu

BME280 dosega visoke zmogljivosti v vseh aplikacijah, ki zahtevajo merjenje vlažnosti in tlaka. Te nove aplikacije so zavedanje konteksta, npr. Odkrivanje kože, zaznavanje sprememb prostora, spremljanje telesne pripravljenosti / dobro počutje, opozorilo glede suhosti ali visokih temperatur, merjenje volumna in pretoka zraka, nadzor avtomatizacije doma, nadzor ogrevanja, prezračevanje, klimatizacija (HVAC), internet stvari (IoT), Izboljšanje GPS (npr. Izboljšanje časa do prvega popravka, obračun mrtvih vozil, zaznavanje pobočja), notranja navigacija (sprememba zaznavanja tal, zaznavanje dvigala), navigacija na prostem, aplikacije za prosti čas in šport, vremenska napoved in oznaka navpične hitrosti (dvig/ponor) Hitrost).

6. korak: Zaključek

Upam, da bo ta projekt navdihnil nadaljnje eksperimentiranje. Izdelava bolj izpopolnjene vremenske postaje lahko vključuje še nekaj senzorjev, kot so merilnik dežja, senzor svetlobe, anemometer (hitrost vetra) itd. Lahko jih dodate in spremenite kodo. Na YouTubu imamo video vadnico o osnovnem delovanju senzorja I²C z Rasp Pi. Resnično je neverjetno videti rezultate in delovanje komunikacij I²C. Preverite tudi. Zabavajte se pri gradnji in učenju! Sporočite nam, kaj menite o tem navodilu. Če je potrebno, bi radi izboljšali.

Priporočena: