Домашняя Ethernet метеостанция на Ардуино

Домашняя метеостанция на Ардуино — при проектировании системы Умный дом требуется уметь не только наладить автономную работу коммуникаций, но и уметь получать данные о климате в доме. На этом занятии вы узнаете, как передать по локальной сети на компьютер или смартфон данные влажности и температуры от DTH11. Это может пригодится для контроля микроклимата в помещении или в парнике.

Домашняя метеостанция на Ардуино своими руками

Домашняя интернет метеостанция Arduino
Домашняя интернет метеостанция на Ардуино своими руками

Мы рассматривали подключение Ethernet HR911105A к Arduino и возможность включения светодиодов дистанционно. Сегодня мы воспользуемся данной сборкой, добавив к схеме цифровой датчик температуры и влажности DTH11 с трех пиновым разъемом стандарта 2.54 мм. Для проекта нам понадобится плата Arduino, датчик DTH11, Ethernet порт HR911105A 15/10 (12 разъемов), макетная плата и роутер.

Следуйте инструкции и вы сможете сделать свою «Домашнюю метеостанцию на Arduino UNO», получая данные о температуре и влажности на компьютере или смартфоне по локальной сети. Вы можете дописать скетч, чтобы при достижении определенной температуры включались светодиоды. Также вас может заинтересовать проект метеостанции на Arduino с Android смартфоном и блютуз модулем.

Инструкция сборки домашней метеостанции Ардуино

 

Для этого проекта отребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • Ethernet порт HanRun HR911105A 15/10;
  • датчик DTH11;
  • макетная плата;
  • 2 светодиода и резистора на 10 кОм;
  • провода «папа-папа» и «папа-мама»;
  • роутер и LAN-кабель.

1. Соедините Arduino Uno и Ethernet порт HR911105A, как на фото ниже

Схема подключения Enternet модуля и DTH11
Схема подключения Enternet модуля и датчика DTH11
ENC28J60 Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
5V / 3.3V 5V / 3.3V 5V / 3.3V 5V / 3.3V
SCK 13 (SCK) 13 (SCK) 52 (SCK)
SO 12 (MISO) 12 (MISO) 50 (MISO)
ST 11(MOSI) 11 (MOSI) 51 (MOSI)
CS 10 (SS) 10 (SS) 53 (SS)

Обратите внимание, что 10 контактный модуль Ethernet ENC28J60 Enternet HR911105A питается от разъема 3,3 V, а 12 контактный модуль от 5V. Кроме того, обозначения разъемов на HanRun HR911105A могут быть напутаны, например, ST — вместо SO. Соединения контактов должны быть надежными для стабильной работы проекта.

2. Подключите датчик DTH11 к Arduino Uno проводами «папа-мама»

Обратите внимание, что данный сенсор не может измерять отрицательные температуры, поэтому его можно использовать только для измерения климата в комнате. Для уличной метеостанции следует применять датчик DS18B20 Arduino. Ранее мы уже подключали датчик DTH11 к микроконтроллеру и загружали библиотеку DHT.h, также нам потребуется библиотека Ethernet.h для модуля HR911105A.

3. Скачайте и распакуйте архивы с необходимыми библиотеками

Распаковываем архив библиотеки DTH11
Распаковываем архивы библиотек в C:\Program Files\Arduino\libraries

Если необходимые библиотеки в Arduino IDE у вас уже установлены, то пропустите этот пункт. Также вам потребуется настройка Wi-Fi роутера для организации локальной сети. У каждого производителя роутеров свои настройки, поэтому здесь мы останавливаться не будем. Обратитесь за инструкцией на официальном сайте производителя при возникновении трудностей с настройкой сети.

4. Скачайте и загрузите в Arduino скетч для домашней Метеостанции

Открыв в любом браузере страницу с адресом 192.168.1.55, вы увидите показания датчика DHT11, как на скрине ниже.  Скачать скетч для домашней Метеостанции можно здесь. Все основные функции в скетче прокомментированы, поэтому проблем с настройкой работы Метеостанции у вас возникнуть не должно. Чтобы красиво оформить свою web-страницу потребуются начальные знания HTML и CSS.

Скетч метеостанции Arduino с Ethernet HR911105A





#include <EtherCard.hh> // подключаем библиотеку для HR911105A
#include <DHT.h>              // подключаем библиотеку для DHT11

DHT dht(2, DHT11);     // пин для подключения DHT11

static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 }
static byte myip[] = { 192, 168, 1, 55 }; // постоянный IP адрес нашей страницы
static byte gwip[] = { 70, 117, 92, 55 };
byte Ethernet::buffer[1000];                  // чем больше данных, тем больше требуется буфера
BufferFiller bfill;

int t,h;

void setup () {
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
    Serial.println("Failed to access Ethernet controller");
  ether.staticSetup(myip, gwip);
  dht.begin();
}

static void ReadDHT11() { // получаем данные с датчика
  h = dht.readHumidity();
  t = dht.readTemperature();
}

static word homePage() { // оформление Web страницы
  bfill = ether.tcpOffset();
  bfill.emit_p(PSTR(
                 "HTTP/1.0 200 OK\r\n"
                 "Content-Type: text/html; charset=utf-8\r\n"
                 "Pragma: no-cache\r\n"
                 "\r\n"
                 "<meta name='viewport' content='width=device-width, initial-scale=1.0'>"
                 "<meta http-equiv='refresh' content='1'>"
                 "<title>Домашняя Метеостанция</title>"
                 "<h1 style='color:#0ea6f2'>Метеостанция</h1>"
                 "<h4 style='color:#666666'>Получение данных от датчика DHT11</h4>"
                 "<font size='3em'>Температура: $D C <br><br>Влажность: $D %</font>"
  ), t, h);
  return bfill.position();
}

void loop () {
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if (pos) {
    ReadDHT11();
    ether.httpServerReply(homePage());
  }
  
  delay(1);
}

Пояснения к коду:

  1. если web-страница будет «зависать», необходимо увеличить буфер;
  2. для настройки отображения web-страницы используйте оформление CSS.



Открыв web страницу, вы увидите показания DHT11
В браузере у вас должна открыться страница метеостанции

Заключение. Открыв в браузере на компьютере или смартфоне (если есть точка Wi-Fi) страницу 192.168.1.55, вы увидите показания датчика в реальном времени. Проверьте работу сенсора DHT11 и какие он будет давать показания влажности и температуры, обдувая датчик сначала теплым, а потом холодным воздухом. Заметим, что обновление web страницы происходит автоматически каждые 10 секунд.

Додати коментар


Захисний код
Оновити

EcoMonitoring

ЛІЧІЛЬНИК ВІДВІДУВАННЬ

Сьогодні 98
Вчора357
Цього тижня 2031
Минулого тижня 2125
Цей місяць 7330
Минулий місяць 9310
За весь час 171364
Ваш IP: 18.217.65.73
Сегодня: 2025-04-26
Пользователей на сайте: 0
Гостей на сайте: 25