Агуулгын хүснэгт:

Grafana болон Raspberry Pi ашиглан агаарын чанарыг хянах: 7 алхам
Grafana болон Raspberry Pi ашиглан агаарын чанарыг хянах: 7 алхам

Видео: Grafana болон Raspberry Pi ашиглан агаарын чанарыг хянах: 7 алхам

Видео: Grafana болон Raspberry Pi ашиглан агаарын чанарыг хянах: 7 алхам
Видео: Building Dashboards with Grafana on Raspberry Pi 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/Эквивалент
  • Эрэгтэй эрэгтэй USB төрлийн B төрөл А хүртэл (таны Arduino -той хамт ирэх ёстой)
  • Аливаа MQ* мэдрэгч (би MQ-2, 4, 5, 135-ийг ашигласан)
  • Төрөл бүрийн холбогч утас
  • мини талхны самбар

Тохируулах

Энэхүү гарын авлага нь Arduino болон Raspberry Pi -ийг ашиглах талаар товч танилцуулга хийх зорилготой бөгөөд энэ нь линукс терминалыг хэрхэн ашиглах талаар мэдэх болно. Гэсэн хэдий ч би Arduino эсвэл Raspberry Pi дээр ажиллаж байсан туршлагатай гэж бодохгүй байна - танд хэрэгтэй бүх зүйл бол тоног төхөөрөмж, сониуч зан юм.

  • Та энэ гарын авлагад заасан алхмуудыг хийх ёстой.
  • Raspberry Pi -тай интерфэйс хийхийн тулд Secure Shell (SSH) ашиглахыг зөвлөж байна, учир нь энэ нь командыг хялбархан оруулах боломжийг олгодог. SSH -ээр холбогдох нь Windows, Linux эсвэл Mac ашиглаж байгаа эсэхээс ялгаатай. Linux болон Mac -ийг ssh -ийн хувьд ашиглахад тун хялбар байдаг (SSH -ийг нээх тушаал нь шууд утгаараа ssh юм). Windows -д зориулсан Putty програмыг үзээрэй. Төслийн явцад сессийг хадгалах нэг арга болох дэлгэцийг үзэхийг танд зөвлөж байна.
  • Та мөн Python -ийг Raspbian дээр суулгах хэрэгтэй болно. Эдгээр алхмуудыг хийж дуусаад би өмнөх төслөөсөө өмнө хэвтэж байсан хуучин SD картны хуулбарыг Python суулгасан байсан. Хэрэв таны NOOBS/Raspbian түгээлтэд Python 3.7 ба түүнээс дээш хувилбар байхгүй бол Python -ийг эх сурвалжаас хөрвүүлэхийн тулд эдгээр алхмуудыг шалгаарай.
  • Gasp -тэй танилцаж, үүнийг таны Raspbian дистрибьютерт суулгаагүй байгаа тохиолдолд суулгаарай.

Алхам 2: Цахилгаан хэлхээг тохируулах

Цахилгаан хэлхээг тохируулах
Цахилгаан хэлхээг тохируулах

Та Arduino дээр тохируулах шаардлагатай нэг хэлхээ бий.

Би лавлагаа болгон ашиглаж болох схемийг өгсөн.

Бүх MQ-* хийн мэдрэгчийн давуу тал нь 5 вольт ба газардуулгын холболтыг хийсний дараа Arduino-ийн аналог тээглүүрийн оролтын эсэргүүцэл нь мэдрэгчийг зөв ажиллах боломжийг олгодог явдал юм.

Мэдрэгчийн таслах самбараас авсан аналог холболтыг дижитал холболт биш харин Arduino -тэй холбоход анхаарна уу. Хэрэв та тест хийхдээ маш нарийн хүрээний утгатай тулгарвал эхлээд энд байгаа холболтоо шалгахыг зөвлөж байна.

Алхам 3: Arduino код ба Flashing

Үүнийг дагах алхам дээр бид Arduino самбарыг Raspberry Pi -тэй холбох болно. Үүнийг хийхээс өмнө бид мэдрэгчийг уншихын тулд Arduino кодыг асааж, мэдрэгчийн өгөгдлийг Raspberry Pi руу дамжуулах хэрэгтэй. Үүнийг кодыг ихэвчлэн Arduino руу түлхэх замаар хийж болно. Би Arduino IDE -ээс гадна гуравдагч талын хэрэгслийг ашигласан тул дээд хэсэгт нь Arduino номын санг оруулсан болно. Бусад төслүүдэд энэ нь шаардлагагүй юм.

Энэ хэсгийн төгсгөлд хуулах/буулгах кодыг шалгана уу.

Код юу хийдэг вэ

Энэ кодыг дөрвөн өөр мэдрэгчээс мэдээлэл авахаар тохируулсан бөгөөд хэрэв та өөр өөр төрлийн мэдрэгч ашигладаг бол Цуваа портоос илгээсэн гаралтын дохионы нэрийг өөрчлөх нь ухаалаг хэрэг болно.

Raspberry Pi нь биднээс өгөгдөл хүсч байгаа эсэхийг шалгах болно. Тиймээс, бид Raspberry Pi нь Arduino -д өгөгдөл авах хүсэлт байнга тавьдаг маш энгийн Master/Slave тохиргоог ашиглаж байна. Энэ нь 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);
Цуваа эхлэх (9600);
}
/* valuePrint нь энэ шошгоны утгыг хэвлэнэ.
* Зөвхөн гаж нөлөө үзүүлдэг.
*/
voidvaluePrint (String шошго, унших) {
Цуваа.хэвлэх (шошго);
Serial.print ("=");
Цуваа.хэвлэх (унших);
}
voidloop () {
// ирж буй цуваа өгөгдөл байгаа эсэхийг үзээрэй.
if (Serial.available ()> 0) {
// цуваа буфер дахь хамгийн эртний байтыг уншина уу:
// "Та Serial.read руу залгахад байтыг хүлээн авах буферээс устгаж, таны код руу буцаана."
incomingByte = Serial.read ();
// хэрэв энэ нь том H (ASCII 72) бол утгыг уншиж, бөөрөлзгөнө хост руу илгээнэ үү.
// TODO: мессеж үргэлж ижил байх ёстой
if (incomingByte == 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/идэвхжүүлэх эх сурвалж. Та одоо төслийн хамаарлыг суулгахад бэлэн боллоо.

  5. Таны саяхан хувилсан багцад requirements.txt нэртэй файл байна. Энэ файлыг нээнэ үү; Бидэнд paho-mqtt болон pyserial багцууд, тэдгээрийн тус тусын хувилбарууд шаардлагатай байгааг та харах болно. Та ажиллуулснаар файлын агуулгыг үзэх боломжтой

    муурны шаардлага.txt. Эдгээр багцуудыг суулгахын тулд ru

    pip install -r шаардлага.txt.

  6. Энэ нь тохиргоог дуусгадаг.

Питон ашигладаг бүх хичээлүүд Virtual env -ийн талаар дурьддаг бөгөөд энэ жижиг төслийн хувьд ч гэсэн би дурдах болно. Виртуал орчин нь хараат байдлын хувилбарыг салгахаас гадна python -ийн ажлын урсгалыг салгах боломжийг олгодог - Энэ бол Python -ийн ажлын талбарыг цэгцлэх сайхан арга юм. Хэрэв та виртуал орчинг анх удаа ашиглаж байгаа бол эндээс товч уншаарай.

Код юу хийдэг вэ …

Client.py файл нь өөрийн arduinosensor зэрэг энгийн номын санг импортлох болно. Үндсэн функц дээр бид Arduino -аас утгыг авч, өгөгдлийг MQTT брокерт нийтэлж, дараа нь 10 секундын турш унтах болно.

Arduinosensor.py файл нь paho.mqtt номын сангийн эргэн тойронд орших туслах аргуудын багц бөгөөд Arduino -ийн ашигтай ачаалалтай харилцах зарим ашигтай схемийг өгдөг (parse_payload -ийг үзнэ үү). Мэдээжийн хэрэг, кодыг энэ хэсгийн төгсгөлд хавсаргасан болно.

Цуваа монитор ашиглан arduino зүйлтэй харилцдаг энгийн үйлчлүүлэгч. Кодыг нийтэд зарлах үед эндээс олох болно гэж найдаж байна:

importimimimportimport_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 -г залгаж, Raspberry -ийг таних хүртэл 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 -тай холбогдоход бидний хяналтын самбарыг үзэх боломжийг олгодог манай fluxdb мэдээллийн баазын дансанд өгөгдөл оруулах болно.

Алхам 6: Графанагийн тохиргоо ба хяналтын самбарыг үзэх

Графана тохиргоо ба хяналтын самбарыг үзэх
Графана тохиргоо ба хяналтын самбарыг үзэх

За, бид одоо эцсийн шатанд байна! Бид одоо Grafana ашиглан энгийн хяналтын самбар үүсгэх болно.

  1. Grafana дансандаа холбогдоно уу. Та dzone -ийн анхны нийтлэлийн алхамуудыг дагаж мөрдсөн тул администратор хэрэглэгчтэйгээ нэвтрэх боломжтой байх ёстой. Үргэлжлүүлэн нэвтэрнэ үү.
  2. Зүүн талын самбар дээр "хяналтын самбар" дүрс дээр дөрвөн дөрвөлжин дээр хулганаа дарна уу. "Удирдах" дээр дарна уу.
  3. Шинэ хуудсан дээр "Шинэ хяналтын самбар" дээр дарна уу. Цаашилбал "Шинэ самбар нэмэх" дээр дарна уу.
  4. Энэ нь Grafana редакторыг нээнэ. Бид нэг хэмжигдэхүүнийг харуулсан энгийн дүр төрхийг бий болгоно.

    1. Баруун талд байгаа самбарын нэрийг "Гал тогооны уншлага" гэх мэт утга учиртай болгож өөрчил. Та мөн нэмэлт тайлбар оруулах боломжтой.
    2. Зүүн доод талд "Query" дээр бид ганцхан цагийн цуврал нэмэх болно. Графана энд үнэхээр гэрэлтэж байна, учир нь бид товшилтод суурилсан интерфэйсээр SQL хэллэгийг хялбархан үүсгэж чадна. "Анхдагч" хэсэгт InfluxDB -ийг сонгоно уу.
    3. Одоо "А" -г уншихын тулд FROM хэсэгт "airtestt" хэмжилтийг сонгоно уу. Хэрэв та arduinosensor.py -ийн get_values функц дахь анхны питон кодыг харвал бид энэ airtestt хүснэгтийг код дотор тодорхойлж байгааг харах болно.
    4. Дээж авахын тулд "SELECT" хэсэгт орж, талбарыг (mq4) сонгоно уу. Эхэндээ манай хяналтын самбар бидэнд "дундаж ()" сонголтыг өгөх болно - энэ сонголтыг дарж "Устгах" -ыг сонгоно уу. Дараа нь нэмэх тэмдэг дээр дарж "Нийлүүлэлтүүд" хэсэгт "ялгаатай ()" -г сонгоно уу. Энэ нь тодорхой цагийн цэгүүдийг харуулах болно. Бид бусад арга хэмжээг сонгох боломжтой боловч одоогоор манай самбар mq4 -ээс ялгаатай уншилтуудыг харуулах болно.
    5. Баруун дээд буланд байгаа Хадгалах дээр дарна уу, та үүнийг хийж чадна!

Хэрэв танд асуудал тулгарвал та хавсаргасан дэлгэцийн агшин дээрх тохиргоогоо баталгаажуулах боломжтой.

Алхам 7: Дуусгах

Дуусгах
Дуусгах

Энэхүү гарын авлагад та нэг зангилаа, брокероос бүрдсэн хүчирхэг MQTT сүлжээг бий болгох боломжтой болсон. Та Grafana ашиглан IOT өгөгдлөө төсөөлж чадсан. Эцэст нь та энэхүү энгийн системийн архитектурыг SSH холболт ашиглан хөтөч болон компьютерийн тав тухтай байдлаас бүрдүүлж чадсан юм.

Бидний сайжруулахыг хүсч болох зарим зүйл бий.

  • Манай график дээрх мэдрэгчийн уншилт нь үнэн зөв мэдрэгчийн уншилт биш бөгөөд энэ нь бидний мэдрэгчийн гаралтын хүчдэл юм. Тэд шалгалт тохируулга хийх шаардлагатай байгаа тул энэ блог бичлэгээс дэлгэрэнгүй мэдээлэл аваарай.
  • Манай бөөрөлзгөнө pi -ийн тохиргоог arduino -тэй холбогдсон ESP8266 хавтанг ашиглан пи -ийг бүрмөсөн арилгаснаар илүү хөнгөн болгож болно. ESP8266 модулийн танилцуулгыг үзээрэй.
  • Бид тодорхой үйл явдлын талаар анхааруулга нэмж оруулахыг хүсч магадгүй юм. Аз болоход Графана үүнийг хийх аргыг санал болгож байна.

IOT -ийн ертөнцөд таны төсөөллийг татахын тулд би цааш нь унших болно. Дараагийн зааварчилгаанд уулзахыг тэсэн ядан хүлээж байна!

Нэмэлт уншлага:

Зөвлөмж болгож буй: