Orodha ya maudhui:

Fuatilia Ubora wa Hewa Kutumia Grafana na Raspberry Pi: Hatua 7
Fuatilia Ubora wa Hewa Kutumia Grafana na Raspberry Pi: Hatua 7

Video: Fuatilia Ubora wa Hewa Kutumia Grafana na Raspberry Pi: Hatua 7

Video: Fuatilia Ubora wa Hewa Kutumia Grafana na Raspberry Pi: Hatua 7
Video: Котенка просто оставили на обочине. Котенок по имени Роки 2024, Novemba
Anonim
Fuatilia Ubora wa Hewa Kutumia Grafana na Raspberry Pi
Fuatilia Ubora wa Hewa Kutumia Grafana na Raspberry Pi

Nilikuwa nikitafuta mradi mdogo wa IOT na rafiki alipendekeza niangalie mafunzo haya:

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

Ninapendekeza sana kufuata mafunzo ya kufuata katika kuanzisha Pi ya Raspberry kwa ufuatiliaji. Mafunzo haya yatakamilisha hatua zaidi katika muundo wa kifaa rahisi cha IoT ambacho kinaruhusu uvumilivu mkubwa wa makosa, na pia jinsi Raspberry Pi inaweza kuwa muhimu wakati wa kuoanishwa na Arduino.

Ninaenda pia katika ufanisi na upeo wa aina ya MQ * ya sensorer za hewa. Sensorer za MQ * ni za bei rahisi na zina ufanisi mzuri, na ni rahisi kusanidi.

Kwa jumla hii itakusaidia kuanza kuunganisha Arduino kwenye wavuti kwa njia rahisi kabisa, na kuweka njia ya kutumia moduli nyepesi za nyayo (re: ESP8266).

Furahiya!

Hatua ya 1: Vifaa + vimewekwa

Vifaa

  • Raspberry Pi na Raspbian imewekwa
  • Ugavi wa umeme wa Raspberry Pi
  • Arduino Uno / Sawa
  • Kiume hadi kiume USB aina B kwa Aina A (inapaswa kuja na Arduino yako)
  • Sensorer yoyote ya MQ * (nilitumia MQ-2, 4, 5, na 135)
  • Wiring jumper zilizowekwa
  • mini mkate

Sanidi

Mafunzo haya yana maana kama utangulizi mpole wa kutumia Arduino na Raspberry Pi - itasaidia kujua jinsi ya kutumia terminal ya linux. Walakini, sidhani uzoefu mwingi na kufanya kazi kwenye Arduino au Raspberry Pi - unachohitaji tu ni vifaa vilivyotolewa na mtazamo wa kudadisi.

  • Utahitaji kukamilisha hatua katika mafunzo haya.
  • Ninapendekeza utumie Shell Salama (SSH) kuungana na Raspberry Pi, kwani hii hukuruhusu kuingiza amri kwa urahisi. Kuunganisha kupitia SSH hutofautiana ikiwa unatumia Windows, Linux au Mac. Linux na Mac ni rahisi kutumia kwa ssh (amri ya kufungua SSH ni ssh halisi). Angalia Putty kwa Windows. Ninapendekeza uangalie skrini kama njia ya kudumisha kikao chako wakati wa mradi.
  • Utahitaji pia kusanikisha chatu kwenye Raspbian. Nilipomaliza hatua hizi, nilitengeneza nakala ya kadi ya zamani ya SD niliyokuwa nimejilaza kutoka kwa mradi uliopita, ambao tayari Python ilikuwa imewekwa. Ikiwa usambazaji wako wa NOOBS / Raspbian hauna Python 3.7 au zaidi, angalia hatua hizi kukusanya Python kutoka chanzo.
  • Jijulishe na git na uisakinishe ikiwa halijawekwa tayari katika usambazaji wako wa Raspbian.

Hatua ya 2: Kuweka Mzunguko

Kuweka Mzunguko
Kuweka Mzunguko

Kuna mzunguko mmoja utahitaji kuanzisha katika Arduino.

Nimetoa skimu ambayo unaweza kutumia kama kumbukumbu.

Uzuri wa sensorer zote za gesi za MQ- * ni kwamba mara tu unganisho la Volt na Ground 5 litakapofanywa, upinzani wa pembejeo wa pini za Analog za Arduino huruhusu sensor kufanya kazi kwa usahihi.

Kuwa mwangalifu kuhakikisha kuwa unganisho la Analog kutoka kwa bodi ya kuzuka kwenye sensorer imeunganishwa na Arduino na sio unganisho la dijiti. Ikiwa unakabiliwa na anuwai nyembamba wakati wa kujaribu, ninapendekeza uangalie unganisho lako hapa kwanza.

Hatua ya 3: Msimbo wa Arduino na Flashing

Katika hatua inayofuata hii, tutaunganisha bodi ya Arduino kwenye Raspberry Pi. Kabla ya kufanya hivyo, tunahitaji kuwasha Arduino na nambari ya kusoma sensa na pia kusambaza data ya sensa kwa Raspberry Pi. Hii inaweza kufanywa kwa njia yoyote ambayo kawaida unasukuma nambari kwa Arduino. Nilitumia zana ya mtu mwingine isipokuwa Arduino IDE - kwa hivyo, ninajumuisha maktaba ya Arduino hapo juu. Hii sio lazima kwa miradi mingine.

Angalia nambari ya kunakili / kubandika mwishoni mwa sehemu hii.

Je! Nambari inafanya nini

Nambari imewekwa ili kupata data kutoka kwa sensorer nne tofauti - ikiwa unatumia sensorer za aina tofauti, itakuwa busara kubadilisha majina kwenye ishara ya pato iliyotumwa kutoka bandari ya Serial.

Katika kitanzi tunaangalia ikiwa Raspberry Pi inauliza data kutoka kwetu. Kwa hivyo, tunatumia usanidi rahisi wa Mwalimu / Mtumwa ambapo Raspberry Pi itaendelea kuomba Arduino kwa data. Hii ni rahisi sana kuliko kuwa na kaunta katika nambari ya Arduino kwa sababu ni rahisi kujaribu ni maadili gani yanayofanya kazi kutoka kwa Raspberry Pi, badala ya kuwa na taa mpya kwa Arduino.

Arduino, mara moja ilipokea ombi la data, itaunda muundo kama kigezo cha GET - hii inahusiana na njia za HTTP na ni chaguo la kubuni tu. Ikiwa ungeunda muundo wa mawasiliano kutoka Arduino kupitia Bandari ya Siri, unaweza kwenda kwa kitu kingine chochote, maadamu unakiunda ili data iwe imetengwa kwa sababu. Nilichagua GET kwa sababu inajulikana na imara.

Jaribio rahisi…

Mara tu unapoangaza Arduino na nambari inayotekelezwa, fungua Arduino IDE's Serial Monitor. Ikiwa utatuma herufi moja "H" (hakikisha mtaji wake!) Utapata malipo ya data. Hongera, inafanya kazi!

Sampuli, mtoza asynchronous wa data ya MQ- *

# pamoja
int mq2 = A2;
int mq4 = A3;
int mq5 = A4;
int mq135 = A5;
int zinazoingiaByte;
voidetup () {
pinMode (mq2, INPUT);
pinMode (mq4, INPUT);
pinMode (mq5, INPUT);
pinMode (mq135, INPUT);
Kuanzia Serial (9600);
}
/ * thamaniChapisha alama ya lebo hii.
* Huunda athari za upande tu.
*/
voidvaluePrint (Lebo ya Kamba, kusoma kwa ndani) {
Printa ya serial (lebo);
Serial.print ("=");
Printa ya serial (kusoma);
}
voidloop () {
// angalia ikiwa kuna data zinazoingia:
ikiwa (Serial haipatikani ()> 0) {
// soma baiti kongwe katika bafa ya serial:
// "Unapopiga simu Serial. Soma baiti imeondolewa kwenye bafa ya kupokea na kurudishwa kwa nambari yako"
incomingByte = Serial.read ();
// ikiwa ni mji mkuu H (ASCII 72), soma maadili na upeleke kwa mwenyeji wa rasipberry.
// TODO: hakikisha ujumbe daima ni mrefu sawa, kila wakati
ikiwa (incomingByte == 72) {
int mq2Kusoma = AnalogRead (mq2);
int mq4Kusoma = AnalogRead (mq4);
int mq5 Kusoma = AnalogRead (mq5);
int mq135Kusoma = AnalogRead (mq135);
Printa ya serial ("?");
Printa ya thamani ("mq2", mq2Kusoma);
Serial.print ("&");
Printa ya thamani ("mq4", mq4Kusoma);
Serial.print ("&");
Printa ya thamani ("mq5", mq5Kusoma);
Serial.print ("&");
Printa ya thamani ("mq135", mq135Kusoma);
Serial.print ("\ n");
}
}
// soma mfululizo kila sekunde
kuchelewesha (1000);
}

tazama rawmain.cpp iliyohifadhiwa na ❤ na GitHub

Hatua ya 4: Kanuni ya Raspberry Pi

Sasa kwa kuwa umesanidi Raspberry Pi kulingana na https://dzone.com/articles/raspberry-pi-iot-sensor ……., sasa unaweza kuendesha nambari ya Mteja wa Raspberry ambayo itatuma data kupitia MQTT kwenye hifadhidata yetu, ambayo pia inaunganisha na Grafana.

  1. Hakikisha rasipiberi yako imeunganishwa kwenye wavuti na kisha fanya amri ya clone ya git kunakili nambari yote kwenye Raspberry Pi. Amri yako itaonekana kama:

    clone ya git

  2. Ndani ya kituo cha Risiberi Pi, fanya amri ya saraka ya mabadiliko (cd) kuwa "raspberry_client":

    cd raspberry_client.

  3. Utahitaji kutumia mazingira halisi *. Rahisi. Endesha

    python3 -m venv env. Hii itaunda mazingira halisi inayoitwa "env" ambayo tutatumia kusanikisha utegemezi.

  4. Sasa, tunahitaji kuingia kwenye mazingira yetu halisi. Endesha:

    chanzo env / bin / activate. Sasa uko tayari kusanidi utegemezi wa mradi.

  5. Katika kifurushi ulichokiga tu kuna faili inayoitwa mahitaji.txt. Fungua faili hii; utaona tunahitaji vifurushi vya paho-mqtt na pyserial, pamoja na matoleo yao. Unaweza kuona yaliyomo kwenye faili kwa kukimbia

    mahitaji ya paka.txt. Ili kusanikisha vifurushi hivi, ru

    bomba kufunga -r mahitaji.txt.

  6. Hii inafunga usanidi.

Kwa kweli kila mafunzo ambayo hutumia chatu hufanya kutajwa kwa wivu ya kweli, na hata kwa mradi huu mdogo, nitataja. Mazingira halisi hukuruhusu kutenganisha matoleo ya utegemezi, na pia kutenganisha mtiririko wako wa kazi wa chatu - Ni njia nzuri ya kusafisha nafasi zako za kazi za Python. Ikiwa hii ni mara yako ya kwanza kutumia mazingira halisi, soma kwa kifupi juu yao hapa.

Je! Nambari inafanya nini…

Faili ya mteja.py itaingiza seti rahisi ya maktaba pamoja na arduinosensor yetu. Katika kazi kuu, tutapata maadili kutoka kwa Arduino, tutachapisha data kwa broker wa MQTT, halafu tulale kwa sekunde 10.

Faili ya arduinosensor.py ni seti ya njia za wasaidizi ambazo huzunguka maktaba ya paho.mqtt, na pia kutoa schema ya mawasiliano muhimu kwa kuwasiliana na malipo ya Arduino (tazama: parse_payload). Kwa kweli, nambari imeambatanishwa mwishoni mwa sehemu hii.

Mteja rahisi anayewasiliana na kipengee cha arduino kupitia mfuatiliaji wa serial. Tarajia kupata nambari hapa inapoenda kwa umma:

kutokaimportlibimportimport_module
kuagiza
muda wa kuagiza
kuagizaarduinosensor
kudhoofisha ():
# mteja aliyefafanuliwa wazi
saa ya kuanza_ saa = saa.
wakatiKweli:
kusoma = arduinosensor.get_values (os.environ.get ('PORT', "/ dev / ttyUSB0"))
arduinosensor.pub ("python_client", payload = kusoma)
muda. lala (10.0- ((saa. muda () -nza_wakati)% 10.0))
ikiwa_ jina _ == "_ kuu_":
kuu ()

tazama rawclient.py iliyohifadhiwa na ❤ na GitHub

Hatua ya 5: Kuiweka Pamoja

Tunayo nambari ya Raspberry Python iliyowekwa, na tuna nambari ya mteja wa Arduino iliyowekwa. Wacha tuendelee kuunganisha vyombo vyote kwa pamoja.

Kwanza, wacha tuunganishe Arduino na usanidi usanidi sahihi:

  1. Kwenye kituo chako cha Raspberry Pi, endesha

    python -m serial.tools.list_ports.ports. Hii itaorodhesha bandari zote za USB zinazounga mkono mawasiliano ya serial.

  2. Sasa, ingiza Arduino yako na subiri kama sekunde 2 kwa Raspberry kuitambua. Kuandika katika

    python -m serial.tools.list_ports.ports mara nyingine tena nitakuonyesha bandari tena. Unaweza kuona orodha ya ziada ikijitokeza - ikiwa ndivyo ilivyo, basi kiingilio hiki kipya ni kiingilio ambacho Arduino yako imeunganishwa. Hii inaelekea kuwa "/ dev / ttyUSB0".

  3. Jaribu kuendesha nambari ya chatu ndani ya mazingira yako kwa kuendesha python3.7 client.py. Subiri sekunde chache (angalau kumi) - ikiwa unakabiliwa na ubaguzi, hii inamaanisha kuwa itabidi kubadilisha thamani ya bandari yetu ya com kwenye raspberry pi. Ikiwa utaona kuwa nambari hiyo inachapisha laini kuanzia "Upakiaji uliofuata wa malipo: …" Basi, utakuwa mzuri kuendelea na hatua ya mwisho na Grafana. Kidokezo: hakikisha kukimbia

    chatu -S chatu kabla ya kuanza mteja wa chatu, vinginevyo, utakapomaliza muunganisho wako na raspberry pi yako, utapoteza programu yako ya chatu. Kitaalam, hauitaji kutumia "chatu" kama kigezo cha mwisho, lakini napenda kutaja vipindi vyangu vya skrini ipasavyo.

    1. Ili kubadilisha thamani ya bandari ya COM, itabidi uweke mazingira tofauti kabla ya kutumia nambari. Itabidi ujaribu hii kwa kila thamani inayowezekana ya pato ulilopata wakati wa kuendesha python -m serial.tools.list_ports. Kwa mfano, ikiwa idadi ya maingizo niliyopata yalikuwa mawili, na yalikuwa yafuatayo:

      • / dev / ttyUSB6
      • / dev / acm0

basi amri ambazo ningeendesha zingekuwa:

PORT = "/ dev / ttyUSB6" python3.7 client.py, na ikiwa hiyo haingefanya kazi, ningependa baadaye ru

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

Mara tu utakapomaliza hatua hizi, nambari itatoa data kwa mfano wa hifadhidata ya database ambayo, ikiunganishwa na Grafana, itaturuhusu kutazama dashibodi yetu.

Hatua ya 6: Usanidi wa Grafana na Uangaliaji wa Dashibodi

Usanidi wa Grafana na Uangaliaji wa Dashibodi
Usanidi wa Grafana na Uangaliaji wa Dashibodi

Sawa, sasa tuko katika mwisho wa mwisho! Sasa tutatumia Grafana kuunda dashibodi rahisi.

  1. Unganisha na mfano wako wa Grafana. Kwa kuwa ulifuata hatua kutoka kwa nakala asili ya dzone, unapaswa kuingia na mtumiaji wa msimamizi wako. Endelea na ingia.
  2. Kwenye kidirisha cha kushoto, hover juu ya ikoni ya "dashibodi" - mraba nne. Bonyeza "Dhibiti".
  3. Kwenye ukurasa mpya, bonyeza "Dashibodi mpya". Zaidi, bonyeza "Ongeza jopo jipya".
  4. Hii inafungua mhariri wa Grafana. Tutaunda mwonekano rahisi unaoonyesha kipimo kimoja.

    1. Kwenye kidirisha cha kulia, badilisha kichwa cha jopo kuwa kitu cha maana, kama "Usomaji wa Jikoni". Unaweza pia kuingia Maelezo ya hiari.
    2. Kwenye kushoto chini, "Hoja", tutaongeza safu moja ya wakati. Grafana huangaza kweli hapa kwani tunaweza kuunda taarifa za SQL kwa urahisi na kiolesura cha kubofya. Chini ya "chaguo-msingi", chagua InfluxDB.
    3. Sasa, kwa kusoma "A" - katika kifungu cha KUTOKA, chagua kipimo "airtestt". Ukiangalia nambari ya asili ya chatu katika kazi ya kupata_wa thamani ya arduinosensor.py, utaona kuwa tunafafanua meza hii ya airtestt ndani ya nambari.
    4. Kwa sampuli, wacha tuende kwenye kifungu cha "CHAGUA" na uchague uwanja (mq4). Awali dashibodi yetu itatupa chaguo "maana ()" - bonyeza chaguo hili na uchague "Ondoa". kisha, bonyeza alama ya pamoja na, chini ya "Jumla" chagua "tofauti ()". Hii itaonyesha alama maalum za wakati. Tunaweza kuchagua hatua zingine lakini kwa sasa, jopo letu litaonyesha usomaji tofauti kutoka mq4.
    5. Bonyeza Hifadhi juu kulia, na umemaliza!

Ikiwa unapata shida, unaweza kuthibitisha mipangilio yako na zile zilizo kwenye skrini iliyoambatishwa.

Hatua ya 7: Zungusha

Maliza
Maliza

Katika mafunzo haya uliweza kuanzisha mtandao thabiti wa MQTT ulio na node moja na broker. Pia uliweza kuibua data yako ya IOT ukitumia Grafana. Mwishowe, uliweza kutunga usanifu huu wa mfumo rahisi kutoka (kwa matumaini) faraja ya kivinjari chako na PC kupitia utumiaji wa unganisho la SSH.

Kuna mambo ambayo tunaweza kutaka kuboresha.

  • Usomaji wa sensa kwenye grafu yetu sio usomaji sahihi wa sensorer - ni voltage ya pato kutoka kwa sensa yetu. Wanahitaji kusawazishwa, wasiliana na chapisho hili la blogi kwa maelezo zaidi.
  • Usanidi wetu wa rasipberry pi unaweza kufanywa kuwa nyepesi zaidi kwa kutumia bodi ya ESP8266 iliyounganishwa na arduino, na kuondoa pi kabisa. Angalia utangulizi wa moduli ya ESP8266.
  • Tunataka kuongeza arifu za hafla maalum. Kwa bahati nzuri, Grafana inatoa njia ya kufanya hivyo.

Nitaacha kusoma zaidi ili kushawishi mawazo yako na ulimwengu wa IOT. Ninatarajia kukuona katika mafunzo yanayofuata!

Usomaji zaidi:

Ilipendekeza: