Turinys:

Orų stotis naudojant „Raspberry Pi“su BME280 „Python“: 6 žingsniai
Orų stotis naudojant „Raspberry Pi“su BME280 „Python“: 6 žingsniai

Video: Orų stotis naudojant „Raspberry Pi“su BME280 „Python“: 6 žingsniai

Video: Orų stotis naudojant „Raspberry Pi“su BME280 „Python“: 6 žingsniai
Video: Arduino Nano, BME280 ir SSD1306 OLED meteorologinė stotis 2024, Liepa
Anonim
Image
Image
Imperatyvus įrangos įstatymas
Imperatyvus įrangos įstatymas

yra maitas ir tikslas ir tikslas („Oras yra geras pasakotojas“)

Atsižvelgiant į visuotinio atšilimo ir klimato kaitos problemas, pasaulinis orų modelis tampa nepastovus visame pasaulyje ir sukelia daugybę su oru susijusių stichinių nelaimių (sausros, ekstremalios temperatūros, potvyniai, audros ir miškų gaisrai). blogis namuose. Jūs daug sužinosite apie pagrindinę elektroniką iš orų stoties projekto, naudojant daugybę pigių dalių ir jutiklių. Tai gana lengva nustatyti ir jūs galite jį greitai gauti.

1 žingsnis: Imperatyvios įrangos sąskaita

Imperatyvus įrangos įstatymas
Imperatyvus įrangos įstatymas
Imperatyvus įrangos įstatymas
Imperatyvus įrangos įstatymas
Imperatyvus įrangos įstatymas
Imperatyvus įrangos įstatymas

1. Aviečių Pi

Paimkite rankas ant Raspberry Pi lentos. „Raspberry Pi“yra „Linux“valdomas vienos plokštės kompiuteris. „Raspberry Pi“yra tikrai pigus, mažas ir universalus, pagamintas iš prieinamo ir funkcionalo kompiuterio, kad besimokantieji galėtų naudotis programavimo ir programinės įrangos kūrimo pagrindais.

2. „I2C Shield“, skirtas „Raspberry Pi“

INPI2 (I2C adapteris) turi Raspberry Pi 2/3 an I²C prievadą, skirtą naudoti su keliais I2C įrenginiais. Tai galima rasti „DCUBE“parduotuvėje.

3. Skaitmeninis drėgmės, slėgio ir temperatūros jutiklis, BME280

BME280 yra drėgmės, slėgio ir temperatūros jutiklis, pasižymintis greitu reagavimo laiku ir dideliu bendru tikslumu. Šį jutiklį įsigijome iš „DCUBE Store“.

4. I2C jungiamasis kabelis

Mes naudojome „I²C“kabelį, kurį galima rasti čia „DCUBE Store“.

5. Mikro USB kabelis

Mikro USB kabelis Maitinimo šaltinis yra idealus pasirinkimas maitinant Raspberry Pi.

6. Interpretuokite prieigą prie interneto per „EthernetCable“/„WiFi“adapterį

Prieigą prie interneto galima įjungti per eterneto kabelį, prijungtą prie vietinio tinklo ir interneto. Arba galite prisijungti prie belaidžio tinklo naudodami USB belaidį raktą, kurį reikės konfigūruoti.

7. HDMI kabelis (ekrano ir prijungimo kabelis)

Bet koks HDMI/DVI monitorius ir bet koks televizorius turėtų veikti kaip „Pi“ekranas. Arba galite nuotoliniu būdu pasiekti Pi per SSH, o tai nereikalauja monitoriaus (tik pažengusiems vartotojams).

2 žingsnis: aparatinės įrangos grandinės jungtys

Techninės grandinės jungtys
Techninės grandinės jungtys
Techninės grandinės jungtys
Techninės grandinės jungtys

Padarykite grandinę pagal pateiktą schemą. Apskritai, jungtys yra labai paprastos. Būkite ramūs ir vadovaukitės aukščiau pateiktomis instrukcijomis bei vaizdais, ir jums neturėtų kilti problemų. Mokydamiesi mes gerai susipažinome su elektronikos pagrindais, susijusiais su technine ir programine įranga. Mes norėjome parengti paprastą šio projekto elektronikos schemą. Elektroninės schemos yra tarsi brėžiniai. Sudarykite projektą ir atidžiai sekite jo dizainą. Čia gali būti naudingos kelios pagrindinės elektronikos sąvokos!

„Raspberry Pi“ir „I2C Shield“jungtis

Pirmiausia paimkite „Raspberry Pi“ir uždėkite ant jo „I²C Shield“. Švelniai paspauskite skydą ir baigsime šį veiksmą taip pat lengvai, kaip pyragas (žr. Paveikslėlį).

Jutiklio ir „Raspberry Pi“prijungimas

Paimkite jutiklį ir prijunkite prie jo I²C kabelį. Įsitikinkite, kad I²C išvestis VISADA jungiasi prie I²C įvesties. To paties reikia laikytis ir su „Raspberry Pi“su „I²C“skydeliu, pritvirtintu prie jo GPIO kaiščių. Rekomenduojame naudoti „I²C“kabelius, nes tai nereikalauja skaitymo kaiščių, litavimo ir negalavimo, kurį sukelia net menkiausias slydimas. Naudodami šį paprastą „plug and play“kabelį, galite lengvai įdiegti, pakeisti plokštes arba pridėti daugiau plokščių prie programos.

Pastaba: ruda viela visada turi sekti įžeminimo (GND) jungtį tarp vieno įrenginio išvesties ir kito įrenginio įvesties

Svarbiausia yra interneto ryšys

Čia jūs turite du pasirinkimus. Arba galite prijungti „Raspberry Pi“prie tinklo naudodami eterneto kabelį arba naudoti USB ir „WiFi“adapterį WIFI ryšiui. Bet kokiu atveju, jei esate prijungtas prie interneto, esate aprėptas.

Įjungiama grandinė

Prijunkite „Micro USB“kabelį prie „Raspberry Pi“maitinimo lizdo. Atsistokite ir voila! Mūsų komanda yra informacija.

Ryšys su ekranu

HDMI kabelį galime prijungti prie monitoriaus arba prie televizoriaus. Be to, mes galime pasiekti „Raspberry Pi“neprijungdami jo prie monitoriaus naudodami nuotolinę prieigą. SSH yra patogus įrankis saugiai nuotolinei prieigai. Tam taip pat galite naudoti PUTTY programinę įrangą. Ši parinktis skirta patyrusiems vartotojams, todėl čia jos išsamiai neaptarinėsime.

Tai ekonomiškas metodas, jei nenorite daug išleisti

3 žingsnis: Raspberry Pi programavimas „Python“

Raspberry Pi programavimas „Python“
Raspberry Pi programavimas „Python“

Raspberry Pi ir BME280 jutiklio „Python“kodas. Tai galima rasti mūsų „Github“saugykloje.

Prieš pereidami prie kodo, būtinai perskaitykite „Readme“faile pateiktas instrukcijas ir pagal tai nustatykite „Raspberry Pi“. Tik šiek tiek laiko pasiruošite sąrankai. Meteorologinė stotis yra įrenginys tiek sausumoje, tiek jūroje, turintis prietaisus ir įrangą atmosferos sąlygoms matuoti, kad gautų informaciją apie orų prognozes ir ištirtų orą bei klimatą.

Kodas aiškiai matomas priešais jus ir yra paprasčiausios formos, kokią galite įsivaizduoti, ir jums neturėtų kilti problemų. Vis tiek paklauskite, ar yra (net jei žinote tūkstantį dalykų, vis tiek paklauskite to, kas žino).

Iš čia taip pat galite nukopijuoti šio jutiklio veikiantį „Python“kodą.

# Platinama su laisvos valios licencija. # BME280 # Šis kodas skirtas dirbti su „BME280_I2CS I2C Mini“moduliu, kurį galima įsigyti iš „ControlEverything.com“. #

importuoti smbus

importo laikas

# Gaukite I2C autobusą

autobusas = smbus. SMBus (1)

# BME280 adresas, 0x76 (118)

# Skaityti duomenis iš 0x88 (136), 24 baitų b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Konvertuokite duomenis

# Temperatūros koeficientai dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2], jei dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] jei dig_T3> 32767: dig_T3 -= 65536

# Slėgio koeficientai

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

# BME280 adresas, 0x76 (118)

# Perskaitykite duomenis iš 0xA1 (161), 1 baito dig_H1 = magistralės.

# BME280 adresas, 0x76 (118)

# Skaityti duomenis iš 0xE1 (225), 7 baitų b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Konvertuokite duomenis

# Drėgmės koeficientai dig_H2 = b1 [1] * 256 + b1 [0], jei dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] ir 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] Ir 0xF) jei dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) jei dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] jei dig_H6> 127: dig_H6 -= 256

# BME280 adresas, 0x76 (118)

# Pasirinkite valdymo drėgmės registrą, 0xF2 (242) # 0x01 (01) Drėgmės perteklius = 1 mag.write_byte_data (0x76, 0xF2, 0x01) # BME280 adresas, 0x76 (118) # Pasirinkite valdymo matavimo registrą, 0xF4 (244) # 0x27 (39) Slėgio ir temperatūros perpildymo dažnis = 1 # Įprasto režimo magistralės.write_byte_data (0x76, 0xF4, 0x27) # BME280 adresas, 0x76 (118) # Pasirinkite konfigūracijos registrą, 0xF5 (245) # 0xA0 (00) Budėjimo laikas = 1000 ms magistralė.write_byte_data (0x76, 0xF5, 0xA0)

laikas. miegas (0,5)

# BME280 adresas, 0x76 (118)

# Perskaitykite duomenis iš 0xF7 (247), 8 baitų

# Konvertuokite slėgio ir temperatūros duomenis į 19 bitų

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

# Konvertuokite drėgmės duomenis

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

# Temperatūros poslinkio skaičiavimai

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

# Slėgio poslinkio skaičiavimai

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

# Drėgmės poslinkio skaičiavimai

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 *))) drėgmė = var_H * (1,0 - dig_H1 * var_H / 524288.0), jei drėgmė> 100.0: drėgmė = 100.0 elif drėgmė <0.0: drėgmė = 0.0

# Išveskite duomenis į ekraną

spausdinti "Temperatūra Celsijaus: %.2f C" %cTemp spausdinimas "Temperatūra Farenheitu: %.2f F" %fTemp spausdinimas "Slėgis: %.2f hPa" %slėgio spausdinimas "Santykinė drėgmė: %.2f %%" %drėgmė

4 žingsnis: veikimo kodas

Bėgimo kodas
Bėgimo kodas

Dabar atsisiųskite (arba ištraukite) kodą ir atidarykite jį „Raspberry Pi“.

Vykdykite komandas kompiliuoti ir įkelti kodą terminale ir ekrane pamatysite išvestį. Po kelių sekundžių jis parodys visus parametrus. Įsitikinę, kad viskas puikiai veikia, galite sukurti įdomesnių.

5 žingsnis: Naudojimas praktiniame pasaulyje

BME280 pasiekia aukštą našumą visose srityse, kuriose reikia matuoti drėgmę ir slėgį. Šios naujos programos yra kontekstinis suvokimas, pvz. Odos aptikimas, kambario pakeitimo aptikimas, kūno rengybos stebėjimas / savijauta, įspėjimas dėl sausumo ar aukštos temperatūros, tūrio ir oro srauto matavimas, namų automatikos valdymas, šildymo valdymas, vėdinimas, oro kondicionavimas (ŠVOK), daiktų internetas (daiktų internetas), GPS patobulinimas (pvz., Patobulinimas iki pirmojo pataisymo, negyvas skaičiavimas, nuolydžio aptikimas), navigacija patalpose (grindų aptikimo keitimas, lifto aptikimas), navigacija lauke, laisvalaikio ir sporto programos, orų prognozė ir vertikalaus greičio indikacija (kilimas/nusileidimas) Greitis).

6 žingsnis: Išvada

Tikiuosi, kad šis projektas įkvėps tolesniems eksperimentams. Kuriant sudėtingesnę orų stotį gali būti naudojami keli jutikliai, tokie kaip lietaus matuoklis, šviesos jutiklis, anemometras (vėjo greitis) ir kt. Galite juos pridėti ir pakeisti kodą. „YouTube“turime vaizdo įrašo pamoką, kurioje pateikiamos pagrindinės „I²C“jutiklio funkcijos su „Rasp Pi“. Tikrai nuostabu matyti I²C komunikacijos rezultatus ir darbą. Taip pat patikrinkite. Smagiai kurkite ir mokykitės! Praneškite mums, ką manote apie šią pamoką. Jei reikia, norėtume šiek tiek patobulinti.

Rekomenduojamas: