ESP32-CAM — автоматическая съёмка счётчика воды и отправка фото в Telegram по расписанию
ESP32-CAM фотографирует счётчики воды (или электричества) в заданное время и мгновенно отправляет снимок в Telegram. Никакого программирования — просто меняете 4 строки: Wi-Fi, токен и Chat ID бота, интервал съёмки. Идеальное решение для автоматической передачи показаний без ручного ввода, без облачных сервисов и подписок.
Необходимые компоненты
- ESP32-CAM (AI-Thinker)
- Источник питания 5 В / 1–2 А
- Доступ к Wi-Fi
- Telegram-бот (токен + Chat ID)
Как это работает
- Подключение к Wi-Fi
- Захват кадра по таймеру (millis())
- Отправка JPEG в Telegram через UniversalTelegramBot
- Повтор каждые N минут/часов/дней
Пример кода
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include "esp_camera.h"
#include "camera_pins.h"
const char* ssid = "ВАША_СЕТЬ";
const char* password = "ВАШ_ПАРОЛЬ";
#define BOT_TOKEN "ТОКЕН_БОТА"
#define CHAT_ID "ВАШ_CHAT_ID"
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);
unsigned long previousMillis = 0;
const long interval = 60UL * 1000UL; // 1 минута (измените на 24*60*60*1000UL для суток)
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
client.setInsecure();
// Инициализация камеры (AI-Thinker)
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = FRAMESIZE_XGA; // оптимально для счётчиков
config.jpeg_quality = 10;
config.fb_count = 1;
esp_camera_init(&config);
sendPhoto(); // первая съёмка сразу после старта
}
void sendPhoto() {
camera_fb_t * fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Camera capture failed");
return;
}
bot.sendPhotoByBinary(CHAT_ID, "photo.jpg", fb->len, fb->buf);
esp_camera_fb_return(fb);
Serial.println("Фото отправлено");
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
sendPhoto();
}
}
подключается к Wi-Fi.
инициализирует камеру ESP32-CAM (AI-Thinker).
отправляет фото в Telegram по таймеру (каждую минуту).
первое фото отправляется сразу после старта.
Бонус: режим глубокого сна (экономия батареи)
// Добавьте в конец loop() вместо delay
esp_sleep_enable_timer_wakeup(30ULL * 1000000ULL); // 30 секунд
esp_deep_sleep_start();
Преимущества
- Автоматическая передача показаний
- Читаемые фото даже при увеличении
- Работает 24/7 без вашего участия
- Можно питать от аккумулятора + сон
- Никаких платных сервисов
Применение
- Автоматическая сдача показаний воды/электричества
- Контроль расхода на даче/в гараже
- Удалённый мониторинг счётчиков в арендованных квартирах
- Фиксация показаний для споров с УК
Заключение
ESP32-CAM превращает любой счётчик в «умный» за 15 минут. Просто направьте камеру на циферблат, прошейте скетч, измените 4 строки — и получайте фото показаний в Telegram каждый день/месяц. Никаких приложений, подписок и ручного ввода. Следующий шаг — добавим режим сна и автономность на месяцы от аккумулятора!
FAQ — ESP32-CAM для автоматической съёмки счетчиков и отправки фото в Telegram
Подходит ли ESP32-CAM для съемки счетчиков воды и электроэнергии?
Да. ESP32-CAM отлично подходит для ежедневной съемки циферблатов счетчиков благодаря встроенной камере, возможности настройки разрешения и стабильной работе с отправкой фото в Telegram. Достаточно один раз выставить ракурс и освещение.
Нужна ли SD-карта для работы ESP32-CAM в этом проекте?
Нет. Снимок отправляется напрямую в Telegram из оперативной памяти устройства с помощью UniversalTelegramBot. SD-карта не требуется, что упрощает сборку и делает систему более надежной.
Какой интервал съёмки можно установить?
Интервал задаётся в миллисекундах через переменную interval. Можно установить любое значение: от минут до суток. Для суточного режима используйте 24UL * 60UL * 60UL * 1000UL.
Можно ли питать ESP32-CAM от аккумулятора?
Да. При использовании режима глубокого сна ESP32-CAM может работать от аккумулятора неделями или месяцами. Достаточно подключить модуль питания 5 В или DC-DC преобразователь с USB.
Можно ли улучшить качество читаемости цифр на фото?
Да. Наиболее оптимальны режимы FRAMESIZE_XGA и UXGA. Дополнительно рекомендуются: постоянный источник света, минимальный наклон камеры и расстояние 10–20 см. JPEG-качество 8–12 обеспечивает хорошую читаемость при малом размере файла.
Что нужно изменить в коде для запуска?
Для работы достаточно изменить четыре значения: ssid, password, BOT_TOKEN, CHAT_ID. Всё остальное полностью готово для прошивки и запуска.
Можно ли отправлять фото в группу или канал Telegram?
Да. Получите ID группы или канала с помощью @userinfobot. Для канала бот должен быть назначен администратором с правом «Публиковать сообщения».
Работает ли проект без интернета?
Нет. Фото отправляется через API Telegram, поэтому требуется стабильное Wi-Fi-подключение. При отсутствии сети снимок не будет передан.
Можно ли добавить распознавание цифр на фото?
Да. Для автоматического распознавания можно использовать сторонние API (Google Vision, OCR.space) или локальный сервер OCR. ESP32-CAM отправляет фото, а обработку выполняет внешний сервис.