- Необходимые компоненты
- Принципиальная электрическая схема
- Программирование ESP8266 NodeMCU для автоматической системы полива
Большинство фермеров используют большие участки сельскохозяйственных угодий, и становится очень трудно добраться до каждого уголка больших земель и отследить их. Иногда есть вероятность неравномерного разбрызгивания воды. Это приводит к плохому качеству урожая, что приводит к финансовым потерям. В этом случае полезна интеллектуальная система орошения с использованием новейших технологий Интернета вещей, которая упрощает ведение сельского хозяйства.
Смарт оросительной системы имеет широкие возможности для автоматизации всей системы орошения. Здесь мы создаем ирригационную систему на основе Интернета вещей, используя модуль ESP8266 NodeMCU и датчик DHT11. Он не только автоматически орошает воду в зависимости от уровня влажности почвы, но и отправляет данные на сервер ThingSpeak, чтобы отслеживать состояние земли. Система будет состоять из водяного насоса, который будет использоваться для разбрызгивания воды на землю в зависимости от экологических условий земли, таких как влажность, температура и влажность.
Ранее мы создавали аналогичную систему автоматического полива растений, которая отправляет оповещения на мобильные устройства, но не в облако IoT. Помимо этого, сигнализация дождя и цепь датчика влажности почвы также могут быть полезны при создании системы интеллектуального орошения.
Прежде чем начать, важно отметить, что для разных культур требуются разные влажность почвы, температура и влажность. Итак, в этом уроке мы используем такую культуру, для которой требуется влажность почвы около 50-55%. Таким образом, когда почва теряет влажность до уровня менее 50%, автоматически включается насос с двигателем, чтобы орошать воду, и он будет продолжать разбрызгивать воду до тех пор, пока влажность не достигнет 55%, после чего насос будет выключен. Данные датчика будут отправлены на сервер ThingSpeak через определенный интервал времени, чтобы их можно было отслеживать из любой точки мира.
Необходимые компоненты
- NodeMCU ESP8266
- Модуль датчика влажности почвы
- Модуль водяного насоса
- Модуль реле
- DHT11
- Подключение проводов
Вы можете купить все компоненты, необходимые для этого проекта.
Принципиальная электрическая схема
Принципиальная схема этой интеллектуальной системы орошения IoT приведена ниже:
Программирование ESP8266 NodeMCU для автоматической системы полива
Для программирования модуля ESP8266 NodeMCU в качестве внешней библиотеки используется только библиотека датчиков DHT11. Датчик влажности выдает аналоговый выход, который можно прочитать через аналоговый вывод A0 ESP8266 NodeMCU. Поскольку NodeMCU не может выдавать выходное напряжение более 3,3 В от своего GPIO, мы используем релейный модуль для управления моторным насосом 5 В. Также датчик влажности и датчик DHT11 питаются от внешнего источника питания 5 В.
Полный код с рабочим видео приведен в конце этого руководства, здесь мы объясняем программу, чтобы понять рабочий процесс проекта.
Начните с включения необходимой библиотеки.
#включают
Поскольку мы используем сервер ThingSpeak, ключ API необходим для связи с сервером. Чтобы узнать, как получить ключ API от ThingSpeak, вы можете прочитать предыдущую статью о мониторинге температуры и влажности в реальном времени на ThingSpeak.
String apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Следующим шагом является запись учетных данных Wi-Fi, таких как SSID и пароль.
const char * ssid = "CircuitDigest"; const char * pass = "ххххххххххх";
Определите контакт датчика DHT, к которому подключен DHT, и выберите тип DHT.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
Выход датчика влажности подключается к контакту A0 узла ESP8266 NodeMCU. И вывод двигателя подключен к D0 NodeMCU.
const int влагаPin = A0; const int motorPin = D0;
Мы будем использовать функцию millis () для отправки данных через каждый определенный интервал времени, здесь это 10 секунд. Задержку () можно избежать, так как он останавливает программу для определенной задержки, где микроконтроллер не может делать другие задачи. Узнайте больше о разнице между delay () и millis () здесь.
беззнаковый длинный интервал = 10000; беззнаковый длинный предыдущийМиллис = 0;
Установите вывод двигателя как выходной и сначала выключите двигатель. Начните считывание датчика DHT11.
pinMode (motorPin, ВЫХОД); digitalWrite (motorPin, LOW); // изначально отключать двигатель dht.begin ();
Попробуйте подключить Wi-Fi с заданными SSID и паролем и дождитесь подключения Wi-Fi, а если подключено, переходите к следующим шагам.
WiFi.begin (ssid, pass); в то время как (WiFi.status ()! = WL_CONNECTED) { задержка (500); Serial.print ("."); } Serial.println (""); Serial.println («WiFi подключен»); }
Определите текущее время запуска программы и сохраните его в переменной, чтобы сравнить с прошедшим временем.
беззнаковый длинный currentMillis = millis ();
Считайте данные о температуре и влажности и сохраните их в переменных.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Если DHT подключен и ESP8266 NodeMCU может считывать показания, перейдите к следующему шагу или вернитесь отсюда, чтобы проверить еще раз.
if (isnan (h) - isnan (t)) { Serial.println («Не удалось прочитать с датчика DHT!»); возвращение; }
Считайте показание влажности с датчика и распечатайте его.
влажностьПроцент = (100.00 - ((analogRead (влагопин) / 1023.00) * 100.00)); Serial.print («Влажность почвы =»); Serial.print (влажностьПроцент); Serial.println ("%");
Если значение влажности находится в пределах требуемого диапазона влажности почвы, выключите насос, или, если влажность превышает требуемую, включите насос.
если (влагопроцент <50) { digitalWrite (motorPin, HIGH); } если (влажность> 50 && влажность <55) { digitalWrite (motorPin, HIGH); } если (влагопроцент> 56) { digitalWrite (motorPin, LOW); }
Теперь через каждые 10 секунд вызывайте функцию sendThingspeak () для отправки данных о влажности, температуре и влажности на сервер ThingSpeak.
если ((длинное без знака) (currentMillis - previousMillis)> = интервал) { sendThingspeak (); previousMillis = millis (); client.stop (); }
В функции sendThingspeak () мы проверяем, подключена ли система к серверу, и если да, то подготавливаем строку, в которую записываются значения влажности, температуры, влажности, и эта строка будет отправлена на сервер ThingSpeak вместе с ключом API и адресом сервера.
если (client.connect (сервер, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (влагопроцент); postStr + = "& field2 ="; postStr + = Строка (т); postStr + = "& field3 ="; postStr + = Строка (ч); postStr + = "\ г \ п \ г \ п";
Наконец, данные отправляются на сервер ThingSpeak с помощью функции client.print (), которая содержит ключ API, адрес сервера и строку, подготовленную на предыдущем шаге.
client.print ("POST / обновление HTTP / 1.1 \ n"); client.print ("Хост: api.thingspeak.com \ n"); client.print ("Соединение: закрыть \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded \ n"); client.print ("Длина содержимого:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Наконец, вот как данные выглядят на панели инструментов ThingSpeak
На этом последнем шаге завершается полное руководство по интеллектуальной системе полива на основе Интернета вещей. Обратите внимание, что важно выключить мотор, когда влажность почвы достигнет необходимого уровня после орошения водой. Вы можете сделать более умную систему, которая может содержать различный контроль для разных культур.
Если у вас возникнут какие-либо проблемы при выполнении этого проекта, оставьте комментарий ниже или обратитесь на наш форум, чтобы получить более актуальные вопросы и ответы на них.
Полную программу и демонстрационное видео для этого проекта вы найдете ниже.