Բովանդակություն:

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…):

Այս նախագծում մենք ավելացրեցինք տվյալների բազա, որտեղ մենք գրանցում ենք մեր բոլոր տվյալները, այնուհետև պատկերացնում ենք այն կարմիր-հանգույցով `ավելի մեծ ակնարկի համար:

Մեր տվյալների շտեմարանում մուտքագրված բովանդակությունը «Հողի խոնավություն, ջերմաստիճան և խոնավություն» է, որը ներկայացված է տարբեր դիագրամներում:

Բացի dataloggin- ից, մենք նաև կարող ենք վերահսկել, թե որ պրոֆիլն է ակտիվ ջերմոցում և հեռակա վերահսկել այն:

Հետո մենք կարող ենք նաև կառավարել պոմպը և օդափոխիչը ձեռքով:

Քայլ 1: Տեղադրման ուղեցույց

Տեղադրման ուղեցույց
Տեղադրման ուղեցույց

Առաջին քայլը բոլոր տարբեր բաղադրիչների տեղադրումն է:

Փակագծերի ներսում () մենք թվարկել ենք, թե որտեղ է բաղադրիչը միացված: Օրինակ, Arduino- ն միացված է Raspberry Pi- ին USB մալուխի միջոցով:

Օգտագործված սարքավորում.

  • Arduino (ազնվամորի Pi)
  • Ազնվամորի Pi 3 B+
  • Հողի հիգրոմետր (Arduino)
  • DHT11 սենսոր (Arduino)
  • HG-320 սուզվող ջրի պոմպ (ռելե)
  • 5 Վ ռելե (Arduino)
  • Համակարգչային երկրպագու (ռելե)
  • 230V սնուցման աղբյուր (պոմպ)

Օգտագործված ծրագրակազմ.

  • Raspbian (OS Raspberry Pi- ի համար)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Հանգույց-կարմիր (ազնվամորի Pi)- Pythonshell- ամփոփիչ- MySQL- վահանակ
  • MySQL սերվեր (freemysqlhosting.net)

Սկզբում դուք ստիպված կլինեք միացնել ապարատային բաղադրիչները, ուստի ջերմոցը կառուցելու համար հետևեք այս ուղեցույցին. Տեղադրեք ուղեցույց:

Այնուհետև դուք ստիպված կլինեք տեղադրել Raspbian OS ձեր Raspberry Pi- ի վրա: Դրանից հետո դուք ստիպված կլինեք տեղադրել Python, այնուհետև տեղադրել python գրադարանները:

Հաջորդ քայլը Raspberry Pi- ի վրա տեղադրել Node-Red- ը, այնուհետև անցնել պալետների կառավարիչ և տեղադրել ավելի վաղ նշված մոդուլները:

Հետո գնացեք այս կայք Անվճար MySQL Server և ստեղծեք անվճար MySQL սերվեր:

Երբ այս ամենն ավարտվի, դուք պատրաստ եք Python- ի սցենարը փոխանցել ձեր Raspberry Pi- ին, ներմուծել Node-Red սցենարը և վերբեռնել Arduino- ի կոդը:

Քայլ 2: Վերահսկման ցուցադրություն

Image
Image

Քայլ 3. Partրագրում օգտագործվող մասերի/ծրագրակազմի ցանկ

Usedերմոցը պատրաստելու համար մենք օգտագործել ենք հետևյալ տեխնոլոգիան

  • Արդուինո
  • Ազնվամորի Պի
  • Հանգույց-կարմիր
  • Պիթոն
  • PHPMyAdmin

Քայլ 4: I/0 ցուցակ

Հաղորդալարերի դիագրամ
Հաղորդալարերի դիագրամ

Քայլ 5: Էլեկտրագծերի դիագրամ

Քայլ 6: Arduino ծածկագիրը

Arduino ծածկագիրն աշխատում է ՝ տպելով տվյալները, որոնք չափվում են սենսորներով, սերիական կապին, որտեղ այն ընթերցվում է Raspberry Pi- ի կողմից և փոխանցվում տվյալների բազա:

Arduino- ն ունի նաև Raspberry Pi- ին միացված թվային մուտքագրիչներ, որոնք կարդում է Arduino- ն, և եթե երեքից մեկը դառնում է HIGH, պրոֆիլը կփոխվի IF հայտարարության պատճառով:

Նաև մենք արդիականացրել ենք ծածկագիրը, որպեսզի ուշացման փոխարեն օգտագործի Millis- ը, ինչը հնարավորություն է տալիս հետույքներն ու մնացած ծածկագիրը անընդհատ կարդալ հին ընդմիջումով ընդմիջման փոխարեն:

Քայլ 7: Ազնվամորի 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 սցենարը օգտագործվում է Arduino- ից եկող սերիական հաղորդակցության տվյալների ստացման համար: Այնուհետեւ սցենարը տվյալները ուղարկում է MySQL տվյալների բազա:

Մենք օգտագործեցինք երկու գրադարան ՝ pyserial և mysqlclient:

Այսպիսով, առաջին քայլը կլինի ներբեռնել այս երկու գրադարանները.

  1. PySerial
  2. MySQLclient

PySerial- ն օգտագործվում է սերիական հաղորդակցության միջոցով Arduino- ից տվյալներ հավաքելու համար:

սարք = '/dev/ttyUSB0'

arduino = սերիա: Սերիալ (սարք, 9600)

Առաջին գիծը օգտագործվում է մեր COM նավահանգստի սահմանման համար: Raspberry Pi- ի վրա դա /dev /ttyUSB0 է, որը մենք օգտագործում ենք Arduino- ի համար: Երկրորդ տողը սերիական նավահանգիստը Arduino- ին բացելու համար է: Մենք պարզապես սահմանում ենք, թե որ COM- պորտը և ինչ արագությամբ է աշխատում կապը:

Մնացած ծածկագիրը գործարկվում է while loop- ում:

Հաջորդը մենք օգտագործում ենք մի քանի Try and Except բլոկներ: Սկզբում կոդը փորձում է գործարկել Try բլոկի ներսում, եթե դա ձախողվի, այն կաշխատի Except բլոկից: Բայց եթե Try բլոկը լավ է աշխատում, այն չի գործարկում Բացառությամբ բլոկը, այլ գործարկում է մնացած ծածկագիրը:

Այսպիսով, Try բլոկների ներսում մենք ունենք ծածկագիր, որը կկարդա սերիալ-հաղորդակցությունը և այն կուղարկի մեր MySQL տվյալների բազա:

hygrolist = arduino.readlines (1)

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

Այսպիսով, վերը նշված կոդը սերիալային հաղորդակցության տողեր կարդալու համար է: Կոդի վերջում նշված թիվը սահմանում է սերիալում կարդացած տողը: Այսպիսով, այս տողերը դասակարգվում են տարբեր փոփոխականների մեջ:

Երբ Arduino- ի տվյալները ստացվում են, մենք օգտագործել ենք mysqlclient մոդուլը ՝ տվյալները մեր MySQL Server- ին ուղարկելու համար:

db = _mysql.connect (host = "sql7.freemysqlhosting.net", օգտվող = "sql7256552", passwd = "3ebtbP8FQ2", db = "sql7256552")

Այս տողը նախատեսված է մեր MySQL տվյալների շտեմարանին միանալու համար: Այն սահմանում է սերվերը, օգտվողի անունը, գաղտնաբառը և տվյալների բազային, որին այն պետք է միանա սերվերի ներսում: Այստեղ դուք պետք է նշեք ձեր MySQL DB- ի կապը:

db.query ( INSERTINTO` TempHumid` (`ջերմաստիճան`, `խոնավ`

Այսպիսով, այստեղ մենք վերցնում ենք մեր DB կապը և SQL հարցում ենք կատարում: Հարցումն ասում է, որ արժեքները պետք է տեղադրվեն «TempHumid» աղյուսակի ներսում, այնուհետև «temp», «խոնավ» և «hygro» սյունակներում: Վերջին մասը ((%s, %s, %s) »տողերի ձևաչափումն է և օգտագործվում է տվյալների բազային ընթերցելու համար այն ձևաչափը տալու համար:

Եվ այս ամբողջ գործողությունը դրվում է մի որոշ ժամանակաշրջանում, որպեսզի մենք շարունակենք տվյալներ ստանալ MySQL սերվերին ուղարկված:

Եթե ցանկանում եք տեսնել ամբողջ ծածկագիրը, ներբեռնեք python սցենարը (TempHumid.py):

Քայլ 9: MySQL

MySQL
MySQL
MySQL
MySQL

MySQL սերվերի համար մենք անվճար ծառայություն ենք օգտագործել www.freemysqlhosting.net կայքում: Մենք կարող էինք սերվեր սարքել տեղում Raspberry Pi- ով, բայց մենք գնացինք անվճար ծառայությամբ, որպեսզի այն ամբողջությամբ միացված լինի ամպին/ինտերնետին:

Ձեր MySQL- ին մուտք գործելու համար դուք պետք է գնաք phpmyadmin.co և մուտք գործեք ձեր freemysqlhosting հաշվի հավատարմագրերով:

Երբ ներսում եք, դուք պետք է ստեղծեք «TempHumid» անունով աղյուսակ, այս աղյուսակի ներսում պետք է ստեղծեք 4 սյունակ, որոնք կոչվում են ՝ «ID», «temp», «խոնավ» և «hygro»: Առաջին սյունակում (ID) դուք պետք է նշեք A_I վանդակը (ավտոմատ ավելացում): Սա այնպես է, որ ID սյունակը յուրաքանչյուր տվյալների հավաքածուին տալիս է ID: Հետևյալ բոլոր սյունակները պետք է սահմանվեն որպես INT (ամբողջ թիվ) և ստանդարտ արժեքը սահմանեն NULL:

Քայլ 10: Հանգույց-կարմիր

Հանգույց-կարմիր
Հանգույց-կարմիր
Հանգույց-կարմիր
Հանգույց-կարմիր
Հանգույց-կարմիր
Հանգույց-կարմիր

Մեր նախագծում մենք օգտագործեցինք Node-Red գրաֆիկական ինտերֆեյս պատրաստելու համար: Node-Red- ն աշխատում է Raspberry Pi- ի վրա և հավաքում է տվյալներ մեր MySQL տվյալների բազայից և ցուցադրում է այդ տվյալները բլիթաձև չափիչներով և գրաֆիկական գծապատկերներով, որպեսզի վերջնական օգտագործողը կարողանա վերահսկել տվյալները: Node-Red- ի խելացի բանն այն է, որ այն կարող է դիտվել ցանկացած սարքի վրա, ինչը նշանակում է, որ կայքը կփոխվի չափի տվյալ սարքի համար, որը դիտում է բովանդակությունը:

Մեր Node-Red ծրագրավորումը տեղադրելու համար նայեք Քայլ 1-ին և ներբեռնեք «Node-Red.docx» անվանումը կրող փաստաթուղթը: Այնուհետև պատճենեք և տեղադրեք տեքստը Node-Red- ում ՝ վերին աջ անկյունում ներմուծման գործառույթի միջոցով:

Դրանից հետո փոխեք ձեր MySQL DB- ի DB կարգավորումները:

Խորհուրդ ենք տալիս: