• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP12e +ds18b20 + датчик влажности (емкостной )

makcumym

New member
Доброго времени суток ! Собираю потихоньку систему автополива для растений .Решил сделать на базе esp12e датчик влажности + температуры .Предполагается использовать следующие компоненты :
ESP8266 12Е https://aliexpress.ru/item/4000281170342.html
Датчик температуры https://aliexpress.ru/item/32380378618.html
Датчик влажности емкостной https://aliexpress.ru/item/1005001350110950.html
Схема устройства ниже :

esp12e+ds18b20.JPG

Возник вопрос использование прошивки . Есть ли готовая прошивка (поиском пользовался ) с функционалом отсылки показаний датчиков на сервер mqtt (локальный home assiant) +вебмордой ?
Может кто делал нечто подобное и есть пример кода .
 

CodeNameHawk

Moderator
Команда форума
Дорожки под антенной не кошерно, уменьшается дальность связи.
Там даже полезно текстолит убрать.
 

nikolz

Well-known member
какой смысл в этой плате?
датчики будете ставить в землю. ESP12 уже имеет контакты для подключения проводов.
В итоге у вас плата на плате и провода к датчикам и блоку питания.
Я делают без подобной прокладки
ESP12+датчики+блок питания(батарейка)+плоский цветной кабель.
И нет проблем и собирается за 15 минут и ничего лишнего.
 

edw

New member
Ничего не понял о каком емкостном датчике идет речь, кроме того что он возможно цепляется к ADC.
 

makcumym

New member
какой смысл в этой плате?
датчики будете ставить в землю. ESP12 уже имеет контакты для подключения проводов.
В итоге у вас плата на плате и провода к датчикам и блоку питания.
Я делают без подобной прокладки
ESP12+датчики+блок питания(батарейка)+плоский цветной кабель.
И нет проблем и собирается за 15 минут и ничего лишнего.
У меня так сделано в общей системе .ESP (nodemcu+ relay4шт +2 датчика )
Да я делаю с расчетом датчик можно поменять .Питание думаю сделать о лития + повышайка (пока в теории ) .

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

И распиновку ds18b20 на плате сделайте соответствующую
А в чем она неправильная ? Через резистор 4.7к подключенный к 3.3в идет на GPIO5

Дорожки под антенной не кошерно, уменьшается дальность связи.
Там даже полезно текстолит убрать.
Хм об этом не подумал .Сейчас переделаю перемещу.
Ничего не понял о каком емкостном датчике идет речь, кроме того что он возможно цепляется к ADC.
Картинка ниже : Как правильно выше заметили esp12e будет цепляться к плате и отсылать показания влажности почвы и текущую температуру

-.jpg
 

CodeNameHawk

Moderator
Команда форума
Собрал похожую систему, правда без полива.
Только у меня датчик влажности и датчики температуры(уличный и комнатный) подключены к атмега16, к которому подключен индикатор 16*2 и часы DS3231.

Работает так: раз в минуту, по сигналу от DS3231, запускается атмега16, считывает значение с датчика влажности, с датчиков температуры, время с DS3231 и отображает на индикаторе и уходит в сон.
Раз в десять минут атмега16 будит есп и посылает ей данные датчиков и значение времени.
есп по быстрому сбрасывает это все в базу данных на сервере в интернете и уходит в сон.

Питается это все от аккума 18650, стоит повышающий преобразователь МТ3608
https://aliexpress.ru/item/32279772484.html?spm=a2g0v.12010612.8148356.17.5b2e7e043ZZovp (на холостом ходу потребляет 150 mka)
до 5в (для питания атмега16) и понижающий до 3.3в на XC6206P332MR 3,3 В.
https://aliexpress.ru/item/32825125321.html

rys.png
 

makcumym

New member
Собрал похожую систему, правда без полива.
Только у меня датчик влажности и датчики температуры(уличный и комнатный) подключены к атмега16, к которому подключен индикатор 16*2 и часы DS3231.

Работает так: раз в минуту, по сигналу от DS3231, запускается атмега16, считывает значение с датчика влажности, с датчиков температуры, время с DS3231 и отображает на индикаторе и уходит в сон.
Раз в десять минут атмега16 будит есп и посылает ей данные датчиков и значение времени.
есп по быстрому сбрасывает это все в базу данных на сервере в интернете и уходит в сон.

Питается это все от аккума 18650, стоит повышающий преобразователь МТ3608
https://aliexpress.ru/item/32279772484.html?spm=a2g0v.12010612.8148356.17.5b2e7e043ZZovp (на холостом ходу потребляет 150 mka)
до 5в (для питания атмега16) и понижающий до 3.3в на XC6206P332MR 3,3 В.
https://aliexpress.ru/item/32825125321.html

Посмотреть вложение 9983
MT3608 тоже имеется ,но он что-то громоздкий получается ...в этой системе .Но пока идти с Китая что-то более мелкое буду с ним работать. По прошивке что-то никто не подсказал в какую строну лучше посмотреть ?

Общую систему думаю делать по схеме представленной ниже .Но пока с Китая идет MCP23017 ,использую pcf8574 для реле и сделано все на макетке .

Schematic_poliv_nodemcu_2020-10-18_13-55-25.png
 

CodeNameHawk

Moderator
Команда форума
MT3608 тоже имеется ,но он что-то громоздкий получается ...в этой системе .Но пока идти с Китая что-то более мелкое буду с ним работать. По прошивке что-то никто не подсказал в какую строну лучше посмотреть ?
У вас напрашивается блок питания, одно реле потребляет 70ма, есп с WiFi 70ма, или 10ма без WiFi.
У меня прошивки свои, на этом сайте найдете примеры для работы с MQTT
 

edw

New member
В качестве механизма полива что используете, мини погружной моторчик со шлангом?
Собирал себе что-то подобное, но без датчика влажности, запускается по MQTT команде на заранее прописанное количество секунд.
 

makcumym

New member
У вас напрашивается блок питания, одно реле потребляет 70ма, есп с WiFi 70ма, или 10ма без WiFi.
У меня прошивки свои, на этом сайте найдете примеры для работы с MQTT
Для схемы приведенной выше ,думаю поставить бп 5В 1А . Гляну ваши сообщения возможно упустил .На данный момент использую прошивку от wifi-iot ,а автономные розетки крутятся на espurna .

В качестве механизма полива что используете, мини погружной моторчик со шлангом?
Собирал себе что-то подобное, но без датчика влажности, запускается по MQTT команде на заранее прописанное количество секунд.
Да именно так погружной насос на каждую линию (всего 3 линии ) .Также и со светом .Буду благодарен если покажите пример кода .

p.s датчик влажности предполагаю использовать вне системы и автономно .Чтоб была возможность переставить его на другой цветок .
 

svs2007m

Active member
Как вариант автомобильный насос для омывателя стекол (отличное давление на 10-15м одной трубкой ). На тройники у растения поставить ограничитель потока как у капельницы (для каждого растения свое кол-во воды или физ.раствора или подвесной вариант для слива излишней жидкости для повторного полива) Полив лучше разбить на несколько мини циклов что-бы не получилось болото.
Блок питания адекватный ! :)
 

nikolz

Well-known member
Как вариант автомобильный насос для омывателя стекол (отличное давление на 10-15м одной трубкой ). На тройники у растения поставить ограничитель потока как у капельницы (для каждого растения свое кол-во воды или физ.раствора или подвесной вариант для слива излишней жидкости для повторного полива) Полив лучше разбить на несколько мини циклов что-бы не получилось болото.
Блок питания адекватный ! :)
еще интересно посчитать затраты электроэнергии на выращивание такого цветка.
можно стоит от солнышка все питать?
 

makcumym

New member
Как вариант автомобильный насос для омывателя стекол (отличное давление на 10-15м одной трубкой ). На тройники у растения поставить ограничитель потока как у капельницы (для каждого растения свое кол-во воды или физ.раствора или подвесной вариант для слива излишней жидкости для повторного полива) Полив лучше разбить на несколько мини циклов что-бы не получилось болото.
Блок питания адекватный ! :)
Тоже изначально хотел такой вариант ,но держать такой насос на окне избыточно .Для 3х цветков хватает погружного насоса .
 

nikolz

Well-known member
Номинальное напряжение: DC3V или 4,5 V (3-6V может работать)
Номинальный ток без нагрузки: менее 0,05a
Объем выгруженного плюша: 100 л/ч
Подъем: 3V спецификация подъема 0,35 m,
5 В Спецификация подъема 0,55 м
Номинальный ток при нагрузке: 0.18A
Использование жидкостей: водопроводная вода, грунтовые воды, морская вода,
Температура воды: - 20 C ~ 50 C
Влажность окружающей среды: 45%-90%
 

makcumym

New member
Народ подскажите по коду .Необходимо отправлять на mqtt два топика вида :
plant01/temp (значение температуры )
plant01/hum (значение влажности )
Ниже мой корявый код собранный из всего .

C++:
#include "ESP8266WiFi.h"
#include "PubSubClient.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define SensorPin A0   // контакт для датчика влажности
#define ONE_WIRE_BUS 0 // Пин подключения OneWire шины, 0 (D3)
#define MIN 300 // значение полного полива
#define MAX 700 // значение критической сухости
float tempC = 0;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
// WiFi
const char* ssid = "wifi_ssid";
const char* wifi_password = "wifi_password";
// MQTT
const char* mqtt_server = "192.168.0.100";
const char* plant_temp = "plant01/temp";
const char* plant_hum = "plant01/hum";
const char* mqtt_username = "user";
const char* mqtt_password = "user";
const char* clientID = "client_ESP8266_2";


// Initialise the WiFi and MQTT Client objects
WiFiClient wifiClient;
PubSubClient client(mqtt_server, 1883, wifiClient); // 1883 is the listener port for the Broker
void connect_MQTT(){
  Serial.print("Connecting to ");
  Serial.println(ssid);
  // Connect to the WiFi
  WiFi.begin(ssid, wifi_password);

  // Wait until the connection has been confirmed before continuing
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // Debugging - Output the IP Address of the ESP8266
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // Connect to MQTT Broker
  // client.connect returns a boolean value to let us know if the connection was successful.
  // If the connection is failing, make sure you are using the correct MQTT Username and Password (Setup Earlier in the Instructable)
  if (client.connect(clientID, mqtt_username, mqtt_password)) {
    Serial.println("Connected to MQTT Broker!");
  }
  else {
    Serial.println("Connection to MQTT Broker failed...");
  }
}


void setup() {
  Serial.begin(9600);

  DS18B20.begin();

  connect_MQTT();
  Serial.setTimeout(2000);
  DS18B20.requestTemperatures();
  tempC = DS18B20.getTempCByIndex(0);  // Замеры температур с DS18B20
  delay(50);// Необязательная задержка
  float sensorValue = analogRead(SensorPin);
  // масштабируем значение в проценты
  //int wil = map(sensorValue,MIN,MAX, 100, 20);

  Serial.println(sensorValue);
  Serial.println(tempC);
 

  // PUBLISH to the MQTT Broker
  if (client.publish(plant_hum, String(sensorValue).c_str()),(plant_temp , tempC))
       {
    Serial.println("Moisture sent!");
    Serial.println(sensorValue);
    Serial.println(tempC);
   
  }
  // Again, client.publish will return a boolean value depending on whether it succeded or not.
  // If the message failed to send, we will try again, as the connection may have broken.
  else {
    Serial.println("Moisture failed to send. Reconnecting to MQTT Broker and trying again");
    client.connect(clientID, mqtt_username, mqtt_password);
    delay(10); // This delay ensures that client.publish doesn't clash with the client.connect call
    client.publish(plant_hum, String(sensorValue).c_str()),(plant_temp , tempC);
  }

  delay(1000);
  ESP.deepSleep(0.2*60e6);
}

void loop() {
}
 
Сверху Снизу