• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Управление реле с помощью Web интерфейса на Ардуино

10 апреля, 2017

Схема подключения:

Для этого нам понадобится:

Модуль на 4 реле: http://ali.pub/1bbr3b

Ethernet Shield W5100 : http://ali.pub/1al6dr

Arduino uno: http://ali.ski/gC_mOa

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

В данном примере, показано как можно управлять реле через web интерфейс используя w5100 shield.

На веб странице расположено 4 кнопки. Каждая кнопка отвечает за включение и выключение определенного реле. Все “написание” кода производится в программе FLProg.

Ниже указаны все блок схемы, которые нам понадобятся для реализации данного проекта в FLProg.

Блок схемы в программе FLProg:

Схема подключения реле и шилда к ардуино приведена в самом начале статьи.

После подключения всех компонентов необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.

#include <Ethernet.h>
#include <SPI.h>
byte ethernet_mac [] = {0x78, 0xAC, 0xC0, 0x43, 0x7B, 0xC1};
IPAddress ethernet_ip(192, 168, 1, 177);
byte ethernet_dns [] = {192, 168, 1, 1};
byte ethernet_gateway [] = {192, 168, 1, 1};
byte ethernet_subnet [] = {255, 255, 255, 0};
EthernetServer _tspWebServer(80);
EthernetClient _tspWebServer_client;
bool _trgt4 = 0;
bool _trgt4I = 0;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _trgrt2 = 0;
bool _trgrt2I = 0;
bool _trgrt3 = 0;
bool _trgrt3I = 0;
bool _trgrt4 = 0;
bool _trgrt4I = 0;
bool _trgrt5 = 0;
bool _trgrt5I = 0;
bool _trgt1 = 0;
bool _trgt1I = 0;
bool _WSP2_A1 = 0;
bool _WSP2_A2 = 0;
bool _WSP2_A3 = 0;
bool _WSP2_A4 = 0;
bool _trgt2 = 0;
bool _trgt2I = 0;
bool _trgt3 = 0;
bool _trgt3I = 0;
void setup()
{
Ethernet.begin(ethernet_mac, ethernet_ip, ethernet_dns, ethernet_gateway, ethernet_subnet);
delay(1000);
_tspWebServer.begin();
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

}
void loop()
{_tspWebServer_client = _tspWebServer.available();
if (_tspWebServer_client) {
boolean _WSCLineIsBlank = true;
String _WSCReqest="";
bool _WSCIsFirsLine=1;
bool _WSCIsParse=0;
int _WSCPageNumber=0;
while (_tspWebServer_client.connected())
{ while( _tspWebServer_client.available())
{char _tempWebServerChar = _tspWebServer_client.read();
if(_WSCIsFirsLine) {_WSCReqest+= _tempWebServerChar;}
if (_tempWebServerChar == '\n' && _WSCLineIsBlank) {_sendWebServerPage(_WSCPageNumber); break;}
if (_tempWebServerChar == '\n') {_WSCLineIsBlank = true; _WSCIsFirsLine=0; if (!_WSCIsParse){ _WSCPageNumber=_parseWebServerReqest(_WSCReqest); _WSCIsParse=1;} } else if (_tempWebServerChar != '\r') { _WSCLineIsBlank = false;}
}}}
if (_WSP2_A1) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;};
bool _tmp1 = _trgrt1;
if (_tmp1) { if (! _trgt1I) _trgt1 = ! _trgt1; }
_trgt1I = _tmp1;
if (_WSP2_A2) { if (_trgrt3I) { _trgrt3 = 0;} else {_trgrt3 = 1; _trgrt3I = 1;} } else {_trgrt3 = 0; _trgrt3I = 0;};
bool _tmp2 = _trgrt3;
if (_tmp2) { if (! _trgt2I) _trgt2 = ! _trgt2; }
_trgt2I = _tmp2;
if (0) { if (_trgrt2I) { _trgrt2 = 0;} else {_trgrt2 = 1; _trgrt2I = 1;} } else {_trgrt2 = 0; _trgrt2I = 0;};
if (_WSP2_A3) { if (_trgrt4I) { _trgrt4 = 0;} else {_trgrt4 = 1; _trgrt4I = 1;} } else {_trgrt4 = 0; _trgrt4I = 0;};
bool _tmp3 = _trgrt4;
if (_tmp3) { if (! _trgt3I) _trgt3 = ! _trgt3; }
_trgt3I = _tmp3;
if (_WSP2_A4) { if (_trgrt5I) { _trgrt5 = 0;} else {_trgrt5 = 1; _trgrt5I = 1;} } else {_trgrt5 = 0; _trgrt5I = 0;};
bool _tmp4 = _trgrt5;
if (_tmp4) { if (! _trgt4I) _trgt4 = ! _trgt4; }
_trgt4I = _tmp4;
digitalWrite(6, !(_trgt1));
digitalWrite(7, !(_trgt2));
digitalWrite(8, !(_trgt3));
digitalWrite(9, !(_trgt4));
}
void _sendWebServerPage(int sendPageNumber)
{_tspWebServer_client.println("HTTP/1.1 200 OK");
_tspWebServer_client.println("Connection: close");
_tspWebServer_client.println();
_tspWebServer_client.println("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">");
_tspWebServer_client.println("<html><head>");
_tspWebServer_client.println("<META content=""text/html; charset=utf-8"" http-equiv=""Content-Type"">");
_tspWebServer_client.println("</head><body>");
if (sendPageNumber ==1) {_sendWebServerPage1();}
if (sendPageNumber ==2) {_sendWebServerPage2();}
_tspWebServer_client.println("</body></html>");
delay(1); _tspWebServer_client.stop();}
int _parseWebServerReqest(String reqestAddres)
{
int index;
int result=0;
index=reqestAddres.indexOf("/");
reqestAddres =_stringWithoutCharWithIndex(reqestAddres,0,(index));
index=reqestAddres.indexOf(" ");
reqestAddres =_stringWithoutCharWithIndex(reqestAddres,index,(reqestAddres.length()-index));
if (reqestAddres==""){result= 1;}
if (reqestAddres=="1"){_WSP2_A1=1; result= 2;} else {_WSP2_A1=0;}
if (reqestAddres=="2"){_WSP2_A2=1; result= 2;} else {_WSP2_A2=0;}
if (reqestAddres=="3"){_WSP2_A3=1; result= 2;} else {_WSP2_A3=0;}
if (reqestAddres=="4"){_WSP2_A4=1; result= 2;} else {_WSP2_A4=0;}
return result;
}
String _stringWithoutCharWithIndex(String value, int index,int count)
{
String result="";
for (int i=0; i <= value.length(); i++){
if((i<index) ||(i>(index+count))){
result+=value.charAt(i);
}
}
return result;
}
void _sendWebServerPage1(void)
{
_tspWebServer_client.println("");
_tspWebServer_client.println("<table width=""100%"" height=""100%"" cellspacing=""0"" cellpadding=""0"" border=""0"" bgcolor=""FFFFFF"">");
_tspWebServer_client.println("<tr>");
_tspWebServer_client.println("<td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<table width=""1200px"" align=""center"" border=""1"" cellspacing=""0"" cellpadding=""20"">");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<tr>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<td width=""60%"" valign=""top"">");
_tspWebServer_client.println("<p><font color=""000000"" size=""5"" face=""Open Sans"">Управление нагрузкой</font></p>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<table width=""60%"" cellspacing=""0"" cellpadding=""20"">");
_tspWebServer_client.println("<tr>");
_tspWebServer_client.println("<td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<p><a href=""http://192.168.1.177/1""><button>Реле 1</button></a></p>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("</td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("<td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<p><a href=""""http://192.168.1.177/2""><button>Реле 2</button></a></p>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("</td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("<td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<p><a href=""""http://192.168.1.177/3""><button>Реле 3</button></a></p>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("</td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("<td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("<p><a href=""""http://192.168.1.177/4""><button>Реле 4</button></a></p>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("</td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("</tr>");
_tspWebServer_client.println("</table>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("</td>");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("");
_tspWebServer_client.println("</table>");
_tspWebServer_client.println("");
_tspWebServer_client.println("</td>");
_tspWebServer_client.println("</tr>");
_tspWebServer_client.println("</table>");
_tspWebServer_client.println("");

}void _sendWebServerPage2(void)
{
_tspWebServer_client.println("<meta http-equiv=""refresh"" content=""0;URL=http://192.168.1.177"">");

}

Ссылка на скетч:

https://yadi.sk/d/8RE7vb0a3Govr9

Ссылка на схемы в программе FLProg:

https://yadi.sk/d/RBbYxETI3Gow35

Код страницы выводимый в браузере:

https://yadi.sk/i/pYNb6_PO3GowJz

 

Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.

Видео:

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·