Sisukord:

Isiklik ilmajaam Raspberry Pi kasutamine koos BME280 -ga Java -s: 6 sammu
Isiklik ilmajaam Raspberry Pi kasutamine koos BME280 -ga Java -s: 6 sammu

Video: Isiklik ilmajaam Raspberry Pi kasutamine koos BME280 -ga Java -s: 6 sammu

Video: Isiklik ilmajaam Raspberry Pi kasutamine koos BME280 -ga Java -s: 6 sammu
Video: DETSEMBER🔮12 12 PORTAL &🦋🌚🦋 Kuu loomine ⚡️Mercury retrograde.🤷"Emotsioonide Ilmajaam"?!♥️ 2024, Juuli
Anonim
Image
Image
Oluliste seadmete arve
Oluliste seadmete arve

Halb ilm näeb aknast alati hullem välja

Oleme alati olnud huvitatud oma kohaliku ilma ja aknast nähtava jälgimisest. Samuti soovisime paremat kontrolli oma kütte- ja kliimasüsteemi üle. Isikliku ilmajaama ehitamine on suurepärane õppimiskogemus. Kui olete selle projekti ehitamise lõpetanud, saate paremini aru, kuidas traadita side toimib, kuidas andurid töötavad ja kui võimas võib olla Raspberry Pi platvorm. Selle projekti aluseks ja saadud kogemuste abil saate tulevikus hõlpsasti keerukamaid projekte ehitada.

1. samm: oluliste seadmete arve

Oluliste seadmete arve
Oluliste seadmete arve
Oluliste seadmete arve
Oluliste seadmete arve
Oluliste seadmete arve
Oluliste seadmete arve

1. Vaarika Pi

Esimene samm on võtta oma käed Raspberry Pi tahvlile. Raspberry Pi on Linuxi toitega üheplaadiline arvuti. Selle eesmärk on parandada programmeerimisoskusi ja riistvara mõistmist. Harrastajad ja elektroonikahuvilised võtsid selle kiiresti vastu uuenduslike projektide jaoks.

2. I²C kilp Raspberry Pi jaoks

INPI2 (I2C adapter) pakub Raspberry Pi 2/3 ja I²C porti kasutamiseks mitme I²C seadmega. See on saadaval Dcube'i poes

3. Digitaalne niiskus-, rõhu- ja temperatuuriandur, BME280

BME280 on niiskus-, rõhu- ja temperatuuriandur, millel on kiire reageerimisaeg ja kõrge üldine täpsus. Ostsime selle anduri Dcube Store'ist

4. I²C ühenduskaabel

Meil oli I²C ühenduskaabel saadaval Dcube Store'is

5. Mikro -USB -kaabel

Mikro -USB -kaabel Toiteallikas on ideaalne valik Raspberry Pi toiteks.

6. Interneti -ühenduse tõlgendamine Ethernet -kaabli/WiFi -adapteri kaudu

Üks esimesi asju, mida soovite teha, on oma Raspberry Pi ühendamine Internetiga. Saame ühenduse luua Etherneti kaabli abil. Teine võimalus on, et saate traadita võrguga ühenduse luua, kasutades traadita USB -adapterit.

7. HDMI -kaabel (kuva- ja ühenduskaabel)

Kõik HDMI/DVI monitorid ja telerid peaksid Pi ekraanina töötama. Kuid see on vabatahtlik. Samuti ei saa välistada kaugjuurdepääsu (nagu SSH) võimalust. Juurdepääsu saate saada ka PUTTY tarkvara abil.

Samm: riistvaraühendused seadistamiseks

Riistvaraühendused seadistamiseks
Riistvaraühendused seadistamiseks
Riistvaraühendused seadistamiseks
Riistvaraühendused seadistamiseks

Tehke skeem vastavalt näidatud skeemile.

Õppides õppisime põhjalikult elektroonika põhitõdesid riist- ja tarkvara tundma. Tahtsime selle projekti jaoks koostada lihtsa elektroonika skeemi. Elektroonilised skeemid on nagu elektroonika plaan. Koostage plaan ja järgige hoolikalt disaini. Oleme siin rakendanud mõningaid elektroonika põhitõdesid. Loogika viib teid punktist A punkti B, kujutlusvõime viib teid kõikjale!

Raspberry Pi ja I²C Shield ühendus

Kõigepealt võtke Raspberry Pi ja asetage sellele I²C kilp (sissepoole suunatud I²C pordiga). Vajutage kilpi õrnalt Pi GPIO -tihvtide kohale ja oleme selle sammuga sama lihtne kui pirukas (vt pilti).

Anduri ja Raspberry Pi ühendamine

Võtke andur ja ühendage sellega I²C kaabel. Veenduge, et I²C väljund ühendaks ALATI I²C sisendiga. Sama tuleb järgida ka Raspberry Pi puhul, millele on paigaldatud GP² tihvtid. Sellele on paigaldatud I²C kilp. Meil on I²C kilp ja ühenduskaablid meie kõrval väga suureks leevenduseks ja väga suureks eeliseks, kuna me jääme ainult plug and play võimalus. Enam pole tihvtide ja juhtmetega probleeme ning seega on segadus kadunud. Kujutage vaid ette juhtmete võrku ja sattuge sellesse. Kergendus sellest. See muudab asja lihtsaks.

Märkus. Pruun juhe peaks alati järgima maandusühendust (GND) ühe seadme väljundi ja teise seadme sisendi vahel

Interneti -ühendus on vajalik

Siin on sul tegelikult valik. Raspberry Pi saate ühendada LAN -kaabli või WIFI -ühenduse jaoks mõeldud juhtmevaba Nano USB -adapteriga. Mõlemal juhul on manifest Interneti -ühenduse loomine, mis on saavutatud.

Vooluahela toide

Ühendage mikro -USB -kaabel Raspberry Pi pistikupessa. Löö üles ja voila! Kõik on korras ja alustame kohe.

Ühendus kuvariga

HDMI -kaabel võib olla ühendatud monitori või teleriga. Meil on juurdepääs Raspberry Pi -le ilma seda monitoriga ühendamata, kasutades -SSH -d (juurdepääs Pi käsureale teisest arvutist). Selleks saate kasutada ka tarkvara PUTTY. See valik on mõeldud kogenud kasutajatele, nii et me ei käsitle seda siin üksikasjalikult.

Olen kuulnud, et tuleb majanduslangus, otsustasin mitte osaleda

Samm: Raspberry Pi programmeerimine Java -s

Vaarika Pi programmeerimine Java -s
Vaarika Pi programmeerimine Java -s

Raspberry Pi ja BME280 anduri Java -kood. See on saadaval meie Githubi hoidlas.

Enne koodi juurde asumist lugege kindlasti läbi lugemisfailis antud juhised ja seadistage oma Raspberry Pi vastavalt sellele. Selleks kulub vaid hetk. Isiklik ilmajaam on ilmastiku mõõteriistade komplekt, mida haldab eraisik, klubi, ühing või isegi ettevõte. Isiklikke ilmajaamu võib kasutada ainult omaniku rõõmuks ja harimiseks, kuid paljud isiklikud ilmajaamade operaatorid jagavad oma andmeid ka teistega, kas andmete käsitsi koostamise ja levitamise või Interneti või amatöörraadio kaudu.

Kood on kõige lihtsamal kujul, mida võite ette kujutada, ja teil ei tohiks sellega probleeme olla, vaid küsige, kas teil on. Isegi kui teate tuhat asja, küsige ikka kelleltki, kes teab.

Siit saate kopeerida ka selle anduri töötava java koodi.

// Levitatakse vaba tahte litsentsiga. // BME280 // See kood on loodud töötama koos BME280_I2CS I2C minimooduliga, mis on saadaval saidil ControlEverything.com. //

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; importige java.io. IOException;

avalik klass BME280

{public static void main (String args ) viskab Erand {// Loo I2C siin I2CBus buss = I2CFactory.getInstance (I2CBus. BUS_1); // Hangi I2C seade, BME280 I2C aadress on 0x76 (108) I2CDevice device = bus.getDevice (0x76); // Loe 24 baiti andmeid aadressilt 0x88 (136) bait b1 = uus bait [24]; device.read (0x88, b1, 0, 24); // Teisendage andmed // temp koefitsiendid int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); kui (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); kui (dig_T3> 32767) {dig_T3 -= 65536; } // rõhukoefitsiendid int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); kui (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); kui (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); kui (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); kui (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); kui (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); kui (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); kui (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); kui (dig_P9> 32767) {dig_P9 -= 65536; } // Loe 1 bait andmeid aadressilt 0xA1 (161) int dig_H1 = ((bait) device.read (0xA1) & 0xFF); // Loeb 7 baiti andmeid aadressilt 0xE1 (225) device.read (0xE1, b1, 0, 7); // Teisendage andmed // niiskuse koefitsiendid int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); kui (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); kui (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); kui (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] & 0xFF; kui (dig_H6> 127) {dig_H6 -= 256; } // Vali niiskuse juhtregister // Niiskus üle diskreetimissageduse = 1 seade. Kirjutada (0xF2, (bait) 0x01); // Vali kontrollmõõtmiste register // Tavarežiim, temperatuur ja rõhk üle diskreetimissageduse = 1 seade. Kirjutada (0xF4, (bait) 0x27); // Vali konfiguratsiooniregister // Ooterežiimi aeg = 1000 ms device.write (0xF5, (bait) 0xA0); // Loe 8 baiti andmeid aadressilt 0xF7 (247) // rõhk msb1, rõhk msb, rõhk lsb, temp msb1, temp msb, temp lsb, niiskus lsb, niiskus msb bait andmed = uus bait [8]; device.read (0xF7, andmed, 0, 8); // Teisendage rõhu- ja temperatuuriandmed 19-bitisteks pikkadeks (andmed [2] ja 0xF0)) / 16; pikk adc_t = (((pikk) (andmed [3] ja 0xFF) * 65536) + ((pikk) (andmed [4] ja 0xFF) * 256) + (pikk) (andmed [5] ja 0xF0)) / 16; // Niiskuseandmete teisendamine pikaks adc_h = ((pikk) (andmed [6] & 0xFF) * 256 + (pikk) (andmed [7] ja 0xFF)); // Temperatuuri nihke arvutused double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024,0) * ((double) dig_T2); topelt var2 = (((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) /131072.0 - ((double) dig_T1) / 8192.0)) * ((double) dig_T3); topelt t_peen = (pikk) (var1 + var2); kahekordne cTemp = (var1 + var2) / 5120,0; kahekordne fTemp = cTemp * 1,8 + 32; // Rõhu nihke arvutused var1 = ((topelt) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((topelt) dig_P6) / 32768.0; var2 = var2 + var1 * ((topelt) dig_P5) * 2.0; var2 = (var2 / 4,0) + (((kahekordne) dig_P4) * 65536,0); var1 = (((kahekordne) dig_P3) * var1 * var1 / 524288.0 + ((kahekordne) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((topelt) dig_P1); kahekordne p = 1048576,0 - (kahekordne) adc_p; p = (p - (var2 / 4096,0)) * 6250,0 / var1; var1 = ((topelt) dig_P9) * p * p / 2147483648.0; var2 = p * ((topelt) dig_P8) / 32768.0; topeltrõhk = (p + (var1 + var2 + ((topelt) dig_P7)) / 16,0) / 100; // Niiskuse nihke arvutused 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))); kahekordne niiskus = var_H * (1,0 - dig_H1 * var_H / 524288.0); kui (niiskus> 100,0) {niiskus = 100,0; } else if (niiskus <0,0) {niiskus = 0,0; } // Väljundandmed ekraanile System.out.printf ("Temperatuur Celsiuse järgi: %.2f C %n", cTemp); System.out.printf ("Temperatuur Fahrenheiti järgi: %.2f F %n", fTemp); System.out.printf ("Rõhk: %.2f hPa %n", rõhk); System.out.printf ("Suhteline õhuniiskus: %.2f %% RH %n", niiskus); }}

4. samm: praktiline kood

Koodide praktilisus
Koodide praktilisus

Nüüd laadige kood alla (või tõmmake see alla) ja avage see Raspberry Pi -s.

Käivitage terminali koodi kompileerimise ja üleslaadimise käsud ning vaadake monitori väljundit. Mõne hetke pärast kuvab see kõik parameetrid. Tagamaks sujuva koodisiirde ja rahuliku (ish) tulemuse, mõtlete välja täiendavate muudatuste tegemiseks rohkem ideid (iga projekt algab looga).

Samm: kasutamine konstruktiivses maailmas

BME280 saavutab suure jõudluse kõikides niiskuse ja rõhu mõõtmist nõudvates rakendustes. Need uued rakendused on kontekstiteadlikkus, nt. Naha tuvastamine, ruumivahetuse tuvastamine, sobivuse jälgimine / heaolu, hoiatus kuivuse või kõrge temperatuuri kohta, mahu ja õhuvoolu mõõtmine, koduautomaatika juhtimine, juhtküte, ventilatsioon, kliimaseade (HVAC), asjade internet (IoT), GPS-i täiustamine (nt esimese parandusaja parandamine, surnud arvestus, kallakutuvastus), siseruumides navigeerimine (põranda tuvastamise muutmine, lifti tuvastamine), väljas navigeerimine, vaba aja ja spordirakendused, ilmaprognoos ja vertikaalse kiiruse näit (tõus/vajumine) Kiirus).

6. samm: järeldus

Nagu näete, on see projekt suurepärane demonstratsioon selle kohta, milleks riist- ja tarkvara on võimelised. Vähese ajaga on võimalik ehitada nii muljetavaldav projekt! Loomulikult on see alles algus. Keerukama isikliku ilmajaama, nagu automatiseeritud lennujaama isiklikud ilmajaamad, tegemine võib hõlmata veel mõningaid andureid, nagu anemomeeter (tuule kiirus), transmissomeeter (nähtavus), püranomeeter (päikesekiirgus) jne. Meil on Youtube'is videoõpetus, millel on selle põhifunktsioon. I²C andur koos Rasp Pi -ga. On tõesti hämmastav näha I²C kommunikatsiooni tulemusi ja toimimist. Kontrollige seda ka. Mõnusat ehitust ja õppimist! Palun andke meile teada, mida te sellest juhendatavast arvate. Vajadusel sooviksime mõningaid parandusi teha.

Soovitan: