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

Мы рассматривали подключение 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, как на фото ниже

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. Скачайте и распакуйте архивы с необходимыми библиотеками

Если необходимые библиотеки в 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); }
Пояснения к коду:
- если web-страница будет «зависать», необходимо увеличить буфер;
- для настройки отображения web-страницы используйте оформление CSS.

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