Агуулгын хүснэгт:
- Алхам 1: Тоног төхөөрөмж + тохируулах
- Алхам 2: Цахилгаан хэлхээг тохируулах
- Алхам 3: Arduino код ба Flashing
- Алхам 4: Raspberry Pi код
- Алхам 5: Бүгдийг нэгтгэх
- Алхам 6: Графанагийн тохиргоо ба хяналтын самбарыг үзэх
- Алхам 7: Дуусгах
Видео: Grafana болон Raspberry Pi ашиглан агаарын чанарыг хянах: 7 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Би жижигхэн 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 кодыг ажиллуулж болно. Графана руу холбогддог.
-
Таны бөөрөлзгөнө интернетэд холбогдсон эсэхийг шалгаад котыг бүхэлд нь Raspberry Pi руу хуулахын тулд git clone командыг ашиглана уу. Таны тушаал дараах байдлаар харагдах болно.
git clone
-
Raspberry Pi -ийн терминал дотор лавлах командыг (cd) "raspberry_client" болгоно.
cd raspberry_client.
-
Та виртуал орчныг ашиглах хэрэгтэй болно*. Энгийн. Гүйх
python3 -m venv env. Энэ нь "env" гэж нэрлэгддэг виртуал орчныг бий болгож, бид хамаарлыг суулгахад ашиглах болно.
-
Одоо бид виртуал орчинд нэвтрэх хэрэгтэй. Ажиллуулах:
env/bin/идэвхжүүлэх эх сурвалж. Та одоо төслийн хамаарлыг суулгахад бэлэн боллоо.
-
Таны саяхан хувилсан багцад requirements.txt нэртэй файл байна. Энэ файлыг нээнэ үү; Бидэнд paho-mqtt болон pyserial багцууд, тэдгээрийн тус тусын хувилбарууд шаардлагатай байгааг та харах болно. Та ажиллуулснаар файлын агуулгыг үзэх боломжтой
муурны шаардлага.txt. Эдгээр багцуудыг суулгахын тулд ru
pip install -r шаардлага.txt.
- Энэ нь тохиргоог дуусгадаг.
Питон ашигладаг бүх хичээлүүд 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 -г холбож, зөв тохиргоог хийцгээе.
-
Raspberry Pi терминал дээрээ ажиллуулна уу
python -m serial.tools.list_ports. Энэ нь цуваа холболтыг дэмждэг бүх USB портуудыг жагсаах болно.
-
Одоо Arduino -г залгаж, Raspberry -ийг таних хүртэл 2 секунд орчим хүлээнэ үү. Оруулж байна
python -m serial.tools.list_ports дахин нэг удаа портуудыг танд харуулах болно. Нэмэлт жагсаалт гарч ирэх болно. Хэрэв энэ үнэхээр тийм бол энэ шинэ оруулга нь таны Arduino -д холбогдсон байна. Энэ нь "/dev/ttyUSB0" байх магадлалтай.
-
Python3.7 client.py програмыг ажиллуулснаар виртуал орчныхоо хүрээнд python кодыг ажиллуулж үзээрэй. Хэдэн секунд хүлээгээрэй (хамгийн ихдээ арван) - хэрэв танд онцгой тохиолдол тулгарвал бид бөөрөлзгөнө pi дээрх ком портынхоо утгыг өөрчлөх шаардлагатай болно гэсэн үг юм. Хэрэв та код нь "Дараах ачааг илгээсэн: …" гэж эхэлсэн мөрийг хэвлэж байгааг олж харвал та Grafana -тай эцсийн алхам руу орох болно. Зөвлөгөө: гүйхээ мартуузай
дэлгэц -S python python клиентийг ажиллуулахаасаа өмнө, өөрөөр хэлбэл та бөөрөлзгөнө pi -тойгоо холбогдохоо больсон тохиолдолд ажиллаж байгаа питон програмаа алдах болно. Техникийн хувьд та "python" -ийг хамгийн сүүлийн параметр болгон ашиглах шаардлагагүй, гэхдээ би дэлгэцийнхээ сессийг үүний дагуу нэрлэх дуртай.
-
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 ашиглан энгийн хяналтын самбар үүсгэх болно.
- Grafana дансандаа холбогдоно уу. Та dzone -ийн анхны нийтлэлийн алхамуудыг дагаж мөрдсөн тул администратор хэрэглэгчтэйгээ нэвтрэх боломжтой байх ёстой. Үргэлжлүүлэн нэвтэрнэ үү.
- Зүүн талын самбар дээр "хяналтын самбар" дүрс дээр дөрвөн дөрвөлжин дээр хулганаа дарна уу. "Удирдах" дээр дарна уу.
- Шинэ хуудсан дээр "Шинэ хяналтын самбар" дээр дарна уу. Цаашилбал "Шинэ самбар нэмэх" дээр дарна уу.
-
Энэ нь Grafana редакторыг нээнэ. Бид нэг хэмжигдэхүүнийг харуулсан энгийн дүр төрхийг бий болгоно.
- Баруун талд байгаа самбарын нэрийг "Гал тогооны уншлага" гэх мэт утга учиртай болгож өөрчил. Та мөн нэмэлт тайлбар оруулах боломжтой.
- Зүүн доод талд "Query" дээр бид ганцхан цагийн цуврал нэмэх болно. Графана энд үнэхээр гэрэлтэж байна, учир нь бид товшилтод суурилсан интерфэйсээр SQL хэллэгийг хялбархан үүсгэж чадна. "Анхдагч" хэсэгт InfluxDB -ийг сонгоно уу.
- Одоо "А" -г уншихын тулд FROM хэсэгт "airtestt" хэмжилтийг сонгоно уу. Хэрэв та arduinosensor.py -ийн get_values функц дахь анхны питон кодыг харвал бид энэ airtestt хүснэгтийг код дотор тодорхойлж байгааг харах болно.
- Дээж авахын тулд "SELECT" хэсэгт орж, талбарыг (mq4) сонгоно уу. Эхэндээ манай хяналтын самбар бидэнд "дундаж ()" сонголтыг өгөх болно - энэ сонголтыг дарж "Устгах" -ыг сонгоно уу. Дараа нь нэмэх тэмдэг дээр дарж "Нийлүүлэлтүүд" хэсэгт "ялгаатай ()" -г сонгоно уу. Энэ нь тодорхой цагийн цэгүүдийг харуулах болно. Бид бусад арга хэмжээг сонгох боломжтой боловч одоогоор манай самбар mq4 -ээс ялгаатай уншилтуудыг харуулах болно.
- Баруун дээд буланд байгаа Хадгалах дээр дарна уу, та үүнийг хийж чадна!
Хэрэв танд асуудал тулгарвал та хавсаргасан дэлгэцийн агшин дээрх тохиргоогоо баталгаажуулах боломжтой.
Алхам 7: Дуусгах
Энэхүү гарын авлагад та нэг зангилаа, брокероос бүрдсэн хүчирхэг MQTT сүлжээг бий болгох боломжтой болсон. Та Grafana ашиглан IOT өгөгдлөө төсөөлж чадсан. Эцэст нь та энэхүү энгийн системийн архитектурыг SSH холболт ашиглан хөтөч болон компьютерийн тав тухтай байдлаас бүрдүүлж чадсан юм.
Бидний сайжруулахыг хүсч болох зарим зүйл бий.
- Манай график дээрх мэдрэгчийн уншилт нь үнэн зөв мэдрэгчийн уншилт биш бөгөөд энэ нь бидний мэдрэгчийн гаралтын хүчдэл юм. Тэд шалгалт тохируулга хийх шаардлагатай байгаа тул энэ блог бичлэгээс дэлгэрэнгүй мэдээлэл аваарай.
- Манай бөөрөлзгөнө pi -ийн тохиргоог arduino -тэй холбогдсон ESP8266 хавтанг ашиглан пи -ийг бүрмөсөн арилгаснаар илүү хөнгөн болгож болно. ESP8266 модулийн танилцуулгыг үзээрэй.
- Бид тодорхой үйл явдлын талаар анхааруулга нэмж оруулахыг хүсч магадгүй юм. Аз болоход Графана үүнийг хийх аргыг санал болгож байна.
IOT -ийн ертөнцөд таны төсөөллийг татахын тулд би цааш нь унших болно. Дараагийн зааварчилгаанд уулзахыг тэсэн ядан хүлээж байна!
Нэмэлт уншлага:
Зөвлөмж болгож буй:
Python ашиглан Raspberry Pi болон AIS328DQTR ашиглан хурдатгалыг хянах: 6 алхам
Python ашиглан Raspberry Pi болон AIS328DQTR ашиглан хурдатгалыг хянах нь: Физикийн зарим хуулийн дагуу хурдатгал нь хязгаарлагдмал гэж би бодож байна. Далайн эрэг дээрх хамгийн хурдан амьтан хааяадаа олзоо барихын тулд дээд хурдыг ашигладаг
Агаарын чанарыг бохирдуулах хэсгүүдэд хяналт тавих систем: 4 алхам
Бохирдсон агаарын чанарыг хянах систем: INTRO: 1 Энэхүү төсөлд би өгөгдөл харуулах, SD карт дээр өгөгдөл нөөцлөх, IOT ашиглан тоосонцор илрүүлэгчийг хэрхэн бүтээхийг үзүүлсэн. Неопикселийн цагираг дэлгэц нь агаарын чанарыг илтгэнэ. 2 Агаарын чанарын асуудал улам бүр чухал болж байна
Python ашиглан Raspberry Pi болон MMA7455 ашиглан хурдатгалын өөрчлөлтийг хянах: 6 алхам
Python ашиглан Raspberry Pi болон MMA7455 ашиглан хурдатгалын өөрчлөлтийг хянах: Би унаагүй, би таталцлыг туршиж байсан. Энэ нь одоо ч ажиллаж байна … Хурдасч буй сансрын хөлгийн дүрслэл нь таталцлын хүчний цаг хугацааны өргөтгөлийн улмаас явагч онгоцны хамгийн өндөр цэг дэх цаг нь сууринаас илүү хурдан байх болно гэдгийг тайлбарлав. Зарим
AirCitizen - Агаарын чанарыг хянах: 11 алхам (зурагтай)
AirCitizen - Агаарын чанарыг хянах: Сайн байцгаана уу! Өнөөдөр бид танд AirCitizenPolytech багийн AirCitizen төслийг хэрхэн яаж хуулбарлахыг заах болно!-'OpenAir / Таны агаар юу вэ?' Төсөл, AirCitizen төсөл нь иргэдэд чанарыг нь үнэлэх боломжийг олгох зорилготой
Бөөрөлзгөнө Pi болон Weewx ашиглан 5 -аас 1 цаг агаарын станц (бусад цаг агаарын станцууд нийцтэй байдаг): 5 алхам (зурагтай)
Acurite 5 in 1 цаг уурын станц нь Raspberry Pi болон Weewx -ийг ашигладаг (бусад цаг уурын станцууд хоорондоо нийцтэй байдаг): Би Acurite 5 -ийг 1 цаг уурын станц худалдаж аваад би хол байхдаа гэртээ байгаа цаг агаарыг шалгахыг хүсч байсан. Гэртээ ирээд үүнийг тохируулсны дараа би дэлгэцээ компьютерт холбох эсвэл тэдний ухаалаг зангилааг худалдаж авах ёстой гэдгээ ойлгосон