Для этого нам понадобится:
Датчик температуры и влажности BMP180: http://ali.pub/1al5x8
Но лучше BMP080 : http://ali.pub/1al666
Ethernet Shield W5100 : http://ali.pub/1al6dr
Arduino uno: http://ali.ski/gC_mOa
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Схема подключения датчика:
Датчик BMP180 подключается по шине i2c.
SCL – A5
SDA – A4
VCC – 5v
GND – GND
Блок схемы в программе FLProg:
Код страницы выводимый в браузере:
https://yadi.sk/i/B62_RjhK3GgZb9
Сам скетч:
#include <Wire.h> #include <SPI.h> #include <Ethernet.h> #include <BMP085.h> BMP085 _bmp085 = BMP085(); long _bmp085P = 0; long _bmp085T = 0; byte ethernet_mac [] = {0x78, 0xAC, 0xC0, 0x90, 0xE0, 0xE9}; 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; unsigned long _bmp0851Tti = 0UL; void setup() { Ethernet.begin(ethernet_mac, ethernet_ip, ethernet_dns, ethernet_gateway, ethernet_subnet); delay(1000); _tspWebServer.begin(); Wire.begin(); _bmp085.init(); } 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(_isTimer(_bmp0851Tti, 1000)) { _bmp0851Tti = millis(); _bmp085.getPressure(&_bmp085P); _bmp085.getTemperature(&_bmp085T); } } bool _isTimer(unsigned long startTime, unsigned long period ) { unsigned long currentTime; currentTime = millis(); if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));} } 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();} _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;} 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("<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=""800px"" align=""center"" border=""1"" cellspacing=""0"" cellpadding=""20"">"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<tr>"); _tspWebServer_client.println("<td>"); _tspWebServer_client.println("<h3 align= ""center""><font color=""000000"" size=""20"" face=""Arial"">"); _tspWebServer_client.println("У Павла!</font></h3>"); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println("</tr>"); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println(""); _tspWebServer_client.println("<tr>"); _tspWebServer_client.println("<td>"); _tspWebServer_client.println("<p align= ""center""><font color=""000000"" size=""20"" face=""Arial"">Температура:</font></p>"); _tspWebServer_client.println("<p><font color=""000000"" size=""35"" face=""Open Sans"">"); _tspWebServer_client.println(""); _tspWebServer_client.println((_bmp085T)/(10)); _tspWebServer_client.println(" C</font></p>"); _tspWebServer_client.println("</td>"); _tspWebServer_client.println("</tr>"); _tspWebServer_client.println(""); _tspWebServer_client.println("<tr>"); _tspWebServer_client.println("<td>"); _tspWebServer_client.println("<p align= ""center""><font color=""000000"" size=""20"" face=""Arial"">Влажность:</font></p>"); _tspWebServer_client.println("<p><font color=""000000"" size=""35"" face=""Open Sans"">"); _tspWebServer_client.println(""); _tspWebServer_client.println(_bmp085P); _tspWebServer_client.println(" %</font></p>"); _tspWebServer_client.println("</td>"); _tspWebServer_client.println("</tr>"); _tspWebServer_client.println(""); _tspWebServer_client.println("</table>"); _tspWebServer_client.println(""); _tspWebServer_client.println("</td>"); _tspWebServer_client.println("</tr>"); _tspWebServer_client.println("</table>"); }
https://yadi.sk/d/dRC_5sh43GgZS3