Пример взят от сюда.
Вот сам код:
#include <UIPEthernet.h>
#include <ethernet_comp.h>
#include <UIPClient.h>
#include <Dhcp.h>
#include <Dns.h>
#include <UIPUdp.h>
byte mac[] = { 0x94, 0xDE, 0x80, 0x3A, 0x90, 0xC9 }; //MAC-адрес Arduino
const unsigned long postingInterval = 600000; // интервал между отправками
// данных - 10 минут
// IP-адрес, назначаемый Ethernet shield:
byte ip[] = { 192, 168, 43, 230 };
// IP-адрес, dns сервера:
byte sdns[] = { 192, 168, 43, 1 };
// адрес шлюза:
byte gateway[] = { 192, 168, 43, 1 };
// маска:
byte subnet[] = { 255, 255, 255, 0 };
IPAddress server(94,19,113,221); // IP сервера
//IPAddress server(91,122,49,168); // IP сервера
EthernetClient client;
unsigned long lastConnectionTime = 0; // время последней передачи данных
boolean lastConnected = false; // состояние подключения
char replyBuffer[160];
void setup()
{
Serial.begin(9600);
// Ethernet connection:
Ethernet.begin(mac,ip,sdns,gateway,subnet);
// секунда для инициализации Ethernet
delay(1000);
//первое соединение через 15 секунд после запуска
lastConnectionTime = millis()-postingInterval+15000;
}
void loop()
{
//если не подключены, и прошло определенное время, то делаем замер,
//переподключаемся и отправляем данные
if (!client.connected() && (millis() - lastConnectionTime > postingInterval))
{
//формирование HTTP-запроса
memset(replyBuffer, 0, sizeof(replyBuffer));
strcpy(replyBuffer,"ID=");
//Конвертируем MAC-адрес
for (int k=0; k<6; k++)
{
int b1=mac[k]/16;
int b2=mac[k]%16;
char c1[2],c2[2];
if (b1>9) c1[0]=(char)(b1-10)+'A';
else c1[0] = (char)(b1) + '0';
if (b2>9) c2[0]=(char)(b2-10)+'A';
else c2[0] = (char)(b2) + '0';
c1[1]='\0';
c2[1]='\0';
strcat(replyBuffer,c1);
strcat(replyBuffer,c2);
}
strcat(replyBuffer,"&");
strcat(replyBuffer,"3351C4BA0200003B");
strcat(replyBuffer,"=");
char temp[3];
double tmpd=(analogRead(A0)*5.0/1024)*100-273.15;
int tmpi=int(tmpd);
itos(tmpi,temp);
strcat(replyBuffer,temp);
strcat(replyBuffer,'\0');
//отправляем запрос
httpRequest();
}
//храним последнее состояние подключения
lastConnected = client.connected();
}
// функция отправки запроса
void httpRequest() {
if (client.connect(server, 80))
{
// send the HTTP POST request:
client.println("POST http://narodmon.ru/post.php HTTP/1.0");
client.println("Host: narodmon.ru");
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(len(replyBuffer));
client.println();
client.println(replyBuffer);
client.println();
lastConnectionTime = millis();
}
else
{
client.stop();
}
}
// размер данных
int len(char *buf)
{
int i=0;
do
{
i++;
} while (buf[i]!='\0');
return i;
}
// функция int to string
void itos(int n, char bufp[3]) //
{
char buf[3]={'0','0','\0'};
int i = 1;
while (n > 0)
{
buf[i] = (n % 10)+48;
i--;
n /= 10;
}
for (i=0; i<3; i++)
bufp[i]=buf[i];
}
Плата - Arduino Mega, Arduino Uno (пробовал на обеих)
в качестве адаптера - enc28j60
На роутере включен dhcp.
При включении arduino, на адаптере (на самом ehternet порту) загорается зеленый индикатор на несколько секунд, затем на пол секунды потухает, затем кратковременно загорается желтый индикатор, затем все потухает, и ничего не происходит.
ip адреса в скетче прописаны в соостветствии с адресом сети, маски сети, и адресом роутера. В админке роутера новых устройств не появляется.