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

Ардуино метеостанция для дома ► рассмотрим, как получить данные с датчика температуры и влажности DHT11 по локальной сети через Wi-Fi на смартфоне.

Домашняя метеостанция на Ардуино — при проектировании системы «Умный дом» требуется уметь не только наладить автономную работу коммуникаций, но и уметь получать данные о климате в доме. На этом занятии вы узнаете, как передать по локальной сети на компьютер или смартфон данные влажности и температуры от 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, как на фото ниже

Схема подключения 10 контактного и 12 контактного модуля
Схема подключения 10 и 12 контактного Enternet модуля

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

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

Подключаем датчик 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 секунд.

1 Star2 Stars3 Stars4 Stars5 Stars (8 votes, average: 4,88 out of 5)
Загрузка...

Похожие записи по теме:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *