Мазмұны:

Grafana мен Raspberry Pi көмегімен ауа сапасын бақылаңыз: 7 қадам
Grafana мен Raspberry Pi көмегімен ауа сапасын бақылаңыз: 7 қадам

Бейне: Grafana мен Raspberry Pi көмегімен ауа сапасын бақылаңыз: 7 қадам

Бейне: Grafana мен Raspberry Pi көмегімен ауа сапасын бақылаңыз: 7 қадам
Бейне: Raspberry Pi IoT Server Tutorial: InfluxDB, MQTT, Grafana, Node-RED & Docker 2024, Қараша
Anonim
Grafana мен Raspberry Pi көмегімен ауа сапасын бақылаңыз
Grafana мен Raspberry Pi көмегімен ауа сапасын бақылаңыз

Мен кішігірім IOT жобасын іздедім және досым осы оқулықты қарауды ұсынды:

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

Мен бақылау үшін Raspberry Pi орнатуды жалғастыру үшін оқулықты орындауды ұсынамын. Бұл оқулық қателіктерге жоғары төзімділікке мүмкіндік беретін қарапайым IoT құрылғысының дизайнындағы келесі қадамдарды аяқтайды, сондай -ақ Raspberry Pi Arduino -мен жұптасқанда қаншалықты пайдалы болады.

Мен ауа сенсорларының MQ* модельдерінің тиімділігі мен біршама шектелуін қарастырамын. MQ* сенсорлары арзан және тиімді, оларды орнату өте оңай.

Тұтастай алғанда, бұл сізге Arduino -ны Интернетке қосуды қарапайым жолмен бастауға көмектеседі және жеңіл іздер модульдерін қолдануға жол ашады (қайта: ESP8266).

Масайрау!

1 -қадам: жабдық + орнату

Жабдық

  • Raspbian орнатылған Raspberry Pi
  • Raspberry Pi қуат көзі
  • Arduino Uno/Эквивалент
  • B типті еркек пен еркектің А түріне (сіздің Arduino құрылғыңызбен бірге келуі керек)
  • Кез келген MQ* датчиктері (мен MQ-2, 4, 5 және 135 қолдандым)
  • Әр түрлі секіргіш сымдар
  • шағын тақта

Орнату

Бұл оқу құралы Arduino мен Raspberry Pi -ді қолдануға арналған жұмсақ кіріспе ретінде берілген - бұл Linux терминалын қалай пайдалану керектігін білуге көмектеседі. Дегенмен, мен Arduino немесе Raspberry Pi -де жұмыс жасауда көп тәжірибеге ие емеспін - сізге тек жабдықтар мен қызықты көзқарас қажет.

  • Сізге бұл оқулықтағы қадамдарды орындау қажет болады.
  • Мен сізге Raspberry Pi интерфейсі үшін Secure Shell (SSH) қолдануды ұсынамын, себебі бұл командаларды оңай енгізуге мүмкіндік береді. SSH арқылы қосылу Windows, Linux немесе Mac қолданатындығыңызға байланысты. Linux пен Mac -ті ssh -те қолдану өте оңай (SSH ашу пәрмені ssh). Windows үшін Putty бағдарламасын қараңыз. Мен сізге жоба кезінде сеансты сақтаудың әдісі ретінде экранды қарауды ұсынамын.
  • Сондай -ақ, Python -ды Raspbian -ға орнату қажет болады. Мен осы қадамдарды аяқтаған кезде, мен Python -ды орнатқан алдыңғы жобадан бұрынғы ескі SD картаның көшірмесін жасадым. Егер сіздің NOOBS/Raspbian таратылымында Python 3.7 немесе одан жоғары нұсқасы болмаса, Python көзінен құрастыру үшін мына қадамдарды қараңыз.
  • Гитпен танысыңыз және ол сіздің Raspbian дистрибутивінде әлі орнатылмаған жағдайда орнатыңыз.

2 -қадам: схеманы орнату

Схеманы орнату
Схеманы орнату

Сізге Arduino -де орнату қажет бір схема бар.

Мен сілтеме ретінде қолдануға болатын схеманы ұсындым.

Барлық MQ-* газ датчиктерінің сұлулығы-5 вольтты және жерге қосылатыннан кейін, Arduino аналогты түйреуіштердің кіріс кедергісі сенсордың дұрыс жұмыс істеуіне мүмкіндік береді.

Сенсордағы ажырату тақтасынан аналогтық байланыс сандық байланысқа емес, Arduino -ға қосылғанына көз жеткізіңіз. Егер сіз тестілеу кезінде мәндердің өте тар диапазонына тап болсаңыз, алдымен осында қосылымды тексеруді ұсынамын.

3 -қадам: Arduino коды және жыпылықтау

Осы қадамнан кейін біз Arduino тақтасын Raspberry Pi -ге қосамыз. Мұны жасамас бұрын, сенсорды оқу үшін Arduino кодын жыпылықтау керек, сонымен қатар сенсорлық мәліметтерді Raspberry Pi -ге жіберу керек. Мұны әдетте кодты Arduino -ға жіберетін кез келген тәсілмен жасауға болады. Мен Arduino IDE -ден басқа үшінші тарап құралын қолдандым, сондықтан мен Arduino кітапханасын жоғарғы жағына қосамын. Бұл басқа жобалар үшін қажет емес.

Осы бөлімнің соңында көшіру/қою үшін кодты тексеріңіз.

Код не істейді

Код төрт түрлі сенсордан мәлімет алу үшін орнатылған - егер сенсорлардың әр түрін қолдансаңыз, Сериялық порттан жіберілетін шығыс сигналының атауын өзгерту орынды болады.

Циклде біз Raspberry Pi бізден деректерді сұрайтынын тексереміз. Осылайша, біз Raspberry Pi деректерді алу үшін Arduino -ға үнемі сұраныс беретін Master/Slave қарапайым конфигурациясын қолданамыз. Бұл Arduino кодымен есептегішке қарағанда әлдеқайда қарапайым, себебі Arduino -ға жаңа мәндерді қосудың орнына Raspberry Pi -ден қандай мәндер жұмыс істейтінін тексеру оңайырақ.

Деректерге сұраныс алғаннан кейін arduino шығуды GET параметрі ретінде пішімдейді - бұл HTTP әдістеріне қатысты және жай ғана дизайн таңдауы. Егер сіз Arduino -дан сериялық порт арқылы байланыс схемасын жасағыңыз келсе, онда сіз кез келген нәрсені оңай шеше аласыз, егер сіз оны жобалаған болсаңыз, онда деректер орынды бөлінген. Мен GET -ті таңдадым, себебі ол таныс және берік.

Қарапайым тестілеу…

Arduino жыпылықтап, код іске қосылғаннан кейін Arduino IDE сериялық мониторын ашыңыз. Егер сіз «H» бір таңбасын жіберсеңіз (оның капиталын қамтамасыз етіңіз!), Сіз деректер жүктемесін аласыз. Құттықтаймын, ол жұмыс істейді!

MQ-* мәліметтерінің асинхронды үлгісі

#қосу
int mq2 = A2;
int mq4 = A3;
int mq5 = A4;
int mq135 = A5;
int incomingByte;
voidsetup () {
pinMode (mq2, INPUT);
pinMode (mq4, INPUT);
pinMode (mq5, INPUT);
pinMode (mq135, INPUT);
Serial.begin (9600);
}
/* valuePrint осы белгінің мәнін басып шығарады.
* Тек жанама әсерлер тудырады.
*/
voidvaluePrint (String label, int reading) {
Serial.print (жапсырма);
Serial.print («=»);
Serial.print (оқу);
}
voidloop () {
// кіретін сериялық деректер бар -жоғын қараңыз:
егер (Serial.available ()> 0) {
// сериялық буфердегі ең ескі байтты оқыңыз:
// «Serial.read шақырған кезде байт қабылдау буферінен жойылады және сіздің кодыңызға қайтарылады»
incomingByte = Serial.read ();
// егер бұл H астанасы болса (ASCII 72), мәндерді оқып, оларды таңқурай хостына жіберіңіз.
// TODO: хабарламаның әрқашан бірдей ұзындықта болуын қамтамасыз етіңіз
егер (кірісBayte == 72) {
int mq2Reading = analogRead (mq2);
int mq4Reading = analogRead (mq4);
int mq5Reading = analogRead (mq5);
int mq135Reading = analogRead (mq135);
Serial.print («?»);
valuePrint («mq2», mq2Reading);
Serial.print («&»);
valuePrint («mq4», mq4Reading);
Serial.print («&»);
valuePrint («mq5», mq5Reading);
Serial.print («&»);
valuePrint («mq135», mq135Оқу);
Serial.print («\ n»);
}
}
// сериалды әр секунд сайын оқыңыз
кешіктіру (1000);
}

GitHub ұсынған ❤ бар rawmain.cpp қарау

4 -қадам: Raspberry Pi коды

Енді сіз Raspberry Pi-ді https://dzone.com/articles/raspberry-pi-iot-sensor… сәйкес конфигурацияладыңыз, енді сіз MQTT арқылы деректерді біздің дерекқорға жіберетін Raspberry Client кодын іске қоса аласыз. Графанаға қосылады.

  1. Таңқурайдың интернетке қосылғанына көз жеткізіңіз, содан кейін бүкіл кодты Raspberry Pi -ге көшіру үшін git clone пәрменін орындаңыз. Сіздің командаңыз келесідей болады:

    git clone

  2. Raspberry Pi терминалында каталог пәрменін (cd) «raspberry_client» етіп орындаңыз:

    cd raspberry_client.

  3. Сізге виртуалды ортаны пайдалану қажет болады*. Қарапайым. Жүгіру

    python3 -m venv env. Бұл «env» деп аталатын виртуалды ортаны жасайды, біз оны тәуелділікті орнату үшін қолданамыз.

  4. Енді біз виртуалды ортаға кіруіміз керек. Іске қосу:

    env/bin/activate бастапқы көзі. Енді сіз жобаның тәуелділігін орнатуға дайынсыз.

  5. Сіз жаңа ғана клондалған пакетте талаптар.txt деп аталатын файл бар. Бұл файлды ашыңыз; Сіз paho-mqtt және pyserial пакеттерін, сондай-ақ олардың сәйкес нұсқаларын қажет ететінін көресіз. Сіз жүгіру арқылы файлдың мазмұнын қарай аласыз

    мысықтарға қойылатын талаптар.txt. Бұл пакеттерді орнату үшін ru

    pip install -r талаптар.txt.

  6. Бұл конфигурацияны аяқтайды.

Питонды қолданатын әрбір оқу құралы виртуалды ортаны еске түсіреді, тіпті бұл шағын жоба үшін де мен ескертемін. Виртуалды орталар тәуелділіктің нұсқаларын бөлуге, сондай -ақ python жұмыс процесін бөлуге мүмкіндік береді - бұл Python жұмыс кеңістігін ретке келтірудің жақсы әдісі. Егер сіз виртуалды ортаны бірінші рет қолдансаңыз, мұнда қысқаша оқыңыз.

Код не істейді …

Client.py файлы кітапханалардың қарапайым жиынтығын импорттайды, оның ішінде біздің arduinosensor. Негізгі функцияда біз Arduino -дан мәндерді аламыз, деректерді MQTT брокеріне жариялаймыз, содан кейін 10 секунд ұйықтаймыз.

Arduinosensor.py файлы - paho.mqtt кітапханасын айналдыратын, сондай -ақ Arduino жүктемесімен байланысу үшін пайдалы байланыс схемасын беретін көмекші әдістер жиынтығы (қараңыз: parse_payload). Әрине, код осы бөлімнің соңында қоса беріледі.

Сериялық монитор арқылы arduino элементімен байланысатын қарапайым клиент. Коды жария болған кезде осы жерден табуды күтіңіз:

fromimportlibimportimport_module
импорттар
импорт уақыты
импортардиносенсор
defmain ():
# анықталған клиент
start_time = time.time ()
whileTrue:
оқу = arduinosensor.get_values (os.environ.get ('PORT', «/dev/ttyUSB0»))
arduinosensor.pub («python_client», пайдалы жүктеме = оқу)
time.sleep (10.0- ((time.time () -start_time) %10.0))
if_name _ == «_ main_»:
негізгі ()

GitHub ❤ арқылы орналастырылған rawclient.py файлын қарау

5 -қадам: Барлығын біріктіру

Бізде Raspberry Python коды орнатылған және бізде Arduino клиент коды бар. Екі нысанды біріктіруге көшейік.

Алдымен Arduino -ны қосамыз және дұрыс конфигурацияны орнатамыз:

  1. Raspberry Pi терминалында жүгіріңіз

    python -m serial.tools.list_ports. Бұл сериялық байланысты қолдайтын барлық USB порттарының тізімін береді.

  2. Енді Arduino -ды қосыңыз және таңқурай оны тануы үшін шамамен 2 секунд күтіңіз. Енгізу

    python -m serial.tools.list_ports сізге тағы бір рет порттарды көрсетеді. Сіз қосымша листингті көре аласыз - егер бұл шынымен де солай болса, онда бұл жаңа жазба сіздің Arduino қосылған жазба болып табылады. Бұл «/dev/ttyUSB0» болуы мүмкін.

  3. Python3.7 client.py іске қосу арқылы виртуалды ортада python кодын іске қосып көріңіз. Бірнеше секунд күтіңіз (ең көп дегенде он) - егер сізде ерекше жағдай болса, бұл біздің таңқурайдағы pi портының мәнін өзгертуіміз керек дегенді білдіреді. Егер сіз код «келесі жүктеме жіберілді: …» деп басталатын жолды басып шығаратынын көрсеңіз, онда сіз Grafana -мен соңғы қадамға өтуіңіз керек. Кеңес: жүгіруді ұмытпаңыз

    экран -S python python клиентін бастамас бұрын, әйтпесе сіздің таңқурай pi -ге қосылымды тоқтатқан кезде сіз жұмыс істейтін python бағдарламасынан айырыласыз. Техникалық тұрғыдан алғанда, соңғы параметр ретінде «питонды» қатаң қолданудың қажеті жоқ, бірақ мен экран сеанстарына сәйкес атау беруді ұнатамын.

    1. COM портының мәнін өзгерту үшін кодты іске қоспас бұрын ортаның айнымалы мәнін орнату қажет болады. Сіз мұны python -m serial.tools.list_ports іске қосылған кезде шығатын мүмкін болатын барлық мәндер үшін сынап көруіңіз керек. Мысалы, егер мен алған жазбалардың саны екі болса және келесідей болса:

      • /dev/ttyUSB6
      • /dev/acm0

онда мен іске қосатын командалар:

PORT = «/dev/ttyUSB6» python3.7 client.pyжәне егер бұл жұмыс істемесе, мен кейіннен бұзар едім

PORT = «/dev/acm0» python3.7 client.py

Бұл қадамдарды орындағаннан кейін, код Grafana -ға қосылған кезде біздің бақылау тақтасын көруге мүмкіндік беретін біздің ағындық деректер қорына қосылады.

6 -қадам: Grafana конфигурациясы және бақылау тақтасын қарау

Grafana конфигурациясы және бақылау тақтасын қарау
Grafana конфигурациясы және бақылау тақтасын қарау

Жарайды, біз қазір соңғы кезеңдеміз! Енді біз Grafana көмегімен қарапайым бақылау тақтасын жасаймыз.

  1. Grafana данасына қосылыңыз. Сіз dzone мақаласының түпнұсқасындағы қадамдарды орындағандықтан, сіз әкімші пайдаланушысымен кіре аласыз. Жалғастырыңыз және кіріңіз.
  2. Сол жақ тақтада «бақылау тақталары» белгішесінің үстіне апарыңыз - төрт шаршы. «Басқару» түймесін басыңыз.
  3. Жаңа бетте «Жаңа бақылау тақтасын» нұқыңыз. Әрі қарай, «Жаңа панель қосу» түймесін басыңыз.
  4. Бұл Grafana редакторын ашады. Біз бір көрсеткішті көрсететін қарапайым көрініс жасаймыз.

    1. Оң жақ тақтада панель атауын «Асхана оқулары» сияқты мағыналы етіп өзгертіңіз. Қосымша сипаттаманы енгізуге болады.
    2. Төменгі сол жақта, «Сұрау», біз бір уақыттық серияны қосамыз. Grafana шынымен де жарқырайды, өйткені біз SQL интерфейсін басу арқылы интерфейспен оңай жасай аламыз. «Әдепкі» астында InfluxDB таңдаңыз.
    3. Енді, «А» оқу үшін - FROM сөйлемінде «airtestt» өлшемін таңдаңыз. Егер сіз arduinosensor.py get_values функциясындағы түпнұсқа питон кодын қарасаңыз, біз осы airtestt кестесін код ішінде анықтайтынымызды көресіз.
    4. Үлгі үшін «SELECT» тармағына өтіп, өрісті таңдайық (mq4). Бастапқыда біздің бақылау тақтасы бізге «mean ()» таңдауын береді - осы таңдауды нұқыңыз және «Жоюды» таңдаңыз. содан кейін қосу белгісін нұқыңыз және «Агрегаттар» астынан «differ ()» таңдаңыз. Бұл нақты уақыт нүктелерін көрсетеді. Біз басқа шараларды таңдай аламыз, бірақ әзірге біздің панель mq4 -тен нақты көрсеткіштерді көрсетеді.
    5. Жоғарғы оң жақтағы Сақтау түймесін басыңыз, сіз аяқтадыңыз!

Қиындықтар туындаған жағдайда, параметрлерді бекітілген скриншоттағылармен тексеруге болады.

7 -қадам: Қорытынды

Аяқтау
Аяқтау

Бұл оқулықта сіз бір түйін мен брокерден тұратын сенімді MQTT желісін құра алдыңыз. Сіз сондай -ақ Grafana көмегімен IOT деректеріңізді елестете алдыңыз. Ақырында, сіз осы қарапайым жүйелік архитектураны SSH қосылымы арқылы браузер мен компьютердің ыңғайлылығынан құра алдыңыз.

Біз жақсартқымыз келетін кейбір нәрселер бар.

  • Біздің диаграммадағы сенсор көрсеткіштері сенсордың дәл көрсеткіштері емес - бұл біздің сенсордан шығатын кернеу. Оларды калибрлеу қажет, толығырақ білу үшін осы блог жазбасын қараңыз.
  • Біздің таңқурай пи конфигурациясын arduino -ға қосылған ESP8266 тақтасының көмегімен және пиді толығымен алып тастау арқылы әлдеқайда жеңіл етуге болады. ESP8266 модулінің кіріспесін қараңыз.
  • Біз нақты оқиғалар туралы ескертулерді қосқымыз келуі мүмкін. Бақытымызға орай, Графана мұны істеу әдісін ұсынады.

Мен сіздің қиялыңызды IOT әлеміне баулу үшін қосымша оқуды қалдырамын. Мен сізді келесі нұсқаулықта күтемін!

Қосымша оқулар:

Ұсынылған: