Съдържание:

UCL - IIOT Оранжерия: 11 стъпки
UCL - IIOT Оранжерия: 11 стъпки

Видео: UCL - IIOT Оранжерия: 11 стъпки

Видео: UCL - IIOT Оранжерия: 11 стъпки
Видео: UCL-IIoT-Datalogger 2024, Ноември
Anonim
UCL - Оранжерия IIOT
UCL - Оранжерия IIOT

Този проект е продължение на нашия по-ранен проект с оранжерията (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

В този проект добавихме база данни, където регистрираме всички наши данни и след това ги визуализираме с node-red за по-голям преглед.

Съдържанието, което регистрираме в нашата база данни, е Влажност, Температура и влага на почвата, което е показано в различни диаграми.

Освен dataloggin, ние също можем да контролираме кой профил е активен в оранжерията и да го контролираме дистанционно.

Тогава ние също можем да управляваме помпата и вентилатора ръчно.

Стъпка 1: Ръководство за инсталиране

Ръководство за инсталиране
Ръководство за инсталиране

Първата стъпка е да инсталирате всички различни компоненти.

Вътре в скобите () изброихме къде е свързан компонентът. Така например, Arduino е свързан към Raspberry Pi чрез USB кабел.

Използван хардуер:

  • Arduino (Raspberry Pi)
  • Малина Pi 3 B+
  • Почвен хигрометър (Arduino)
  • DHT11 сензор (Arduino)
  • Потопяема водна помпа HG-320 (реле)
  • 5V реле (Arduino)
  • Компютърен вентилатор (реле)
  • 230V захранване (помпа)

Използваният софтуер:

  • Raspbian (ОС за Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Табло за управление
  • MySQL сървър (freemysqlhosting.net)

Първо ще трябва да свържете хардуерните компоненти, така че следвайте това ръководство, за да изградите оранжерията: Ръководство за инсталиране.

След това ще трябва да инсталирате Raspbian OS на вашия Raspberry Pi. След това ще трябва да инсталирате Python и след това да инсталирате библиотеките на python.

Следващата стъпка е да инсталирате Node-Red на Raspberry Pi, след което отидете до мениджъра на палитри и инсталирайте модулите, посочени по-рано.

След това отидете на този сайт Free MySQL Server и създайте безплатен MySQL сървър.

Когато всичко това е направено, вие сте готови да прехвърлите скрипта на python към вашия Raspberry Pi, да импортирате скрипта Node-Red и да качите кода за Arduino.

Стъпка 2: Витрина на контрола

Image
Image

Стъпка 3: Списък на части/софтуер, използвани в проекта

Използвахме следната технология за направата на оранжерията

  • Arduino
  • Малина Пи
  • Node-Red
  • Python
  • PHPMyAdmin

Стъпка 4: I/0 списък

Електрическа схема
Електрическа схема

Стъпка 5: Схема на свързване

Стъпка 6: Кодът на Arduino

Кодът на Arduino работи, като отпечатва данните, измерени от сензорите, към серийната връзка, където се чете от Raspberry Pi и се прехвърля в базата данни.

Arduino също има някои цифрови входни щифтове, свързани с Raspberry Pi, които Arduino чете и ако един от трите стане HIGH, профилът ще се промени поради IF изявление.

Също така сме надстроили кода, за да използваме Millis вместо забавяне, което позволява бутоните и останалата част от кода да се четат през цялото време вместо интервал от старото забавяне.

Стъпка 7: Raspberry Pi 3 B+

Малина Pi 3 B+
Малина Pi 3 B+

Използвахме Raspberry Pi 3 B+ за свързване на нашия Arduino с интернет и MySQL база данни. Това ни даде възможност да съхраняваме данни от нашите сензори и да направим визуален интерфейс за крайния потребител. За потребителския интерфейс използвахме Node-Red с палитрата Dashboard.

Но преди да можем да покажем нашите сензорни данни на Node-Red, имахме нужда от начин да качим данните в база данни MySQL и за това направихме скрипт на Python, който да работи на нашия Raspberry Pi.

Стъпка 8: Python

Python
Python

Скриптът Python се използва за получаване на данни от серийната комуникация, идваща от Arduino. След това скриптът изпраща данните в база данни MySQL.

Използвахме две библиотеки, pyserial и mysqlclient.

Така че първата стъпка би била да изтеглите тези две библиотеки:

  1. PySerial
  2. MySQLclient

PySerial се използва за събиране на данни от Arduino чрез серийна комуникация.

устройство = '/dev/ttyUSB0'

arduino = сериен. Сериен (устройство, 9600)

Първият ред се използва за определяне на нашия COM-порт. На Raspberry Pi използваме /dev /ttyUSB0 за Arduino. Вторият ред е за отваряне на серийния порт към Arduino. Ние просто дефинираме кой COM-порт и с каква скорост работи връзката.

Останалата част от кода работи в цикъл while.

След това използваме множество блокове Try и Except. Първо кодът се опитва да се изпълни в блока Try, ако това не успее, той изпълнява блока Except. Но ако блокът Try работи добре, той не изпълнява блока Except, той просто изпълнява останалата част от кода.

Така че в блоковете Try имаме код, който ще прочете серийната комуникация и след това ще го изпрати до нашата база данни MySQL.

hygrolist = arduino.readlines (1)

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

Така че горният код е за четене на редове в серийната комуникация. Номерът в края на кода определя реда, който е прочетен в поредицата. Така че тези редове са категоризирани в различни променливи.

Когато се получат данни от Arduino, използвахме модула mysqlclient за изпращане на данните към нашия MySQL сървър.

db = _mysql.connect (хост = "sql7.freemysqlhosting.net", потребител = "sql7256552", passwd = "3ebtbP8FQ2", db = "sql7256552")

Този ред е за свързване с нашата база данни MySQL. Той посочва сървъра, потребителското име, паролата и към коя база данни трябва да се свърже вътре в сървъра. Тук трябва да посочите връзката с вашата MySQL DB.

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

Така че тук вземаме нашата DB връзка и правим SQL заявка. Заявката казва, че стойностите трябва да бъдат вмъкнати в таблицата „TempHumid“и след това в колоните „temp“, „humid“и „hygro“. Последната част „(%s, %s, %s)“е форматиране на низ и се използва, за да даде на базата данни формат, който може да чете.

И цялото това действие се поставя в цикъл while, така че да продължаваме да получаваме данни, изпратени до MySQL сървъра.

Ако искате да видите целия код, изтеглете скрипта на python (TempHumid.py).

Стъпка 9: MySQL

MySQL
MySQL
MySQL
MySQL

За MySQL сървъра използвахме безплатна услуга на www.freemysqlhosting.net. Можехме да направим сървър локално на Raspberry Pi, но отидохме с безплатната услуга, за да го направим напълно свързан с облака/интернет.

За да получите достъп до MySQL, трябва да отидете на phpmyadmin.co и да влезете с идентификационните данни от вашия акаунт на freemysqlhosting.

Когато сте вътре, трябва да създадете таблица, наречена "TempHumid", вътре в тази таблица трябва да създадете 4 колони, наречени "ID", "temp", "humid" и "hygro". Първата колона (ID) трябва да поставите отметка в квадратчето A_I (Автоматично увеличаване). Това е така, че колоната ID дава на всеки набор от данни идентификатор. Всички следващи колони трябва да бъдат зададени като INT (цяло число) и да зададат стандартната стойност на NULL.

Стъпка 10: Node-Red

Node-Red
Node-Red
Node-Red
Node-Red
Node-Red
Node-Red

В нашия проект използвахме Node-Red за създаване на графичен интерфейс. Node-Red работи на Raspberry Pi и събира данни от нашата база данни MySQL и показва тези данни с габарити във формата на поничка и графични диаграми, така че крайният потребител да може да следи данните. Най-интелигентното за Node-Red е, че той може да се види на всяко устройство, което означава, че сайтът ще бъде преоразмерен за даденото устройство, което преглежда съдържанието.

За да инсталирате нашето програмиране на Node-Red, погледнете стъпка 1 и изтеглете документа, наречен "Node-Red.docx". След това копирайте и поставете текста в Node-Red чрез функцията за импортиране в горния десен ъгъл.

След това променете настройките на DB за вашата MySQL DB.

Препоръчано: