• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Добавление arduino на народный мониторинг.

12 февраля, 2017

Для данного примера нам понадобится:

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() &amp;&amp; (millis() - lastConnectionTime &gt; postingInterval)) 
    {
    //формирование HTTP-запроса
    memset(replyBuffer, 0, sizeof(replyBuffer));
    strcpy(replyBuffer,"ID=");
    //Конвертируем MAC-адрес
    for (int k=0; k&lt;6; k++) { int b1=mac[k]/16; int b2=mac[k]%16; char c1[2],c2[2]; if (b1&gt;9) c1[0]=(char)(b1-10)+'A';
      else c1[0] = (char)(b1) + '0';
      if (b2&gt;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,"&amp;");
   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 &gt; 0) 
    {
    buf[i] = (n % 10)+48;
    i--;
    n /= 10;
    }
  for (i=0; i&lt;3; i++)
    bufp[i]=buf[i];
  }

 

Скачать скетч: https://yadi.sk/d/RwDDeCJ_3DvKug

Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.

Видео

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·