Turinys:

Asmeninė orų stotis naudojant „Raspberry Pi“su BME280 „Java“: 6 žingsniai
Asmeninė orų stotis naudojant „Raspberry Pi“su BME280 „Java“: 6 žingsniai

Video: Asmeninė orų stotis naudojant „Raspberry Pi“su BME280 „Java“: 6 žingsniai

Video: Asmeninė orų stotis naudojant „Raspberry Pi“su BME280 „Java“: 6 žingsniai
Video: Omar & Salma 2 | Full Movie (Multi-Language Subtitled) 2024, Liepa
Anonim
Image
Image
Esminės įrangos sąskaita
Esminės įrangos sąskaita

Blogas oras visada atrodo blogiau pro langą

Mums visada buvo įdomu stebėti vietinius orus ir tai, ką matome pro langą. Mes taip pat norėjome geriau valdyti šildymo ir oro kondicionavimo sistemą. Asmeninės orų stoties kūrimas yra puiki mokymosi patirtis. Kai baigsite kurti šį projektą, geriau suprasite, kaip veikia belaidis ryšys, kaip veikia jutikliai ir kokia gali būti „Raspberry Pi“platforma. Turėdami šį projektą kaip pagrindą ir įgytą patirtį, ateityje galėsite lengvai kurti sudėtingesnius projektus.

1 žingsnis: esminės įrangos sąskaita

Esminės įrangos sąskaita
Esminės įrangos sąskaita
Esminės įrangos sąskaita
Esminės įrangos sąskaita
Esminės įrangos sąskaita
Esminės įrangos sąskaita

1. Aviečių Pi

Pirmasis žingsnis yra patekti į Raspberry Pi lentą. „Raspberry Pi“yra „Linux“valdomas vienos plokštės kompiuteris. Jos tikslas - tobulinti programavimo įgūdžius ir techninės įrangos supratimą. Jį mėgėjai ir elektronikos entuziastai greitai priėmė naujoviškiems projektams.

2. „I²C Shield“, skirtas „Raspberry Pi“

INPI2 (I2C adapteris) turi Raspberry Pi 2/3 an I²C prievadą, skirtą naudoti su keliais I²C į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. I²C jungiamasis kabelis

„I²C“jungiamąjį kabelį turėjome „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į

Vienas iš pirmųjų dalykų, kuriuos norėsite padaryti, yra prijungti „Raspberry Pi“prie interneto. Mes galime prisijungti naudodami Ethernet kabelį. Kita galimybė yra tai, kad galite prisijungti prie belaidžio tinklo naudodami USB belaidį adapterį.

7. HDMI kabelis (ekrano ir prijungimo kabelis)

Bet koks HDMI/DVI monitorius ir bet koks televizorius turėtų veikti kaip „Pi“ekranas. Bet tai neprivaloma. Taip pat negalima atmesti nuotolinės prieigos (pvz., SSH) galimybės. Taip pat galite pasiekti naudodami PUTTY programinę įrangą.

2 veiksmas: sąrankos aparatinės įrangos jungtys

Techninės įrangos jungtys sąrankai
Techninės įrangos jungtys sąrankai
Techninės įrangos jungtys sąrankai
Techninės įrangos jungtys sąrankai

Sukurkite grandinę pagal pateiktą schemą.

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 elektronikos planas. Sudarykite projektą ir atidžiai sekite jo dizainą. Čia pritaikėme kai kuriuos elektronikos pagrindus. Logika nukelia jus nuo A iki B, vaizduotė jus nuves visur!

„Raspberry Pi“ir „I²C Shield“jungtis

Pirmiausia paimkite „Raspberry Pi“ir uždėkite ant jo „I²C Shield“(su į vidų nukreiptu I²C prievadu). Švelniai paspauskite skydą virš Pi GPIO kaiščių ir baigsime šį žingsnį taip pat lengvai, kaip pyragas (žr.

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ų. „I²C Shield“ir jungiamieji kabeliai yra mūsų pusėje kaip labai didelis palengvėjimas ir labai didelis pranašumas, nes mums lieka tik „plug and play“parinktis. Daugiau jokių kaiščių ir laidų problemų, taigi painiavos nebeliko. Įsivaizduokite save laidų tinkle ir įsitraukite į tai. Atleidimas nuo to. Dėl to viskas tampa nesudėtinga.

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

Interneto ryšys yra būtinas

Čia jūs tikrai turite pasirinkimą. „Raspberry Pi“galite prijungti LAN kabeliu arba belaidžiu „Nano“USB adapteriu, skirtu „WIFI“ryšiui. Bet kuriuo atveju manifestas yra prisijungti prie interneto, kuris yra pasiektas.

Grandinės maitinimas

Prijunkite „Micro USB“kabelį prie „Raspberry Pi“maitinimo lizdo. Atsistokite ir voila! Viskas gerai ir mes iškart pradėsime.

Ryšys su ekranu

HDMI kabelį galime prijungti prie monitoriaus arba televizoriaus. Mes galime pasiekti „Raspberry Pi“neprijungę jo prie monitoriaus naudodami -SSH (pasiekite „Pi“komandų eilutę iš kito kompiuterio). Tam taip pat galite naudoti PUTTY programinę įrangą. Ši parinktis skirta patyrusiems vartotojams, todėl čia jos išsamiai neaptarinėsime.

Girdėjau, kad bus nuosmukis, nusprendžiau nedalyvauti

3 žingsnis: „Raspberry Pi“programavimas „Java“

Raspberry Pi programavimas Java
Raspberry Pi programavimas Java

„Raspberry Pi“ir BME280 jutiklio „Java“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“. Tai užtruks tik akimirką. Asmeninė oro stotis yra orų matavimo prietaisų rinkinys, kurį valdo privatus asmuo, klubas, asociacija ar net verslas. Asmeninės orų stotys gali būti valdomos tik savininko malonumui ir švietimui, tačiau daugelis asmeninių orų stočių operatorių taip pat dalijasi savo duomenimis su kitais, rankiniu būdu rinkdami duomenis ir platindami juos, arba naudodamiesi internetu ar mėgėjų radiju.

Kodas yra paprasčiausios formos, kokią galite įsivaizduoti, ir jums neturėtų kilti jokių problemų, bet paklauskite, ar turite. Net jei žinote tūkstantį dalykų, vis tiek paklauskite to, kas žino.

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

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

importuoti com.pi4j.io.i2c. I2CBus;

importuoti com.pi4j.io.i2c. I2CDevice; importuoti com.pi4j.io.i2c. I2CFactory; importuoti java.io. IOException;

viešoji klasė BME280

{public static void main (String args ) metimai Išimtis {// Sukurti I2C magistralę I2CBus magistralė = I2CFactory.getInstance (I2CBus. BUS_1); // Gauti I2C įrenginį, BME280 I2C adresas yra 0x76 (108) I2CDevice device = bus.getDevice (0x76); // Skaityti 24 baitus duomenų iš adreso 0x88 (136) baitas b1 = naujas baitas [24]; device.read (0x88, b1, 0, 24); // Konvertuoti duomenis // temp koeficientai int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] ir 0xFF) + ((b1 [3] & 0xFF) * 256); if (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] ir 0xFF) + ((b1 [5] & 0xFF) * 256); if (dig_T3> 32767) {dig_T3 -= 65536; } // slėgio koeficientai int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] ir 0xFF) + ((b1 [9] & 0xFF) * 256); if (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); if (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] ir 0xFF) + ((b1 [13] & 0xFF) * 256); if (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] ir 0xFF) + ((b1 [15] & 0xFF) * 256); if (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] ir 0xFF) + ((b1 [17] & 0xFF) * 256); if (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] ir 0xFF) + ((b1 [19] & 0xFF) * 256); if (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] ir 0xFF) + ((b1 [21] & 0xFF) * 256); if (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] ir 0xFF) + ((b1 [23] & 0xFF) * 256); if (dig_P9> 32767) {dig_P9 -= 65536; } // Skaityti 1 baitą duomenų iš adreso 0xA1 (161) int dig_H1 = ((baitas) device.read (0xA1) & 0xFF); // Skaityti 7 baitus duomenų iš adreso 0xE1 (225) device.read (0xE1, b1, 0, 7); // Konvertuoti duomenis // drėgmės koeficientai int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); if (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] ir 0xFF; int dig_H4 = ((b1 [3] ir 0xFF) * 16) + (b1 [4] ir 0xF); if (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); if (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] ir 0xFF; jei (dig_H6> 127) {dig_H6 -= 256; } // Pasirinkite valdymo drėgmės registrą // Drėgmė per atrankos dažnį = 1 įrenginys. Rašyti (0xF2, (baitas) 0x01); // Pasirinkite valdymo matavimo registrą // Įprastas režimas, temperatūra ir slėgis virš mėginių ėmimo dažnio = 1 įrenginys. Rašyti (0xF4, (baitas) 0x27); // Pasirinkite konfigūracijos registrą // Budėjimo laikas = 1000 ms device.write (0xF5, (baitas) 0xA0); // Skaityti 8 baitus duomenų iš adreso 0xF7 (247) // slėgis msb1, slėgis msb, slėgis lsb, temp msb1, temp msb, temp lsb, drėgmė lsb, drėgmė msb baitas duomenys = naujas baitas [8]; device.read (0xF7, duomenys, 0, 8); // Slėgio ir temperatūros duomenis konvertuoti į 19 bitų ilgio adc_p = (((ilgas) (duomenys [0] ir 0xFF) * 65536) + ((ilgas) (duomenys [1] ir 0xFF) * 256) + (ilgas) (duomenys [2] ir 0xF0)) / 16; ilgas adc_t = (((ilgas) (duomenys [3] ir 0xFF) * 65536) + ((ilgas) (duomenys [4] ir 0xFF) * 256) + (ilgas) (duomenys [5] ir 0xF0)) / 16; // Konvertuoti drėgmės duomenis ilgai adc_h = ((ilgas) (duomenys [6] ir 0xFF) * 256 + (ilgi) (duomenys [7] ir 0xFF)); // Temperatūros poslinkio skaičiavimai double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dvigubas var2 = (((((dvigubas)) adc_t) / 131072.0 - ((dvigubas) dig_T1) / 8192.0) * (((dvigubas) adc_t) /131072.0 - ((dvigubas) dig_T1) / 8192.0)) * ((dvigubas) dig_T3); dvigubas t_fine = (ilgas) (var1 + var2); dvigubas cTemp = (var1 + var2) / 5120,0; dvigubas fTemp = cTemp * 1,8 + 32; // Slėgio poslinkio skaičiavimai var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dvigubas) dig_P6) / 32768.0; var2 = var2 + var1 * ((dvigubas) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dvigubas) dig_P4) * 65536.0); var1 = ((((dvigubas)) dig_P3) * var1 * var1 / 524288.0 + ((dvigubas) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dvigubas) dig_P1); dvigubas p = 1048576.0 - (dvigubas) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dvigubas) dig_P9) * p * p / 2147483648.0; var2 = p * ((dvigubas) dig_P8) / 32768.0; dvigubas slėgis = (p + (var1 + var2 + ((dvigubas) dig_P7)) / 16,0) / 100; // Drėgmės poslinkio skaičiavimai dviguba var_H = (((dviguba) 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))); dviguba drėgmė = var_H * (1,0 - dig_H1 * var_H / 524288.0); if (drėgmė> 100,0) {drėgmė = 100,0; } else if (drėgmė <0,0) {drėgmė = 0,0; } // Išvesties duomenys į ekraną System.out.printf ("Temperatūra Celsijaus: %.2f C %n", cTemp); System.out.printf ("Temperatūra Farenheitu: %.2f F %n", fTemp); System.out.printf ("Slėgis: %.2f hPa %n", slėgis); System.out.printf ("Santykinė drėgmė: %.2f %% RH %n", drėgmė); }}

4 žingsnis: kodo praktiškumas

Kodekso praktiškumas
Kodekso praktiškumas

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

Vykdykite komandas kompiliuoti ir įkelti kodą terminale ir pamatysite monitoriaus išvestį. Po kelių akimirkų bus rodomi visi parametrai. Kad užtikrintumėte sklandų kodo perėjimą ir ramų (ne) rezultatą, sugalvojate daugiau idėjų, kaip atlikti tolesnius pakeitimus (kiekvienas projektas prasideda istorija).

5 žingsnis: Naudojimas konstruktyviame 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

Kaip matote, šis projektas puikiai parodo, ką sugeba aparatinė ir programinė įranga. Per trumpą laiką galima sukurti tokį įspūdingą projektą! Žinoma, tai tik pradžia. Kuriant sudėtingesnę asmeninę orų stotį, pvz., Automatines oro uosto asmenines oro stotis, gali būti naudojami keli jutikliai, tokie kaip anemometras (vėjo greitis), transmisometras (matomumas), piranometras (saulės spinduliuotė) ir tt I²C jutiklis su „Rasp Pi“. Tikrai nuostabu matyti I²C komunikacijos rezultatus ir darbą. Taip pat patikrinkite. Smagaus statybų ir mokymosi! Praneškite mums, ką manote apie šią pamoką. Jei reikia, norėtume šiek tiek patobulinti.

Rekomenduojamas: