Satura rādītājs:

Personīgā meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Java: 6 soļi
Personīgā meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Java: 6 soļi

Video: Personīgā meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Java: 6 soļi

Video: Personīgā meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Java: 6 soļi
Video: Как использовать Bixby 2024, Jūlijs
Anonim
Image
Image
Būtiskā aprīkojuma rēķins
Būtiskā aprīkojuma rēķins

Slikti laika apstākļi vienmēr izskatās sliktāki pa logu

Mēs vienmēr esam bijuši ieinteresēti uzraudzīt vietējos laika apstākļus un to, ko redzam pa logu. Mēs arī vēlējāmies labāk kontrolēt savu apkures un gaisa kondicionēšanas sistēmu. Personīgās meteoroloģiskās stacijas izveide ir lieliska mācīšanās pieredze. Pabeidzot šī projekta veidošanu, jūs labāk sapratīsit, kā darbojas bezvadu sakari, kā darbojas sensori un cik spēcīga var būt Raspberry Pi platforma. Izmantojot šo projektu kā pamatu un iegūto pieredzi, jūs nākotnē varēsit viegli veidot sarežģītākus projektus.

1. darbība: svarīgāko iekārtu rēķins

Būtiskā aprīkojuma rēķins
Būtiskā aprīkojuma rēķins
Būtiskā aprīkojuma rēķins
Būtiskā aprīkojuma rēķins
Būtiskā aprīkojuma rēķins
Būtiskā aprīkojuma rēķins

1. Aveņu Pi

Pirmais solis ir iegūt rokas Raspberry Pi dēlī. Raspberry Pi ir ar Linux darbināms vienas plates dators. Tās mērķis ir uzlabot programmēšanas prasmes un izpratni par aparatūru. Hobiji un elektronikas entuziasti to ātri pieņēma novatoriskiem projektiem.

2. I²C vairogs Raspberry Pi

INPI2 (I2C adapteris) nodrošina Raspberry Pi 2/3 an I²C portu lietošanai ar vairākām I²C ierīcēm. Tas ir pieejams Dcube veikalā

3. Digitālais mitruma, spiediena un temperatūras sensors, BME280

BME280 ir mitruma, spiediena un temperatūras sensors, kam ir ātrs reakcijas laiks un augsta kopējā precizitāte. Šo sensoru iegādājāmies Dcube veikalā

4. I²C savienojuma kabelis

Mums bija pieejams savienojuma kabelis I²C Dcube veikalā

5. Mikro USB kabelis

Mikro USB kabelis Barošanas avots ir ideāla izvēle Raspberry Pi barošanai.

6. Interpretējiet piekļuvi internetam, izmantojot Ethernet kabeli/WiFi adapteri

Viena no pirmajām lietām, ko vēlaties darīt, ir savienot Raspberry Pi ar internetu. Mēs varam izveidot savienojumu, izmantojot Ethernet kabeli. Vēl viena iespēja ir izveidot savienojumu ar bezvadu tīklu, izmantojot USB bezvadu adapteri.

7. HDMI kabelis (displeja un savienojuma kabelis)

Jebkuram HDMI/DVI monitoram un jebkuram televizoram vajadzētu darboties kā Pi displejam. Bet tas nav obligāti. Nevar izslēgt arī attālās piekļuves (piemēram, SSH) iespēju. Jūs varat arī piekļūt, izmantojot PUTTY programmatūru.

2. darbība. Aparatūras savienojumi uzstādīšanai

Aparatūras savienojumi uzstādīšanai
Aparatūras savienojumi uzstādīšanai
Aparatūras savienojumi uzstādīšanai
Aparatūras savienojumi uzstādīšanai

Izveidojiet ķēdi saskaņā ar attēloto shēmu.

Mācoties, mēs rūpīgi iepazināmies ar elektronikas pamatiem attiecībā uz zināšanām par aparatūru un programmatūru. Mēs vēlējāmies šim projektam izveidot vienkāršu elektronikas shēmu. Elektroniskās shēmas ir kā elektronikas plāns. Izveidojiet projektu un uzmanīgi sekojiet dizainam. Šeit mēs esam pielietojuši dažus elektronikas pamatus. Loģika jūs aizvedīs no A uz B, iztēle aizvedīs jūs visur!

Raspberry Pi un I²C vairoga savienojums

Vispirms paņemiet Raspberry Pi un novietojiet uz tā I²C vairogu (ar iekšpusi vērstu I²C portu). Viegli nospiediet vairogu virs Pi GPIO tapām, un mēs esam paveikuši šo darbību tikpat viegli kā pīrāgs (skatiet attēlu).

Sensora un Raspberry Pi savienojums

Paņemiet sensoru un pievienojiet tam I²C kabeli. Pārliecinieties, vai I²C izeja VIENMĒR ir savienota ar I²C ieeju. Tas pats ir jāievēro attiecībā uz Raspberry Pi ar I²C vairogu, kas uzlikts virs tā GPIO tapām. Mums ir I²C vairogs un savienojošie kabeļi, kas ir ļoti liels atvieglojums un ļoti liela priekšrocība, jo mums paliek tikai plug and play iespēja. Vairs nav problēmu ar tapām un vadiem, un līdz ar to apjukums ir pazudis. Iedomājieties sevi vadu tīklā un nokļūstat tajā. Atvieglojums no tā. Tas padara lietas nesarežģītas.

Piezīme. Brūnajam vadam vienmēr jāseko zemējuma (GND) savienojumam starp vienas ierīces izeju un citas ierīces ieeju

Interneta savienojums ir nepieciešams

Patiesībā jums šeit ir izvēle. Jūs varat savienot Raspberry Pi ar LAN kabeli vai bezvadu Nano USB adapteri WIFI savienojumam. Jebkurā gadījumā manifests ir izveidot savienojumu ar internetu, kas ir paveikts.

Ķēdes barošana

Pievienojiet Micro USB kabeli Raspberry Pi barošanas ligzdai. Punch up un voila! Viss ir kārtībā, un mēs nekavējoties sāksim.

Savienojums ar displeju

HDMI kabeli var savienot ar monitoru vai televizoru. Mēs varam piekļūt Raspberry Pi, nepievienojot to monitoram, izmantojot -SSH (piekļūstiet Pi komandrindai no cita datora). Šim nolūkam varat izmantot arī programmatūru PUTTY. Šī opcija ir paredzēta pieredzējušiem lietotājiem, tāpēc mēs to šeit sīkāk neaprakstīsim.

Esmu dzirdējis, ka būs lejupslīde, es nolēmu nepiedalīties

3. darbība: Raspberry Pi programmēšana Java

Raspberry Pi programmēšana Java
Raspberry Pi programmēšana Java

Raspberry Pi un BME280 sensora Java kods. Tas ir pieejams mūsu Github krātuvē.

Pirms turpināt kodu, noteikti izlasiet Readme failā sniegtos norādījumus un iestatiet Raspberry Pi atbilstoši tam. Tas prasīs tikai mirkli, lai to izdarītu. Personīgā laika stacija ir laika apstākļu mērīšanas instrumentu kopums, ko vada privātpersona, klubs, biedrība vai pat uzņēmums. Personiskās meteoroloģiskās stacijas var darbināt tikai īpašnieka priekam un izglītošanai, taču daudzi personīgo meteoroloģisko staciju operatori arī kopīgo savus datus ar citiem, vai nu manuāli apkopojot datus un izplatot tos, vai izmantojot internetu vai radioamatieri.

Kods ir visvienkāršākajā formā, kādu varat iedomāties, un jums ar to nevajadzētu rasties problēmām, bet jautājiet, vai jums tas ir. Pat ja jūs zināt tūkstoš lietas, tomēr jautājiet kādam, kas zina.

Arī no šejienes varat nokopēt šī sensora darba Java kodu.

// Izplatīts ar brīvās gribas licenci. // BME280 // Šis kods ir paredzēts darbam ar BME280_I2CS I2C mini moduli, kas pieejams vietnē ControlEverything.com. //

importēt com.pi4j.io.i2c. I2CBus;

importēt com.pi4j.io.i2c. I2CDevice; importēt com.pi4j.io.i2c. I2CFactory; importēt java.io. IOException;

publiskā klase BME280

{public static void main (String args ) met izņēmumu {// Izveidot I2C kopni I2CBus kopne = I2CFactory.getInstance (I2CBus. BUS_1); // Iegūt I2C ierīci, BME280 I2C adrese ir 0x76 (108) I2CDevice device = bus.getDevice (0x76); // Lasīt 24 baitus datu no adreses 0x88 (136) baits b1 = jauns baits [24]; device.read (0x88, b1, 0, 24); // Konvertēt datus // temp koeficienti int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); ja (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); ja (dig_T3> 32767) {dig_T3 -= 65536; } // spiediena koeficienti int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); ja (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); ja (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); ja (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); ja (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); ja (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); ja (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); ja (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); ja (dig_P9> 32767) {dig_P9 -= 65536; } // Lasīt 1 baitu datu no adreses 0xA1 (161) int dig_H1 = ((baits) device.read (0xA1) & 0xFF); // Nolasīt 7 baitus datu no adreses 0xE1 (225) device.read (0xE1, b1, 0, 7); // Pārvērst datus // mitruma koeficienti int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); ja (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] un 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); ja (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); ja (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] un 0xFF; ja (dig_H6> 127) {dig_H6 -= 256; } // Atlasiet kontroles mitruma reģistru // Mitrums virs paraugu ņemšanas ātruma = 1 device.write (0xF2, (baits) 0x01); // Izvēlēties kontroles mērījumu reģistru // Normālais režīms, temperatūra un spiediens virs paraugu ņemšanas ātruma = 1 device.write (0xF4, (baits) 0x27); // Izvēlieties konfigurācijas reģistru // Gaidīšanas gaidīšanas laiks = 1000 ms device.write (0xF5, (baits) 0xA0); // Nolasīt 8 baitus datu no adreses 0xF7 (247) // spiediens msb1, spiediens msb, spiediens lsb, temp msb1, temp msb, temp lsb, mitrums lsb, mitrums msb baits dati = jauns baits [8]; device.read (0xF7, dati, 0, 8); // Pārvērst spiediena un temperatūras datus par 19 bitiem gariem (dati [2] un 0xF0)) / 16; garš adc_t = (((garš) (dati [3] un 0xFF) * 65536) + ((garš) (dati [4] un 0xFF) * 256) + (garš) (dati [5] un 0xF0)) / 16; // Pārvērst mitruma datus garus adc_h = ((garš) (dati [6] & 0xFF) * 256 + (gari) (dati [7] un 0xFF)); // Temperatūras nobīdes aprēķini double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dubultā var2 = (((((dubultā)) adc_t) / 131072.0 - ((dubultā) dig_T1) / 8192.0) * (((dubultā) adc_t) /131072.0 - ((dubultā) dig_T1) / 8192.0)) * ((dubultā) dig_T3); double t_fine = (garš) (var1 + var2); dubultā cTemp = (var1 + var2) / 5120,0; dubultā fTemp = cTemp * 1,8 + 32; // Spiediena nobīdes aprēķini var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dubultā) dig_P6) / 32768.0; var2 = var2 + var1 * ((dubultā) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dubultā) dig_P4) * 65536.0); var1 = ((((dubultā)) dig_P3) * var1 * var1 / 524288.0 + ((dubultā) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dubultā) dig_P1); dubultā p = 1048576,0 - (dubultā) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dubultā) dig_P9) * p * p / 2147483648.0; var2 = p * ((dubultā) dig_P8) / 32768.0; dubultspiediens = (p + (var1 + var2 + ((dubultā)) dig_P7)) / 16,0) / 100; // Mitruma nobīdes aprēķini double var_H = (((double) 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))); divkāršs mitrums = var_H * (1,0 - dig_H1 * var_H / 524288.0); ja (mitrums> 100,0) {mitrums = 100,0; } cits ja (mitrums <0,0) {mitrums = 0,0; } // Izejas dati ekrānā System.out.printf ("Temperatūra pēc Celsija: %.2f C %n", cTemp); System.out.printf ("Temperatūra pēc Fārenheita: %.2f F %n", fTemp); System.out.printf ("Spiediens: %.2f hPa %n", spiediens); System.out.printf ("Relatīvais mitrums: %.2f %% RH %n", mitrums); }}

4. solis: kodeksa praktiskums

Kodeksa praktiskums
Kodeksa praktiskums

Tagad lejupielādējiet (vai git pull) kodu un atveriet to Raspberry Pi.

Palaidiet komandas, lai apkopotu un augšupielādētu kodu terminālī, un skatiet monitora izvadi. Pēc dažiem mirkļiem tiks parādīti visi parametri. Nodrošinot vienmērīgu koda pāreju un mierīgu (izcilu) rezultātu, jūs domājat par vairākām idejām, lai veiktu turpmākus grozījumus (katrs projekts sākas ar stāstu).

5. darbība: izmantošana konstruktīvā pasaulē

BME280 sasniedz augstu veiktspēju visos pielietojumos, kur nepieciešama mitruma un spiediena mērīšana. Šīs jaunās lietojumprogrammas ir konteksta izpratne, piem. Ādas noteikšana, telpas maiņas noteikšana, fitnesa uzraudzība / labsajūta, brīdinājums par sausumu vai augstu temperatūru, tilpuma un gaisa plūsmas mērīšana, mājas automatizācijas vadība, vadības apkure, ventilācija, gaisa kondicionēšana (HVAC), lietu internets (IoT), GPS uzlabošana (piem., Laika uzlabojums līdz pirmajam labojumam, nederīga aprēķināšana, slīpuma noteikšana), navigācija iekštelpās (grīdas noteikšanas maiņa, lifta noteikšana), navigācija brīvā dabā, atpūtas un sporta lietojumprogrammas, laika prognoze un vertikālā ātruma indikācija (pieaugums/nogrimšana) Ātrums).

6. darbība. Secinājums

Kā redzat, šis projekts lieliski parāda, uz ko spēj aparatūra un programmatūra. Nedaudz laika var izveidot tik iespaidīgu projektu! Protams, tas ir tikai sākums. Sarežģītākas personīgās meteoroloģiskās stacijas, piemēram, automatizētu lidostas personisko meteoroloģisko staciju, izveidei var būt pievienoti vēl daži sensori, piemēram, anemometrs (vēja ātrums), transmisometrs (redzamība), piranometrs (saules starojums) utt. I²C sensors ar Rasp Pi. Ir patiešām pārsteidzoši redzēt I²C sakaru rezultātus un darbu. Pārbaudiet arī to. Priecājieties būvēt un mācīties! Lūdzu, dariet mums zināmu, ko jūs domājat par šo pamācību. Mēs labprāt veiktu dažus uzlabojumus, ja nepieciešams.

Ieteicams: