Sadržaj:
- Korak 1: Imperativni račun o opremi
- Korak 2: Hardverske veze za krug
- Korak 3: Programiranje Raspberry Pi u Pythonu
- Korak 4: Kôd za pokretanje
- Korak 5: Korištenje u praktičnom svijetu
- Korak 6: Zaključak
Video: Meteorološka postaja koja koristi Raspberry Pi s BME280 u Pythonu: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
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
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
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
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
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:
Profesionalna meteorološka stanica koja koristi ESP8266 i ESP32 DIY: 9 koraka (sa slikama)
Profesionalna meteorološka postaja pomoću ESP8266 i ESP32 DIY: LineaMeteoStazione je potpuna meteorološka stanica koja se može povezati s profesionalnim senzorima tvrtke Sensirion, kao i nekim Davisovim instrumentom (mjerač kiše, anemometar) Projekt je namijenjen kao DIY meteorološka stanica, ali samo zahtijeva
Mini meteorološka postaja koja koristi Arduino i ThingSpeak: 4 koraka
Mini meteorološka postaja koja koristi Arduino i ThingSpeak: Pozdrav svima. U ovom Instructableu vodit ću vas kroz korake za izradu personalizirane mini meteorološke postaje. Također, koristit ćemo ThingSpeak API za prijenos naših vremenskih podataka na njihove poslužitelje, ili koja je svrha vremenske prognoze
Osobna meteorološka postaja koja koristi Raspberry Pi s BME280 na Javi: 6 koraka
Osobna meteorološka postaja koja koristi Raspberry Pi s BME280 na Javi: Loše vrijeme uvijek izgleda gore kroz prozor. Uvijek smo bili zainteresirani za praćenje našeg lokalnog vremena i onoga što vidimo kroz prozor. Također smo željeli bolju kontrolu nad našim sustavom grijanja i klimatizacije. Izgradnja osobne vremenske postaje velika je
Meteorološka postaja koja koristi Arduino UNO: 7 koraka
Meteorološka postaja pomoću Arduino UNO -a: Autor: Hazel YangOvaj projekt je meteorološka stanica koja koristi Arduino UNO ploču za kontrolu protoka podataka, senzor DHT22 za prikupljanje podataka i OLED zaslon za prikaz podataka
Meteorološka postaja koja koristi veliki zaslon ST7920: 4 koraka
Meteorološka postaja koja koristi veliki zaslon ST7920: Dragi prijatelji, dobrodošli na još jednu instrukciju! U ovom ćemo vodiču prvi put pogledati ovaj veliki LCD zaslon i s njim ćemo napraviti monitor za temperaturu i vlagu. Uvijek sam želio pronaći zaslon sličan disp -u