
Для данного примера нам понадобится:
Arduino Uno: http://ali.ski/gC_mOa или Arduino nano: http://ali.ski/rHRbY
Ethernet shield: http://ali.ski/tLocoy
Датчик температуры LM335: http://ali.pub/pr1cx
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В этом скетче мы получим данные с аналогового датчика температуры LM335
Схема:

Так как наш Датчик LM335 аналоговый следовательно его подключаем к аналоговому пину. Все это видно на схеме.
После подключения аналогового датчика LM335 необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.
int lm335 = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
double val = analogRead(lm335); // Чтение с аналогового пина
double voltage = val*5.0/1024; // перевод в значение в вольтах
double temp = voltage*100 - 273.15; // Перевод в градусы Цельсия
Serial.print(" temp = ");
Serial.println(temp);
delay(1000);
}
Скачать скетч : https://yadi.sk/d/5F1EDyi_3DvKhv
В этом скетче мы отправим данные с аналогового датчика LM335 на сайт народный мониторинг Http://narodmon.ru
После подключения ethernet shield w5100 необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x95, 0xDE, 0x81, 0x3A, 0x91, 0xC9 }; //MAC-адрес Arduino ОН ДОЛЖЕН БЫТЬ У ВСЕХ УНИКАЛЬНЫЙ!!!!
const unsigned long postingInterval = 600000; // интервал между отправками данных 10 минут
// IP адрес, назначаемый Ethernet shield:
byte ip[] = { 192, 168, 1, 9 };
// IP адрес, dns сервера:
byte sdns[] = { 8, 8, 8, 8 };
// адрес шлюза:
byte gateway[] = { 192, 168, 1, 111 };
// маска:
byte subnet[] = { 255, 255, 255, 0 };
IPAddress server(94,142,140,101);
//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];
}
Скачать скетч: https://yadi.sk/d/RwDDeCJ_3DvKug
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.