Talaan ng mga Nilalaman:

UCL - IIOT Greenhouse: 11 Mga Hakbang
UCL - IIOT Greenhouse: 11 Mga Hakbang

Video: UCL - IIOT Greenhouse: 11 Mga Hakbang

Video: UCL - IIOT Greenhouse: 11 Mga Hakbang
Video: Making of IOT Greenhouse Monitoring and Control System 2024, Nobyembre
Anonim
UCL - IIOT Greenhouse
UCL - IIOT Greenhouse

Ang proyektong ito ay isang extension ng aming naunang proyekto sa Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Sa proyektong ito nagdagdag kami ng isang database, kung saan namin nai-log ang lahat ng aming data at pagkatapos ay isasalamin ito sa node-red para sa isang mas malaking pangkalahatang ideya.

Ang nilalamang naka-log in sa aming database ay Humidity, Temperatura at kahalumigmigan ng lupa, na ipinapakita sa iba't ibang mga diagram.

Bukod sa dataloggin nagagawa din naming makontrol kung aling profile ang aktibo sa Greenhouse at malayo itong makokontrol.

Pagkatapos ay nagagawa din naming makontrol ang bomba at fan nang manu-mano.

Hakbang 1: Gabay sa Pag-install

Gabay sa Pag-install
Gabay sa Pag-install

Ang unang hakbang ay i-install ang lahat ng iba't ibang mga bahagi.

Sa loob ng mga braket (), nakalista kami kung saan nakakonekta ang sangkap. Kaya halimbawa, ang Arduino ay konektado sa Raspberry Pi sa pamamagitan ng isang USB cable.

Ginamit ang hardware:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B +
  • Lupa hygrometer (Arduino)
  • DHT11 sensor (Arduino)
  • HG-320 Nailulubog na Tubig na Tubig (Relay)
  • 5V relay (Arduino)
  • Isang fan ng computer (Relay)
  • 230V power supply (Pump)

Ginamit na software:

  • Raspbian (OS para sa Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi) - PySerial- MySQLclient
  • Node-Red (Raspberry Pi) - Pythonshell- Summariser- MySQL- Dashboard
  • MySQL server (freemysqlhosting.net)

Una ay kakailanganin mong ikonekta ang mga bahagi ng hardware, kaya sundin ang gabay na ito upang maitayo ang greenhouse: Gabay sa Pag-install.

Pagkatapos ay kakailanganin mong i-install ang Raspbian OS sa iyong Raspberry Pi. Pagkatapos nito kakailanganin mong i-install ang Python, at pagkatapos ay i-install ang mga library ng sawa.

Susunod na hakbang ay ang pag-install ng Node-Red sa Raspberry Pi, at pagkatapos ay mag-navigate sa manager ng papag at i-install ang mga modyul na nakasaad nang mas maaga.

Pagkatapos ay pumunta sa site na ito na Libreng MySQL Server at lumikha ng isang libreng MySQL server.

Kapag tapos na ang lahat ng ito, handa ka nang ilipat ang script ng sawa sa iyong Raspberry Pi, i-import ang Node-Red script at i-upload ang code para sa Arduino.

Hakbang 2: Showcase ng Control

Image
Image

Hakbang 3: Listahan ng Mga Bahagi / software na Ginamit sa Project

Ginamit namin ang sumusunod na teknolohiya upang gawin ang Greenhouse

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

Hakbang 4: Listahan ng I / 0

Diagram ng Kable
Diagram ng Kable

Hakbang 5: Diagram ng Mga Kable

Hakbang 6: Ang Arduino Code

Gumagana ang Arduino code sa pamamagitan ng pag-print ng data, sinusukat ng mga sensor, sa serial na koneksyon kung saan binabasa ito ng Raspberry Pi at inilipat sa database.

Ang Arduino ay mayroon ding ilang mga digital inputpins na nakakonekta sa Raspberry Pi na binabasa ng Arduino at kung ang isa sa tatlo ay naging MASASAKIT magbabago ang profile dahil sa isang pahayag na KUNG.

Gayundin na-upgrade namin ang code upang magamit ang Millis sa halip na pagkaantala na nagbibigay-daan sa mga butil at natitirang code na basahin sa lahat ng oras sa halip na isang agwat ng lumang pagkaantala.

Hakbang 7: Raspberry Pi 3 B +

Raspberry Pi 3 B +
Raspberry Pi 3 B +

Gumamit kami ng isang Raspberry Pi 3 B + para sa pagkonekta sa aming Arduino sa internet at isang database ng MySQL. Ginawa nitong posible para sa amin na mag-imbak ng data mula sa aming mga sensor at gumawa ng isang visual interface para sa end user. Para sa interface ng gumagamit ginamit namin ang Node-Red sa palette ng Dashboard.

Ngunit bago namin maipakita ang aming data ng sensor sa Node-Red, kailangan namin ng isang paraan upang mai-upload ang data sa isang database ng MySQL, at para doon gumawa kami ng isang script ng Python na tatakbo sa aming Raspberry Pi.

Hakbang 8: Python

Sawa
Sawa

Ang script ng Python ay ginagamit para sa pagtanggap ng data mula sa serial-komunikasyon na nagmumula sa Arduino. Ipinapadala ng script ang data sa isang MySQL database.

Gumamit kami ng dalawang aklatan, pyserial at MySQL.

Kaya ang unang hakbang ay ang pag-download ng dalawang aklatan na ito:

  1. PySerial
  2. MySQLclient

Ginagamit ang PySerial para sa pagkolekta ng data mula sa Arduino sa pamamagitan ng serial-komunikasyon.

aparato = '/ dev / ttyUSB0'

arduino = serial. Serial (aparato, 9600)

Ginagamit ang unang linya para sa pagtukoy sa aming COM-port. Sa Raspberry Pi ito ay / dev / ttyUSB0, na ginagamit namin para sa Arduino. Ang pangalawang linya ay para sa pagbubukas ng serial port sa Arduino. Tinutukoy lamang namin kung aling COM-port at kung anong bilis ang tumatakbo sa koneksyon.

Ang natitirang code ay tumatakbo sa isang habang loop.

Susunod ay gumagamit kami ng maraming mga Block at Maliban sa mga bloke. Una sinusubukan ng code na tumakbo sa loob ng Subukan ang block, kung nabigo iyon pagkatapos ay pinapatakbo nito ang Except block. Ngunit kung tumatakbo ang bloke ng Subukan, hindi nito pinapatakbo ang Except block, pinapatakbo lamang nito ang natitirang code.

Kaya sa loob ng mga Block block mayroon kaming code na magbabasa ng serial-komunikasyon at pagkatapos ay ipadala ito sa aming MySQL database.

hygrolist = arduino.readlines (1)

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

Kaya ang code sa itaas ay para sa pagbabasa ng mga linya sa serial-komunikasyon. Ang numero sa dulo ng code ay tumutukoy sa linya na nabasa sa serial. Kaya't ang mga linya na ito ay ikinategorya sa iba't ibang mga variable.

Kapag natanggap ang data mula sa Arduino, ginamit namin ang mysqlclient module para sa pagpapadala ng data sa aming MySQL Server.

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

Ang linyang ito ay para sa pagkonekta sa aming database ng MySQL. Tinutukoy nito ang server, username, password at aling database dapat itong kumonekta sa loob ng server. Dito mo dapat tukuyin ang koneksyon sa iyong MySQL DB.

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

Kaya dito kinukuha namin ang aming koneksyon sa DB at gumawa ng isang query sa SQL. Sinasabi ng query na ang mga halaga ay dapat na ipasok sa loob ng talahanayan na "TempHumid" at pagkatapos ay sa mga haligi na "temp", "mahalumigmig" at "hygro". Ang huling bahagi na "(% s,% s,% s)" ay ang format ng string at ginagamit upang bigyan ang database ng isang format na mababasa nito.

At lahat ng pagkilos na ito ay inilalagay sa isang habang loop, upang patuloy kaming makakuha ng data na ipinadala sa MySQL server.

Kung nais mong makita ang lahat ng code, i-download ang python script (TempHumid.py).

Hakbang 9: MySQL

MySQL
MySQL
MySQL
MySQL

Para sa MySQL server, gumamit kami ng isang libreng serbisyo sa www.freemysqlhosting.net. Maaaring gumawa kami ng isang server nang lokal sa Raspberry Pi, ngunit sumama kami sa libreng serbisyo upang ganap itong konektado sa cloud / internet.

Upang ma-access ang iyong MySQL, kailangan mong pumunta sa phpmyadmin.co at mag-login gamit ang mga kredensyal mula sa iyong freemysqlhosting account.

Kapag nasa loob ka, kailangan mong lumikha ng isang talahanayan na tinatawag na "TempHumid", sa loob ng talahanayan na ito kailangan mong lumikha ng 4 na haligi na tinatawag na, "ID", "temp", "mahalumigmig" at "hygro". Ang unang haligi (ID) kailangan mong lagyan ng tsek ang kahon na A_I (Auto Increment). Ito ay upang ang haligi ng ID ay nagbibigay sa bawat dataset ng isang ID. Ang lahat ng mga sumusunod na haligi ay dapat itakda bilang isang INT (integer), at itakda ang karaniwang halaga sa NULL.

Hakbang 10: Node-Red

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

Sa aming proyekto ginamit namin ang Node-Red para sa paggawa ng isang graphic na interface. Ang Node-Red ay tumatakbo sa Raspberry Pi at nangongolekta ng data mula sa aming database ng MySQL at ipinapakita ang data na ito na may mga donut na sukat na gauge at grapikong tsart, upang masubaybayan ng end user ang data. Ang matalinong bagay tungkol sa Node-Red ay nakikita ito sa anumang aparato, na nangangahulugang ang site ay mababago para sa ibinigay na aparato na tumitingin sa nilalaman.

Upang mai-install ang aming Node-Red na programa, tingnan ang Hakbang 1 at i-download ang dokumento na tinatawag na "Node-Red.docx". Pagkatapos kopyahin at i-paste ang teksto sa Node-Red sa pamamagitan ng pag-andar ng pag-import sa kanang sulok sa itaas.

Pagkatapos nito baguhin ang mga setting ng DB para sa iyong MySQL DB.

Inirerekumendang: