Надёжная личная метеостанция на Arduino, ESP8266 и ThingSpeak
Компоненты
| Датчик давления/температуры BMP180 (Adafruit) | ×1 |
| Датчик влажности/температуры DHT11 (4 пина) | ×1 |
| Фоторезистор (LDR) | ×1 |
| Wi-Fi модуль ESP8266 ESP-01 | ×1 |
| Arduino Nano R3 | ×1 |
| Резисторы 4.75 кОм, 51 кОм | ×1 каждый |
| Понижающий модуль LM2596 | ×1 |
| DC-джек, выключатель, БП 12В/2А | ×1 каждый |
| Макетная плата (PCB), разъёмы, корпус 4×4×2 дюйма | ×1 |
Инструменты
- Паяльник, клеевой пистолет, отвертка, напильник, обкусыватель
Сервисы и софт
- Arduino IDE (последняя версия)
- Приватный канал на ThingSpeak.com (4 поля: температура, влажность, давление, освещённость)
О проекте
Проект позволяет мониторить микроклимат в помещении: температура, влажность, атмосферное давление и уровень освещённости. Данные собирает Arduino Nano, передаёт по UART на ESP8266, который отправляет их на ThingSpeak через Wi-Fi. Питание — от сетевого адаптера 12В/2А с понижением до 3.3В для сенсоров и ESP.
Шаг 1: Создание канала на ThingSpeak
- Регистрация на thingspeak.com → New Channel → включить 4 поля.
- Сохранить Write API Key — он понадобится в коде.
Шаг 2: Схема подключения
- BMP180 → I2C (A4/A5) Arduino Nano.
- LDR + 51 кОм → делитель напряжения на A1.
- DHT11 data → A0 с подтяжкой 4.7 кОм к 3.3В.
- ESP8266 TX/RX → D10/D11 (SoftwareSerial), CH_PD → 3.3В.
- LM2596 настроить на 3.3В (потенциометр на плате), запитать сенсоры и ESP.
- Вход LM2596 и Vin Arduino → 12В от БП.
Шаг 3: Монтаж на макетной плате
Используйте гнездовые колодки для Nano и ESP, продвинутые разъёмы для сенсоров (они будут закреплены на крышке корпуса). Проверьте на короткие замыкания мультиметром перед включением.
Шаг 4: Корпус
В пластиковом боксе 4×4×2 дюйма вырезайте отверстия под DC-джек, выключатель (стенка) и сенсоры (крышка). Отшлифуйте края, зафиксируйте компоненты клеем, закройте крышку винтами.
Шаг 5: Прошивка
Скачайте код с GitHub. Перед загрузкой укажите в скетче:
— SSID и пароль Wi-Fi (строки 14–15)
— Write API Key ThingSpeak (строка 17)
Загрузите скетч при отключенном 12В питании.
Код (фрагмент)
#include <SoftwareSerial.h>
#include <Wire.h>
#include <dht.h>
#include <Adafruit_BMP085.h>
// ... настройка пинов, Wi-Fi, ThingSpeak ...
void loop() {
setupEsp8266();
DHT.read11(dht_pin);
double humi = DHT.humidity;
double temp = bmp.readTemperature();
double press = bmp.readPressure();
int light = analogRead(lightSensor);
updateTemp(String(temp), String(light), String(press), String(humi));
delay(30000); // 30 сек
}
Производственный процесс
- DIY солнечная метеостанция на Raspberry Pi
- Сборка уличной метеостанции на Raspberry Pi 2 и ADS‑WS1
- Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
- Интеграция метеостанции с CWOP: практическое руководство
- Weather Monitor — DIY метеостанция на Raspberry Pi с загрузкой в Dropbox
- Продвинутая метеостанция v2.0: мониторинг температуры, давления, влажности и высоты в реальном времени
- Умные шторы: автоматическое управление светом на Arduino с солнечной энергией
- Загрузка данных датчика DHT11 на ThingSpeak с использованием Arduino MKR1000
- Портативная метеостанция на Arduino Nano за $10: DHT22, BMP180 и LCD
- eDOT: точные Arduino-часы и метеостанция с встроенным ИК-пультом