Управление реле 5В с помощью Wemos D1 R1

Я хочу управлять реле 5 В с помощью модуля Wemos D1 R1 через веб-сервер. Я использую следующие модули:

  • Тонглинг реле 5 В постоянного тока
  • Вемос D1 R1

Я использую следующую схему: Скетч

и вот код, который я использую:

#include <ESP8266WiFi.h>

const char* ssid = "Myssidname";
const char* password = "Myssidpass";

int ledPin = D3;
WiFiServer server(80);

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


 pinMode(ledPin, OUTPUT);
 digitalWrite(ledPin, LOW);

 // Подключаемся к сети Wi-Fi
 Serial.println();
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);

 WiFi.begin(ssid, password);

 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");

 // Запускаем сервер
 server.begin();
 Serial.println("Server started");

 // Печатаем IP-адрес
 Serial.print("Use this URL : ");
 Serial.print("http://");
 Serial.print(WiFi.localIP());
 Serial.println("/");

}

void loop() {
 // Проверяем, подключился ли клиент
 WiFiClient client = server.available();
 if (!client) {
   return;
 }

 // Подождем, пока клиент отправит какие-то данные
 Serial.println("new client");
 while(!client.available()){
   delay(1);
 }

 // Читаем первую строку запроса
 String request = client.readStringUntil('\r');
 Serial.println(request);
 client.flush();

 // Совпадение с запросом

 int value = LOW;
 if (request.indexOf("/LED=ON") != -1) {
   digitalWrite(ledPin, HIGH);
   value = HIGH;
 }
 if (request.indexOf("/LED=OFF") != -1){
   digitalWrite(ledPin, LOW);
   value = LOW;
 }



 // Возвращаем ответ
 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: text/html");
 client.println(""); // не забудьте об этом
 client.println("<!DOCTYPE HTML>");
 client.println("<html>");

 client.print("Led pin is now: ");

 if(value == HIGH) {
   client.print("On");  
 } else {
   client.print("Off");
 }
 client.println("<br><br>");
 client.println("Click <a href=\"/LED=ON\">here</a> Turn relay ON<br>");
 client.println("Click <a href=\"/LED=OFF\">here</a> Turn relay OFF<br>");
 client.println("</html>");

 delay(1);
 Serial.println("Client disconnected");
 Serial.println("");

}

После успешной загрузки кода и просмотра монитора загорается свет, и я получаю следующее сообщение:

16:02:20.400 -> WiFi connected
16:02:20.425 -> Server started
16:02:20.479 -> Use this URL : http://192.168.100.7/
16:02:41.680 -> new client
16:02:41.680 -> GET / HTTP/1.1
16:02:41.680 -> Client disconnected

Однако, когда я включаю или выключаю реле с помощью браузера, ничего не происходит:

19:38:56.010 -> new client
19:38:56.010 -> GET /LED=ON HTTP/1.1
19:38:56.010 -> Client disconnected
19:38:57.016 -> new client
19:38:57.016 -> GET /LED=OFF HTTP/1.1
19:38:57.063 -> Client disconnected

Однако со светом ничего не происходит, и реле не щелкает.

еще несколько заметок:

  • Я попытался загрузить код с реле на высоком уровне, чтобы отключить цепь, но индикатор все еще горит
  • Название сети Wemos появляется в моем списке сетей
  • Он не отвечает на AT-команды

, 👍1

Обсуждение

ты в Инструментах выбрал именно "D1 R1"?, @Juraj

@Juraj да, выбрана плата Wemos D1 R1, @motion channel

Ваш код должен выключать лампу при запуске (установите контакт реле в положение LOW), но это не то, что вы испытываете. Вы уверены, что правильно подключили лампу (к COM и NO, а не к COM и NC)? Что произойдет, если вы подключите светодиод (через резистор от 200 до 330 Ом) к контакту 3 вместо реле?, @StarCat

Минус светодиода должен быть подключен к земле., @StarCat

@StarCat Я заменил реле на светодиод с резистором, и он просто отлично работает :), @motion channel

Итак, теперь вы знаете, что пин переключается в нужное время, у вас есть подтверждение того, что ваш код работает правильно и проблема, скорее всего, связана с вашим оборудованием. Я думаю, что проблема может заключаться в том, что вы пытаетесь переключить реле 5 В на устройство 3,3 В (см. Ответ Дункана С)., @StarCat

@StarCat Я попытался запитать реле 5 В от Arduino UNO R3, подключив к нему VCC и GND и подключив провод к контакту Wemos D1 R1 D3, но это тоже не сработало. Любое предложение решить проблему с дополнительными модулями., @motion channel

Реле, вероятно, требуется около 5 В на контакте «IN», чтобы иметь возможность переключать реле, чего оно не получит от вашего Wemos D1, поскольку это устройство на 3,3 В. Если вы хотите управлять реле с вашего Wemos D1, вам нужно реле, работающее от 3,3 В., @StarCat

@StarCat Решено путем внедрения транзистора 2N2222 и резистора 5K. Спасибо за помощь, @motion channel


2 ответа


Лучший ответ:

1

Проблема связана с модулем Wemos, где он выдает только 3,3 В, чего недостаточно для реле 5 В, поэтому эту проблему можно решить, внедрив транзистор 2N2222, как показано на схеме ниже.

,

0

Плата Wemos D1 R1 рассчитана на 5 В или 3,3 В? Если это плата 3,3 В, это ваша проблема. Приобретите реле на 3,3 В.

(Небольшое исследование показало, что Wemos — это устройство на 3,3 В. Если это так, то это ваша проблема. Эти "цифровые реле" доступны в моделях на 5 и 3,3 В. Замените 5 В реле на 3,3 В. реле.)

Каковы требования к току реле и какой максимальный ток вы можете получить от Wemos? Как вы питаете Wemos?

Я бы сказал, разбейте это на части и решайте их по отдельности. Поместите мультиметр (ИЛИ светодиод с токоограничивающим резистором) на контакт D3 и убедитесь, что контакт включается и выключается. Если это так, это проблема с вашим реле. Если это не так, это проблема с вашим скетчем или Arduino.

Если контакт включается и выключается, попробуйте подключить контакт IN реле напрямую к +5 В. Ваша лампочка загорается?

,

Светодиод работает идеально, но по последней рекомендации, подключив контакт входа к + 5 В, ничего не происходит, кроме того, что лампочка выключается, как только я вытаскиваю провод из D3., @motion channel

Отсоединяешь провод от D2 и цепляешь его напрямую к контакту +5 (точнее +3,3в), а лампочка не горит? Что, если вы прикоснетесь этим проводом к земле? (Мне интересно, подключили ли вы свою лампочку к нормально разомкнутой (NC) клемме вашего реле, а не к нормально замкнутой (NC)., @Duncan C

@DuncanC Я подключил его к NC, и то же самое не ответило, однако свет сейчас выключен. Кстати, я не слышу никаких щелчков от реле., @motion channel

Для работы реле 5В требуется 5В. Ваш Wemos выглядит как устройство с напряжением 3,3 В. Он выдает только 3,3 В на своих логических линиях. Возьмите вольтметр и измерьте напряжение на контакте D3, когда он установлен на ВЫСОКИЙ уровень. Ставлю доллары на пончики, он выдает 3,3 В. Купите 3,3 В вашего цифрового реле и используйте его вместо этого (при условии, что ваш Wemos имеет достаточный ток от своего регулятора для питания реле., @Duncan C