Беспроводная метеостанция на Arduino: Портативный набор для мониторинга погоды
Компоненты и материалы
| Arduino Due (или Arduino Mega) | 1 |
| 3.2" TFT HX8357C | 1 |
| Модуль реального времени DS3231 | 1 |
| Датчик температуры и влажности DHT22 | 1 |
| Трансивер nRF24L01+ (SparkFun) | 1 |
| Макетная плата | 1 |
| Пин-хедер 36 позиций (7 пинов) | 1 |
| Перемычки | 1 |
| Arduino Nano R3 | 1 |
| Powerbank Xiaomi | 1 |
О проекте




Сборка беспроводной метеостанции — отличный обучающий опыт. Завершив проект, вы лучше поймёте принципы беспроводной связи, работы датчиков и мощь платформы Arduino. На этом базовом опыте вы сможете легко создавать более сложные проекты в будущем.
Метеостанция — устройство, собирающее данные о погоде и окружающей среде с помощью различных датчиков. Можно измерять:
- Температуру
- Влажность
- Ветер
- Барометрическое давление
- UV-индекс
- Осадки
В нашей станции мы измерим температуру и влажность в двух точках и выведем текущие дату и время. Сборка метеостанции крайне проста. Но может ли энтузиаст построить блок с цветным TFT-дисплеем и функциями, сравнимыми с коммерческим прибором? Ответ — ДА! Благодаря открытому ПО и железу можно легко собрать эту впечатляющую станцию!
Проект состоит из двух частей: передатчика и приёмника.
Передатчик измеряет температуру и влажность и беспроводно отправляет данные приёмнику. Приёмник измеряет свои температуру и влажность, принимает данные от удалённого датчика и выводит всё на большом цветном TFT-дисплее.
Приступим к сборке!
Шаг 1: Приобретите все детали

Необходимые детали:
- Arduino Due → ссылка
- Arduino Mega → ссылка
- Arduino Nano → ссылка
- 3.2" TFT дисплей → ссылка
- DHT22 → ссылка
- NRF24L01 → ссылка
- DS3231 RTC → ссылка
- Макетная плата → ссылка
- Перемычки → ссылка
- Пин-хедеры → ссылка
- Powerbank Xiaomi → ссылка
Стоимость проекта около $40. Можно сэкономить $5, используя Arduino Mega вместо Due. Я выбрал Due для приёмника — он быстрый и с большим объёмом памяти, что пригодится при добавлении функций.
Шаг 2: Датчик температуры и влажности DHT22

DHT22 — популярный датчик температуры и влажности. Дешёвый, простой в использовании, с хорошей точностью.
Состав датчика: ёмкостной датчик влажности и термистор. Внутри чип выполняет АЦ-преобразование и выдаёт цифровой сигнал с температурой и влажностью. Сигнал легко считывается любым микроконтроллером.
Характеристики DHT22:
- Низкая стоимость
- Питание и I/O 3–5V
- Макс. 2.5 мА во время преобразования
- Влажность 0–100% с точностью 2–5%
- Температура -40…+125°C ±0.5°C
- Медленный
Подключение к Arduino элементарно: вывод «+» → 5V или 3.3V, «-» → GND, OUT → любой цифровой пин.
Для работы нужна библиотека DHT: GitHub
Шаг 3: Модуль реального времени DS3231

DS3231 — модуль реального времени. На батарейке держит время годами благодаря минимальному потреблению. Стоит около $2 с батареей. Используем для отображения времени в метеостанции.
Шаг 4: Беспроводные модули NRF24L01+


NRF24L01+ — дешёвый двунаправленный трансивер (<$3). Работает на 2.4 ГГц, скорость до 2 Мбит/с. Интерфейс SPI — простое подключение к Arduino. Нужно подключить 7 из 8 пинов.
Модуль не вставляется в макетную плату — используем мама-папа перемычки. Распиновка (pin 1 = GND):
- GND → GND Arduino
- VCC → 3.3V Arduino (НЕ 5V! сгорит)
- CE → любой цифровой пин (в примере D7)
- CSN → любой цифровой пин (в примере D8)
- SCK → D13 (Arduino Uno)
- MOSI → D11
- MISO → D12
Библиотека для удобной работы: RF24
Если не работали с NRF24L01+, смотрите прикреплённое видео с простым примером.
Шаг 5: Сборка передатчика



Передатчик очень прост. Используем:
- Arduino Nano
- Датчик DHT22
- Модуль NRF24L01+
- Макетная плата
- Перемычки
Выход датчика → D4 Arduino Nano. Питание и земля подключаем. Подключаем NRF24L01+ по пинам на третьем изображении. Подробности — в видео на предыдущем шаге.
Передатчик готов. Переходим к приёмнику.
Шаг 6: Сборка приёмника






Для приёмника нужны:
- Arduino Due или Mega
- DS3231 RTC
- DHT22
- NRF24L01+
- 3.2" цветной TFT дисплей
- Макетная плата
- 7 пин-хедеров
- Перемычки
Согните 7 пин-хедеров и установите в пины Arduino Due: один на GND, один на 3.3V, два на I2C, три на цифровые пины 6–8. Припаяйте три провода к аппаратным SPI пинам Due: MOSI, MISO, SCK. Проверьте схему внимательно. Подключите провода к пин-хедерам и установите дисплей.
Подключение DS3231:
- VCC → 3.3V Arduino
- GND → GND
- SDA → SDA Arduino
- SCL → SCL Arduino
Подключение DHT22:
- VCC → 3.3V
- GND → GND
- OUT → D8 Arduino
Подключение NRF24L01+:
- GND → GND
- VCC → 3.3V
- 3-й пин → D6
- 4-й пин → D7
- 5-й пин → SCK (припаянный)
- 6-й пин → MOSI (припаянный)
- 7-й пин → MISO (припаянный)
Шаг 7: Код передатчика

Скачайте библиотеку RF24 для NRF24L01+ и DHT для DHT22.
- DHT22 Library: GitHub
Код передатчика отправляет структуру с двумя float — температурой и влажностью.
Для связи создаём «pipe» (канал) с адресом. Оба модуля читают/пишут в один pipe. Адрес pipe = "0". Канал связи = 115 (из 126 возможных). Максимальная мощность передачи для дальности. Скорость 250 Кбит/с (минимальная) для лучшей дальности. Открываем pipe для записи.
В loop(): читаем датчик, сохраняем в структуру, отправляем записью в pipe. Код прикреплён к туториалу.
FU361QHIQFCEYSE.ino
Шаг 8: Код приёмника


Нужны 4 библиотеки. Библиотека дисплея: TFT_HX8357_Due. После скачивания откройте User_Setup.h: закомментируйте строку 13, раскомментируйте 14 (драйвер HX8357C).
Остальные библиотеки:
- NRF24L01: RF24
- DHT22: DHT
- DS3231: Sodaq_DS3231
Код приёмника: в setup() инициализируем датчики и модули, рисуем интерфейс. В loop() постоянно проверяем входящие беспроводные данные. При получении сохраняем и выводим на дисплей. Локальные температуру и влажность читаем раз в минуту, обновляя экран только при изменении — это уменьшает мерцание. Подготовлена версия с температурой в Фаренгейтах. Оба варианта кода прикреплены.
F053BTXIQFCEZ09.ino
FNV3X4LIQFCEZ0C.ino
Шаг 9: Тестирование проекта


Включаем питание и проверяем. На дисплее сверху — дата и время, внизу — температура и влажность с обоих датчиков.
Если нет данных от удалённого датчика, сдвиньте передатчик ближе — возможно, вне зоны досягаемости. Если не помогло — проверьте все соединения.
Этот проект отлично демонстрирует возможности открытого железа и ПО. За пару часов можно собрать впечатляющий прибор! Это только начало: можно добавить кнопки для графиков и режимов, больше датчиков, логирование данных, интернет и многое другое. Arduino Due даёт много памяти для расширений. Жду ваши идеи в комментариях!
Больше деталей — в YouTube-видео во введении или на моём сайте. Спасибо за внимание!
Код
GitHub библиотеки
Производственный процесс
- Сборка уличной метеостанции на Raspberry Pi 2 и ADS‑WS1
- Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
- Продвинутая метеостанция v2.0: мониторинг температуры, давления, влажности и высоты в реальном времени
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- Портативная метеостанция на Arduino Nano за $10: DHT22, BMP180 и LCD
- eDOT: точные Arduino-часы и метеостанция с встроенным ИК-пультом