Sadržaj:

Meteorološka stanica koja koristi Raspberry Pi sa BME280 u Pythonu: 6 koraka
Meteorološka stanica koja koristi Raspberry Pi sa BME280 u Pythonu: 6 koraka

Video: Meteorološka stanica koja koristi Raspberry Pi sa BME280 u Pythonu: 6 koraka

Video: Meteorološka stanica koja koristi Raspberry Pi sa BME280 u Pythonu: 6 koraka
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Novembar
Anonim
Image
Image
Imperativni zakon o opremi
Imperativni zakon o opremi

je maith an scéalaí an aimir (Vrijeme je dobra pripovjedačica)

S globalnim zagrijavanjem i problemima klimatskih promjena, globalni vremenski obrazac postaje nestabilan u cijelom našem svijetu što dovodi do brojnih prirodnih katastrofa povezanih s vremenom (suše, ekstremne temperature, poplave, oluje i požari), čini se da je meteorološka stanica neophodna zlo kod kuće. Naučite mnogo o osnovnoj elektronici iz projekta meteorološke stanice koristeći hrpu jeftinih dijelova i senzora. Prilično je jednostavno postaviti i nećete ga imati u kratkom roku.

Korak 1: Imperativni račun o opremi

Imperativni zakon o opremi
Imperativni zakon o opremi
Imperativni zakon o opremi
Imperativni zakon o opremi
Imperativni zakon o opremi
Imperativni zakon o opremi

1. Pivo od maline

Uzmite u ruke Raspberry Pi ploču. Raspberry Pi je jednokrilni računar sa Linux operativnim sistemom. Raspberry Pi je zaista jeftin, sićušan i svestran izgrađen od pristupačnog i funkcionalnog računara za učenike da vježbaju osnove programiranja i razvoja softvera.

2. I2C štit za Raspberry Pi

INPI2 (I2C adapter) pruža Raspberry Pi 2/3 i I²C port za upotrebu sa više I2C uređaja. Dostupno je u DCUBE trgovini.

3. Digitalni senzor vlažnosti, pritiska i temperature, BME280

BME280 je senzor vlažnosti, pritiska i temperature koji ima brzo vrijeme odziva i visoku ukupnu tačnost. Ovaj senzor smo kupili u DCUBE trgovini.

4. I2C priključni kabel

Koristili smo I²C kabel dostupan ovdje DCUBE Store.

5. Mikro USB kabl

Napajanje mikro USB kabelom idealan je izbor za napajanje Raspberry Pi.

6. Interpretirajte pristup internetu putem Ethernet kabela/WiFi adaptera

Pristup internetu može se omogućiti putem Ethernet kabela spojenog na lokalnu mrežu i internet. Alternativno, možete se povezati s bežičnom mrežom pomoću USB bežičnog ključa, što će zahtijevati konfiguraciju.

7. HDMI kabl (ekran i kabl za povezivanje)

Svaki HDMI/DVI monitor i bilo koji televizor trebali bi raditi kao zaslon za Pi. Alternativno, možete daljinski pristupiti Pi -u putem SSH -a negirajući potrebu za monitorom (samo napredni korisnici).

Korak 2: Hardverske veze za krug

Hardverske veze za krug
Hardverske veze za krug
Hardverske veze za krug
Hardverske veze za krug

Napravite krug prema prikazanoj shemi. Općenito, veze su vrlo jednostavne. Budite mirni i slijedite gornja uputstva i slike i ne biste trebali imati problema. Dok smo učili, temeljno smo se upoznali s osnovama elektronike u pogledu hardverskog i softverskog znanja. Željeli smo sastaviti jednostavnu elektroničku shemu za ovaj projekt. Elektronske sheme su poput nacrta. Nacrtajte nacrt i pažljivo pratite dizajn. Nekoliko osnovnih koncepata elektronike moglo bi biti korisno ovdje!

Povezivanje Raspberry Pi i I2C štita

Prvo uzmite Raspberry Pi i postavite I²C štit na njega. Lagano pritisnite štit i završili smo s ovim korakom lako kao pita (pogledajte sliku).

Povezivanje senzora i Raspberry Pi

Uzmite senzor i spojite I²C kabel s njim. Uvjerite se da je I²C izlaz UVIJEK spojen na I²C ulaz. Isto se mora slijediti i za Raspberry Pi sa I²C štitom postavljenim preko njega na GPIO pinove. Preporučujemo upotrebu I²C kabela jer se negira potreba za čitanjem ispisa, lemljenja i nelagode uzrokovane čak i najmanjim klizanjem. Pomoću ovog jednostavnog plug and play kabela možete s lakoćom instalirati, zamijeniti ploče ili dodati još ploča u aplikaciju.

Napomena: Smeđa žica uvijek treba slijediti vezu uzemljenja (GND) između izlaza jednog uređaja i ulaza drugog uređaja

Internet povezivanje je ključ

Ovde imate dva izbora. Ili možete povezati Raspberry Pi na mrežu pomoću ethernet kabela ili upotrijebiti USB na WiFi adapter za WIFI povezivanje. U svakom slučaju, sve dok je povezan s internetom pokriveni ste.

Napajanje kruga

Uključite mikro USB kabel u utičnicu za napajanje Raspberry Pi. Udari i voila! Naš tim je informacija.

Povezivanje sa ekranom

HDMI kabl možemo povezati sa monitorom ili sa televizorom. Osim toga, možemo pristupiti Raspberry Pi -u bez povezivanja s monitorom pomoću daljinskog pristupa. SSH je zgodan alat za siguran daljinski pristup. Za to možete koristiti i softver PUTTY. Ova je opcija za napredne korisnike pa je ovdje nećemo detaljno opisivati.

To je ekonomična metoda ako ne želite potrošiti mnogo

Korak 3: Raspberry Pi programiranje u Pythonu

Programiranje Raspberry Pi u Pythonu
Programiranje Raspberry Pi u Pythonu

Python kod za Raspberry Pi i BME280 senzor. Dostupno je u našem Github spremištu.

Prije nego što pređete na kôd, svakako pročitajte upute date u datoteci Readme i postavite Raspberry Pi prema njemu. Samo malo vremena će vas pripremiti za postavljanje. Meteorološka stanica je objekt, bilo na kopnu ili na moru, sa instrumentima i opremom za mjerenje atmosferskih uslova za pružanje informacija za vremensku prognozu i proučavanje vremena i klime.

Kôd je jasno pred vama i u najjednostavnijem obliku koji možete zamisliti i ne biste trebali imati problema. I dalje pitajte da li postoji (Čak i ako znate hiljadu stvari, ipak pitajte nekoga ko zna).

Odavde možete kopirati i radni Python kod za ovaj senzor.

# Distribuira se sa slobodnom voljom licence.# Koristite ga kako god želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela. # BME280 # Ovaj kôd je dizajniran za rad s BME280_I2CS I2C mini modulom dostupnim na stranici ControlEverything.com. #

import smbus

vreme uvoza

# Nabavite I2C autobus

sabirnica = smbus. SMBus (1)

# BME280 adresa, 0x76 (118)

# Očitavanje podataka sa 0x88 (136), 24 bajta b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Pretvorite podatke

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

# Koeficijenti pritiska

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

# BME280 adresa, 0x76 (118)

# Očitavanje podataka iz 0xA1 (161), 1 bajt dig_H1 = bus.read_byte_data (0x76, 0xA1)

# BME280 adresa, 0x76 (118)

# Očitavanje podataka iz 0xE1 (225), 7 bajtova b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Pretvorite podatke

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

# BME280 adresa, 0x76 (118)

# Odaberite registar kontrolne vlažnosti, 0xF2 (242) # 0x01 (01) Prekomjerno uzorkovanje vlažnosti = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # BME280 adresa, 0x76 (118) # Odaberite Kontrolni mjerni registar, 0xF4 (244) # 0x27 (39) Brzina prekomjernog uzorkovanja tlaka i temperature = 1 # Standardni način rada bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 adresa, 0x76 (118) # Odaberite registar konfiguracije, 0xF5 (245) # 0xA0 (00) Vrijeme pripravnosti = sabirnica od 1000 ms.write_byte_data (0x76, 0xF5, 0xA0)

vrijeme.spavanje (0,5)

# BME280 adresa, 0x76 (118)

# Očitavanje podataka iz 0xF7 (247), 8 bajtova # Pritisak MSB, Tlak LSB, Tlak xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Vlažnost MSB, Vlažnost LSB podaci = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Pretvorite podatke o tlaku i temperaturi u 19 bita

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

# Pretvorite podatke o vlažnosti

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

# Proračuni pomaka 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

# Proračuni pomaka pritiska

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 pritisak = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Izračuni pomaka 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 - dig_H1 * var_H / 524288,0) ako je vlažnost> 100,0: vlažnost = 100,0 elif vlažnost <0,0: vlažnost = 0,0

# Izlažite podatke na ekran

ispis "Temperatura u Celzijusima: %.2f C" %cTemp print "Temperatura u Farenhajtu: %.2f F" %fTemp otisak "Tlak: %.2f hPa" %ispis pritiska "Relativna vlažnost: %.2f %%" %vlažnosti

Korak 4: Kôd za pokretanje

Kôd za trčanje
Kôd za trčanje

Sada preuzmite (ili git povucite) kôd i otvorite ga u Raspberry Pi.

Pokrenite naredbe za kompajliranje i postavljanje koda na terminal i pogledajte izlaz na ekranu. Nakon nekoliko sekundi prikazat će se svi parametri. Nakon što se uvjerite da sve funkcionira odlično, možete razviti još neke zanimljive.

Korak 5: Korištenje u praktičnom svijetu

BME280 postiže visoke performanse u svim aplikacijama koje zahtijevaju mjerenje vlažnosti i pritiska. Ove nove aplikacije su svijest o kontekstu, npr. Otkrivanje kože, otkrivanje promjena sobe, praćenje kondicije / dobrobiti, upozorenje u pogledu suhoće ili visokih temperatura, mjerenje volumena i protoka zraka, kontrola kućne automatizacije, kontrolno grijanje, ventilacija, klimatizacija (HVAC), Internet stvari (IoT), Poboljšanje GPS-a (npr. Poboljšanje vremena do prvog popravka, mrtvo računanje, otkrivanje nagiba), unutrašnja navigacija (promjena otkrivanja poda, otkrivanje lifta), navigacija na otvorenom, aplikacije za slobodno vrijeme i sport, vremenska prognoza i indikacija okomite brzine (podizanje/sudoper) Brzina).

Korak 6: Zaključak

Nadam se da će ovaj projekt potaknuti daljnja eksperimentiranja. Izrada sofisticiranije meteorološke stanice može uključivati još neke senzore poput mjerača kiše, svjetlosnog senzora, anemometra (brzine vjetra) itd. Možete ih dodati i izmijeniti kôd. Imamo video vodič na YouTubeu koji ima osnovno funkcioniranje I²C senzora s Rasp Pi -jem. Zaista je nevjerojatno vidjeti rezultate i rad I²C komunikacije. Provjerite i vi. Zabavite se u izgradnji i učenju! Javite nam šta mislite o ovom uputstvu. Voljeli bismo napraviti neka poboljšanja ako je potrebno.

Preporučuje se: