Простой способ поднять вебсервер на ардино с езернет модулем 28J60 и выводить на страницу температуру с датчика DS18B20, код из видео.
#include <OneWire.h> #include <etherShield.h> #include <ETHER_28J60.h> static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x10, 0x24}; static uint8_t ip[4] = {192, 168, 3, 15}; static uint16_t port = 80; ETHER_28J60 ethernet; OneWire ds(7); // вход датчика 18b20 byte addr[8]; float getTemp(){ // возвращает температуру с датчика byte data[12]; // и останавливает программу на секунду ds.search(addr); ds.reset_search(); ds.reset(); ds.select(addr); ds.write(0x44); delay(1000); ds.reset(); ds.select(addr); ds.write(0xBE); for (int i = 0; i < 9; i++) data[i] = ds.read(); int raw = (data[1] << 8) | data[0]; // Переводим в температуру if (data[7] == 0x10) raw = (raw & 0xFFF0) + 12 - data[6]; return raw / 16.0; } void setup(){ ethernet.setup(mac, ip, port); } void loop() { if (ethernet.serviceRequest()) { ethernet.print("<html><head><title>temperature</title> </head>"); ethernet.print("<body><CENTER><H2>temperature</H2></BR><H1>"); ethernet.print(getTemp()); ethernet.print("C</H1></CENTER></body></html>"); ethernet.respond(); } delay(100); }
#include <OneWire.h> #include <etherShield.h> #include <ETHER_28J60.h> static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x10, 0x24}; static uint8_t ip[4] = {192, 168, 3, 15}; static uint16_t port = 80; ETHER_28J60 ethernet; OneWire ds(7); // вход датчика 18b20 float getTemp(){ // возвращает температуру с датчика byte data[12]; // и останавливает программу на секунду byte addr[8]; ds.search(addr); ds.reset_search(); ds.reset(); ds.select(addr); ds.write(0x44); delay(1000); ds.reset(); ds.select(addr); ds.write(0xBE); for (int i = 0; i < 9; i++) data[i] = ds.read(); int raw = (data[1] << 8) | data[0]; // Переводим в температуру if (data[7] == 0x10) raw = (raw & 0xFFF0) + 12 - data[6]; return raw / 16.0; } void setup(){ Serial.begin(9600); ethernet.setup(mac, ip, port); } void loop(){ char* params; if (params = ethernet.serviceRequest()) { ethernet.print("<html><head><title>temperature</title> </head>"); ethernet.print("<body><CENTER><H2>temperature</H2></BR><H1>"); ethernet.print(getTemp()); ethernet.print("C</H1>"); ethernet.print("<A HREF='?cmd=1'>1111 </A>"); ethernet.print("<A HREF='?cmd=2'>2222</A>"); ethernet.print("</CENTER></body></html>"); ethernet.respond(); Serial.println(params); } delay(100); }