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