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

Нужна помощь реле и esp-01 + сенсорная кнопка

Vladimir_G

New member
привет народ !
приобрел этот модуль ESP8266 Esp01 ESP 01 сети Беспроводной WI FI реле Модуль Интернет вещей IOT APP контроллер адаптер доска 5 В 10A DC 250 В купить в магазине ModuleFans на AliExpress
переделал по инструкции
1. Выпаять 15F104
2. Выпаять R4(не факт что нужно выпаивать, но у меня реле не работало с ним)
3. На 7й пин от 15F104(или на R2) вешаем вывод от GPIO
4. GPIO и 3.3 вольта зацепить на 10ком резистором.
Реле работает несколько месяцев, управление Blynk.
Но решил на второй свободный GPIO повесить сенсорную кнопку ttp223b. Подпаял ножку сигнала на свободное GPIO2, питание на питание платы 3-5в. При включении модуль не грузится, горят все индикаторы. А если включить модуль без минуса по питанию сенсора, модуль загружается, а затем подать(при запущеном модуле) минус на сенсор , все работает и реле и кнопка, в Blynk отображается. Может какая развязка нужна ???? спасибо
 

CodeNameHawk

Moderator
Команда форума
GPIO2 служебный вывод, во время включения на нем должен быть высокий уровень, потом его можете использовать.
 
Последнее редактирование:

Vladimir_G

New member
еще у Вас есть RX и TX можно повесить туда
на ESP-12 два реле и две кнопки отлично работают. Интересен размер этого модуля.
Если можно по подробнее на RX, TX повесить, что в скетче менять, извините только учусь, игра для среднего возраста. то есть можно на GPIO3 или GPIO1
 

Вложения

Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
Чтобы использовать GPIO2 добавьте инвертор на транзисторе.
https://upload.wikimedia.org/wikipe...er.svg/180px-Transistor_pegelumsetzer.svg.png
R1 на 100 om, R2 на 3.3k транзистор любой маломощный.

Свободный конец R1 к выводу кнопки, с коллектора (UOut) на есп, не забудьте соединить все земли вместе и подать 3,3В на VOut.
 
Последнее редактирование:

Vladimir_G

New member
Чтобы использовать GPIO2 добавьте инвертор на транзисторе.
https://upload.wikimedia.org/wikipe...er.svg/180px-Transistor_pegelumsetzer.svg.png
R1 на 100 om, R2 на 3.3k транзистор любой маломощный.

Свободный конец R1 к выводу кнопки, с коллектора (UOut) на есп, не забудьте соединить все земли вместе и подать 3,3В на VOut.
за схему с транзистором спасибо, че то притупил можно действительно на gpio3 или gpio1 повесить, отложилось в голове, что всего два gpio есть только. Спасибо.
 

nikolz

Well-known member
за схему с транзистором спасибо, че то притупил можно действительно на gpio3 или gpio1 повесить, отложилось в голове, что всего два gpio есть только. Спасибо.
Вы можете подтянуть GPIO2 к питанию 10 ком и подключить к ней обычную кнопку .
Так годится?
А может Вас устроит кнопка на reset?
 

Vladimir_G

New member
Вы можете подтянуть GPIO2 к питанию 10 ком и подключить к ней обычную кнопку .
Так годится?
А может Вас устроит кнопка на reset?
думаю на gpio3 или gpio1 повесить. А надо подтягивать к питанию через резистор сигнальный с кнопки ? RX TX вроде на блоке реле не задействован, прошиваю через другой com-конвертер.
 

Vladimir_G

New member
CodeNameHawk,
Если всю схему покажите и схему кнопки то возможно есть иные варианты
Всем спасибо. припаялся сигнальным проводком от сенсорной кнопки на RX, который gpio3, скетч залил через внешний USB-TTL converter подключив к нему ESP-01. Контакты RX и TX на блоке реле выведены на гребенку от разъема куда вставляется сама ESP-01. Далее все собрал, модуль загрузился реле и кнопка работают. В Blynk все переключается и отображается при включении нагрузки сенсорной кнопкой. железячки на картинках ниже
 

Вложения

Последнее редактирование:

akaFelix

New member
CodeNameHawk,

Всем спасибо. припаялся сигнальным проводком от сенсорной кнопки на RX, который gpio3, скетч залил через внешний USB-TTL converter подключив к нему ESP-01. Контакты RX и TX на блоке реле выведены на гребенку от разъема куда вставляется сама ESP-01. Далее все собрал, модуль загрузился реле и кнопка работают. В Blynk все переключается и отображается при включении нагрузки сенсорной кнопкой. железячки на картинках ниже
Поделись скетчем, плиз.. Два дня мучаюсь с аналогичной проблемой
 

Vladimir_G

New member
Поделись скетчем, плиз.. Два дня мучаюсь с аналогичной проблемой
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define RELE 2
#define BUTTON 3
bool rele;
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //esp01 авторизационный код для сервера Блинк
char ssid[] = "SID";
char pass[] = "pass";

void setup()
{
// Debug console
Serial.begin(9600);
pinMode(RELE, OUTPUT);
pinMode(BUTTON, INPUT);
Blynk.begin(auth, ssid, pass); // на сервак Блинк авторизация...
Blynk.begin(auth, ssid, pass, IPAddress(xxx,xxx,xxx,xxx), 8080); //на локальный сервак Блинк авторизация...
}

BLYNK_WRITE(V0)
{
rele = param.asInt();
digitalWrite(RELE, rele);
}


void loop()
{
if(digitalRead(BUTTON))
{
rele = !rele;
digitalWrite(RELE, rele);
Blynk.virtualWrite(V0, rele);
delay (1000);
}
Blynk.run();
}
 

maksimusv

New member
Есть такой скетч, как бы сенсорная кнопка работает через esp8266-01 и включает выключает реле, но вот через веб интерфейс нет, поправьте меня пожалуйста, уже голова болит!
Код:
// Relay control using the ESP8266 WiFi chip

// Import required libraries
#include <ESP8266WiFi.h>

// WiFi parameters
const char* ssid = "******";
const char* password = "*****";

//Room Name


//Response from Client
String request = "";

// The port to listen for incoming TCP connections
#define LISTEN_PORT           80

// set pin numbers:
const int buttonPin = 0;    // the number of the pushbutton pin
const int relayPin = 2;      // the number of the LED pin

int relayState = LOW;         // the current state of the output pin
int buttonState;             // the current reading from the input pin
int lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output     flickers

// Create an instance of the server
WiFiServer server(LISTEN_PORT);
WiFiClient client;

void setup(void)
{
      // Start Serial
      Serial.begin(115200);
      delay(10);
      Serial.println();
      Serial.println();
      Serial.println();
      Serial.println();

      pinMode(buttonPin, INPUT);
      pinMode(relayPin, OUTPUT);

      // set initial LED state
      digitalWrite(relayPin, relayState);

      // Connect to WiFi
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");

      // Start the server
      server.begin();
      Serial.println("Server started");

      Serial.println("You can connect to this Switch at this URL:");
      Serial.print("http://");
      // Print the IP address
      Serial.print(WiFi.localIP());
      Serial.println("/");

}

void loop() {
    String request = "";

     // Handle REST calls
     WiFiClient client = server.available();
     if (client) {
        Serial.println("User connected.");
        while(!client.available()){
             delay(1);
        }
        Serial.print("Request Received:");
       String request = client.readStringUntil('\r\n');
        Serial.println(request);
        client.flush();
     }

       //process the request
       if (request.indexOf("/LED=ON") != -1) {
        digitalWrite(relayPin,LOW);
          relayState = HIGH;
       }
       if (request.indexOf("/LED=OFF") != -1) {
        digitalWrite(relayPin,HIGH);
          relayState = LOW;
       }

      // read the state of the switch into a local variable:
      int reading = digitalRead(buttonPin);

      // If the switch changed, due to noise or pressing:
      if (reading != lastButtonState) {
        // reset the debouncing timer
        lastDebounceTime = millis();
      }

      if ((millis() - lastDebounceTime) > debounceDelay) {
        // whatever the reading is at, it's been there for longer
        // than the debounce delay, so take it as the actual current state:

        // if the button state has changed:
        if (reading != buttonState) {
          buttonState = reading;

          // only toggle the LED if the new button state is HIGH
          if (buttonState == HIGH) {
            relayState = !relayState;
          }
        }
      }

      digitalWrite(relayPin, relayState);

      // save the reading.  Next time through the loop,
      // it'll be the lastButtonState:
      lastButtonState = reading;

     if (client) {
         client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("");
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head><title>ESP8266 RELAY Control</title></head>");
  client.print("<h1>Relay is now: </h1>");

  if(relayState == HIGH)
  {
    client.print("<div style=\"text-align: center;width: 198px;color:white ;padding: 10px 30px;background-color: #ff9900;margin: 0 auto;\">OFF</div>");
  }
  else
  {
    client.print("<div style=\"text-align: center;width: 198px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>");
  }
  client.println("<br><br>");
  client.println("<div>");
  client.println("<div style=\"text-align: center;font-size: 50px;width: 298px;color:white ;padding: 10px 30px;background-color: #ff9900;margin: 0 auto;\">Turn <a href=\"/LED=OFF\">OFF</a> RELAY<br></div>");
  client.println("<div style=\"text-align: center;font-size: 50px;width: 298px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">Turn <a href=\"/LED=ON\">ON</a> RELAY<br></div>");
  client.println("</div>");
    client.println("</html>");

  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
      }
}
 

Алексей.

Active member
Скажите зачем у вас delay на 151-й строке? Чего ожидаете от добавления задержки?
 

Алексей.

Active member
ничего особенного, небольшая задержка от зависания
т.е. без этой строки ваше приложение зависает?
Я закоментировал эту строку.
На ПК в броузере фф, обращаюсь к esp.
Вижу страницу с состоянием реле, со ссылками на включение и выключение, переходя по ссылкам вижу в выводе в сериал
Код:
User connected.
Request Received:GET /LED=ON HTTP/1.1
Client disonnected

User connected.
Request Received:GET /LED=OFF HTTP/1.1
Client disonnected
Скажите когда зависание произойдет?
 

maksimusv

New member
т.е. без этой строки ваше приложение зависает?
Я закоментировал эту строку.
На ПК в броузере фф, обращаюсь к esp.
Вижу страницу с состоянием реле, со ссылками на включение и выключение, переходя по ссылкам вижу в выводе в сериал
Код:
User connected.
Request Received:GET /LED=ON HTTP/1.1
Client disonnected

User connected.
Request Received:GET /LED=OFF HTTP/1.1
Client disonnected
Скажите когда зависание произойдет?
да оно хорошо работает когда кнопка не подключена, стоит подключить к gpio0 кнопку, и по ссылкам программа не отвечает! только реагирует на состояние кнопки, и в браузере видно состояние, но GET чет не работает!
 
Сверху Снизу