Метеостанция на Arduino и ThingSpeak: температура и влажность в облаке
Компоненты и материалы
- Arduino UNO — 1 шт.
- ESP8266 ESP-01 (Wi-Fi модуль) — 1 шт.
- DHT11 (температура и влажность, 3 пина) — 1 шт.
- Макетная плата — 1 шт.
- Перемычки — 1 комплект
- Breadboard Power Supply 5V/3.3V — 1 шт. (обязателен! ESP8266 потребляет пиковые токи, которых не даст Arduino)
Сервисы и ПО
- ThingSpeak API
- Arduino IDE
- Windows 10 (для разработки)
О проекте
Первые шаги в IoT
Вход в IoT может пугать новичком. ThingSpeak — идеальная стартовая площадка: дешево, понятно, круто. Проект: DHT11 шлёт данные в облако ThingSpeak через Arduino + ESP-01.

Подключение
| ESP-01 | Arduino / Питание |
|---|---|
| VCC | 3.3V (от Breadboard PSU) |
| GND | GND |
| CH_PD | 3.3V |
| RESET | 3.3V |
| TX | Pin 2 (SoftwareSerial RX) |
| RX | Pin 3 (SoftwareSerial TX) — через делитель напряжения! |
| DHT11 | Arduino |
|---|---|
| VCC | 5V |
| OUT | A0 |
| GND | GND |
На Breadboard Power Supply переключите джампер на 3.3V.

Настройка ThingSpeak
- Регистрация на thingspeak.com.
- New Channel → два поля: Temperature и Humidity.
- Сохраните Write API Key — понадобится в коде.

Настройка Arduino IDE
Ключевой момент — библиотеки. Нужно установить вручную через Sketch → Include Library → Add .ZIP Library:
SoftwareSerial.h — встроена.

Скетч
Полный код: GitHub
В коде перед загрузкой:
- Вставьте свой Write API Key в переменную
myAPIkey. - Укажите SSID и пароль Wi-Fi в команде
AT+CWJAP.
String myAPIkey = "Your Write API key here";
#include <SoftwareSerial.h>
#include <DHT.h>
SoftwareSerial ESP8266(2, 3); // Rx, Tx
#define DHTTYPE DHT11
#define DHTPIN A0
DHT dht(DHTPIN, DHTTYPE, 11);
float humidity, temp_f;
long writingTimer = 17; // интервал отправки, сек
long startTime = 0;
boolean error;
void setup() {
Serial.begin(9600);
ESP8266.begin(9600);
dht.begin();
startTime = millis();
ESP8266.println("AT+RST");
delay(2000);
Serial.println("Connecting to Wifi");
// ... подключение к Wi-Fi через AT-команды ...
}
void loop() {
if (millis() - startTime > writingTimer * 1000) {
readSensors();
writeThingSpeak();
startTime = millis();
}
}
void readSensors() {
temp_f = dht.readTemperature();
humidity = dht.readHumidity();
}
void writeThingSpeak() {
ESP8266.flush();
String cmd = "AT+CIPSTART=\"TCP\",\"184.106.153.149\",80"; // api.thingspeak.com
ESP8266.println(cmd);
if(ESP8266.find("Error")) return;
String getStr = "GET /update?api_key=" + myAPIkey;
getStr += "&field1=" + String(temp_f);
getStr += "&field2=" + String(humidity);
getStr += "\r\n\r\n";
String cmdSend = "AT+CIPSEND=" + String(getStr.length());
ESP8266.println(cmdSend);
if(ESP8266.find(">")) {
ESP8266.print(getStr);
delay(500);
// чтение ответа...
} else {
ESP8266.println("AT+CIPCLOSE");
}
}
После загрузки: на канале ThingSpeak появятся графики с обновлением каждые 15 секунд.

Схемы

Код: 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-часы и метеостанция с встроенным ИК-пультом