Вебсервер на Arduino и ENC28J60

Простой способ поднять вебсервер на ардино с езернет модулем 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);
}