Мазмуну:

UCL - IIOT теплица: 11 кадам
UCL - IIOT теплица: 11 кадам

Video: UCL - IIOT теплица: 11 кадам

Video: UCL - IIOT теплица: 11 кадам
Video: UCL-IIoT-Datalogger 2024, Июль
Anonim
UCL - IIOT теплица
UCL - IIOT теплица

Бул долбоор күнөскана менен мурунку долбоорубуздун уландысы (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Бул долбоордо биз маалымат базабызды коштук, анда биз бардык маалыматтарыбызды каттап, андан кийин аны чоңураак карап чыгуу үчүн аны кызыл-кызыл менен элестетебиз.

Биз маалымат базабызга кирген мазмун - бул нымдуулук, температура жана кыртыштын нымдуулугу, ал ар кандай диаграммаларда көрсөтүлгөн.

Даталоггинден тышкары, биз Парникте кайсы профил активдүү экенин көзөмөлдөй алабыз жана аны алыстан башкара алабыз.

Андан кийин биз насосту жана желдеткичти кол менен башкара алабыз.

1 -кадам: Орнотуу боюнча көрсөтмө

Орнотуу көрсөтмөсү
Орнотуу көрсөтмөсү

Биринчи кадам - ар кандай компоненттерди орнотуу.

Кронштейндердин ичинде (), биз компоненттин кайда туташканын тизмектедик. Мисалы, Arduino Raspberry Pi менен USB кабели аркылуу туташкан.

Колдонулган жабдуу:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Топурактын гигрометри (Arduino)
  • DHT11 сенсору (Arduino)
  • HG-320 суу астындагы насос (реле)
  • 5V релеси (Arduino)
  • Компьютердин күйөрманы (Эстафета)
  • 230V электр менен камсыздоо (Насос)

Колдонулган программалык камсыздоо:

  • Raspbian (Raspberry Pi үчүн OS)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- тактасы
  • MySQL сервери (freemysqlhosting.net)

Алгач аппараттык компоненттерди туташтырышыңыз керек болот, андыктан күнөскананы куруу үчүн бул көрсөтмөнү аткарыңыз: Орнотуу Колдонмосу.

Андан кийин Raspberry ОСти Raspberry Piге орнотушуңуз керек болот. Андан кийин сиз Pythonду орнотуп, анан python китепканаларын орнотушуңуз керек болот.

Кийинки кадам-Node-Redди Raspberry Piге орнотуу, андан кийин паллеттин менеджерине өтүү жана мурда айтылган модулдарды орнотуу.

Андан кийин бул сайтка барыңыз Free MySQL Server жана бекер MySQL серверин түзүңүз.

Мунун баары аткарылганда, сиз python скриптин Raspberry Piге өткөрүп берүүгө, Node-Red скриптин импорттоого жана Arduino кодун жүктөөгө даярсыз.

2 -кадам: Контролдун көргөзмөсү

Image
Image

3 -кадам: Долбоордо колдонулган бөлүктөрдүн/программалык камсыздоонун тизмеси

Күнөскана жасоо үчүн төмөнкү технологияны колдондук

  • Arduino
  • Raspberry Pi
  • Node-Red
  • Python
  • PHPMyAdmin

4 -кадам: I/0 тизмеси

Кабелдик диаграмма
Кабелдик диаграмма

5 -кадам: Кабелдик диаграмма

6 -кадам: Arduino коду

Arduino коду сенсорлор менен өлчөнгөн маалыматтарды Raspberry Pi тарабынан окулган жана маалымат базасына өткөрүлгөн сериялык байланышка басып чыгаруу менен иштейт.

Arduino -да Raspberry Pi менен байланышкан кээ бир санариптик кирүү түйүндөрү бар, аларды Arduino окуйт жана эгер үчөөнүн бири ЖОГОРУ болуп калса, IF билдирүүсүнөн улам профил өзгөрөт.

Ошондой эле, биз кодду Millisти кечиктирүүнүн ордуна колдонууну жакшырттык, бул коддун арткы бөлүгүн жана калган бөлүгүн эски кечигүүнүн ордуна ар дайым окууга мүмкүнчүлүк берет.

7 -кадам: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Биз Raspberry Pi 3 B+ колдонуп, биздин Arduino интернетке жана MySQL маалымат базасына туташтык. Бул бизге сенсорлорубуздан маалыматтарды сактоого жана акыркы колдонуучу үчүн визуалдык интерфейс жасоого мүмкүндүк берди. Колдонуучу интерфейси үчүн биз Node-Redди такталар палитрасы менен колдондук.

Бирок биз Node-Redдеги сенсордук маалыматыбызды көрсөтө электе, маалыматты MySQL маалымат базасына жүктөөнүн жолуна муктаж болдук жана ал үчүн биздин Raspberry Piде иштей турган Python скриптин түздүк.

8 -кадам: Python

Python
Python

Python скрипти Arduinoдон келген сериялык байланыштан маалыматтарды алуу үчүн колдонулат. Андан кийин скрипт маалыматтарды MySQL маалымат базасына жөнөтөт.

Биз эки китепкананы колдондук, pyserial жана mysqlclient.

Ошентип, биринчи кадам бул эки китепкананы жүктөп алуу болмок:

  1. PySerial
  2. MySQLclient

PySerial Arduino сериялык байланыш аркылуу маалыматтарды чогултуу үчүн колдонулат.

түзмөк = '/dev/ttyUSB0'

arduino = serial. Serial (түзмөк, 9600)

Биринчи сап биздин COM-портту аныктоо үчүн колдонулат. Raspberry Piде биз /dev /ttyUSB0, биз аны Arduino үчүн колдонобуз. Экинчи сап Arduino үчүн сериялык портту ачуу үчүн. Биз жөн гана кайсы COM-портун жана байланыш кандай ылдамдыкта иштеп жатканын аныктайбыз.

Калган код бир аз убакыт ичинде иштейт.

Андан кийин биз бир нече Try and Except блокторун колдонобуз. Биринчиден, код Try блогунун ичинде иштөөгө аракет кылып жатат, эгер ал ишке ашпаса, анда ал Except блогун иштетет. Бирок эгерде Try блогу жакшы иштесе, ал Except блогун иштетпейт, ал коддун калган бөлүгүн иштетет.

Ошентип, Try блокторунун ичинде бизде сериялык байланышты окуй турган код бар, анан аны MySQL маалымат базасына жөнөтөт.

hygrolist = arduino.readlines (1)

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

Ошентип, жогорудагы код сериялык байланыштагы линияларды окуу үчүн. Коддун аягындагы номер серияда окулган линияны аныктайт. Ошентип, бул линиялар ар кандай өзгөрмөлөргө бөлүнөт.

Ардуинодон маалымат алынганда, биз маалыматты MySQL серверибизге жөнөтүү үчүн mysqlclient модулун колдондук.

db = _mysql.connect (host = "sql7.freemysqlhosting.net", user = "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" таблицасынын ичине, андан кийин "темп", "нымдуу" жана "гигро" графаларына киргизүү керектиги айтылат. Акыркы бөлүгү "(%s, %s, %s)" сап форматтоо жана маалымат базасына окуй турган форматты берүү үчүн колдонулат.

Жана бул аракеттердин баары бир аз убакыт ичинде киргизилет, андыктан биз маалыматтарды MySQL серверине жөнөтө беребиз.

Эгерде сиз бардык кодду көргүңүз келсе, python скриптин (TempHumid.py) жүктөп алыңыз.

9 -кадам: MySQL

MySQL
MySQL
MySQL
MySQL

MySQL сервери үчүн биз www.freemysqlhosting.net сайтында бекер кызматты колдондук. Биз Raspberry Piде жергиликтүү серверди түзө алмакпыз, бирок биз аны акысыз кызмат менен булутка/интернетке толугу менен туташтыруу үчүн жөнөдүк.

MySQLке кирүү үчүн, phpmyadmin.co сайтына кирип, freemysqlhosting эсебиңизден ишеним грамоталары менен киришиңиз керек.

Ичинде болгондо, сиз "TempHumid" деп аталган таблицаны түзүшүңүз керек, бул столдун ичинде "ID", "temp", "humid" жана "hygro" деп аталган 4 тилкени түзүшүңүз керек. Биринчи тилке (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ге көчүрүү жана чаптоо, импорттук функция аркылуу жогорку оң бурчта.

Андан кийин MySQL DB үчүн DB орнотууларын өзгөртүңүз.

Сунушталууда: