Sadržaj:

Meteorološka postaja koja koristi Raspberry Pi s BME280 u Pythonu: 6 koraka
Meteorološka postaja koja koristi Raspberry Pi s BME280 u Pythonu: 6 koraka

Video: Meteorološka postaja koja koristi Raspberry Pi s BME280 u Pythonu: 6 koraka

Video: Meteorološka postaja koja koristi Raspberry Pi s BME280 u Pythonu: 6 koraka
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Studeni
Anonim
Image
Image
Imperativni račun o opremi
Imperativni račun o opremi

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

S globalnim zatopljenjem i problemima klimatskih promjena, globalni vremenski uzorak postaje nestabilan u cijelom svijetu što dovodi do brojnih prirodnih katastrofa povezanih s vremenom (suše, ekstremne temperature, poplave, oluje i požari), čini se da je vremenska postaja neophodna zlo kod kuće. Naučite mnogo o osnovnoj elektronici iz projekta meteorološke postaje koristeći hrpu jeftinih dijelova i senzora. Postavljanje je prilično jednostavno i nećete ga imati ni u kojem trenutku.

Korak 1: Imperativni račun o opremi

Imperativni račun o opremi
Imperativni račun o opremi
Imperativni račun o opremi
Imperativni račun o opremi
Imperativni račun o opremi
Imperativni račun o opremi

1. Pivo od maline

Uzmite u ruke Raspberry Pi ploču. Raspberry Pi je jednokrilno računalo sa Linux sustavom. Raspberry Pi je stvarno jeftin, sićušan i svestran izgrađen od pristupačnog i funkcionalnog računala za učenike da vježbaju osnove programiranja i razvoja softvera.

2. I2C štit za Raspberry Pi

INPI2 (I2C adapter) omogućuje Raspberry Pi 2/3 an I²C priključak za upotrebu s više I2C uređaja. Dostupno je u trgovini DCUBE.

3. Digitalni osjetnik vlage, tlaka i temperature, BME280

BME280 je senzor vlage, tlaka i temperature koji ima brzo vrijeme odziva i visoku ukupnu točnost. Ovaj smo senzor kupili u trgovini DCUBE.

4. I2C spojni kabel

Koristili smo I²C kabel dostupan ovdje DCUBE Store.

5. Mikro USB kabel

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 kabel (kabel za prikaz i 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 gornje upute i slike i ne biste trebali imati problema. Tijekom učenja temeljito smo se upoznali s osnovama elektronike u vezi s poznavanjem hardvera i softvera. Željeli smo sastaviti jednostavnu shemu elektronike za ovaj projekt. Elektroničke sheme su poput nacrta. Nacrtajte nacrt i pažljivo slijedite dizajn. Ovdje bi moglo biti korisno nekoliko osnovnih koncepata elektronike!

Povezivanje Raspberry Pi i I2C štita

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

Spajanje senzora i Raspberry Pi

Uzmite senzor i spojite I²C kabel s njim. Provjerite je li izlaz I²C UVIJEK spojen na ulaz I²C. Isto se mora poduzeti i za Raspberry Pi sa I²C štitom postavljenim preko GPIO pinova. Preporučujemo uporabu 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 više ploča u aplikaciju.

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

Internet povezivanje je ključno

Ovdje imate dva izbora. Ili možete spojiti 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

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

Spajanje na zaslon

HDMI kabel možemo povezati s monitorom ili s 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: Programiranje Raspberry Pi u Pythonu

Programiranje Raspberry Pi u Pythonu
Programiranje Raspberry Pi u Pythonu

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

Prije nego prijeđ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, s instrumentima i opremom za mjerenje atmosferskih uvjeta za pružanje informacija za vremensku prognozu i proučavanje vremena i klime.

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

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

# Distribuirano s licencom slobodne volje.# 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. #

uvoz smbus

vrijeme uvoza

# Nabavite I2C autobus

sabirnica = smbus. SMBus (1)

# Adresa BME280, 0x76 (118)

# Očitavanje podataka s 0x88 (136), 24 bajta b1 = sabirnica.čitaj_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 tlaka

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] if dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] if dig_P9> 32767: dig_P9 -= 65536

# Adresa BME280, 0x76 (118)

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

# Adresa BME280, 0x76 (118)

# Očitavanje podataka iz 0xE1 (225), 7 bajtova b1 = sabirnica.čitaj_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) if dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) if dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] if dig_H6> 127: dig_H6 -= 256

# Adresa BME280, 0x76 (118)

# Odaberite registar kontrolne vlažnosti, 0xF2 (242) # 0x01 (01) Prekomjerno uzorkovanje vlažnosti = 1 sabirnica.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 # Sabirnica normalnog načina rada.write_byte_data (0x76, 0xF4, 0x27) # BME280 adresa, 0x76 (118) # Odaberite registar konfiguracije, 0xF5 (245) # 0xA0 (00) Vrijeme pripravnosti = sabirnica 1000 ms.write_byte_data (0x76, 0xF5, 0xA0)

vrijeme.spavanje (0,5)

# Adresa BME280, 0x76 (118)

# Očitavanje podataka iz 0xF7 (247), 8 bajtova # Tlak MSB, Tlak LSB, Tlak xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Vlažnost MSB, Podaci o vlažnosti LSB = 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]

# Izrač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

# Izračuni pomaka 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 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 - kopa_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 zaslon

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

Korak 4: Kôd za pokretanje

Kodeks trčanja
Kodeks trčanja

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

Pokrenite naredbe za kompajliranje i prijenos koda na terminalu i pogledajte izlaz na zaslonu. Nakon nekoliko sekundi prikazat će se svi parametri. Nakon što se uvjerite da sve funkcionira izvrsno, 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 vlage i tlaka. Ove nove aplikacije su svijest o kontekstu, npr. Otkrivanje kože, otkrivanje promjena prostorije, 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), unutarnja navigacija (promjena otkrivanja poda, otkrivanje dizala), navigacija na otvorenom, aplikacije za slobodno vrijeme i sport, vremenska prognoza i indikacija okomite brzine (uspon/sudoper) Ubrzati).

Korak 6: Zaključak

Nadam se da će ovaj projekt potaknuti daljnje eksperimentiranje. Izrada sofisticiranije meteorološke postaje 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 što mislite o ovom uputstvu. Voljeli bismo napraviti neka poboljšanja ako je potrebno.

Preporučeni: