Схема подключения:
Для этого нам понадобится:
Модуль на 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
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.