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

esp-01 relay (включение реле)

abonec

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

Подумал, что можно тоже самое реализовать на esp8266. Для этого преобрел с релюхой вот тут:
ESP8266 сети WI FI реле Модуль Интернет вещей (IOT) Приложение контроллер реле 5 В 10A 7 30 В DC/250 В AC для домашней автоматизации купить на AliExpress

Прошил в него через platform.io ардуиноподобный скетч и запустил в нем телеграм бота из примеров.
Последнее и самое важное - включение реле. Никак не понимаю, как это сделать. Перепробовал все пины, но включается только led на модуле. Как мне найти нужный пин для включения реле?
esp8266_telegram.cpp · GitHub

Бот выходит в сеть, отзывается на команды, но не включает реле никаким образом.

Опыта у меня совершенно нет, возможно я делаю что-то совершенно неверно.
 

Вложения

abonec

New member
Как я понимаю это esp-01 и у него всего четыре пина, для теста которых я написал команды. Но ни один из них не отзывается.
 

abonec

New member
Как я понимаю, 0 и 2 пины с обратной стороны это два центральных пина справа (если смотреть на аттачмент), находящихся ближе к рамке с логотипом производителя. По нему непонятно куда они ведут.

К тому же я пробовал передвать в digitalWrite все числа от 0 до 4. Результата никакого. Возможно нумерация неверная. Так как в arduino фреймворке для esp8266 digitalwrite(pin, HIGH) выключает пин, а low - включает. Возможно есть еще какие-то несостыковки.
 

Вложения

kalobyte

New member
Так как в arduino фреймворке для esp8266 digitalwrite(pin, HIGH) выключает пин, а low - включает.
а так и должно быть, там гпио0 должен быть поднят к питания при старте, а то запустится встроенный загрузчик
отсюда выходит, что реле всегда включено по умолчанию, если там не установлено 2 транзистора

ты подай команду для 0 вывода и посмотри напряжение на самом модуле
или для теста загрузи готовую прошивку WiFi-IoT Firmware Builder :: GPIO

может быть там реле дохло, транзистор, непроай где-то или еще что
 

tretyakov_sa

Moderator
Команда форума
UART на скорости 9600

Код:
// -------------- Для управления реле по UART
// https://www.banggood.com/ru/ESP8266-5V-WiFi-Relay-Module-Internet-Of-Things-Smart-Home-Phone-APP-Remote-Control-Switch-p-1126605.html?rmmds=category

void toggleRelay(bool relayState) {
  if (relayState) {
    const byte miBufferON[] = {0xA0, 0x01, 0x01, 0xA2};
    Serial.write(miBufferON, sizeof(miBufferON));
  }
  else {
    //To disable the Relay send it by serial port:
    const byte miBufferOFF[] = {0xA0, 0x01, 0x00, 0xA1};
    Serial.write(miBufferOFF, sizeof(miBufferOFF));
  }
}
 

abonec

New member
Благодарю. Это сработало. Вот рабочий пример.
Код:
#include <Arduino.h>
void setup()
{
    Serial.begin(9600);
    pinMode(2, OUTPUT);
    digitalWrite(2, 0);
}
void toggleRelay(bool relayState)
{
    if (relayState)
    {
        const byte miBufferON[] = {0xA0, 0x01, 0x01, 0xA2};
        Serial.write(miBufferON, sizeof(miBufferON));
        // val = 1;
    }
    else
    {
        //To disable the Relay send it by serial port:
        const byte miBufferOFF[] = {0xA0, 0x01, 0x00, 0xA1};
        Serial.write(miBufferOFF, sizeof(miBufferOFF));
        // val = 0;
    }
}
void loop()
{
    toggleRelay(true);
    delay(500);
    toggleRelay(false);
    delay(500);
}
Правда я не понимаю, как реле может работать по серийному порту. Поидее, для этого же нужна отдельная микросхема? Может ею быть stc15f104w? Не очень понимаю, зачем она нужна, больше на плате с реле ничего нет.
 

tretyakov_sa

Moderator
Команда форума
Правда я не понимаю, как реле может работать по серийному порту. Поидее, для этого же нужна отдельная микросхема? Может ею быть stc15f104w? Не очень понимаю, зачем она нужна, больше на плате с реле ничего нет.
Там на плате и стоит отдельная микросхема. К ней подключено реле и esp8266 по uart. Какие то причины побудили автора так сделать.
Мало того в этих платах установлена ESP-01 с 512кб памяти, если заменить на плату с 1мБ, то можно прошить нашей прошивкой.
Если телеграмм бот может отправлять данные на MQTT, то вполне можно управлять этой релюхой в ваших целях.
 

abonec

New member
Этим должен заниматься stc15f104w, больше некому.
Не очень понимаю, зачем мне в данном случае mqtt. Я просто включаю реле по команде с бота. Вот что у меня, в итоге, получилось:
GitHub - abonec/telegram_relay_esp8266
 

dens96

New member
Есть альтернативный вариант использования этого девайса с выпаиванием 15f104w. Технология описана здесь. Я переделал все свои девайсы, залил прошивку nodemcu - все отлично работает. Колхоз, конечно, но не выкидывать же устройство :).
 
Сверху Снизу