Sisällysluettelo:
- Vaihe 1: Bill of Essential Equipment
- Vaihe 2: Laitteistoyhteydet asennusta varten
- Vaihe 3: Raspberry Pi -ohjelmointi Javassa
- Vaihe 4: Koodin käytännöllisyys
- Vaihe 5: Hyödyntäminen rakentavassa maailmassa
- Vaihe 6: Johtopäätös
Video: Henkilökohtainen sääasema Raspberry Pi: n avulla BME280: n kanssa Javassa: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Huono sää näyttää aina pahemmalta ikkunan läpi
Olemme aina olleet kiinnostuneita seuraamaan paikallista säätämme ja mitä näemme ikkunasta. Halusimme myös hallita paremmin lämmitys- ja ilmastointijärjestelmäämme. Henkilökohtaisen sääaseman rakentaminen on hieno oppimiskokemus. Kun lopetat tämän projektin rakentamisen, ymmärrät paremmin, miten langaton viestintä toimii, miten anturit toimivat ja kuinka voimakas Raspberry Pi -alusta voi olla. Kun tämä projekti on perusta ja saatu kokemus, voit helposti rakentaa monimutkaisempia projekteja tulevaisuudessa.
Vaihe 1: Bill of Essential Equipment
1. Vadelma Pi
Ensimmäinen askel on saada kädet Raspberry Pi -levylle. Raspberry Pi on Linux -käyttöinen yhden kortin tietokone. Sen tavoitteena on parantaa ohjelmointitaitoja ja laitteiston ymmärtämistä. Harrastajat ja elektroniikan harrastajat ottivat sen nopeasti käyttöön innovatiivisissa projekteissa.
2. I²C -kilpi Raspberry Pi: lle
INPI2 (I2C -sovitin) tarjoaa Raspberry Pi 2/3 an I²C -portin käytettäväksi useiden I²C -laitteiden kanssa. Se on saatavana Dcube Storesta
3. Digitaalinen kosteus-, paine- ja lämpötila -anturi, BME280
BME280 on kosteus-, paine- ja lämpötila -anturi, jolla on nopea vasteaika ja korkea kokonaistarkkuus. Ostimme tämän anturin Dcube Storesta
4. I²C -liitäntäkaapeli
Meillä oli I²C -liitäntäkaapeli saatavilla Dcube Storesta
5. Micro -USB -kaapeli
Micro USB -kaapeli Virtalähde on ihanteellinen valinta Raspberry Pi -laitteen virransyöttöön.
6. Tulkitse Internet -yhteys Ethernet -kaapelin/WiFi -sovittimen kautta
Yksi ensimmäisistä asioista, jotka haluat tehdä, on yhdistää Raspberry Pi Internetiin. Voimme muodostaa yhteyden Ethernet -kaapelilla. Toinen mahdollisuus on, että voit muodostaa yhteyden langattomaan verkkoon langattoman USB -sovittimen avulla.
7. HDMI -kaapeli (näyttö- ja liitäntäkaapeli)
Kaikkien HDMI-/DVI -näyttöjen ja televisioiden pitäisi toimia Pi: n näyttönä. Mutta se on valinnainen. Myös etäkäytön (kuten SSH) mahdollisuutta ei voida sulkea pois. Voit käyttää myös PUTTY -ohjelmistoa.
Vaihe 2: Laitteistoyhteydet asennusta varten
Tee piiri esitetyn kaavion mukaisesti.
Oppiessamme opimme perusteellisesti elektroniikan perusteet laitteisto- ja ohjelmistotiedoista. Halusimme laatia yksinkertaisen elektroniikkakaavion tälle projektille. Elektroniset kaaviot ovat kuin suunnitelma elektroniikalle. Laadi suunnitelma ja seuraa suunnittelua huolellisesti. Olemme soveltaneet joitain elektroniikan perusasioita täällä. Logiikka vie sinut paikasta A paikkaan B, mielikuvitus vie sinut kaikkialle!
Raspberry Pi- ja I²C -kilven liitäntä
Ota ensin Raspberry Pi ja aseta sille I²C -kilpi (sisäänpäin suuntautuvalla I²C -portilla). Paina kilpi varovasti Pi: n GPIO -nastojen päälle ja olemme tehneet tämän vaiheen yhtä helppoa kuin piirakka (katso kuva).
Anturin ja Raspberry Pi: n liitäntä
Ota anturi ja liitä I²C -kaapeli siihen. Varmista, että I²C -lähtö kytketään AINA I²C -tuloon. Samaa on noudatettava myös Raspberry Pi -laitteessa, jossa I²C -suoja on asennettu GPIO -nastoihin. plug and play -vaihtoehto. Ei enää nastoja ja johdotusongelmia, joten hämmennys on kadonnut. Kuvittele itsesi johtojen verkkoon ja päästä siihen. Helpotus siitä. Tämä tekee asioista mutkattomia.
Huomautus: Ruskean johdon tulee aina seurata maadoitusliitäntää (GND) yhden laitteen ulostulon ja toisen laitteen tulon välillä
Internet -yhteys on tarpeen
Sinulla on oikeasti valinnanvaraa täällä. Voit yhdistää Raspberry Pi: n LAN -kaapelilla tai langattomalla WIFI -yhteydellä varustetulla Nano USB -sovittimella. Joka tapauksessa manifestissa on muodostettu yhteys Internetiin.
Piirin virta
Liitä Micro USB -kaapeli Raspberry Pi -laitteen virtaliitäntään. Tsemppiä ja voila! Kaikki on kunnossa ja aloitamme heti.
Yhteys näyttöön
Voimme joko liittää HDMI -kaapelin näyttöön tai televisioon. Voimme käyttää Raspberry Pi -laitetta kytkemättä sitä näyttöön käyttämällä -SSH -protokollaa (Siirry Pi: n komentoriville toiselta tietokoneelta). Voit käyttää siihen myös PUTTY -ohjelmistoa. Tämä vaihtoehto on tarkoitettu kokeneille käyttäjille, joten emme käsittele sitä yksityiskohtaisesti täällä.
Olen kuullut, että tulee taantuma, päätin olla osallistumatta
Vaihe 3: Raspberry Pi -ohjelmointi Javassa
Raspberry Pi- ja BME280 -anturin Java -koodi. Se on saatavana Github -arkistostamme.
Ennen kuin jatkat koodia, muista lukea Readme -tiedoston ohjeet ja asentaa Raspberry Pi sen mukaan. Se kestää vain hetken. Henkilökohtainen sääasema on joukko säämittauslaitteita, joita yksityinen henkilö, klubi, yhdistys tai jopa yritys käyttää. Henkilökohtaisia sääasemia voidaan käyttää yksinomaan omistajan iloksi ja kouluttamiseksi, mutta monet henkilökohtaiset sääaseman ylläpitäjät jakavat tietonsa myös muiden kanssa joko kokoamalla tiedot manuaalisesti ja jakamalla niitä tai käyttämällä Internetiä tai amatööriradiota.
Koodi on yksinkertaisimmassa muodossaan, jonka voit kuvitella, eikä sinulla pitäisi olla mitään ongelmia sen kanssa, vaan kysy, onko sinulla. Vaikka tiedät tuhat asiaa, kysy silti joltain, joka tietää.
Voit myös kopioida tämän anturin toimivan Java -koodin täältä.
// Levitetään vapaaehtoisella lisenssillä. // BME280 // Tämä koodi on suunniteltu toimimaan BME280_I2CS I2C Mini -moduulin kanssa, joka on saatavana osoitteesta ControlEverything.com. //
tuonti com.pi4j.io.i2c. I2CBus;
tuoda com.pi4j.io.i2c. I2CDevice; tuonti com.pi4j.io.i2c. I2CFactory; tuoda java.io. IOException;
julkinen luokka BME280
{public static void main (String args ) heittää Poikkeus {// Luo I2C -väylä I2CBus -väylä = I2CFactory.getInstance (I2CBus. BUS_1); // Hanki I2C -laite, BME280 I2C -osoite on 0x76 (108) I2CDevice device = bus.getDevice (0x76); // Lue 24 tavua dataa osoitteesta 0x88 (136) tavu b1 = uusi tavu [24]; device.read (0x88, b1, 0, 24); // Muunna tiedot // lämpötilakerroimet int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); jos (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); jos (dig_T3> 32767) {dig_T3 -= 65536; } // painekertoimet int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); jos (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); jos (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); jos (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); jos (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); jos (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); jos (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); jos (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); jos (dig_P9> 32767) {dig_P9 -= 65536; } // Lue 1 tavu dataa osoitteesta 0xA1 (161) int dig_H1 = ((tavu) device.read (0xA1) & 0xFF); // Lue 7 tavua dataa osoitteesta 0xE1 (225) device.read (0xE1, b1, 0, 7); // Muunna tiedot // kosteuskertoimet int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); jos (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); jos (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); jos (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] & 0xFF; jos (dig_H6> 127) {dig_H6 -= 256; } // Valitse kosteusrekisteri // Kosteus yli näytteenottotaajuuden = 1 laite. Kirjoita (0xF2, (tavu) 0x01); // Valitse ohjauksen mittausrekisteri // Normaalitila, lämpötila ja paine näytteenottotaajuudella = 1 laite. Kirjoita (0xF4, (tavu) 0x27); // Valitse määritysrekisteri // Valmiusaika = 1000 ms device.write (0xF5, (tavu) 0xA0); // Lue 8 tavua dataa osoitteesta 0xF7 (247) // paine msb1, paine msb, paine lsb, lämpötila msb1, lämpötila msb, lämpötila lsb, kosteus lsb, kosteus msb tavu data = uusi tavu [8]; device.read (0xF7, data, 0, 8); // Muunna paine- ja lämpötilatiedot 19 bitin pituisiksi adc_p = (((pitkä) (data [0] & 0xFF) * 65536) + ((pitkä) (data [1] & 0xFF) * 256) + (pitkä) (data [2] & 0xF0)) / 16; pitkä adc_t = (((pitkä) (data [3] & 0xFF) * 65536) + ((pitkä) (data [4] & 0xFF) * 256) + (pitkä) (data [5] & 0xF0)) / 16; // Muunna kosteustiedot pitkäksi adc_h = ((pitkä) (data [6] & 0xFF) * 256 + (pitkä) (data [7] & 0xFF)); // Lämpötilan poikkeaman laskelmat double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024,0) * ((double) dig_T2); double var2 = (((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) /131072.0 - ((double) dig_T1) /8192.0)) * ((double) dig_T3); double t_fine = (pitkä) (var1 + var2); kaksinkertainen cTemp = (var1 + var2) / 5120,0; kaksinkertainen fTemp = cTemp * 1,8 + 32; // Painepoikkeaman laskelmat var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((kaksinkertainen) dig_P6) / 32768.0; var2 = var2 + var1 * ((kaksinkertainen) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((kaksinkertainen) dig_P4) * 65536.0); var1 = ((((kaksinkertainen) dig_P3) * var1 * var1 / 524288.0 + ((kaksinkertainen) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((kaksinkertainen) dig_P1); kaksinkertainen p = 1048576,0 - (kaksinkertainen) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((kaksinkertainen) dig_P9) * p * p / 2147483648.0; var2 = p * ((kaksinkertainen) dig_P8) / 32768.0; kaksinkertainen paine = (p + (var1 + var2 + ((kaksinkertainen) dig_P7))) / 16,0) / 100; // Kosteuspoikkeaman laskutoimitukset 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))); kaksinkertainen kosteus = var_H * (1,0 - dig_H1 * var_H / 524288.0); if (kosteus> 100,0) {kosteus = 100,0; } muu jos (kosteus <0,0) {kosteus = 0,0; } // Tulostustiedot näytölle System.out.printf ("Lämpötila celsiusasteina: %.2f C %n", cTemp); System.out.printf ("Lämpötila Fahrenheit: %.2f F %n", fTemp); System.out.printf ("Paine: %.2f hPa %n", paine); System.out.printf ("Suhteellinen kosteus: %.2f %% RH %n", kosteus); }}
Vaihe 4: Koodin käytännöllisyys
Lataa nyt (tai git pull) koodi ja avaa se Raspberry Pi: ssä.
Suorita komennot kääntääksesi ja ladataksesi koodin päätelaitteeseen ja katsoaksesi näytön tuloksen. Muutaman hetken kuluttua se näyttää kaikki parametrit. Varmistaaksesi, että koodisiirto on sujuva ja tulos rauhallinen (ish), ajattelet lisää ideoita lisämuutosten tekemiseksi (jokainen projekti alkaa tarinalla).
Vaihe 5: Hyödyntäminen rakentavassa maailmassa
BME280 saavuttaa korkean suorituskyvyn kaikissa sovelluksissa, joissa vaaditaan kosteuden ja paineen mittaamista. Nämä uudet sovellukset ovat kontekstitietoisuutta, esim. Ihon tunnistus, huoneenmuutoksen havaitseminen, kuntosalin seuranta / hyvinvointi, varoitus kuivuudesta tai korkeista lämpötiloista, äänenvoimakkuuden ja ilmavirran mittaus, kodin automaation ohjaus, ohjauksen lämmitys, ilmanvaihto, ilmastointi (LVI), esineiden internet (IoT), GPS-parannus (esim. Ensimmäiseen korjaukseen tarvittava aika, kuolleen laskenta, kaltevuuden tunnistus), sisänavigointi (lattian havaitseminen, hissin tunnistus), ulkona navigointi, vapaa-ajan ja urheilusovellukset, sääennuste ja pystysuuntaisen nopeuden ilmaisu (nousu/uppoaminen) Nopeus).
Vaihe 6: Johtopäätös
Kuten näette, tämä projekti on loistava osoitus siitä, mihin laitteisto ja ohjelmisto kykenevät. Lyhyessä ajassa voidaan rakentaa niin vaikuttava projekti! Tämä on tietysti vasta alkua. Kehittyneemmän henkilökohtaisen sääaseman, kuten automatisoitujen lentoasemien henkilökohtaisten sääasemien, tekeminen voi sisältää joitain muita antureita, kuten tuulimittari (tuulen nopeus), lähetysmittari (näkyvyys), pyranometri (auringonsäteily) jne. Meillä on Youtubessa video -opetusohjelma, jossa on I²C -anturi ja Rasp Pi. On todella hämmästyttävää nähdä I²C -viestinnän tulokset ja toiminta. Tarkista se myös. Hauskaa rakentamista ja oppimista! Kerro meille, mitä pidät tästä ohjeesta. Haluaisimme tehdä joitain parannuksia tarvittaessa.
Suositeltava:
NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein: 8 vaihetta (kuvilla)
NaTaLia -sääasema: Arduino -aurinkovoimalla toimiva sääasema tehty oikein: 1 vuoden onnistuneen toiminnan jälkeen kahdessa eri paikassa jaan aurinkovoimalla toimivan sääaseman projektisuunnitelmani ja selitän, kuinka siitä kehittyi järjestelmä, joka voi todella selviytyä pitkään ajan aurinkoenergiasta. Jos seuraat
Huoneen sääasema Arduinon ja BME280: n avulla: 4 vaihetta
Huoneen sääasema Arduinon ja BME280: n avulla: Aiemmin jaoin yksinkertaisen sääaseman, joka näytti paikallisen alueen lämpötilan ja kosteuden. Ongelmana oli, että päivitys vie aikaa ja tiedot eivät ole tarkkoja. Tässä opetusohjelmassa teemme sisäilman monitorin
Sääasema Raspberry Pi: n ja BME280: n avulla Pythonissa: 6 vaihetta
Sääasema käyttää Raspberry Pi: tä BME280: n kanssa Pythonissa: onko maé an scéalaí a aimir (The Weather is a Good Storyteller) Ilmaston lämpenemisen ja ilmastonmuutoksen vuoksi globaali säämalli muuttuu epävakaaksi kaikkialla maailmassa, mikä johtaa useisiin sääolosuhteisiin luonnonkatastrofit (kuivuus, ääripäät
Rakenna Apple HomeKit -lämpötila -anturi (BME280) RaspberryPI: n ja BME280: n avulla: 5 vaihetta
Rakenna Apple HomeKit -lämpötila -anturi (BME280) RaspberryPI: n ja BME280: n avulla: Olen leikkinyt IOT -laitteilla viime kuukausina ja ottanut käyttöön noin 10 erilaista anturia, jotka seuraavat taloni ja mökin olosuhteita. Ja alun perin aloin käyttää AOSONG DHT22 lauhkean kosteuden tunnistinta
Tee henkilökohtainen sääasema: 10 vaihetta (kuvilla)
Tee henkilökohtainen sääasema: Istuessasi huoneeseesi alkaa hikoilla tai tunnet kylmää; mietitkö paljonko huoneesi lämpötila olisi? vai mikä olisi kosteus? Tämä tapahtui minulle jonkin aikaa sitten. Tämä johti Personal Weather Stationin perustamiseen, joka valvoo