Управление реле 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-команды
@motion channel, 👍1
Обсуждение2 ответа
Лучший ответ:
Проблема связана с модулем Wemos, где он выдает только 3,3 В, чего недостаточно для реле 5 В, поэтому эту проблему можно решить, внедрив транзистор 2N2222, как показано на схеме ниже.
Плата 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
- Веб-сервер ESP8266 недоступен через 2 минуты после сброса
- Несколько клиентских серверов через Wi-Fi
- WebSocketsServer.h: No such file or directory
- Esp8266 Vin контакт
- ESP8266 Аналоговое чтение мешает Wi-Fi?
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- Как разрешить междоменные запросы на ESP8266 WebServer
- Почему мы используем client.flush() в коде, когда мы подключаем Esp8266 к Интернету или серверу?
ты в Инструментах выбрал именно "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