Оглавление:

Солнечный измеритель влажности почвы с ESP8266: 10 шагов (с изображениями)
Солнечный измеритель влажности почвы с ESP8266: 10 шагов (с изображениями)

Видео: Солнечный измеритель влажности почвы с ESP8266: 10 шагов (с изображениями)

Видео: Солнечный измеритель влажности почвы с ESP8266: 10 шагов (с изображениями)
Видео: КИТАЙЦЫ СНОВА УДИВЛЯЮТ 100 ТОВАРОВ С ALIEXPRESS 2024, Июль
Anonim

В этом руководстве мы создаем монитор влажности почвы на солнечной энергии. Он использует микроконтроллер Wi-Fi ESP8266 с кодом низкого энергопотребления, и все водонепроницаемое, поэтому его можно оставить снаружи. Вы можете точно следовать этому рецепту или взять из него полезные приемы для своих собственных проектов.

Если вы новичок в программировании микроконтроллеров, ознакомьтесь с моими классами Arduino и Интернетом вещей, чтобы познакомиться с основами подключения, кодирования и подключения к Интернету.

Этот проект является частью моего бесплатного курса Solar Class, где вы можете узнать больше о способах использования солнечной энергии с помощью гравировки и солнечных батарей.

Чтобы быть в курсе того, над чем я работаю, подписывайтесь на меня на YouTube, Instagram, Twitter, Pinterest и подписывайтесь на мою рассылку.

Шаг 1. Что вам понадобится

Что вам понадобится
Что вам понадобится

Вам понадобится плата для зарядки солнечной батареи и разветвитель ESP8266, такой как NodeMCU ESP8266 или Huzzah, а также датчик почвы, аккумулятор, выключатель питания, провод и корпус для подключения вашей схемы.

Вот компоненты и материалы, используемые для монитора влажности почвы:

  • Микроконтроллер ESP8266 NodeMCU (или аналогичный, Vin должен выдерживать напряжение до 6 В)
  • Плата для зарядки солнечных батарей Adafruit с дополнительным термистором и резистором 2,2 кОм
  • Литий-ионный аккумулятор 2200 мАч
  • Плата Perma-proto
  • Датчик влажности почвы / температуры
  • 2 кабельных ввода
  • Водонепроницаемый корпус
  • Водонепроницаемый пара кабелей питания постоянного тока
  • Термоусадочные трубки
  • Солнечная панель 3,5 Вт
  • Кнопочный выключатель питания
  • Двойная лента из вспененного материала

Вот инструменты, которые вам понадобятся:

  • Паяльник и припой
  • Инструмент "Руки помощи"
  • Инструмент для зачистки проводов
  • Ножницы для промывки
  • Пинцет (по желанию)
  • Тепловая пушка или зажигалка
  • Мультиметр (необязательно, но удобен для поиска и устранения неисправностей)
  • Кабель USB A-microB
  • Ножницы
  • Шаг дрель

Вам понадобятся бесплатные учетные записи на сайтах облачных данных io.adafruit.com и IFTTT.

Как партнер Amazon я зарабатываю на соответствующих покупках, которые вы совершаете с помощью моих партнерских ссылок.

Шаг 2: прототип макета

Макетный прототип
Макетный прототип

Для подобных проектов важно создать прототип макетной платы без пайки, чтобы вы могли убедиться, что датчик и код работают, прежде чем устанавливать какие-либо постоянные соединения.

Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение

В этом случае датчик почвы имеет многожильные провода, поэтому необходимо было временно прикрепить сплошные разъемы к концам проводов датчика, используя припой, помогающие руки и термоусадочную трубку.

Изображение
Изображение

Следуйте принципиальной схеме, чтобы подключить контакты питания, заземления, часов и данных датчика (данные также получают подтягивающий резистор 10 кОм, который поставляется с датчиком почвы).

  • Зеленый провод датчика к GND
  • Красный провод датчика на 3,3 В
  • Желтый провод датчика к контакту D5 NodeMCU (GPIO 14)
  • Синий провод датчика к контакту D6 NodeMCU (GPIO 12)
  • Подтягивающий резистор 10 кОм между синим выводом данных и 3,3 В

Вы можете перевести это на предпочитаемый вами микроконтроллер. Если вы используете Arduino Uno или аналогичный, ваша плата уже поддерживается программным обеспечением Arduino. Если вы используете ESP8266, ознакомьтесь с моим классом Интернета вещей, чтобы получить пошаговую помощь по настройке с ESP8266 в Arduino (добавив дополнительные URL-адреса в поле URL-адресов диспетчера дополнительных плат в настройках Arduino, затем выполните поиск и выбор новых досок у менеджера досок). Я обычно использую плату Adafruit ESP8266 Huzzah для программирования платы NodeMCU ESP8266, но вы также можете установить и использовать поддержку платы Generic ESP8266. Вам также понадобится драйвер микросхемы связи USB SiLabs (доступен для Mac / Windows / Linux).

Чтобы заставить датчик работать с моей Arduino-совместимой платой, я загрузил библиотеку SHT1x Arduino со страницы Github Practical Arduino, затем разархивировал файл и переместил папку библиотеки в мою папку Arduino / libraries, а затем переименовал ее в SHT1x. Откройте пример скетча ReadSHT1xValues и измените номера контактов на 12 (dataPin) и 14 (clockPin) или скопируйте измененный скетч сюда:

#включают

#define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // создать экземпляр объекта SHT1x void setup () {Serial.begin (38400); // Открываем последовательное соединение для передачи значений хосту Serial.println ("Запуск"); } void loop () {float temp_c; float temp_f; влажность поплавка; temp_c = sht1x.readTemperatureC (); // Считываем значения с датчика temp_f = sht1x.readTemperatureF (); влажность = sht1x.readHumidity (); Serial.print ("Температура:"); // Выводим значения на последовательный порт Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Влажность:"); Серийный отпечаток (влажность); Serial.println ("%"); задержка (2000); }

Загрузите этот код на свою плату и откройте последовательный монитор, чтобы увидеть поток данных датчика.

Если ваш код не компилируется и жалуется на то, что SHT1x.h не найден, значит, у вас не установлена должным образом необходимая библиотека датчиков. Проверьте папку с Arduino / библиотеки на предмет под названием SHT1x, и если он находится где-то еще, например, в папке с загрузками, переместите его в папку с библиотеками Arduino и при необходимости переименуйте.

Если ваш код компилируется, но не загружается на вашу доску, дважды проверьте настройки вашей платы, убедитесь, что ваша плата подключена, и выберите правильный порт в меню «Инструменты».

Если ваш код загружается, но вход вашего последовательного монитора не распознается, дважды проверьте, совпадает ли ваша скорость передачи данных со скоростью, указанной в вашем скетче (38400 в данном случае).

Если ваш последовательный вход монитора кажется неправильным, дважды проверьте вашу проводку на принципиальной схеме. Установлен ли ваш подтягивающий резистор 10 кОм между выводом данных и 3,3 В? Данные и часы подключены к правильным контактам? Подключены ли питание и земля должным образом по всей цепи? Не продолжайте, пока этот простой эскиз не заработает!

Следующий шаг относится к ESP8266 и настраивает дополнительную часть отчета о беспроводных датчиках в образце проекта. Если вы используете стандартный (не беспроводной) микроконтроллер, совместимый с Arduino, продолжайте разработку окончательного эскиза Arduino и переходите к разделу «Подготовка платы для зарядки от солнечных батарей».

Шаг 3: установка программного обеспечения

Настройка программного обеспечения
Настройка программного обеспечения

Чтобы скомпилировать код этого проекта с ESP8266, вам необходимо установить еще несколько библиотек Arduino (доступных через диспетчер библиотек):

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

Загрузите код, прилагаемый к этому шагу, затем распакуйте файл и откройте Solar_Powered_Soil_Moisture_Monitor_Tutorial в своем программном обеспечении Arduino.

#включают

#include #include #include #include // Укажите подключения данных и часов и создайте экземпляр объекта SHT1x #define dataPin 12 // Вывод NodeMCU D6 #define clockPin 14 // Вывод NodeMCU D5 SHT1x sht1x (dataPin, clockPin); // настраиваем подачу AdafruitIO_Feed * влажность = io.feed ("влажность"); AdafruitIO_Feed * temperature = io.feed («температура»); const int sleepTime = 15; // 15 минут

установка void ()

{Serial.begin (115200); // Открываем последовательное соединение для передачи значений хосту Serial.println ("Запуск"); // подключаемся к io.adafruit.com Serial.print («Подключение к Adafruit IO»); io.connect (); // ждем соединения while (io.status () <AIO_CONNECTED) {Serial.print ("."); задержка (500); } // подключаемся Serial.println (); Serial.println (io.statusText ()); }

пустой цикл ()

{io.run (); // io.run (); поддерживает подключение клиента и требуется для всех эскизов. float temp_c; float temp_f; плавающая влага; temp_c = sht1x.readTemperatureC (); // Считываем значения с датчика temp_f = sht1x.readTemperatureF (); влажность = sht1x.readHumidity (); Serial.print ("Температура:"); // Выводим значения на последовательный порт Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Влажность:"); Serial.print (влажность); Serial.println ("%"); влажность-> сохранить (влажность); температура-> сохранить (temp_f); Serial.println («ESP8266 спит…»); ESP.deepSleep (время сна * 1000000 * 60); // Спать }

Этот код представляет собой гибрид кода сенсора, использованного ранее в этом руководстве, и базового примера из облачной службы данных Adafruit IO. Программа переходит в режим низкого энергопотребления и большую часть времени находится в спящем режиме, но просыпается каждые 15 минут, чтобы определить температуру и влажность почвы, и сообщает свои данные в Adafruit IO. Перейдите на вкладку config.h и введите имя пользователя и ключ Adafruit IO, а также имя и пароль локальной сети Wi-Fi, затем загрузите код в свой микроконтроллер ESP8266.

Изображение
Изображение

Вам нужно будет немного подготовиться на io.adafruit.com. После создания каналов для температуры и влажности вы можете создать информационную панель для своего монитора с графиком значений датчиков и данных обоих входящих каналов. Если вам нужно напомнить о том, как начать работу с Adafruit IO, ознакомьтесь с этим уроком в моем классе «Интернет вещей».

Шаг 4: Подготовьте плату для зарядки от солнечной батареи

Подготовьте плату для зарядки от солнечной батареи
Подготовьте плату для зарядки от солнечной батареи

Подготовьте плату для зарядки солнечной батареи, припаяв ее конденсатор и несколько проводов к выходным площадкам нагрузки. Я настраиваю свой так, чтобы он заряжался быстрее с помощью дополнительного дополнительного резистора (2,2 кОм, припаянного к PROG), и чтобы его было безопаснее оставить без присмотра, заменив резистор для поверхностного монтажа термистором 10 кОм, прикрепленным к самой батарее. Это ограничит зарядку до безопасного диапазона температур. Я рассмотрел эти модификации более подробно в моем проекте Solar USB Charger.

Шаг 5: Постройте схему микроконтроллера

Построить схему микроконтроллера
Построить схему микроконтроллера
Изображение
Изображение
Изображение
Изображение

Припаяйте плату микроконтроллера и переключатель питания к плате perma-proto.

Изображение
Изображение

Подключите выходную мощность солнечного зарядного устройства к входу вашего переключателя, который должен быть рассчитан как минимум на 1 ампер.

Изображение
Изображение

Создайте и припаяйте соединения проводов на макетной плате, описанные на принципиальной схеме выше (или в соответствии со спецификациями вашей персональной версии), включая подтягивающий резистор 10 кОм на линии передачи данных датчика.

Контакты нагрузки солнечного зарядного устройства будут обеспечивать питание батареи 3,7 В, когда солнечная энергия отсутствует, но будет получать питание непосредственно от солнечной панели, если она подключена и солнечно. Поэтому микроконтроллер должен выдерживать различные напряжения, от 3,7 В до 6 В постоянного тока. Для тех, кому требуется 5 В, можно использовать PowerBoost (500 или 1000, в зависимости от требуемого тока) для модуляции напряжения нагрузки до 5 В (как показано в проекте Solar USB Charger). Вот несколько распространенных плат и диапазоны их входных напряжений:

  • NodeMCU ESP8266 (здесь используется): 5 В USB или 3,7-10 В Vin
  • Arduino Uno: 5 В USB или 7-12 В Vin
  • Adafruit Huzzah ESP8266 Breakout: 5 В USB или 3,4-6 В VBat

Чтобы добиться максимально возможного срока службы батареи, вам следует потратить некоторое время на то, чтобы рассмотреть и оптимизировать общий ток, который вы потребляете. ESP8266 имеет функцию глубокого сна, которую мы использовали в скетче Arduino, чтобы значительно снизить энергопотребление. Он просыпается, чтобы считать датчик, и потребляет больше тока, пока он подключается к сети, чтобы сообщить значение датчика, а затем возвращается в спящий режим на указанное время. Если ваш микроконтроллер потребляет много энергии и не может быть легко переведен в спящий режим, подумайте о переносе вашего проекта на совместимую плату, которая потребляет меньше энергии. Задайте вопрос в комментариях ниже, если вам нужна помощь в определении того, какая доска подходит для вашего проекта.

Шаг 6: Установите кабельные вводы

Изображение
Изображение

Чтобы обеспечить защиту от атмосферных воздействий для кабеля солнечной панели и кабеля датчика, мы установим два кабельных сальника сбоку от атмосферостойкого кожуха.

Изображение
Изображение
Изображение
Изображение

Проверьте соответствие компонентов, чтобы определить идеальное размещение, затем отметьте и просверлите отверстия в водонепроницаемом корпусе с помощью ступенчатого сверла. Установите два кабельных ввода.

Изображение
Изображение

Шаг 7: Завершите сборку схемы

Полная сборка схемы
Полная сборка схемы

Вставьте сторону порта водонепроницаемого силового кабеля в один и припаяйте его к входу постоянного тока солнечного зарядного устройства (красный к + и черный к -).

Изображение
Изображение

Вставьте датчик почвы через другой сальник и подключите его к perma-proto в соответствии со схемой.

Изображение
Изображение

Прикрепите терморезисторный зонд к аккумулятору. Это ограничит зарядку до безопасного диапазона температур, пока проект остается без присмотра на улице.

Изображение
Изображение

Зарядка в слишком горячем или слишком холодном состоянии может повредить аккумулятор или вызвать возгорание. Воздействие экстремальных температур может вызвать повреждение и сократить срок службы батареи, поэтому внесите ее внутрь, если она ниже нуля или выше 45 ℃ / 113F.

Изображение
Изображение

Затяните кабельные вводы, чтобы обеспечить защиту от атмосферных воздействий вокруг соответствующих кабелей.

Шаг 8: подготовьте солнечную панель

Подготовить солнечную панель
Подготовить солнечную панель

Следуйте моим инструкциям, чтобы соединить кабель солнечной панели со стороной вилки водонепроницаемого кабеля питания постоянного тока.

Шаг 9: проверьте это

Попробуй это
Попробуй это

Подключите аккумулятор и включите цепь, нажав выключатель питания.

Изображение
Изображение

Проверьте это и убедитесь, что он отправляет сообщения в Интернет, прежде чем закрывать корпус и устанавливать датчик в вашем саду с травами, драгоценном горшечном растении или другой почве в пределах диапазона сигнала вашей сети Wi-Fi.

Изображение
Изображение

После того, как данные с датчика регистрируются в сети, легко настроить рецепт для электронных или текстовых предупреждений на сайте шлюза API If This Then That. Я настроил свой, чтобы он отправлял мне электронное письмо, если уровень влажности почвы упадет ниже 50.

Чтобы протестировать его, не дожидаясь, пока мое растение высохнет, я вручную ввел точку данных для моего канала влажности на Adafruit IO, которая упала ниже порогового значения. Через несколько секунд приходит письмо! Если уровень почвы упадет ниже указанного мной уровня, я буду получать электронное письмо каждый раз, когда корм будет обновлен, пока я не полью почву. Для моего здравомыслия я обновил свой код, чтобы брать образцы почвы гораздо реже, чем каждые 15 минут.

Шаг 10: используйте его снаружи

Используйте его снаружи!
Используйте его снаружи!
Используйте его снаружи!
Используйте его снаружи!

Это интересный проект, который можно настроить в соответствии с потребностями вашего растения в гидратации, и его легко заменить или добавить датчики или интегрировать функции солнечной энергии в другие проекты Arduino.

Спасибо, что подписались! Я хотел бы услышать, что вы думаете; пожалуйста, оставьте сообщение в комментариях. Этот проект является частью моего бесплатного Solar Class, где вы можете найти простые проекты на заднем дворе и дополнительные уроки по работе с солнечными батареями. Проверьте это и зарегистрируйтесь!

Если вам понравился этот проект, возможно, вас заинтересуют некоторые из моих других:

  • бесплатный класс Интернета вещей
  • Счетчик подписчиков YouTube с ESP8266
  • Отображение трекера социальной статистики с ESP8266
  • WiFi-дисплей погоды с ESP8266
  • Интернет Валентин

Чтобы не отставать от того, над чем я работаю, подписывайтесь на меня на YouTube, Instagram, Twitter, Pinterest и Snapchat.

Рекомендуемые: