Съдържание:
- Консумативи
- Стъпка 1: Конструиране на устройството
- Стъпка 2: DOL Starter Connections
- Стъпка 3: Създайте акаунт с Adafruit IO (io.adafruit.com)
- Стъпка 4: Изградете и инсталирайте софтуера
- Стъпка 5: Инсталирайте и конфигурирайте приложението MQTT Dash на вашия мобилен телефон
- Стъпка 6: Последна стъпка:-) Тестване и фина настройка
Видео: Стартов контролер DOL на базата на IOT за напоителна помпа: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Здравейте приятели
Тази инструкция е за това как да наблюдавате и контролирате дистанционно напоителна помпа в Интернет.
Story: В моята ферма получавам захранване от местната мрежа само за около 6 часа на ден. Времето не е редовно, наличността на енергия може да бъде рано сутрин или късно вечер или дори полунощ. Всеки път, когато отиването до мястото на сондажния кладенец, за да се провери наличието на енергия, стартирането или спирането на двигателя беше много болезнен процес. Също така трябваше да осигуря работа на двигателя поне 2-3 часа всеки ден, за да доставя адекватна вода за капковата система. Доста време проучвах възможностите за решаване на този проблем чрез дистанционно управление на двигателя и също така знам състоянието. На пазара има устройства, които ще стартират двигателя веднага щом има захранване, но нямат функцията да спират двигателя, когато пожелаем. Също така няма начин да се знае състоянието на включване/изключване на двигателя по всяко време. Това обикновено води до прекомерно напояване, което води до загуба на плодородие на почвата, а също и до загуба на електроенергия. Накрая сам създадох решение, при което мога да стартирам и спирам двигателя от разстояние от мобилен телефон/таблет/компютър ПО ВСЯКО ВРЕМЕ НИКЪДЕ… !!. Също така мога да наблюдавам през цялото време наличието на захранване от опашката, както и състоянието на двигателя (ON/OFF). Надявам се, че това ще помогне на собствениците на ферми в страната да управляват своите напоителни системи, без да е необходимо да ходят през цялото време на началното място.
Консумативи
Предпоставки:
Мястото, където искате да инсталирате това устройство, трябва да има достъп до интернет (широколентов достъп с wifi/мобилен интернет)
Нещата, от които се нуждаете:
- NodeMCU /ESP12
- Двуканално реле
- WCS1700 - Токов сензор
- Модул за зареждане на батерията TP4056
- LD313, Кондензатор - 1000uF регистър - Два регистра с 5k ohm
- Всеки (стар) смартфон с гореща точка /интернет.
Как работи:
Това е просто облачно IOT решение, използващо NodeMCU/ESP12 и отдалечен брокер MQTT. NodeMCU работи като IOT шлюз, също така контролира DOL стартера. Той се свързва с отдалечен MQTT брокер през интернет. Приложение, работещо на мобилен телефон с Android, се свързва с брокера, чрез който можем да наблюдаваме и контролираме нашия комплект напоителни помпи през цялото време. Използвах безплатен наличен брокер MQTT от Adafruit IO. Налични са много безплатни брокери като mosquitto, cloudmqtt и др. Можете да изберете всеки брокер, при условие че промените сървъра и номера на порта в кода. NodeMCU се свързва с интернет чрез WiFi от мобилната гореща точка. Yon може да използва всеки стар или евтин мобилен телефон, за да осигури wifi достъп чрез гореща точка или друг начин за предоставяне на интернет чрез wifi. Мобилният трябва да бъде свързан към зарядното устройство, както трябва да е на 24X7.
NodeMCU е свързан с две релета за управление на стартирането и спирането на работата на двигателя. За да усетя тока в двигателя използвах WCS1700 токов сензор. Аналоговият изход от сензора се използва, за да се знае, че двигателят е включен или изключен. Той също така усеща наличността на енергия от мрежата и я публикува на брокера, за да можем да знаем състоянието на мрежата по всяко време. Устройството се абонира за две подавания, за да получи заявката за включване на двигателя и изключване на двигателя. Изпращайки конкретни стойности към тези емисии, ние можем да контролираме двигателя до START или STOP.
Накрая инсталирах приложението MQTT Dash на телефона си с Android и го конфигурирах да се свързва с брокера MQTT и да използва емисиите на неговото табло за управление/потребителско име. Приложението има много добри икони с бутони, габарит, превключвател и т.н., за да създаде атрактивно табло за управление. Можете обаче да използвате всяко мобилно приложение за домашна автоматизация на IOT, което поддържа протокол mqtt.
Как работи WCS1700:
WCS1700 е основно сензор за ефект на Хол, който ще произвежда изходно напрежение, пропорционално на магнитното поле, създадено, докато токът протича през бобината. Намотката тук е захранваща линия, която ще бъде свързана към двигателя. Той може да измерва променлив ток до 70 ампера. Работното напрежение е между 3,3 до 12 V. За повече подробности вижте информационния му лист. Тъй като използвам ESP12, използвах същото захранване от 3.3V като работно напрежение за WCS1700. Както е посочено в информационния лист при 3.3 V, устройството трябва да генерира диференциално напрежение от около 32 до 38 mV на усилвател на ток през бобината. Но може да варира в зависимост от размера на бобината / въздушната междина и вариациите в устройството. Затова трябваше да го калибрирам, като го тествам с амперметър. Не съм доволен от точността на устройството, но той е достатъчно добър, за да вземе решение за състоянието на двигателя като ON/OFF. Изходният щифт на WCS1700 е свързан към A0 на ESP12. Когато няма ток, ESP12 трябва да прочете стойността около 556. Тъй като нарастването на тока в бобината напрежението може да бъде от всяка страна в зависимост от това как кабелът преминава през сензора. В кода взех разликата в стойностите като абсолютна стойност на (x - 556). Чрез разделяне на резултата с 15 получих приблизителен ток, протичащ през сензора. Ще трябва да експериментирате това, за да получите правилния номер за вас. Всяко измерване на ток от устройството над 5 ампера смятам за включен двигател и под 5 ампера като двигателят е в изключено състояние. Можете да използвате правилния номер за вашето устройство, като експериментирате. Трябва съответно да промените WCS1700_CONST и MIN_CURRENT в кода.
Стъпка 1: Конструиране на устройството
Диаграмата по -горе дава пълна информация как да свържете всички компоненти.
Захранване: Използвах TP4056 за зареждане на батериите и LM313 за регулиране на 3.7V - 4.2V на изхода на батерията до 3.3 V за захранване на NodeMCU. Използва се 1000mF кондензатор между Vin и земята на LM313, за да се получи стабилно захранване от 3.3V. Можете да използвате обикновено USB мобилно зарядно устройство за захранване на TP4056. Той има защитна верига за защита на батерията от презареждане.
Мрежово захранване на захранващото устройство: 5k омовият делител на напрежение ще намали 5 V до 2,5 V. Пин D5 на NodeMCU ще усети напрежението.
Изходният щифт на WCS1700 е свързан към A0, за да отчете аналоговото напрежение от сензора. Мрежовата линия за захранване трябва да премине през отвора за измерване на тока. Използвах 0,01 uF кондензатор, за да получа стабилна форма на отчитане WCS1700.
D1 и D2 на NodeMCU да бъдат свързани към IN0 и IN1 на релейните входни щифтове.
Стъпка 2: DOL Starter Connections
Промених схемата за управление на стартера DOL, за да въведа още един набор от ключ START и STOP. Тази промяна няма да повлияе на ръчното стартиране/спиране и те продължават да работят както са.
Внимание !!!! Тъй като DOL стартерът е устройство с високо напрежение, уверете се, че главният превключвател е изключен, преди да отворите кутията. Директният контакт с проводник под напрежение може да бъде опасен. Ако не сте уверени, потърсете помощ от електротехник, за да осъществите връзките
Използвах 2 -канален 5 V релеен модул като ключ START и STOP. Тези релета ще се управляват от ESP12.
Реле - 0 ще работи като ключ START - окабелено като NO (нормално отворено).
Реле -1 ще работи като STOP превключвател - свързан като NC (нормално затворен). Стартерът вече ще има проводник, свързващ от горния контактор към NVC. Ще трябва да го премахнете и да замените с реле -1 проводници, както е показано.
Уверете се, че връзките между стартера и релейните модули са напълно изолирани за безопасност. Програмирах ESP да задържа и двете релета за 2 секунди, за да подражава на натискането на бутона START/STOP.
Стъпка 3: Създайте акаунт с Adafruit IO (io.adafruit.com)
Използвах брокер Adafruit io mqtt, който е безплатен за използване с малко ограничения, но е добре за нашата употреба. Предпочитам това, защото го използвах и в други проекти и намерих доста надеждно, а също така има и много други функции като Dashboard с хубав графичен интерфейс и дори можем да използваме тригери. За да използвате Adafruit io, трябва да създадете акаунт и да отбележите потребителското име и активния ключ.
Стъпка 4: Изградете и инсталирайте софтуера
Пълният код е наличен в скицата. Трябва да отворите това в Arduino IDE и да направите няколко промени, преди да компилирате и качите фърмуера. Изберете типа платка като NodeMCU 1.0. Инсталирането на IDE и свързаните с него библиотеки не са в обхвата на тази документация.
Променете следните редове в кода като угар.
#define WLAN_SSID "xxx" // Вашият SSID на мобилната ви точка за достъп
#дефинирайте WLAN_PASS "……" //
/************************* Adafruit.io Настройка ******************** *************/
#дефинирайте AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883 // използвайте 8883 за SSL
#define AIO_USERNAME "xyz" // Потребителско име на вашия акаунт в adafruit
#define AIO_KEY "abcd ……" // вашият активен ключ …
За MQTT емисии: Устройството и клиентът (мобилно приложение) обменят информация чрез емисии за съобщения, използвайки подмодел на кръчмата чрез брокер MQTT. Всеки клиент или устройство, за да получи съобщение, трябва да се абонира за предварително дефинирана емисия и да използва метод за публикуване, за да изпрати съобщение до емисия. За нашия проект се нуждаем от около 5 емисии. По -долу е обяснението за всяка от емисията, както виждате в кода, и как те работят.
Състояние на мрежата: Наличността на захранване от мрежата е публикувана в емисията /feeds/grid. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/feeds/grid");
0 показва, че захранването не е налично, а 1 за захранване е налично.
Състояние на двигателя: Устройството ще публикува състоянието на двигателя в захранването …/емисии/решетка.
Adafruit_MQTT_Publish motor_status = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/емисии/мотор")
Стойност 0 за OFF и 1 за ON
Бутон за включване на двигателя: Този канал се използва за получаване на заявка за стартиране на двигателя. Устройството ще се абонира за емисията, за да получи заявка за стартиране на двигателя със стойност = 1 и ще използва същата емисия, за да публикува съобщение за потвърждение като 0. По този начин можем да потвърдим, че съобщението за заявка за стартиране действително е получено от устройството.
Adafruit_MQTT_Subscribe motoronbutton = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/feeds/motor_on");
Бутон за изключване на двигателя:
Подобно на заявката за стартиране, този канал се използва за получаване на заявката за спиране на двигателя. Устройството ще се абонира за емисията, за да получи заявката за спиране със стойност = 1 и ще използва същата емисия, за да публикува съобщение за потвърждение като 0.
Adafruit_MQTT_Subscribe motoroffbutton = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/feeds/motor_off");
Връзка:
Това е специална емисия с активирана опция „последна воля“. Когато устройството работи добре на всеки фиксиран интервал, то ще публикува връзка = 1, за да каже на потребителя, че всичко е наред. В случай, че системата е паднала или връзката е загубена, устройството няма да може да комуникира с брокера. В такива случаи самият брокер на MQTT ще публикува във емисията като връзка = 0, за да уведоми потребителя, че нещо се е объркало и устройството не е достъпно през интернет. Трябва физически да отидем и да проверим устройството. Кодът е много прост. Обърнете се към документацията на MQTT за повече подробности как работи „Последната воля“.
ако (itr <= 0)
{
mqtt.publish (AIO_USERNAME "/емисии/връзка", "1", 1);
itr = CON_LIVE_ITR;
}
Останалата част от кода е обяснима и не се изискват промени. Не се колебайте да коментирате, в случай че имате нужда от повече информация.
Стъпка 5: Инсталирайте и конфигурирайте приложението MQTT Dash на вашия мобилен телефон
- Инсталирайте MQTT Dash на телефона си с Android и отворете приложението
- Кликнете върху иконата + в горния десен ъгъл, за да добавите устройство.
- Както е показано на първото изображение по-горе, дайте някакво име на вашето устройство, кажете „MyFarm-IPSet“. Адресно поле като io.adafruit.com и порт като 1883, потребителското име трябва да бъде вашето потребителско име за adafruit, а паролата трябва да бъде вашият активен ключ от adafruit. Оставете останалите полета както са. Накрая кликнете върху запазване.
- Вие сте създали вашето устройство. Сега кликнете върху него, за да добавите табло към него.
- Щракнете върху + и изберете типа като превключвател/бутон. Както е показано по -горе, въведете sys в полето за име. и въведете името на емисията в полето за тема. всяка емисия трябва да започва с потребителско име/емисии/. за това ние /емисии /връзка. Уверете се, че Enable Publish е деактивирано. Като щракнете върху иконата за показване, можете да изберете типа икона, която искате да изглежда на таблото за управление. За стойност 1 изберете един от цветовете (да речем зелен), а за стойност 0 изберете цвят като сив или червен. Накрая кликнете върху запазване в горния десен ъгъл. По същия начин създайте още две икони, една за мрежа с потребителско име/емисии/мрежа като тема и двигател с потребителско име/емисии/мотор. Уверете се, че Enable Publish е деактивирано.
- Накрая създайте бутона за включване на двигателя. Отново е същият като тип като превключвател/бутон. Темата трябва да бъде /feeds /motor_on и този път да е активирана Enable Publish и QOS = 1. По същия начин създайте друг бутон за изключен двигател. Темата трябва да бъде /feeeds /motor_off.
Стъпка 6: Последна стъпка:-) Тестване и фина настройка
- За да сте в безопасност, първо трябва да тествате устройството за неговите операции START и STOP, преди да свържете релетата към DOL стартер. Активирайте Hotspot на мобилния телефон с активиран интернет. Свържете лаптопа с среда за разработка директно към USB порта NodeMCU с друго зарядно устройство, свързано към TP4056 едновременно. Ако устройството е успешно свързано с интернет, трябва да видите 1 устройство, свързано към гореща точка на смартфона.
- На другия смартфон, на който сте инсталирали MQTT Dash, отворете таблото за управление на приложението. Трябва да видите, че иконата NET в зелено и иконата на мрежата също в зелено с техните стойности като 1. Иконата на двигателя трябва да се показва като изключен двигател със стойност 0.
- Когато кликнете върху бутона за включване на двигателя, релето за стартиране трябва да издаде два звука на щракване на интервал от две секунди. По същия начин бутонът за изключване на двигателя също.
- За безопасност сега изключете основното захранване към DOL стартера и свържете релетата към DOL стартера, както е показано по-горе стъпка-2. Уверете се, че двигателят е изключен. Натиснете бутона за нулиране на NodeMCU. От изхода на серийния монитор можете да видите декларации за отстраняване на грешки, които отпечатват стойности от сензора WC1700, делта и изчисления ток в бобината. При изключен двигател и "#define WCS1700_CONST 15" maxCur трябва да бъде по -малко от 2 последователно. Ако показва повече от 2, опитайте с по -високи стойности на WCS1700_CONST. Всеки път ще трябва да прекомпилирате кода и да зареждате фърмуера.
- Сега включете двигателя и потърсете отново текущите показания. Оставете двигателя включен за около 10 -15 минути и запишете стабилното отчитане на тока. Токът може да варира между 10 и 20 ампера приблизително и не е необходимо да е точен.
- Върнете се към кода и задайте „#define MIN_CURRENT X. Където X е 40 процента от максималния ток, приближен до цифрова стойност. В моя случай зададох MIN_CURRENT на 5. Компилирайте и презаредете фърмуера отново в NodeMCU.
- Извадете USB кабела от NodeMCU. Изключете и включете устройството с USB зарядно устройство, свързано към TP4056. Щракването върху бутона за включване на двигателя в мобилното приложение трябва да стартира двигателя. След като двигателят е включен, състоянието на двигателя трябва да се отрази на таблото за управление като ВКЛЮЧЕНО. Щракването върху бутона за спиране трябва да спре двигателя.
Наслади се !!!!
Препоръчано:
Направете свой собствен стартов панел: 6 стъпки
Направете свой собствен стартов панел: В този епизод на DIY или Buy ще ви покажа как създадох свой собствен стартер. Това означава, че ще ви покажа как комбинирах дизайнерска идея с 3D отпечатъци, светодиоди WS2812, тактилни превключватели и Arduino, за да създам подходящ MIDI инструмент. Докато се строи
Таймер на базата на Arduino за помпа за аквапоника: 4 стъпки
Ардуино базиран таймер за помпа за аквапоника: Това е малка инструкция за базиран на Arduino таймер за помпа за аквапоника. Имам малка настройка на система за аквапоника на закрито с непрекъснат поток. Помпата работи непрекъснато и исках да направя таймер, който ще накара помпата да работи за определена амо
Роботизиран контролер на базата на Matlab: 9 стъпки
Базираният в Matlab ROS роботизиран контролер: Още от дете винаги съм мечтал да бъда Iron Man и все още го правя. Iron Man е един от онези герои, които са реално възможни и просто казано аз се стремя да стана Iron Man някой ден, дори ако хората ми се смеят или казват, че е невъзможно
Автоматичен контролер на двигателя на водна помпа: 12 стъпки
Автоматичен контролер на двигателя на водна помпа: Здравей, приятелю, Днес ще направя верига от верига на контролера на двигателя на автоматична водна помпа, използвайки 2N222 транзистор и реле. Нека започнем
Индукционен металдетектор на базата на Arduino на базата на DIY: 5 стъпки
DIY Ардуино базиран импулсен метален детектор: Това е сравнително прост металдетектор с отлични характеристики