Већина пољопривредника користи велике делове пољопривредног земљишта и постаје веома тешко доћи до и пратити сваки угао великих површина. Понекад постоји могућност неуједначених прскања воде. То резултира неквалитетним усјевима што даље доводи до финансијских губитака. У овом сценарију паметни систем за наводњавање који користи најновију ИоТ технологију је користан и доводи до једноставности пољопривреде.
Смарт наводњавање систем има широку аутоматизације комплетног система за наводњавање. Овде градимо систем за наводњавање заснован на ИоТ-у користећи ЕСП8266 НодеМЦУ модул и ДХТ11 сензор. Не само да ће аутоматски наводњавати воду на основу нивоа влаге у земљишту, већ ће и слати податке на ТхингСпеак Сервер да би пратио стање земљишта. Систем ће се састојати од пумпе за воду која ће се користити за прскање воде по земљишту у зависности од стања околине земљишта као што су влага, температура и влажност.
Претходно смо направили сличан систем за аутоматско наводњавање биљака који шаље упозорења на мобилном уређају, али не и на ИоТ облаку. Осим тога, аларм за кишу и круг детектора влаге у тлу такође могу бити корисни у изградњи паметног система за наводњавање.
Пре почетка, важно је напоменути да различити усеви захтевају различиту влагу, температуру и влажност земљишта. Дакле, у овом упутству користимо такву културу која ће захтевати влагу тла од око 50-55%. Дакле, када земљиште изгуби влагу на мање од 50%, тада ће се моторна пумпа аутоматски укључити да би прскала воду и она ће наставити да прска воду док влага не порасте до 55%, а након тога пумпа ће се искључити. Подаци сензора биће послати на ТхингСпеак Сервер у дефинисаном временском интервалу, тако да се могу надгледати било где у свету.
Компоненте потребне
- НодеМЦУ ЕСП8266
- Модул сензора влаге у земљишту
- Модул пумпе за воду
- Релејни модул
- ДХТ11
- Повезивање жица
Можете купити све компоненте потребне за овај пројекат.
Кружни дијаграм
Дијаграм кола за овај ИоТ систем паметног наводњавања дат је у наставку:
Програмирање ЕСП8266 НодеМЦУ за систем аутоматског наводњавања
За програмирање модула ЕСП8266 НодеМЦУ, само се библиотека сензора ДХТ11 користи као спољна библиотека. Сензор влаге даје аналогни излаз који се може очитати кроз аналогни пин А0 ЕСП8266 НодеМЦУ. Будући да НодеМЦУ не може давати излазни напон већи од 3,3 В са свог ГПИО, па користимо релејни модул за погон моторне пумпе од 5 В. Такође се сензор влаге и ДХТ11 сензор напајају из спољног напајања од 5В.
Комплетни код са радним видео записом дат је на крају овог водича, овде објашњавамо програм да бисмо разумели радни ток пројекта.
Почните са укључивањем неопходне библиотеке.
#инцлуде
С обзиром да користимо ТхингСпеак Сервер, АПИ кључ је неопходан за комуникацију са сервером. Да бисте знали како можемо добити АПИ кључ од ТхингСпеак-а, можете посетити претходни чланак о праћењу температуре и влажности уживо на ТхингСпеак-у.
Стринг апиКеи = "Кс5АК445ИКМБИВ31Х цонст цхар * сервер =" апи.тхингспеак.цом ";
Следећи корак је писање Ви-Фи акредитива као што су ССИД и лозинка.
цонст цхар * ссид = "ЦирцуитДигест"; цонст цхар * пасс = "ккккккккккк";
Дефинирајте пин ДХТ сензора на који је повезан ДХТ и одаберите тип ДХТ.
#дефине ДХТПИН Д3 ДХТ дхт (ДХТПИН, ДХТ11);
Излаз сензора влаге повезан је на пин А0 ЕСП8266 НодеМЦУ. И пин мотора је повезан са Д0 НодеМЦУ.
цонст инт моистПин = А0; цонст инт моторПин = Д0;
Ми ћемо користити МИЛЛИС () функцију за слање података после сваког дефинисаном интервалу времена овде је 10 секунди. Кашњење () се избегава јер зауставља програм за одређеног кашњења у којој микроконтролер не може да учини друге задатке. Овде сазнајте више о разлици између кашњења () и милиса ().
непотписани дуги интервал = 10000; унсигнед лонг превиоусМиллис = 0;
Подесите затик мотора као излаз и прво угасите мотор. Покрените очитавање сензора ДХТ11.
пинМоде (моторПин, ОУТПУТ); дигиталВрите (моторПин, ЛОВ); // почетно искључите мотор дхт.бегин ();
Покушајте да повежете Ви-Фи са датим ССИД-ом и лозинком и сачекајте да се Ви-Фи повеже, а ако је повезан, пређите на следеће кораке.
ВиФи.бегин (ссид, пасс); вхиле (ВиФи.статус ()! = ВЛ_ЦОННЕЦТЕД) { кашњење (500); Сериал.принт ("."); } Сериал.принтлн (""); Сериал.принтлн („ВиФи повезан“); }
Дефинишите тренутно време покретања програма и сачувајте га у променљивој да бисте га упоредили са протеклим временом.
унсигнед лонг цуррентМиллис = миллис ();
Прочитајте податке о температури и влажности и сачувајте их у променљивим.
флоат х = дхт.реадХумидити (); флоат т = дхт.реадТемпературе ();
Ако је ДХТ повезан и ако ЕСП8266 НодеМЦУ може очитати очитавања, онда пређите на следећи корак или се вратите одавде да бисте поново проверили.
иф (иснан (х) - иснан (т)) { Сериал.принтлн ("Није успело читање са ДХТ сензора!"); повратак; }
Очитајте очитавање влаге са сензора и одштампајте очитавање.
влажностПерцентаге = (100,00 - ((аналогРеад (влагаПин) / 1023,00) * 100,00)); Сериал.принт ("Соил Моистуре ис ="); Сериал.принт (влагаПроцент); Сериал.принтлн ("%");
Ако је очитање влаге између потребног опсега влаге у тлу, искључите пумпу или ако она прелази потребну влагу, укључите пумпу.
иф (влажностПроцента <50) { дигиталВрите (моторПин, ХИГХ); } иф ( влагаПерцентаге > 50 && влагаПерцентаге <55) { дигиталВрите (моторПин, ХИГХ); } иф (влажностПроцентра> 56) { дигиталВрите (моторПин, ЛОВ); }
Сада након сваких 10 секунди позовите функцију сендТхингспеак () да бисте послали податке о влажности, температури и влажности на ТхингСпеак сервер.
иф ((непотписано дуго) (цуррентМиллис - превиоусМиллис)> = интервал) { сендТхингспеак (); превиоусМиллис = милис (); цлиент.стоп (); }
У функцији сендТхингспеак () проверавамо да ли је систем повезан са сервером и ако је одговор да, припремамо низ у којем је записано очитавање влаге, температуре, влажности и тај низ ће бити послан на ТхингСпеак сервер заједно са АПИ кључем и адресом сервера.
иф (цлиент.цоннецт (сервер, 80)) { Стринг постСтр = апиКеи; постСтр + = "& фиелд1 ="; постСтр + = Стринг (влагаПроцент); постСтр + = "& фиелд2 ="; постСтр + = Стринг (т); постСтр + = "& фиелд3 ="; постСтр + = Стринг (х); постСтр + = "\ р \ н \ р \ н";
Коначно, подаци се шаљу на ТхингСпеак сервер помоћу функције цлиент.принт () која садржи АПИ кључ, адресу сервера и низ који је припремљен у претходном кораку.
цлиент.принт ("ПОСТ / упдате ХТТП / 1.1 \ н"); цлиент.принт ("Хост: апи.тхингспеак.цом \ н"); цлиент.принт ("Веза: затвори \ н"); цлиент.принт ("Кс-ТХИНГСПЕАКАПИКЕИ:" + апиКеи + "\ н"); цлиент.принт ("Тип садржаја: апплицатион / к-ввв-форм-урленцодед \ н"); цлиент.принт ("Цонтент-Ленгтх:"); цлиент.принт (постСтр.ленгтх ()); цлиент.принт ("\ н \ н"); цлиент.принт (постСтр);
Коначно, овако изгледају подаци на ТхингСпеак Дасхбоард-у
Овај последњи корак завршава комплетан водич о паметном систему за наводњавање заснован на ИоТ-у. Имајте на уму да је важно искључити мотор када влага тла достигне потребни ниво након прскања водом. Можете направити паметнији систем који може садржати различиту контролу за различите усеве.
Ако се суочавате са било каквим проблемима током извођења овог пројекта, онда коментаришите у наставку или потражите релевантнија питања и одговоре на нашим форумима.
Комплетни програм и демонстрацијски видео за овај пројекат пронађите у наставку.