Orodha ya maudhui:
- Hatua ya 1: Vifaa + vimewekwa
- Hatua ya 2: Kuweka Mzunguko
- Hatua ya 3: Msimbo wa Arduino na Flashing
- Hatua ya 4: Kanuni ya Raspberry Pi
- Hatua ya 5: Kuiweka Pamoja
- Hatua ya 6: Usanidi wa Grafana na Uangaliaji wa Dashibodi
- Hatua ya 7: Zungusha
Video: Fuatilia Ubora wa Hewa Kutumia Grafana na Raspberry Pi: Hatua 7
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
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
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.
-
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
-
Ndani ya kituo cha Risiberi Pi, fanya amri ya saraka ya mabadiliko (cd) kuwa "raspberry_client":
cd raspberry_client.
- Utahitaji kutumia mazingira halisi *. Rahisi. Endesha
python3 -m venv env. Hii itaunda mazingira halisi inayoitwa "env" ambayo tutatumia kusanikisha utegemezi.
-
Sasa, tunahitaji kuingia kwenye mazingira yetu halisi. Endesha:
chanzo env / bin / activate. Sasa uko tayari kusanidi utegemezi wa mradi.
-
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.
- 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:
- 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.
- 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".
- 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.
-
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
Sawa, sasa tuko katika mwisho wa mwisho! Sasa tutatumia Grafana kuunda dashibodi rahisi.
- 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.
- Kwenye kidirisha cha kushoto, hover juu ya ikoni ya "dashibodi" - mraba nne. Bonyeza "Dhibiti".
- Kwenye ukurasa mpya, bonyeza "Dashibodi mpya". Zaidi, bonyeza "Ongeza jopo jipya".
-
Hii inafungua mhariri wa Grafana. Tutaunda mwonekano rahisi unaoonyesha kipimo kimoja.
- Kwenye kidirisha cha kulia, badilisha kichwa cha jopo kuwa kitu cha maana, kama "Usomaji wa Jikoni". Unaweza pia kuingia Maelezo ya hiari.
- 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.
- 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.
- 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.
- Bonyeza Hifadhi juu kulia, na umemaliza!
Ikiwa unapata shida, unaweza kuthibitisha mipangilio yako na zile zilizo kwenye skrini iliyoambatishwa.
Hatua ya 7: Zungusha
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:
Onyesho rahisi la hali ya hewa kwa kutumia Raspberry PI na hali ya hewa ya CyntechHAT: Hatua 4
Onyesho rahisi la hali ya hewa kwa kutumia Raspberry PI na Cyntech WeatherHAT: * Mnamo 2019 Yahoo ilibadilisha API, na hii iliacha kufanya kazi. Sikujua mabadiliko hayo. Mnamo Septemba ya 2020 mradi huu umesasishwa kutumia OPENWEATHERMAP API Angalia sehemu iliyosasishwa hapa chini, habari hii iliyobaki bado ni nzuri
Sensorer ya Ubora wa Hewa Kutumia Arduino: Hatua 4
Sensorer ya Ubora wa Hewa Kutumia Arduino: Katika chapisho hili, tutajifunza jinsi ya kujenga sensorer ya hali ya hewa rahisi lakini muhimu. Tutatumia sensa ya SGP30 pamoja na Piksey Pico, ingawa mchoro utafanya kazi na bodi yoyote inayofaa ya Arduino. Video hapo juu inazungumza nawe kupitia t
ESP32 Kulingana na M5Stack M5stick C Hali ya hewa Monitor na DHT11 - Fuatilia Unyevu wa Joto na Kiashiria cha Joto kwenye M5stick-C Pamoja na DHT11: 6 Hatua
ESP32 Kulingana na M5Stack M5stick C Hali ya hewa Monitor na DHT11 | Fuatilia Unyevu wa Joto na Kiashiria cha Joto kwenye M5stick-C Pamoja na DHT11: Halo jamani, katika mafundisho haya tutajifunza jinsi ya kusanikisha sensa ya joto ya DHT11 na m5stick-C (bodi ya maendeleo na m5stack) na kuionyesha kwenye onyesho la m5stick-C. Kwa hivyo katika mafunzo haya tutasoma joto, unyevu & joto i
Ufuatiliaji wa Ubora wa Hewa Kutumia Particle Photon: Hatua 11 (na Picha)
Ufuatiliaji wa Ubora wa Hewa Kutumia Particle Photon: Katika mradi huu sensa ya chembe ya PPD42NJ hutumiwa kupima ubora wa hewa (PM 2.5) uliopo hewani na Particle Photon. Haionyeshi tu data kwenye kiwambo cha chembe na dweet.io lakini pia zinaonyesha ubora wa hewa ukitumia RGB LED kwa kuibadilisha
Acurite 5 katika Kituo cha hali ya hewa 1 Kutumia Raspberry Pi na Weewx (Vituo vingine vya hali ya hewa vinaendana): Hatua 5 (na Picha)
Acurite 5 katika Kituo cha hali ya hewa 1 Kutumia Raspberry Pi na Weewx (Vituo vingine vya hali ya hewa vinaendana): Wakati nilikuwa nimenunua Acurite 5 katika kituo cha hali ya hewa cha 1 nilitaka kuweza kuangalia hali ya hewa nyumbani kwangu nilipokuwa mbali. Nilipofika nyumbani na kuitengeneza niligundua kuwa lazima ningepaswa kuwa na onyesho lililounganishwa na kompyuta au kununua kitovu chao cha busara,