INHOUDSOPGAWE:

Weerstasie met framboos Pi met BME280 in Python: 6 stappe
Weerstasie met framboos Pi met BME280 in Python: 6 stappe

Video: Weerstasie met framboos Pi met BME280 in Python: 6 stappe

Video: Weerstasie met framboos Pi met BME280 in Python: 6 stappe
Video: BANFF REISGIDS 🦌 | 15 Dingen om te doen in BANFF, Canada 🇨🇦 ⛰️ 2024, Julie
Anonim
Image
Image
Wetsontwerp op noodsaaklike toerusting
Wetsontwerp op noodsaaklike toerusting

is maith an scéalaí an aimir (Die weer is 'n goeie storieverteller)

Met probleme met aardverwarming en klimaatsverandering, word die wêreldwye weerpatroon in ons wêreld wispelturig, wat lei tot 'n aantal natuurverwante natuurrampe (droogtes, uiterste temperature, vloede, storms en veldbrande), en dit lyk asof 'n weerstasie noodsaaklik is boosheid by die huis. U leer baie oor basiese elektronika uit 'n weerstasieprojek deur 'n klomp goedkoop onderdele en sensors te gebruik. Dit is redelik maklik om op te stel, en u kan dit vinnig bereik.

Stap 1: Wetsontwerp op noodsaaklike toerusting

Wetsontwerp op noodsaaklike toerusting
Wetsontwerp op noodsaaklike toerusting
Wetsontwerp op noodsaaklike toerusting
Wetsontwerp op noodsaaklike toerusting
Wetsontwerp op noodsaaklike toerusting
Wetsontwerp op noodsaaklike toerusting

1. 'n Framboos Pi

Kry 'n Raspberry Pi -bord in die hande. Raspberry Pi is 'n Linux -aangedrewe enkelbordrekenaar. Die Raspberry Pi is regtig goedkoop, klein en veelsydig, saamgestel uit 'n toeganklike en funksionele rekenaar sodat leerders die basiese beginsels van programmering en sagteware -ontwikkeling kan oefen.

2. I2C -skild vir Framboos Pi

Die INPI2 (I2C -adapter) bied die Raspberry Pi 2/3 'n I²C -poort vir gebruik met verskeie I2C -toestelle. Dit is beskikbaar in DCUBE Store.

3. Digitale humiditeits-, druk- en temperatuursensor, BME280

Die BME280 is 'n humiditeits-, druk- en temperatuursensor met 'n vinnige reaksietyd en 'n hoë algehele akkuraatheid. Ons het hierdie sensor by DCUBE Store gekoop.

4. I2C -aansluitkabel

Ons het die I²C -kabel gebruik wat hier in die DCUBE -winkel beskikbaar is.

5. Mikro -USB -kabel

Die mikro -USB -kabel Kragtoevoer is 'n ideale keuse vir die voeding van die Raspberry Pi.

6. Interpreteer internettoegang via EthernetCable/WiFi -adapter

Internettoegang kan aangeskakel word deur 'n Ethernet -kabel wat aan 'n plaaslike netwerk en die internet gekoppel is. Alternatiewelik kan u met 'n draadlose USB -dongle aan 'n draadlose netwerk koppel, wat konfigurasie benodig.

7. HDMI -kabel (skerm en verbindingskabel)

Enige HDMI/DVI -monitor en enige TV moet as 'n skerm vir die Pi werk. Alternatiewelik kan u toegang tot die Pi via SSH verkry deur die behoefte aan 'n monitor te ontken (slegs gevorderde gebruikers).

Stap 2: Hardewareverbindings vir stroombane

Hardewareverbindings vir stroombane
Hardewareverbindings vir stroombane
Hardewareverbindings vir stroombane
Hardewareverbindings vir stroombane

Maak die stroombaan volgens die skema: In die algemeen is die verbindings baie eenvoudig. Bly kalm en volg die instruksies en beelde hierbo, en u behoort geen probleme te hê nie. Terwyl ons geleer het, het ons deeglik kennis gemaak met die basiese beginsels van elektronika rakende hardeware- en sagtewarekennis. Ons wou 'n eenvoudige elektroniese skema vir hierdie projek opstel. Elektroniese skemas is soos bloudrukke. Stel 'n bloudruk op en volg die ontwerp noukeurig. 'N Paar basiese konsepte van elektronika kan hier nuttig wees!

Verbinding van die Raspberry Pi en I2C Shield

Neem eers die Raspberry Pi en plaas die I²C Shield daarop. Druk die skild saggies en ons is klaar met hierdie stap so maklik soos 'n tert (sien die prentjie).

Aansluiting van die sensor en Framboos Pi

Neem die sensor en verbind die I²C -kabel daarmee. Maak seker dat I²C Output ALTYD aansluit by die I²C Input. Dieselfde moet gevolg word vir die Raspberry Pi met die I²C-skild daaroor, die GPIO-penne. Ons beveel die gebruik van die I²C-kabels aan, aangesien dit die noodsaaklikheid van die lees van pinouts, soldeer en malaise wat veroorsaak word deur selfs die geringste glip, ontken. Met hierdie eenvoudige plug and play -kabel kan u borde maklik installeer, uitruil of meer borde by 'n toepassing voeg.

Let wel: die bruin draad moet altyd die grondverbinding (GND) volg tussen die uitset van een toestel en die ingang van 'n ander toestel

Internetverbinding is die sleutel

U het hier twee keuses. U kan die Raspberry Pi met 'n ethernetkabel aan die netwerk koppel of 'n USB -na -WiFi -adapter gebruik vir WIFI -verbinding. Hoe dan ook, solank dit aan die internet gekoppel is, word u gedek.

Skakel die kring aan

Steek die mikro -USB -kabel in die kragaansluiting van die Raspberry Pi. Maak op en voila! Ons span is inligting.

Koppel aan skerm

Ons kan óf die HDMI -kabel op 'n monitor óf op 'n TV laat aansluit. Boonop het ons toegang tot 'n Raspberry Pi sonder om dit met 'n monitor aan te sluit met behulp van afstandstoegang. SSH is 'n handige hulpmiddel vir veilige toegang op afstand. U kan ook die PUTTY -sagteware daarvoor gebruik. Hierdie opsie is vir gevorderde gebruikers, so ons sal dit nie hier in detail bespreek nie.

Dit is 'n ekonomiese metode as u nie veel wil spandeer nie

Stap 3: Raspberry Pi -programmering in Python

Framboos Pi -programmering in Python
Framboos Pi -programmering in Python

Die Python -kode vir die Raspberry Pi en BME280 -sensor. Dit is beskikbaar in ons Github -bewaarplek.

Voordat u na die kode gaan, moet u die instruksies in die Readme -lêer lees en u Raspberry Pi daarvolgens instel. Net 'n rukkie maak u gereed om op te stel. 'N Weerstasie is 'n fasiliteit, hetsy op land of see, met instrumente en toerusting vir die meting van atmosferiese toestande om inligting te gee oor weervoorspellings en om die weer en klimaat te bestudeer.

Die kode is duidelik voor u en dit is in die eenvoudigste vorm wat u kan voorstel, en u behoort geen probleme te hê nie. Vra nog steeds of daar is (selfs al weet u 'n duisend dinge, vra nog steeds vir iemand wat weet).

U kan ook die werkende Python -kode vir hierdie sensor hiervandaan kopieer.

# Versprei met 'n vrywillige lisensie.# Gebruik dit op enige manier wat u wil, wins of gratis, mits dit in die lisensies van die gepaardgaande werke pas. # BME280 # Hierdie kode is ontwerp om te werk met die BME280_I2CS I2C Mini Module beskikbaar by ControlEverything.com. #

invoer smbus

invoer tyd

# Kry I2C -bus

bus = smbus. SMBus (1)

# BME280 -adres, 0x76 (118)

# Lees data terug van 0x88 (136), 24 grepe b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Skakel die data om

# Temp koëffisiënte dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] as dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] as dig_T3> 32767: dig_T3 -= 65536

# Drukkoëffisiënte

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

# BME280 -adres, 0x76 (118)

# Lees data terug van 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

# BME280 -adres, 0x76 (118)

# Lees data terug van 0xE1 (225), 7 grepe b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Skakel die data om

# Humiditeitskoëffisiënte dig_H2 = b1 [1] * 256 + b1 [0] as dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) as dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) as dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] as dig_H6> 127: dig_H6 -= 256

# BME280 -adres, 0x76 (118)

# Kies die humiditeitsregister vir beheer, 0xF2 (242) # 0x01 (01) Oormontering van humiditeit = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # BME280 -adres, 0x76 (118) # Kies beheermaatregister, 0xF4 (244) # 0x27 (39) Druk- en temperatuuroorsamplingsnelheid = 1 # Normale modus bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 -adres, 0x76 (118) # Kies konfigurasie -register, 0xF5 (245) # 0xA0 (00) Stand -by -tyd = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)

tyd. slaap (0,5)

# BME280 -adres, 0x76 (118)

# Lees data terug van 0xF7 (247), 8 grepe # Druk MSB, druk LSB, druk xLSB, temperatuur MSB, temperatuur LSB # Temperatuur xLSB, humiditeit MSB, humiditeit LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Skakel druk- en temperatuurdata om in 19-bis

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

# Skakel die humiditeitsdata om

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

# Berekening van temperatuurverrekening

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

# Drukverrekeningsberekeninge

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

# Berekenings van humiditeit word verreken

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_))) humiditeit = var_H * (1.0 - dig_H1 * var_H / 524288.0) as humiditeit> 100.0: humiditeit = 100.0 elif humiditeit <0.0: humiditeit = 0.0

# Uitset data na die skerm

druk "Temperatuur in Celsius: %.2f C" %cTemp druk "Temperatuur in Fahrenheit: %.2f F" %fTemp druk "Druk: %.2f hPa" druk druk "Relatiewe humiditeit: %.2f %%" %humiditeit

Stap 4: Die lopende kode

Die lopende kode
Die lopende kode

Laai nou die kode af (of git trek) en maak dit oop in die Raspberry Pi.

Voer die opdragte uit om die kode op die terminale op te stel en op te laai en sien die uitset op die skerm. Na 'n paar sekondes word al die parameters vertoon. Nadat u seker gemaak het dat alles goed werk, kan u nog meer interessante ontwikkel.

Stap 5: Gebruik in die praktiese wêreld

Die BME280 behaal hoë prestasie in alle toepassings wat humiditeit en drukmeting vereis. Hierdie opkomende toepassings is konteksbewustheid, bv. Veldeteksie, opsporing van kamerverandering, fiksheidsmonitering / welstand, waarskuwing oor droogte of hoë temperature, meting van volume en lugvloei, huishoudelike outomatisering, beheer van verwarming, ventilasie, lugversorging (HVAC), Internet of Things (IoT), GPS-verbetering (bv. Verbetering van tyd tot eerste herstel, dooie afrekening, hellingopsporing), binnenshuise navigasie (verandering van vloeropsporing, hysbakopsporing), buitelugnavigasie, ontspanning en sporttoepassings, weervoorspelling en vertikale snelheidsaanwysing (styg/sink) Spoed).

Stap 6: Gevolgtrekking

Hoop hierdie projek inspireer tot verdere eksperimentering. Om 'n meer gesofistikeerde weerstasie te maak, kan nog meer sensors insluit, soos reënmeter, ligsensor, windmeter, ens. U kan dit byvoeg en die kode wysig. Ons het 'n video -tutoriaal op YouTube met die basiese werking van die I²C -sensor met Rasp Pi. Dit is regtig ongelooflik om die resultate en werking van die I²C -kommunikasie te sien. Gaan dit ook na, en bou en leer baie! Laat weet ons asseblief wat u van hierdie instruksies dink. Ons wil graag verbeterings aanbring indien nodig.

Aanbeveel: