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 - все отлично работает. Колхоз, конечно, но не выкидывать же устройство :).
 
Сверху Снизу