• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Помогите с выбором

malu2121

New member
Необходимо создать устройство которое будет включать нагрузку (светодиод 1Вт) в заданное время, на определенное время, каждый день свой сценарий. Изучаю тему уже 2 недели начинал с реле SONOFF RE5V1C 5В, но сразу не мог и предположить, насколько прожорлив ESP. Остановился пока на ESP-07 + RTC1307+TP4056+2*3000mA 18650. Солнечная батарея 20Вт. Нагрузку наверное лучше включать биполярным транзистором? Я новичок, прошу простить, не знаю как реализовать, чтобы модуль включил нагрузку и лег спать, выключил и снова спал. Или может подскажете вариант.
 

Сергей_Ф

Moderator
Команда форума
А зачем тут esp? В сон лучше avr уводить, и для такой задачи достаточно самого маленького.
Нагрузку включать лучше полевым транзистором. Ну и при горящем диоде 1Вт можно в сон не уводить, хотя сложного тут нет ничего.
 

malu2121

New member
Esp выбирал для более менее дружественного интерфейса настройки и герметичного корпуса, надо людям отдать которые программировать не будут, предполагал использовать 1msmart. Сложного нет, если разбираешься, а я так - любитель. Может посоветуете навскидку полевик, и надо ли его обвязывать чем-то?
 

Сергей_Ф

Moderator
Команда форума
Esp выбирал для более менее дружественного интерфейса настройки и герметичного корпуса, надо людям отдать которые программировать не будут, предполагал использовать 1msmart. Сложного нет, если разбираешься, а я так - любитель. Может посоветуете навскидку полевик, и надо ли его обвязывать чем-то?
Если он будет спать, то какой интерфейс? И при чем тут корпус? Никакого герметичного корпуса там нет. Для вас будет сюрпризом, но не только полевик надо обвязывать, но и светодиод просто так подключить нельзя. Там драйвер нужен. Можно взять управляемый драйвер, тогда будет проще. Но на любителя вы пока не тянете, извините. За вас делать никто не будет, если только не в https://esp8266.ru/forum/forums/custom-projects/, а так... Учиться, учиться и ещё раз учиться.
 

malu2121

New member
Не спорю дуб дубом, любитель в смысле поковыряться. Светодиод уже с драйвером конечно, герметичный корпус у устройства в целом. Вижу картину в целом, не могу выгуглить как на 2-х транзисторах сделать, чтобы при отсутствии сигнала нагрузка была включена и выключалась при подаче сигнала.
 

malu2121

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

malu2121

New member
не создаю новую тему, подучил много, пришлось. Слепил устройство nodemcu+ds3231+tp223+mosfet+lipo8000ma. Все чудно, спаял, в корпус определил, все работает. И неожиданно оказалось, что часы ds3231 сбиваются, батарейка новая, менял и на другую. Запитал сразу все от dc-dc 5v с ds1307, потом увидел, что 3231 от3в могут работать убрал повышающий дабы упростить и съекономить. Причину не могу определить, просто может выключенное лежать и сбивается, а может пару дней и не сбиваться.
 

Сергей_Ф

Moderator
Команда форума
Последнее редактирование:

malu2121

New member
перечитал гугл, все темы, решил спросить здесь, может кто-то умную мыслю предложит сходу. не знаю паять конденсатор параллельно питанию, может поставить вместо батарейки ионистор, на данный момент убрал вообще батарейку, тестирую, программа не может сбивать мк выключен пином ЕН. ну или же когда инициализируется и сбивает, но ведь фантомно происходит, код ни причем.
 

malu2121

New member
решил не имеет значения часы то сбиваются сами, думал может их как то дорабатывают. На одном ресурсе вычитал про конденсатор (блокирующий) для меня непонятно зачем и поможет ли.

1644144928443.png

Код:
#include <Wire.h>      
//#include <TimeLib.h>
#include <ESP8266WiFi.h>
#include <TimeLord.h>
//#include <WiFiClientSecure.h>
#include <ESP8266TelegramBOT.h>
#include <RtcDS3231.h>
RtcDS3231<TwoWire> rtcObject(Wire);

ADC_MODE(ADC_VCC); //измерение АКК




//В этом блоке все настройки!
/////////////////////////////////////////////////////////////////////////////////////////
#define REL 5 // выход управления светодиодом
#define BOTtoken "xxx xxx:xxxxxxxxxxx //Токен бота полученного от @BotFather
#define BOTname "пк1" // Имя бота
#define BOTusername "pcam1_bot" // Логин бота
TelegramBOT bot(BOTtoken, BOTname, BOTusername);

//Данные WIFI
const char* ssid = "Power";
const char* password = "111111111";

const int TIMEZONE = +2; // установка часового пояса
const float LATITUDE = 50, LONGITUDE = 30; // установка координат: широта, долгота
////////////////////////////////////////////////////////////////////////////////////////////////////

TimeLord myLord; // переменные TimeLord
byte sunTime[6];
int minNow, minLast = -1, hourNow, hourLast = -1, minOfDay; // -1 отрабатывает при первом запуске
int mSunrise, mSunset; //время рассвета и заката в минутах от начала дня (0-1439)





void setup() {

  Serial.begin(115200);  //Запуск последовательного подключения
  rtcObject.Begin();     //Запуск I2C
Wire.begin(12, 14); // due to limited pins, use pin 0 and 2 for SDA, SCL

//  RtcDateTime currentTime = RtcDateTime(22, 02, 03, 00, 17, 0); //2022/02/03 00:17:0
//  rtcObject.SetDateTime(currentTime); //Сохраняем время

pinMode(REL, OUTPUT); // инициализируем порт для канала реле как выход
//digitalWrite(REL ,HIGH); // устанавливаем на входе релейного модуля высокий уровень — реле выключено
//pinMode(LED_BUILTIN, OUTPUT);


WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  delay(15000);
// Serial.println("");
//  Serial.println("WiFi connected");
//  Serial.println("IP address: ");
//  Serial.println(WiFi.localIP());
   RtcDateTime currentTime = rtcObject.GetDateTime();
//   Rtc.Enable32kHzPin(false);
//    Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone);
char buffer[70];
   sprintf(buffer, "👷🏻<Время %d:%d %d-%d-%d> 🔋%d%%", currentTime.Hour(), currentTime.Minute(), currentTime.Day(), currentTime.Month(), currentTime.Year(), ESP.getVcc()/25);
  Serial.println(buffer);
    bot.sendMessage("350949067", buffer , "");
WiFi.mode(WIFI_OFF);
wifi_set_opmode(NULL_MODE);


myLord.TimeZone(TIMEZONE * 60);
myLord.Position(LATITUDE, LONGITUDE);
}

void loop() {

  RtcDateTime currentTime = rtcObject.GetDateTime();    //получаем время от RTC


myLord.SunRise(sunTime); // расчетные данные рассвета из TimeLord
mSunrise = sunTime[2] * 60 + sunTime[1] - 20; // где "-20" задержка выключения реле утром в минутах
myLord.SunSet(sunTime); // расчетные данные заката из TimeLord
mSunset = sunTime[2] * 60 + sunTime[1] + 20; // +20 задержка вкл реле вечером

minOfDay = currentTime.Hour() * 60 + currentTime.Minute(); //текущая минута дня 0-1439
//Serial.print(" SUNRISE OFF:");
//Serial.print(mSunrise);
//Serial.print(" SUNSET ON:");
//Serial.print(mSunset);
//  char buffer[70];
//   sprintf(buffer, "👷🏻<Время %d:%d %d-%d-%d> 🔋%d%%", currentTime.Hour(), currentTime.Minute(), currentTime.Day(), currentTime.Month(), currentTime.Year(), ESP.getVcc()/25);
//  Serial.println(buffer);
//  Serial.println("  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -");
//delay(10000);
if (minOfDay < mSunrise || minOfDay >= mSunset) // если минут с начала суток меньше, чем время рассвета, но больше, чем время заката
{
//  digitalWrite(LED_BUILTIN, LOW); //светодиод на плате
digitalWrite(REL,HIGH);
}
else
{
digitalWrite(REL,LOW);


//digitalWrite(LED_BUILTIN, HIGH);//светодиод на плате
}
}
 
Последнее редактирование модератором:

malu2121

New member
епс) оставил токен бота, мне не жалко, тестовый, но все равно, нет кнопки редактировать сообщение жаль
 

Сергей_Ф

Moderator
Команда форума
часы то сбиваются сами
прямо ваш случай. Дело в питании говорят.
 

malu2121

New member
читал и эту тему, ответа только не увидел, отсюда и про конденсатор рассуждения, как бы наоборот - он мешает, но у меня его и нет
 
Сверху Снизу