Cuprins:

Stație meteo folosind Raspberry Pi cu BME280 în Python: 6 pași
Stație meteo folosind Raspberry Pi cu BME280 în Python: 6 pași

Video: Stație meteo folosind Raspberry Pi cu BME280 în Python: 6 pași

Video: Stație meteo folosind Raspberry Pi cu BME280 în Python: 6 pași
Video: Raspberry Pi -Weather Station at Home 2024, Iulie
Anonim
Image
Image
Legea privind echipamentele imperative
Legea privind echipamentele imperative

is maith an scéalaí an goalsir (Vremea este un bun povestitor)

Având în vedere încălzirea globală și problemele legate de schimbările climatice, modelul meteo global devine neregulat în întreaga lume, ducând la o serie de dezastre naturale legate de vreme (secete, temperaturi extreme, inundații, furtuni și incendii), o stație meteo pare a fi necesară răul acasă. Aflați multe despre electronica de bază dintr-un proiect de stație meteo folosind o grămadă de piese și senzori ieftini. Este destul de ușor de configurat și în scurt timp îl puteți avea.

Pasul 1: Legea privind echipamentele imperative

Legea privind echipamentele imperative
Legea privind echipamentele imperative
Legea privind echipamentele imperative
Legea privind echipamentele imperative
Legea privind echipamentele imperative
Legea privind echipamentele imperative

1. Un Raspberry Pi

Puneți mâna pe o placă Raspberry Pi. Raspberry Pi este un computer cu o singură placă alimentat de Linux. Raspberry Pi este într-adevăr ieftin, mic și versatil, construit dintr-un computer accesibil și funcțional, pentru ca cursanții să-și exercite elementele de bază ale programării și dezvoltării de software.

2. I2C Shield pentru Raspberry Pi

INPI2 (adaptor I2C) oferă Raspberry Pi 2/3 un port I²C pentru utilizare cu mai multe dispozitive I2C. Este disponibil pe DCUBE Store.

3. Senzor digital de umiditate, presiune și temperatură, BME280

BME280 este un senzor de umiditate, presiune și temperatură care are un timp de răspuns rapid și o precizie generală ridicată. Am achiziționat acest senzor de la magazinul DCUBE.

4. Cablu de conectare I2C

Am folosit cablul I²C disponibil aici DCUBE Store.

5. Cablu micro USB

Cablul micro USB Sursa de alimentare este o alegere ideală pentru alimentarea Raspberry Pi.

6. Interpretează accesul la Internet prin EthernetCable / WiFi Adapter

Accesul la internet poate fi activat printr-un cablu Ethernet conectat la o rețea locală și la internet. Alternativ, vă puteți conecta la o rețea fără fir utilizând un dongle wireless USB, care va necesita configurare.

7. Cablu HDMI (Cablu de afișare și conectivitate)

Orice monitor HDMI / DVI și orice televizor ar trebui să funcționeze ca afișaj pentru Pi. Alternativ, puteți accesa de la distanță Pi prin SSH, negând necesitatea unui monitor (numai pentru utilizatorii avansați).

Pasul 2: Conexiuni hardware pentru circuit

Conexiuni hardware pentru circuit
Conexiuni hardware pentru circuit
Conexiuni hardware pentru circuit
Conexiuni hardware pentru circuit

Realizați circuitul conform schemei prezentate. În general, conexiunile sunt foarte simple. Păstrați-vă calmul și urmați instrucțiunile și imaginile de mai sus și nu ar trebui să aveți probleme. În timp ce învățam, am obținut detalii despre elementele electronice referitoare la cunoștințele hardware și software. Am vrut să elaborăm o schemă electronică simplă pentru acest proiect. Schemele electronice sunt ca planurile. Desenați un plan și urmați cu atenție proiectarea. Câteva concepte de bază despre electronică ar putea fi utile aici!

Conexiunea Raspberry Pi și I2C Shield

Mai întâi, luați Raspberry Pi și așezați scutul I²C pe el. Apăsați ușor Shield și am terminat cu acest pas la fel de ușor ca plăcinta (a se vedea imaginea).

Conexiunea senzorului și a Raspberry Pi

Luați senzorul și conectați cablul I²C cu acesta. Asigurați-vă că ieșirea I²C se conectează ÎNTOTDEAUNA la intrarea I²C. Același lucru trebuie urmat și pentru Raspberry Pi, cu scutul I²C montat deasupra pinilor GPIO. Recomandăm utilizarea cablurilor I²C, deoarece anulează necesitatea citirii pinouturilor, lipirii și a stării de rău cauzate chiar de cea mai mică alunecare. Cu acest cablu simplu plug and play, puteți instala, schimba plăcile sau puteți adăuga mai multe plăci la o aplicație cu ușurință.

Notă: firul maro trebuie să urmeze întotdeauna conexiunea la masă (GND) între ieșirea unui dispozitiv și intrarea unui alt dispozitiv

Conectivitatea la internet este cheia

Ai două alegeri aici. Fie Puteți conecta Raspberry Pi la rețea utilizând un cablu Ethernet sau puteți utiliza un adaptor USB la WiFi pentru conectivitate WIFI. În orice caz, atâta timp cât este conectat la internet, sunteți acoperit.

Pornirea circuitului

Conectați cablul Micro USB la mufa de alimentare a Raspberry Pi. Punch up și voila! Echipa noastră este informativă.

Conexiune la ecran

Putem avea cablul HDMI conectat la un monitor sau la un televizor. În plus, putem accesa un Raspberry Pi fără a-l conecta la un monitor folosind accesul de la distanță. SSH este un instrument la îndemână pentru acces securizat de la distanță. Puteți utiliza, de asemenea, software-ul PUTTY. Această opțiune este pentru utilizatorii avansați, deci nu o vom acoperi în detaliu aici.

Este o metodă economică dacă nu doriți să cheltuiți mult

Pasul 3: Programarea Raspberry Pi în Python

Programare Raspberry Pi în Python
Programare Raspberry Pi în Python

Codul Python pentru senzorul Raspberry Pi și BME280. Este disponibil în depozitul nostru Github.

Înainte de a trece la cod, asigurați-vă că ați citit instrucțiunile date în fișierul Readme și configurați Raspberry Pi conform acestuia. Doar puțin timp vă va pregăti pentru configurare. O stație meteo este o instalație, fie pe uscat, fie pe mare, cu instrumente și echipamente pentru măsurarea condițiilor atmosferice, pentru a furniza informații despre prognozele meteo și pentru a studia vremea și clima.

Codul este clar în fața ta și este în cea mai simplă formă pe care ți-o poți imagina și nu ar trebui să ai probleme. Întrebați încă dacă există (Chiar dacă știți o mie de lucruri, întrebați pe cineva care știe).

Puteți copia codul Python funcțional pentru acest senzor și de aici.

# Distribuit cu o licență de voință liberă. # Folosiți-o în orice mod doriți, profit sau gratuit, cu condiția să se încadreze în licențele lucrărilor sale asociate. # BME280 # Acest cod este conceput pentru a funcționa cu Mini-modulul BME280_I2CS I2C disponibil de pe ControlEverything.com. #

import smbus

timpul de import

# Ia autobuzul I2C

autobuz = smbus. SMBus (1)

# Adresă BME280, 0x76 (118)

# Citiți datele înapoi de la 0x88 (136), 24 octeți b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Convertiți datele

# Coeficienți temporari dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] dacă dig_T2> 32767: dig_T2 - = 65536 dig_T3 = b1 [5] * 256 + b1 [4] dacă dig_T3> 32767: dig_T3 - = 65536

# Coeficienți de presiune

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] if dig_P2> 32767: dig_P2 - = 65536 dig_P3 = b1 [11] * 256 + b1 [10] if dig_P3 > 32767: dig_P3 - = 65536 dig_P4 = b1 [13] * 256 + b1 [12] if dig_P4> 32767: dig_P4 - = 65536 dig_P5 = b1 [15] * 256 + b1 [14] if dig_P5> 32767: dig_P5 - = 65536 dig_P6 = b1 [17] * 256 + b1 [16] if dig_P6> 32767: dig_P6 - = 65536 dig_P7 = b1 [19] * 256 + b1 [18] if 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

# Adresă BME280, 0x76 (118)

# Citiți datele înapoi de la 0xA1 (161), 1 octet dig_H1 = bus.read_byte_data (0x76, 0xA1)

# Adresă BME280, 0x76 (118)

# Citiți datele înapoi de la 0xE1 (225), 7 octeți b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Convertiți datele

# Coeficienți de umiditate dig_H2 = b1 [1] * 256 + b1 [0] dacă 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

# Adresă BME280, 0x76 (118)

# Selectați registrul de control al umidității, 0xF2 (242) # 0x01 (01) Supraeșantionarea umidității = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # Adresa BME280, 0x76 (118) # Selectați Registrul de măsurare a controlului, 0xF4 (244) # 0x27 (39) Rată de supra-eșantionare a presiunii și temperaturii = 1 # Mod normal bus.write_byte_data (0x76, 0xF4, 0x27) # Adresă BME280, 0x76 (118) # Selectați Registrul de configurare, 0xF5 (245) # 0xA0 (00) Timp standby = 1000 ms autobuz.write_byte_data (0x76, 0xF5, 0xA0)

time.sleep (0,5)

# Adresă BME280, 0x76 (118)

# Citiți datele înapoi de la 0xF7 (247), 8 octeți # Presiune MSB, Presiune LSB, Presiune xLSB, Temperatură MSB, Temperatură LSB # Temperatură xLSB, Umiditate MSB, Umiditate LSB date = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Convertiți datele de presiune și temperatură în 19 biți

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

# Convertiți datele privind umiditatea

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

# Calcule de compensare a temperaturii

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

# Calcule de compensare a presiunii

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

# Calculele de compensare a umidității

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))) umiditate = var_H * (1.0 - dig_H1 * var_H / 524288.0) dacă umiditate> 100,0: umiditate = 100,0 elif umiditate <0,0: umiditate = 0,0

# Ieșire date pe ecran

print "Temperatura în Celsius:%.2f C"% cTemp print "Temperatura în Fahrenheit:%.2f F"% fTemp print "Presiune:%.2f hPa"% presiune print "Umiditate relativă:%.2f %%"% umiditate

Pasul 4: Codul de rulare

Codul de alergare
Codul de alergare

Acum, descărcați (sau git pull) codul și deschideți-l în Raspberry Pi.

Rulați comenzile pentru a compila și încărca codul pe terminal și vedeți ieșirea pe ecran. După câteva secunde, va afișa toți parametrii. După ce vă asigurați că totul funcționează excelent, puteți dezvolta unele mai interesante.

Pasul 5: Utilizarea în lumea practică

BME280 atinge performanțe ridicate în toate aplicațiile care necesită măsurarea umidității și a presiunii. Aceste aplicații emergente sunt conștientizarea contextului, de ex. Detectarea pielii, Detectarea schimbărilor de cameră, Monitorizarea / bunăstarea fitnessului, Avertisment privind uscăciunea sau temperaturile ridicate, Măsurarea volumului și a debitului de aer, Controlul automatizării caselor, Controlul încălzirii, Ventilației, Aer condiționat (HVAC), Internetul obiectelor (IoT), Îmbunătățirea GPS-ului (de exemplu, îmbunătățirea timpului până la prima remediere, calculul mortului, detectarea pantei), navigație interioară (schimbarea detecției podelei, detectarea ascensorului), navigație în aer liber, aplicații de agrement și sport, prognoza meteo și indicarea vitezei verticale (ascensiune / chiuvetă) Viteză).

Pasul 6: Concluzie

Sper că acest proiect inspiră experimentări suplimentare. Realizarea unei stații meteo mai sofisticate poate implica mai mulți senzori precum Rain Gauge, senzor de lumină, anemometru (viteza vântului) etc. Puteți să le adăugați și să modificați codul. Avem un tutorial video pe YouTube cu funcționarea de bază a senzorului I²C cu Rasp Pi. Este cu adevărat uimitor să vezi rezultatele și funcționarea comunicațiilor I²C. Verifică-l și pe tine. Distrează-te construind și învățând! Vă rugăm să ne spuneți ce părere aveți despre acest lucru instructiv. Ne-ar plăcea să aducem unele îmbunătățiri, dacă este necesar.

Recomandat: