Tartalomjegyzék:

Személyes időjárás állomás a Raspberry Pi használatával a BME280 -val Java -ban: 6 lépés
Személyes időjárás állomás a Raspberry Pi használatával a BME280 -val Java -ban: 6 lépés

Videó: Személyes időjárás állomás a Raspberry Pi használatával a BME280 -val Java -ban: 6 lépés

Videó: Személyes időjárás állomás a Raspberry Pi használatával a BME280 -val Java -ban: 6 lépés
Videó: Часть 5 — Аудиокнига «Бэббит» Синклера Льюиса (главы 23–28) 2024, Július
Anonim
Image
Image
Alapvető felszerelések jegyzéke
Alapvető felszerelések jegyzéke

A rossz idő mindig rosszabbul néz ki az ablakon keresztül

Mindig érdekelt volt a helyi időjárás megfigyelése és az ablakon keresztül látottak. Szerettük volna jobban szabályozni a fűtési és légkondicionáló rendszert is. A személyes időjárás -állomás építése nagyszerű tanulási élmény. Amikor befejezi a projekt építését, jobban megérti a vezeték nélküli kommunikáció működését, az érzékelők működését és a Raspberry Pi platform teljesítményét. Ennek a projektnek az alapjaként és a megszerzett tapasztalatokkal könnyedén építhet bonyolultabb projekteket a jövőben.

1. lépés: Bill of Essential Equipment

Alapvető felszerelések jegyzéke
Alapvető felszerelések jegyzéke
Alapvető felszerelések jegyzéke
Alapvető felszerelések jegyzéke
Alapvető felszerelések jegyzéke
Alapvető felszerelések jegyzéke

1. A Málna Pi

Az első lépés egy Raspberry Pi tábla. A Raspberry Pi egy Linux alapú egylapos számítógép. Célja a programozási ismeretek és a hardver megértésének fejlesztése. A hobbisták és az elektronika rajongói gyorsan elfogadták az innovatív projektekhez.

2. I²C Shield a Raspberry Pi számára

Az INPI2 (I2C adapter) biztosítja a Raspberry Pi 2/3 an I²C portot, amely több I²C eszközzel használható. Elérhető a Dcube Store -ban

3. Digitális páratartalom-, nyomás- és hőmérsékletérzékelő, BME280

A BME280 egy páratartalom-, nyomás- és hőmérséklet -érzékelő, amely gyors válaszidőt és nagy általános pontosságot mutat. Ezt az érzékelőt a Dcube Store -ból vásároltuk

4. I²C csatlakozó kábel

A Dcube Store -ban megvásárolhattuk az I²C csatlakozó kábelt

5. Micro USB kábel

A mikro USB kábel Tápegység ideális választás a Raspberry Pi tápellátásához.

6. Az Internet -hozzáférés értelmezése Ethernet -kábel/WiFi adapter segítségével

Az egyik első dolog, amit meg kell tennie, az, hogy a Raspberry Pi -t csatlakoztatja az internethez. Ethernet kábellel tudunk csatlakozni. Egy másik lehetőség, hogy USB vezeték nélküli adapter segítségével csatlakozhat vezeték nélküli hálózathoz.

7. HDMI kábel (kijelző és csatlakozókábel)

Bármely HDMI/DVI monitornak és TV -nek a Pi kijelzőjeként kell működnie. De ez opcionális. A távoli hozzáférés (például SSH) lehetősége sem zárható ki. A PUTTY szoftverrel is hozzáférhet.

2. lépés: Hardvercsatlakozások a telepítéshez

Hardvercsatlakozások a telepítéshez
Hardvercsatlakozások a telepítéshez
Hardvercsatlakozások a telepítéshez
Hardvercsatlakozások a telepítéshez

Készítse el az áramkört az ábra szerint.

Tanulás közben alaposan megismerkedtünk az elektronika hardver és szoftver ismeretekkel kapcsolatos alapjaival. Egy egyszerű elektronikai vázlatot akartunk elkészíteni ehhez a projekthez. Az elektronikus sémák olyanok, mint az elektronika tervrajza. Készítsen tervrajzot, és gondosan kövesse a tervezést. Az elektronika néhány alapját itt alkalmaztuk. A logika elvisz A -ból B -be, a képzelet mindenhová elvisz!

A Raspberry Pi és az I²C pajzs csatlakoztatása

Először is vegye fel a Raspberry Pi -t, és tegye rá az I²C pajzsot (befelé néző I²C porttal). Finoman nyomja meg a pajzsot a Pi GPIO csapjai fölé, és készen vagyunk ezzel a lépéssel, ami olyan egyszerű, mint a pite (lásd a képet).

Az érzékelő és a Raspberry Pi csatlakoztatása

Fogja meg az érzékelőt, és csatlakoztassa hozzá az I²C kábelt. Győződjön meg arról, hogy az I²C kimenet MINDIG csatlakozik az I²C bemenethez. Ugyanezt kell követni a Raspberry Pi esetében is, amelyre az I²C pajzs van felszerelve, és a GPIO csapokat. Az I²C pajzs és a csatlakozó kábelek az oldalunkon vannak, mint egy nagy megkönnyebbülés és nagyon nagy előny, mivel csak a plug and play opció. Nincs többé csapokkal és vezetékekkel kapcsolatos probléma, és így a zavartság megszűnt. Képzelje csak el magát a vezetékek hálójában, és kezdjen bele. Ettől megkönnyebbülés. Ez egyszerűvé teszi a dolgokat.

Megjegyzés: A barna vezetéknek mindig követnie kell a föld (GND) kapcsolatot az egyik eszköz kimenete és egy másik eszköz bemenete között

Az internetkapcsolat szükséges

Valójában itt van választási lehetősége. A Raspberry Pi -t LAN -kábellel vagy vezeték nélküli Nano USB -adapterrel csatlakoztathatja a WIFI -kapcsolathoz. Akárhogy is, a manifeszt az internethez való csatlakozás, ami megvalósult.

Az áramkör áramellátása

Csatlakoztassa a Micro USB kábelt a Raspberry Pi tápcsatlakozójához. Üss fel és íme! Minden rendben, és azonnal kezdjük.

Csatlakozás a kijelzőhöz

A HDMI -kábelt csatlakoztathatjuk monitorhoz vagy TV -hez. Hozzáférhetünk a Raspberry Pi -hez anélkül, hogy a -SSH használatával (a Pi parancssorát egy másik számítógépről) csatlakoztatnánk. Ehhez használhatja a PUTTY szoftvert is. Ez a lehetőség a haladó felhasználók számára készült, így itt nem foglalkozunk vele részletesen.

Hallottam, hogy recesszió lesz, úgy döntöttem, nem veszek részt

3. lépés: Raspberry Pi programozás Java -ban

Raspberry Pi programozás Java nyelven
Raspberry Pi programozás Java nyelven

A Java kód a Raspberry Pi és a BME280 érzékelőhöz. Ez elérhető a Github tárházunkban.

Mielőtt folytatná a kódot, feltétlenül olvassa el a Readme fájlban található utasításokat, és állítsa be a Raspberry Pi -t ennek megfelelően. Ez csak egy pillanatba telik. A személyes időjárás-állomás időjárás-mérő műszerek halmaza, amelyet magánszemély, klub, egyesület vagy akár vállalkozás üzemeltet. A személyes időjárás -állomásokat kizárólag a tulajdonos örömére és oktatására lehet üzemeltetni, de sok személyes időjárás -állomás -üzemeltető is megosztja adatait másokkal, vagy kézi adatgyűjtéssel és azok terjesztésével, vagy az internet vagy amatőr rádió használatával.

A kód a legegyszerűbb formában van, amit csak el tud képzelni, és semmi gondja nem lehet vele, de kérdezze meg, hogy van -e. Még akkor is, ha tud ezer dolgot, kérdezzen meg valakit, aki tudja.

Innen is átmásolhatja az érzékelő működő java kódját.

// Szabad akaratú licenccel terjesztve. // BME280 // Ezt a kódot a ControlEverything.com webhelyen elérhető BME280_I2CS I2C Mini modullal való együttműködésre tervezték. //

import com.pi4j.io.i2c. I2CBus;

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

nyilvános osztály BME280

{public static void main (String args ) dobja Kivétel {// I2C busz létrehozása I2CBus busz = I2CFactory.getInstance (I2CBus. BUS_1); // I2C eszköz beszerzése, BME280 I2C címe 0x76 (108) I2CDevice device = bus.getDevice (0x76); // 24 bájt adat olvasása a 0x88 címről (136) bájt b1 = új bájt [24]; device.read (0x88, b1, 0, 24); // az adatok konvertálása // temp együtthatók int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); if (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); if (dig_T3> 32767) {dig_T3 -= 65536; } // nyomási együtthatók int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 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] & 0xFF) + ((b1 [13] & 0xFF) * 256); if (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); if (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); if (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); if (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); if (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); if (dig_P9> 32767) {dig_P9 -= 65536; } // 1 bájt adat olvasása a 0xA1 címről (161) int dig_H1 = ((byte) device.read (0xA1) & 0xFF); // 7 bájt adat olvasása a 0xE1 címről (225) device.read (0xE1, b1, 0, 7); // az adatok konvertálása // páratartalom együtthatók int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); if (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 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] & 0xFF; ha (dig_H6> 127) {dig_H6 -= 256; } // Válassza ki a vezérlő páratartalom regisztert // Páratartalom mintavételi arány felett = 1 eszköz. Írjon (0xF2, (bájt) 0x01); // Vezérlő mérési regiszter kiválasztása // Normál mód, hőmérséklet és nyomás a mintavételi gyakoriság felett = 1 device.write (0xF4, (byte) 0x27); // Konfigurációs regiszter kiválasztása // Készenléti idő = 1000 ms device.write (0xF5, (byte) 0xA0); // 8 bájt adat olvasása a 0xF7 címről (247) // nyomás msb1, nyomás msb, nyomás lsb, temp msb1, temp msb, temp lsb, páratartalom lsb, páratartalom msb bájt adat = új bájt [8]; device.read (0xF7, data, 0, 8); // A nyomás- és hőmérsékleti adatok konvertálása 19 bites hosszúságúvá (adatok [2] és 0xF0)) / 16; hosszú adc_t = (((hosszú) (adat [3] és 0xFF) * 65536) + ((hosszú) (adat [4] és 0xFF) * 256) + (hosszú) (adat [5] és 0xF0)) / 16; // A páratartalom adatainak hosszú konvertálása adc_h = ((hosszú) (adatok [6] és 0xFF) * 256 + (hosszú) (adatok [7] és 0xFF)); // Hőmérsékleteltolás számítások double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dupla var2 = (((((kettős)) adc_t) / 131072.0 - ((dupla) dig_T1) / 8192.0) * (((kettős) adc_t) /131072.0 - ((dupla) dig_T1) / 8192.0)) * ((kettős) dig_T3); dupla t_finom = (hosszú) (var1 + var2); kettős cTemp = (var1 + var2) / 5120,0; kettős fTemp = cTemp * 1,8 + 32; // Nyomáseltolási számítások var1 = ((kettős) t_finom / 2.0) - 64000.0; var2 = var1 * var1 * ((kettős) dig_P6) / 32768.0; var2 = var2 + var1 * ((dupla) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((kettős) dig_P4) * 65536.0); var1 = (((kettős) dig_P3) * var1 * var1 / 524288.0 + ((kettős) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((kettős) dig_P1); kettős p = 1048576,0 - (kettős) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((kettős) dig_P9) * p * p / 2147483648.0; var2 = p * ((kettős) dig_P8) / 32768.0; kettős nyomás = (p + (var1 + var2 + ((dupla) dig_P7)) / 16,0) / 100; // Páratartalom eltolás számítások 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))); kettős páratartalom = var_H * (1,0 - dig_H1 * var_H / 524288.0); if (páratartalom> 100,0) {páratartalom = 100,0; } else if (páratartalom <0,0) {páratartalom = 0,0; } // Adatok kimenete a System.out.printf képernyőre ("Hőmérséklet Celsius -ban: %.2f C %n", cTemp); System.out.printf ("Hőmérséklet Fahrenheitben: %.2f F %n", fTemp); System.out.printf ("Nyomás: %.2f hPa %n", nyomás); System.out.printf ("Relatív páratartalom: %.2f %% RH %n", páratartalom); }}

4. lépés: A kód gyakorlatiassága

A kódex gyakorlatiassága
A kódex gyakorlatiassága

Most töltse le (vagy git pull) a kódot, és nyissa meg a Raspberry Pi -ben.

Futtassa a parancsokat a fordításhoz és a kód feltöltéséhez a terminálon, és nézze meg a Monitor kimenetét. Néhány pillanat múlva az összes paramétert átvizsgálja. Annak biztosítása érdekében, hogy zökkenőmentes kódváltás és nyugodt (ish) eredmény legyen, további ötletekre gondol további módosításokra (Minden projekt történettel kezdődik).

5. lépés: Használat a konstruktív világban

A BME280 nagy teljesítményt ér el minden olyan alkalmazásban, amely páratartalom- és nyomásmérést igényel. Ezek a feltörekvő alkalmazások a Context Awareness, pl. Bőrfelismerés, Helyiségváltozás-észlelés, Fitness-felügyelet / Jólét, Figyelmeztetés a szárazságra vagy a magas hőmérsékletre, Térfogat- és légáramlásmérés, Otthonautomatizálás-vezérlés, Fűtésvezérlés, Szellőzés, Légkondicionálás (HVAC), Dolgok Internete (IoT), GPS-javítás (pl. Az első javításhoz szükséges idő javítása, holtpont-számítás, lejtésérzékelés), beltéri navigáció (padlóváltás, lift-észlelés), szabadtéri navigáció, szabadidő- és sportalkalmazások, időjárás-előrejelzés és függőleges sebességjelzés (emelkedés/süllyedés) Sebesség).

6. lépés: Következtetés

Amint láthatja, ez a projekt nagyszerű bemutatása annak, hogy mire képesek a hardverek és szoftverek. Kis idő alatt egy ilyen lenyűgöző projektet fel lehet építeni! Természetesen ez csak a kezdet. Egy kifinomultabb személyes időjárás -állomás, például az automatikus repülőtéri személyi időjárás -állomások elkészítése több érzékelőt is magában foglalhat, mint például a szélmérő (szélsebesség), az áteresztőmérő (láthatóság), a piranométer (napsugárzás) stb. I²C érzékelő Rasp Pi -vel. Valóban elképesztő látni az I²C kommunikáció eredményeit és működését. Ellenőrizze azt is. Jó szórakozást az építkezéshez és a tanuláshoz! Kérjük, ossza meg velünk, mit gondol erről az oktatási lehetőségről. Szükség esetén szeretnénk néhány fejlesztést végrehajtani.

Ajánlott: