Sisukord:

Õhukvaliteedi jälgimine Grafana ja Raspberry Pi abil: 7 sammu
Õhukvaliteedi jälgimine Grafana ja Raspberry Pi abil: 7 sammu

Video: Õhukvaliteedi jälgimine Grafana ja Raspberry Pi abil: 7 sammu

Video: Õhukvaliteedi jälgimine Grafana ja Raspberry Pi abil: 7 sammu
Video: Vonk AP – siseruumide õhukvaliteedi kontrolli ja juhtimise teenus 2024, November
Anonim
Jälgige õhukvaliteeti Grafana ja Raspberry Pi abil
Jälgige õhukvaliteeti Grafana ja Raspberry Pi abil

Otsisin väikest väikest IOT -projekti ja sõber soovitas mul seda õpetust vaadata:

dzone.com/articles/raspberry-pi-iot-sensor…

Soovitan tungivalt järgida õpetust, mida järgida Raspberry Pi jälgimiseks seadistamisel. See õpetus viib lõpule lihtsa IoT -seadme disaini edasised sammud, mis võimaldab suurt vigade taluvust, samuti selle, kui kasulik võib Raspberry Pi olla Arduinoga sidumisel.

Samuti uurin õhuandurite MQ* mudelite tõhusust ja mõnevõrra piiratust. MQ* andurid on odavad ja üsna tõhusad ning neid on ülilihtne üles seada.

Üldiselt aitab see teil alustada Arduino ühendamist Internetiga võimalikult lihtsal viisil ja loob tee kergema jalajälje moodulite kasutamiseks (re: ESP8266).

Lõbutse hästi!

Samm: varustus + seadistamine

Varustus

  • Raspberry Pi koos installitud Raspbianiga
  • Raspberry Pi toiteallikas
  • Arduino Uno/samaväärne
  • Meeste ja meeste USB tüüp B kuni tüüp A (peaks teie Arduinoga kaasas olema)
  • Kõik MQ* andurid (kasutasin MQ-2, 4, 5 ja 135)
  • Erinevad hüppaja juhtmed
  • mini leivalaud

Seadistage

See õpetus on mõeldud Arduino ja Raspberry Pi kasutamise õrnaks sissejuhatuseks - see aitab teada, kuidas Linuxi terminali kasutada. Siiski ei eelda ma Arduino või Raspberry Pi kallal töötamise osas palju kogemusi - tegelikult on vaja ainult varustust ja uudishimulikku suhtumist.

  • Peate selle õpetuse juhised lõpule viima.
  • Soovitan Raspberry Pi -ga liideseks kasutada Secure Shelli (SSH), kuna see võimaldab teil käske hõlpsalt sisestada. SSH kaudu ühenduse loomine erineb sellest, kas kasutate Windowsi, Linuxit või Maci. Linuxi ja Maci on ssh osas üsna lihtne kasutada (SSH avamise käsk on sõna otseses mõttes ssh). Vaadake Putty for Windows. Soovitan teil vaadata ekraani, et hoida oma sessiooni projekti ajal.
  • Samuti peate installima Pythoni Raspbiani. Kui ma need sammud lõpule viisin, tegin koopia vanast SD -kaardist, mis mul oli lamamas eelmisest projektist ja kuhu oli juba installitud Python. Kui teie NOOBS/Raspbiani levitamisel pole Python 3.7 või uuemat versiooni, vaadake alltoodud Pythoni kompileerimiseks neid samme.
  • Tutvuge gitiga ja installige see juhuks, kui see pole teie Raspbiani levitamisse juba installitud.

Samm: vooluringi seadistamine

Vooluringi seadistamine
Vooluringi seadistamine

Arduinos peate seadistama ühe vooluringi.

Esitasin skeemi, mida saate viitena kasutada.

Kõigi MQ-* gaasiandurite ilu seisneb selles, et pärast 5-voldise ja maandusühenduse loomist võimaldab Arduino analoogpistikute sisendtakistus anduril õigesti töötada.

Olge ettevaatlik ja veenduge, et anduri katkestusplaadi analoogühendus on ühendatud Arduinoga, mitte digitaalse ühendusega. Kui teil on testimisel silmitsi väga kitsa väärtuste vahemikuga, soovitan teil kõigepealt oma ühendust siin kontrollida.

Samm: Arduino kood ja vilkumine

Sellele järgneval sammul ühendame Arduino plaadi Raspberry Pi -ga. Enne seda peame Arduino koodi vilkuma, et lugeda andurit ja edastada anduri andmed Raspberry Pi -le. Seda saab teha mis tahes viisil, mida tavaliselt Arduinole koodi sisestate. Kasutasin peale Arduino IDE kolmanda osapoole tööriista - seega lisan ülaosas Arduino raamatukogu. Teiste projektide jaoks pole see vajalik.

Kontrollige selle jaotise lõpus koodi, mida kopeerida/kleepida.

Mida kood teeb

Kood on seadistatud andmete saamiseks neljast erinevast andurist - kui kasutate erinevat tüüpi andureid, on mõistlik muuta jadapordist saadetud väljundsignaali nimetusi.

Tsüklis kontrollime, kas Raspberry Pi nõuab meilt andmeid. Seetõttu kasutame väga lihtsat Master/Slave konfiguratsiooni, kus Raspberry Pi esitab Arduinole pidevalt andmete saamiseks päringuid. See on palju lihtsam kui loenduri olemasolu Arduino koodis, kuna on lihtsam testida, millised väärtused töötavad Raspberry Pi abil, selle asemel, et Arduinole uusi väärtusi välgutada.

Arduino, kui on saanud andmepäringu, vormistab väljundi GET -parameetriks - see on seotud HTTP -meetoditega ja on lihtsalt disainivalik. Kui kavandaksite Arduino suhtlusskeemi jadapordi kaudu, võiksite hõlpsalt midagi muud kasutada, kui te selle kujundate, nii et andmed oleksid mõistlikult eraldatud. Valisin GET, kuna see on tuttav ja vastupidav.

Lihtne testimine…

Kui olete Arduino vilkunud ja kood töötab, avage Arduino IDE seeriamonitor. Kui saadate ühe tähemärgi "H" (tagage selle suurtähed!), Saate andmete kasulikku koormust. Palju õnne, see töötab!

Näidis, asünkroonne MQ-* andmete koguja

#kaasake
int mq2 = A2;
int mq4 = A3;
int mq5 = A4;
int mq135 = A5;
int sissetulevByte;
voidsetup () {
pinMode (mq2, INPUT);
pinMode (mq4, INPUT);
pinMode (mq5, INPUT);
pinMode (mq135, INPUT);
Seriaalne algus (9600);
}
/* valuePrint prindib selle sildi väärtuse.
* Tekitab ainult kõrvaltoimeid.
*/
voidvaluePrint (Stringi silt, int lugemine) {
Serial.print (silt);
Seeria.print ("=");
Serial.print (lugemine);
}
voidloop () {
// vaata, kas saabuvad jadaandmed:
kui (Serial.available ()> 0) {
// loe jadapuhvri vanimat baiti:
// "Kui helistate Serial.readile, eemaldatakse bait vastuvõtupuhvrist ja tagastatakse teie koodile"
sissetulev bait = Serial.read ();
// kui see on suur täht H (ASCII 72), lugege väärtusi ja saatke need vaarika hostile.
// TODO: veenduge, et sõnum oleks alati sama pikk
kui (sissetulev bait == 72) {
int mq2Reading = analogRead (mq2);
int mq4Reading = analogRead (mq4);
int mq5Reading = analogRead (mq5);
int mq135Reading = analogRead (mq135);
Serial.print ("?");
valuePrint ("mq2", mq2Lugemine);
Serial.print ("&");
valuePrint ("mq4", mq4Reading);
Serial.print ("&");
valuePrint ("mq5", mq5Lugemine);
Serial.print ("&");
valuePrint ("mq135", mq135Lugemine);
Serial.print ("\ n");
}
}
// loe sarja ainult iga sekund
viivitus (1000);
}

vaadake rawmain.cpp, mille hostiks on GitHub ❤

Samm: Raspberry Pi kood

Nüüd, kui olete seadistanud Raspberry Pi vastavalt aadressile https://dzone.com/articles/raspberry-pi-iot-sensor…, saate nüüd käivitada Raspberry kliendi koodi, mis saadab andmed MQTT kaudu meie andmebaasi. ühendub Grafanaga.

  1. Veenduge, et teie vaarikas on Internetiga ühendatud, ja seejärel täitke git kloonimise käsk, et kopeerida kogu kood Raspberry Pi -sse. Teie käsk näeb välja natuke selline:

    git kloon

  2. Vaarika Pi terminalis täitke kataloogi muutmise käsk (cd) "raspberry_client":

    cd vaarika_klient.

  3. Peate kasutama virtuaalset keskkonda*. Lihtne. Jookse

    python3 -m venv env. See loob virtuaalse keskkonna nimega "env", mida kasutame sõltuvuste installimiseks.

  4. Nüüd peame sisenema oma virtuaalsesse keskkonda. Käivita:

    source env/bin/aktiveeri. Nüüd olete valmis projekti sõltuvusi installima.

  5. Äsja kloonitud paketis on fail nimega nõuded.txt. Ava see fail; näete, et vajame paho-mqtt ja pyserial pakette ning nende vastavaid versioone. Faili sisu saate vaadata käivitades

    kassi nõuded.txt. Nende pakettide installimiseks ru

    pip install -r nõuded.txt.

  6. See lõpetab konfiguratsiooni.

Sõna otseses mõttes mainitakse iga õpetust, mis kasutab pythonit, Virtual env ja isegi selle väikese projekti puhul mainin. Virtuaalsed keskkonnad võimaldavad eraldada sõltuvuste versioone ja eraldada ka oma pythoni töövoo - see on tore viis oma Pythoni tööruumide korrastamiseks. Kui kasutate virtuaalset keskkonda esimest korda, lugege neid siin lühidalt.

Mida kood teeb…

Fail client.py impordib lihtsa kogutee, sealhulgas meie enda arduinosensori. Põhifunktsioonina saame väärtused Arduino'st, avaldame andmed MQTT maaklerile ja seejärel magame 10 sekundit.

Fail arduinosensor.py on abimeetodite kogum, mis ümbritseb raamatukogu paho.mqtt, samuti pakub mõnda kasulikku suhtlusskeemi Arduino kasuliku koormusega suhtlemiseks (vt: parse_payload). Loomulikult on kood lisatud selle jaotise lõppu.

Lihtne klient, kes suhtleb serdimonitori kaudu arduino -üksusega. Oodake, et leiate koodi siit, kui see avalikuks saab:

fromimportlibimportimport_module
importid
impordi aeg
oluline andur
defmain ():
# avatud määratletud klient
algus_aeg = aeg.aeg ()
Kuigi tõsi:
lugemine = arduinosensor.get_values (os.environ.get ('PORT', "/dev/ttyUSB0"))
arduinosensor.pub ("python_client", kasulik koormus = lugemine)
time.sleep (10.0- ((time.time () -start_time) %10.0))
kui _nimi _ == "_ peamine_":
peamine ()

vaata rawclient.py, mille hostiks on GitHub ❤

Samm: pange see kõik kokku

Meil on seadistatud Raspberry Pythoni kood ja Arduino kliendikood. Liigume edasi mõlema olemi ühendamiseks.

Esiteks ühendame Arduino ja seadistame õige konfiguratsiooni:

  1. Käivitage oma Raspberry Pi terminalis

    python -m serial.tools.list_ports. See loetleb kõik USB -pordid, mis toetavad jadaühendust.

  2. Nüüd ühendage oma Arduino ja oodake umbes 2 sekundit, kuni vaarikas selle ära tunneb. Sisestamine

    python -m serial.tools.list_ports veel kord näitab teile sadamaid. Võite näha täiendavat kirjet - kui see tõesti nii on, siis on see uus kirje kirje, millega teie Arduino on ühendatud. See on tõenäoliselt "/dev/ttyUSB0".

  3. Proovige käivitada python -kood oma virtuaalses keskkonnas, käivitades python3.7 client.py. Oodake mõni sekund (kõige rohkem kümme) - kui teil tekib erand, tähendab see, et peame muutma oma vaarika pi -i porti. Kui näete, et kood prindib rea, mis algab tekstiga „Saadetud järgmiselt:…”, siis on teil hea minna Grafanaga viimasele sammule. Näpunäide: jookske kindlasti

    ekraan -S python enne pythoni kliendi käivitamist, muidu kaotate oma ühenduse oma vaarika pi -ga, kui kaotate oma töötava pythoni programmi. Tehniliselt ei pea te viimast parameetrit rangelt kasutama "python", kuid mulle meeldib oma ekraaniseansse vastavalt nimetada.

    1. COM -pordi väärtuse muutmiseks peate enne koodi käivitamist määrama keskkonnamuutuja. Peate seda proovima iga võimaliku väljundväärtuse puhul, mille saite python -m serial.tools.list_ports käivitamisel. Näiteks kui minu saadud kirjete arv oli kaks ja need olid järgmised:

      • /dev/ttyUSB6
      • /dev/acm0

siis käsklused, mida ma käivitaksin, oleksid järgmised:

PORT = "/dev/ttyUSB6" python3.7 client.py, ja kui see ei tööta, siis hiljem ru

PORT = "/dev/acm0" python3.7 client.py

Kui olete need toimingud lõpetanud, saadab kood andmed meie juurdevoolu andmebaasi eksemplarile, mis Grafanaga ühendatuna võimaldab meil juhtpaneeli vaadata.

6. toiming: Grafana seadistamine ja armatuurlaua vaatamine

Grafana seadistamine ja armatuurlaua vaatamine
Grafana seadistamine ja armatuurlaua vaatamine

Olgu, nüüd oleme viimases etapis! Nüüd kasutame lihtsa armatuurlaua loomiseks Grafanat.

  1. Ühendage oma Grafana eksemplariga. Kuna järgisite algse dzone -artikli samme, peaksite saama administraatori kasutajaga sisse logida. Minge edasi ja logige sisse.
  2. Hõljutage vasakpoolsel paanil kursorit juhtpaneelide ikooni - nelja ruudu kohal. Klõpsake "Halda".
  3. Uuel lehel klõpsake "Uus armatuurlaud". Lisaks klõpsake nuppu "Lisa uus paneel".
  4. See avab Grafana redaktori. Loome lihtsa vaate, mis näitab ühte mõõdikut.

    1. Muutke parempoolsel paanil paneeli pealkiri millekski sisukaks, näiteks "Kööginäidud". Võite sisestada ka valikulise kirjelduse.
    2. Vasakul allosas „Päring” lisame ühe aegrea. Grafana särab siin tõesti, kuna saame hõlpsasti luua SQL -avaldusi klõpsupõhise liidesega. Valige jaotises „Vaikimisi” valik InfluxDB.
    3. Nüüd, "A" lugemiseks - FROM klauslist valige mõõtmine "airtestt". Kui vaatate arduinosensor.py funktsioonis get_values algset pythoni koodi, näete, et määratleme selle airtestti tabeli koodi sees.
    4. Proovi jaoks minge klausli "SELECT" juurde ja valige väli (mq4). Algselt andis meie armatuurlaud meile võimaluse "mean ()" - klõpsake seda valikut ja valige "Eemalda". seejärel klõpsake plussmärgil ja valige jaotises „Koondamised” „eristatud ()”. See näitab konkreetseid ajapunkte. Me võime valida muid meetmeid, kuid praegu näitab meie paneel mq4 -st erinevaid näiteid.
    5. Klõpsake paremas ülanurgas nuppu Salvesta ja oletegi valmis!

Kui teil tekib probleeme, saate oma seadeid kinnitada lisatud ekraanipildil olevatega.

7. samm: lõpetage

Tõmba otsad kokku
Tõmba otsad kokku

Selles õpetuses suutsite luua tugeva MQTT -võrgu, mis koosneb ühest sõlmest ja maaklerist. Samuti suutsite oma IOT -andmeid visualiseerida Grafana abil. Lõpuks suutsite selle lihtsa süsteemi arhitektuuri (loodetavasti) oma brauseri ja arvuti mugavusest SSH -ühenduse abil koostada.

On asju, mida võiksime parandada.

  • Meie graafiku andurite näidud ei ole tegelikult täpsed andurite näidud - need on meie anduri väljundpinge. Neid tuleb kalibreerida, lisateabe saamiseks lugege seda ajaveebi postitust.
  • Meie vaarika pi konfiguratsiooni saab muuta palju kergemaks, kasutades arduinoga ühendatud ESP8266 plaati ja eemaldades pi täielikult. Tutvuge ESP8266 mooduli sissejuhatusega.
  • Võib -olla soovime lisada teatavaid sündmusi puudutavaid hoiatusi. Õnneks pakub Grafana võimalust seda teha.

Jätan veel lugemist, et meelitada teie kujutlusvõimet IOT -i maailmaga. Ootan teid järgmisel juhendamisel!

Täiendavad lugemised:

Soovitan: