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