Mundarija:

UCL - IIOT issiqxonasi: 11 qadam
UCL - IIOT issiqxonasi: 11 qadam

Video: UCL - IIOT issiqxonasi: 11 qadam

Video: UCL - IIOT issiqxonasi: 11 qadam
Video: UCL-IIoT-Datalogger 2024, Iyul
Anonim
UCL - IIOT issiqxonasi
UCL - IIOT issiqxonasi

Bu loyiha bizning issiqxona bilan oldingi loyihamizning kengaytmasi (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Ushbu loyihada biz ma'lumotlar bazasini qo'shdik, u erda biz barcha ma'lumotlarni yozib olamiz va keyin umumiy nuqtai nazar bilan qizil tugun bilan tasvirlaymiz.

Ma'lumotlar bazamizga kiradigan tarkib - namlik, tuproqning harorati va namligi, bu turli diagrammalarda ko'rsatilgan.

Dataloggin bilan bir qatorda, biz issiqxonada qaysi profil faolligini nazorat qila olamiz va uni masofadan boshqaramiz.

Keyin biz nasos va fanni qo'lda boshqarish imkoniyatiga egamiz.

1 -qadam: O'rnatish bo'yicha qo'llanma

O'rnatish bo'yicha qo'llanma
O'rnatish bo'yicha qo'llanma

Birinchi qadam - har xil komponentlarni o'rnatish.

Qavslar () ichida biz komponenta qayerga ulanganligini sanab o'tdik. Masalan, Arduino Raspberry Pi -ga USB kabeli orqali ulangan.

Ishlatilgan apparat:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Tuproq gigrometri (Arduino)
  • DHT11 sensori (Arduino)
  • HG-320 suv osti nasosi (o'rni)
  • 5V o'rni (Arduino)
  • Kompyuter fanati (o'rni)
  • 230V quvvat manbai (nasos)

Ishlatilgan dasturiy ta'minot:

  • Raspbian (Raspberry Pi uchun OS)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Qizil tugun (Raspberry Pi)- Pythonshell- Summariser- MySQL- boshqaruv paneli
  • MySQL -server (freemysqlhosting.net)

Avval siz apparat tarkibiy qismlarini ulashingiz kerak bo'ladi, shuning uchun issiqxonani qurish uchun ushbu qo'llanmani bajaring: O'rnatish bo'yicha qo'llanma.

Keyin Raspberry Pi -ga Raspbian OS -ni o'rnatishingiz kerak bo'ladi. Shundan so'ng siz Python -ni o'rnatishingiz va keyin python kutubxonalarini o'rnatishingiz kerak bo'ladi.

Keyingi qadam-Node-Redni Raspberry Pi-ga o'rnatish, so'ngra palletlar menejeriga o'tish va yuqorida aytib o'tilgan modullarni o'rnatish.

Keyin Free MySQL Server saytiga o'ting va bepul MySQL -server yarating.

Bularning barchasi bajarilgach, siz piton skriptini Raspberry Pi-ga o'tkazishga, Node-Red skriptini import qilishga va Arduino kodini yuklashga tayyormiz.

2 -qadam: Boshqaruv vitrini

Image
Image

3 -qadam: Loyihada ishlatiladigan qismlar/dasturlar ro'yxati

Issiqxonani yaratish uchun biz quyidagi texnologiyadan foydalanganmiz

  • Arduino
  • Raspberry Pi
  • Qizil tugun
  • Python
  • PHPMyAdmin

4 -qadam: I/0 ro'yxati

Ulanish diagrammasi
Ulanish diagrammasi

5 -qadam: ulanish sxemasi

6 -qadam: Arduino kodi

Arduino kodi sensorlar tomonidan o'lchangan ma'lumotlarni Raspberry Pi tomonidan o'qiladigan va ma'lumotlar bazasiga uzatiladigan ketma -ket ulanishga chop etish orqali ishlaydi.

Arduino -da Arduino o'qiydigan Raspberry Pi -ga ulangan ba'zi raqamli kirish pinlari mavjud va agar uchtasidan biri YUQOR bo'lsa, IF so'zi tufayli profil o'zgaradi.

Bundan tashqari, biz kodni Millis -ni kechiktirish o'rniga ishlatish uchun yangiladik, bu esa kodning qolgan qismini va qolgan qismini har doim eski kechikish oralig'ida o'qish imkonini beradi.

7 -qadam: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Biz Arduino -ni Internet va MySQL ma'lumotlar bazasiga ulash uchun Raspberry Pi 3 B+ dan foydalanardik. Bu bizga sensorlardan ma'lumotlarni saqlashga va oxirgi foydalanuvchi uchun vizual interfeys yaratishga imkon berdi. Foydalanuvchi interfeysi uchun biz boshqaruv paneli palitrasi bilan Node-Reddan foydalanganmiz.

Sensor ma'lumotlarini Node-Red-da ko'rsatishimizdan oldin, ma'lumotlarni MySQL ma'lumotlar bazasiga yuklash kerak edi va buning uchun biz Raspberry Pi-da ishlaydigan Python skriptini yaratdik.

8 -qadam: Python

Python
Python

Python skripti Arduino-dan keladigan ketma-ket aloqa ma'lumotlarini olish uchun ishlatiladi. Keyin skript ma'lumotlarni MySQL ma'lumotlar bazasiga yuboradi.

Biz ikkita kutubxonadan foydalandik: pyserial va mysqlclient.

Shunday qilib, birinchi qadam bu ikkita kutubxonani yuklab olish bo'ladi:

  1. PySerial
  2. MySQL mijozi

PySerial ketma-ket aloqa orqali Arduino-dan ma'lumotlarni yig'ish uchun ishlatiladi.

qurilma = '/dev/ttyUSB0'

arduino = serial. Serial (qurilma, 9600)

Birinchi satr COM-portimizni aniqlash uchun ishlatiladi. Raspberry Pi -da biz /dev /ttyUSB0 bo'lib, biz uni Arduino uchun ishlatamiz. Ikkinchi qator Arduino uchun ketma -ket portni ochish uchun. Biz faqat qaysi MAQOMOTI portini va ulanish tezligini aniqlaymiz.

Kodning qolgan qismi vaqt oralig'ida ishlaydi.

Keyin biz bir nechta Try and Except bloklaridan foydalanamiz. Birinchidan, kod Try blokida ishlashga harakat qilmoqda, agar bu bajarilmasa, u Except blokida ishlaydi. Ammo agar "Try" bloki yaxshi ishlasa, u "Except" blokini ishlatmaydi, faqat kodning qolgan qismini ishlaydi.

Shunday qilib, Try bloklari ichida bizda ketma-ket aloqani o'qib, keyin MySQL ma'lumotlar bazamizga yuboradigan kod bor.

gigrolist = arduino.readlines (1)

templist = arduino.readlines (2) humidlist = arduino.readlines (3)

Shunday qilib, yuqoridagi kod ketma-ket aloqa liniyalarini o'qish uchun. Kod oxiridagi raqam ketma -ket o'qilgan qatorni belgilaydi. Shunday qilib, bu chiziqlar turli xil o'zgaruvchilarga bo'linadi.

Arduino -dan ma'lumotlar qabul qilinganda, biz ma'lumotlarni MySQL -serverimizga yuborish uchun mysqlclient modulidan foydalanganmiz.

db = _mysql.connect (host = "sql7.freemysqlhosting.net", user = "sql7256552", passwd = "3ebtbP8FQ2", db = "sql7256552")

Bu chiziq MySQL ma'lumotlar bazasiga ulanish uchun mo'ljallangan. U server, foydalanuvchi nomi, parol va qaysi ma'lumotlar bazasiga ulanishi kerakligini ko'rsatadi. Bu erda siz MySQL ma'lumotlar bazasiga ulanishni ko'rsatishingiz kerak.

db.query ("INSERTINTO` TempHumid` ("temp`,` humid`, `hygro`) VALUES (%s, %s, %s)" %(temp, nam, gigro))

Shunday qilib, biz JB ulanishini olamiz va SQL so'rovini qilamiz. So'rov shuni ko'rsatadiki, qiymatlarni "TempHumid" jadvaliga, so'ngra "temp", "nam" va "gigro" ustunlariga kiritish kerak. Oxirgi qism "(%s, %s, %s)" satrlarni formatlash va ma'lumotlar bazasiga o'qiy oladigan format berish uchun ishlatiladi.

Va bu harakatlarning hammasi bir muncha vaqt ichida amalga oshiriladi, shunda biz ma'lumotlarni MySQL serveriga yuborishni davom ettiramiz.

Agar siz barcha kodlarni ko'rishni xohlasangiz, python skriptini (TempHumid.py) yuklab oling.

9 -qadam: MySQL

MySQL
MySQL
MySQL
MySQL

MySQL -server uchun biz www.freemysqlhosting.net saytida bepul xizmatdan foydalanardik. Biz Raspberry Pi -da mahalliy server yaratishimiz mumkin edi, lekin biz uni bulutga/Internetga to'liq ulash uchun bepul xizmat bilan bordik.

MySQL -ga kirish uchun siz phpmyadmin.co saytiga kirishingiz va freemysqlhosting hisobingizdagi hisob ma'lumotlari bilan kirishingiz kerak.

Ichkarida bo'lganingizda "TempHumid" deb nomlangan jadval yaratishingiz kerak, bu jadval ichida "ID", "temp", "nam" va "gigro" deb nomlangan 4 ta ustun yaratish kerak. Birinchi ustun (ID) siz A_I (Avtomatik o'sish) katagiga belgi qo'yishingiz kerak. Shunday qilib, ID ustuni har bir ma'lumot to'plamiga identifikator beradi. Keyingi barcha ustunlar INT (tamsayı) sifatida o'rnatilishi va standart qiymatni NULL ga o'rnatishi kerak.

10-qadam: Qizil tugun

Qizil tugun
Qizil tugun
Qizil tugun
Qizil tugun
Qizil tugun
Qizil tugun

Loyihamizda biz grafik interfeys yaratish uchun Node-Reddan foydalanganmiz. Node-Red Raspberry Pi-da ishlaydi va MySQL ma'lumotlar bazamizdan ma'lumotlarni yig'adi va bu ma'lumotlarni pichoq shaklidagi o'lchagichlar va grafik jadvallar yordamida ko'rsatadi, shunda oxirgi foydalanuvchi ma'lumotlarni kuzatishi mumkin. Node-Red-ning aqlli tomoni shundaki, uni har qanday qurilmada ko'rish mumkin, ya'ni mazmuni ko'rib chiqilayotgan qurilma uchun sayt o'lchamlari o'zgartiriladi.

Node-Red dasturini o'rnatish uchun 1-qadamga qarang va "Node-Red.docx" nomli hujjatni yuklab oling. Keyin nusxa ko'chiring va o'ng yuqori burchakdagi import funktsiyasi orqali Node-Red-ga joylashtiring.

Shundan so'ng, MySQL ma'lumotlar bazasi uchun JB sozlamalarini o'zgartiring.

Tavsiya: