Кто-то повадился на ваше поле. Может быть, кабаны роют картошку. Может — соседские коровы ломают забор и топчут посевы. Может — вандалы срезают кабель с метеостанции. Или лисы таскают кур. Вы узнаёте об этом утром, когда приезжаете на участок и видите следы разрушений. А виновника — не видите.
Промышленная камера видеонаблюдения с инфракрасной подсветкой стоит от 8 000 ₽, плюс регистратор, плюс жёсткий диск, плюс электричество (которого в поле нет). Мы соберём камеру-ловушку за 1 800 ₽: она сфотографирует любого, кто появится в радиусе 7 метров — днём и ночью — и отправит фото в Telegram.
Компоненты
- ESP32-CAM (AI-Thinker) — 550 ₽. Микроконтроллер с камерой OV2640 (2 Мп), Wi-Fi, слот для microSD, ИК-фильтр. Главное — всё на одной плате размером с почтовую марку.
- HC-SR501 PIR-датчик — 80 ₽. Инфракрасный датчик движения, дальность 7 м, угол 120°. Реагирует на тепло: человек, животное, машина.
- ИК-подсветка (IR LED-модуль 850 нм) — 120 ₽. Невидимая для глаза подсветка для ночных снимков. Дальность 5–8 м.
- Аккумулятор 18650 × 2 — 400 ₽ (2 × 3400 мАч = 6800 мАч)
- Модуль зарядки TP4056 — 50 ₽
- Повышающий модуль MT3608 — 50 ₽ (с 3.7V до 5V для ESP32-CAM)
- Солнечная панель 6V 1W — 250 ₽ (подзарядка днём)
- Корпус — 150 ₽ (распределительная коробка IP55 + камуфляжная лента)
- Провода, разъёмы — 100 ₽
Итого: ~1 750 ₽. С запасом на доставку — 1 800–2 000 ₽.
Схема подключения
ESP32-CAM — центральный модуль. К нему подключаем:
- PIR-датчик HC-SR501 → выход на GPIO13 (wakeup pin)
- ИК-подсветка → GPIO12 через MOSFET IRF520 (ESP32 не тянет ток напрямую)
- Питание: 18650 → TP4056 → MT3608 (5V) → ESP32-CAM VCC
- Солнечная панель → вход зарядки TP4056
- microSD-карта — в слот ESP32-CAM (локальное хранение фото)
Критично: ESP32-CAM не имеет USB-порта для программирования. Нужен USB-UART адаптер (CP2102 или CH340, ~100 ₽) для прошивки. После прошивки адаптер не нужен — отключаете его и устанавливаете камеру.
Прошивка: код
#include "esp_camera.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include "driver/rtc_io.h"
#include <SD_MMC.h>
// Wi-Fi (или мобильная точка доступа)
const char* ssid = "ВАША_СЕТЬ";
const char* password = "ПАРОЛЬ";
// Telegram Bot
const char* botToken = "ВАШ_BOT_TOKEN";
const char* chatId = "ВАШ_CHAT_ID";
// Пины ESP32-CAM (AI-Thinker)
#define PWDN_GPIO 32
#define RESET_GPIO -1
#define XCLK_GPIO 0
#define SIOD_GPIO 26
#define SIOC_GPIO 27
#define Y9_GPIO 35
#define Y8_GPIO 34
#define Y7_GPIO 39
#define Y6_GPIO 36
#define Y5_GPIO 21
#define Y4_GPIO 19
#define Y3_GPIO 18
#define Y2_GPIO 5
#define VSYNC_GPIO 25
#define HREF_GPIO 23
#define PCLK_GPIO 22
#define IR_LED 12
#define PIR_PIN 13
#define FLASH_LED 4
void setup() {
Serial.begin(115200);
// ИК подсветка
pinMode(IR_LED, OUTPUT);
digitalWrite(IR_LED, HIGH); // включаем для снимка
// Настройка камеры
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO;
config.pin_d1 = Y3_GPIO;
config.pin_d2 = Y4_GPIO;
config.pin_d3 = Y5_GPIO;
config.pin_d4 = Y6_GPIO;
config.pin_d5 = Y7_GPIO;
config.pin_d6 = Y8_GPIO;
config.pin_d7 = Y9_GPIO;
config.pin_xclk = XCLK_GPIO;
config.pin_pclk = PCLK_GPIO;
config.pin_vsync = VSYNC_GPIO;
config.pin_href = HREF_GPIO;
config.pin_sccb_sda = SIOD_GPIO;
config.pin_sccb_scl = SIOC_GPIO;
config.pin_pwdn = PWDN_GPIO;
config.pin_reset = RESET_GPIO;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = FRAMESIZE_UXGA; // 1600x1200
config.jpeg_quality = 10;
config.fb_count = 1;
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed: 0x%x\n", err);
goToSleep();
return;
}
// Делаем снимок
camera_fb_t* fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Capture failed");
goToSleep();
return;
}
// Сохраняем на SD
saveToSD(fb);
// Подключаемся к Wi-Fi и отправляем
WiFi.begin(ssid, password);
int attempts = 0;
while (WiFi.status() != WL_CONNECTED &&
attempts < 20) {
delay(500);
attempts++;
}
if (WiFi.status() == WL_CONNECTED) {
sendToTelegram(fb);
Serial.println("Photo sent to Telegram");
} else {
Serial.println("WiFi failed, photo saved to SD");
}
esp_camera_fb_return(fb);
digitalWrite(IR_LED, LOW);
goToSleep();
}
void loop() {
// Не используется — после setup() уходим в сон
}
void goToSleep() {
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13, 1);
Serial.println("Going to sleep...");
delay(100);
esp_deep_sleep_start();
}
void saveToSD(camera_fb_t* fb) {
if (!SD_MMC.begin("/sdcard", true)) return;
// Имя файла: номер по возрастанию
static int fileNum = 0;
String path = "/photo_" + String(fileNum++) + ".jpg";
File file = SD_MMC.open(path.c_str(), FILE_WRITE);
if (file) {
file.write(fb->buf, fb->len);
file.close();
}
}
void sendToTelegram(camera_fb_t* fb) {
HTTPClient http;
String url = "https://api.telegram.org/bot" +
String(botToken) + "/sendPhoto";
// Multipart form data
String boundary = "----ESP32CAM";
String head = "--" + boundary + "\r\n";
head += "Content-Disposition: form-data; ";
head += "name=\"chat_id\"\r\n\r\n";
head += String(chatId) + "\r\n";
head += "--" + boundary + "\r\n";
head += "Content-Disposition: form-data; ";
head += "name=\"photo\"; ";
head += "filename=\"alert.jpg\"\r\n";
head += "Content-Type: image/jpeg\r\n\r\n";
String tail = "\r\n--" + boundary + "--\r\n";
size_t totalLen = head.length() + fb->len +
tail.length();
http.begin(url);
http.addHeader("Content-Type",
"multipart/form-data; boundary=" + boundary);
http.addHeader("Content-Length",
String(totalLen));
// Собираем тело
uint8_t* body = (uint8_t*)malloc(totalLen);
if (body) {
memcpy(body, head.c_str(), head.length());
memcpy(body + head.length(), fb->buf, fb->len);
memcpy(body + head.length() + fb->len,
tail.c_str(), tail.length());
http.POST(body, totalLen);
free(body);
}
http.end();
}
Как это работает
ESP32-CAM находится в глубоком сне (deep sleep). Потребление — 10 мкА. PIR-датчик работает автономно (потребление 65 мкА) и при обнаружении движения подаёт HIGH на GPIO13. ESP32 просыпается, включает ИК-подсветку, делает снимок, сохраняет на SD-карту, подключается к Wi-Fi (если есть), отправляет фото в Telegram. Весь цикл — 5–8 секунд. После — снова спит.
Автономность: 6800 мАч при среднем потреблении 0,1 мА в режиме сна = ~2800 дней теоретически. На практике — ограничивают саморазряд аккумулятора и вспышки активности. При 10 срабатываниях в день (5 секунд × 200 мА каждое) + фоновый ток PIR-датчика — реально 2–3 месяца без подзарядки. С солнечной панелью — неограниченно.
Wi-Fi в поле: решения
ESP32-CAM работает только по Wi-Fi. В поле Wi-Fi нет. Три варианта:
Вариант 1: Автономная работа без Wi-Fi. Фото сохраняются на microSD. Раз в неделю приезжаете, достаёте карту, смотрите на компьютере. Просто, надёжно, но без мгновенных уведомлений.
Вариант 2: Мобильная точка доступа. Старый смартфон на солнечной зарядке раздаёт Wi-Fi. ESP32-CAM подключается к нему. Бюджет: 0 ₽ (если есть старый телефон) + 50 ₽/мес за SIM с минимальным трафиком. Один снимок 1600×1200 в JPEG — ~200 КБ. 10 снимков/день = 2 МБ. За месяц — 60 МБ.
Вариант 3: ESP32-CAM + SIM800L. Добавляем GSM-модуль (как в GPS-трекере из предыдущей статьи). Камера отправляет фото напрямую через мобильную сеть. Дороже (+450 ₽) и сложнее в коде, но полностью автономно.
Установка и маскировка
Камера-ловушка должна быть незаметной — иначе вандалы снимут камеру первым делом. Советы:
- Корпус: распределительная коробка IP55, обмотанная камуфляжной лентой. На дереве — хаки/зелёная, на столбе — серая.
- Высота: 1,5–2 метра. Выше — PIR-датчик не достаёт. Ниже — засыпет снегом.
- Направление: объектив камеры должен «видеть» место входа/прохода. PIR-датчик чувствителен к перпендикулярному движению (объект пересекает зону), а не к приближающемуся (объект идёт на датчик). Устанавливайте боком к тропе, а не в лоб.
- Ночью: ИК-подсветка невидима глазу, но некоторые животные видят ближний ИК (850 нм). Для скрытности можно использовать LED 940 нм — они полностью невидимы, но дальность подсветки падает до 3–4 м.
Сценарии использования
Кабаны на картошке. Ставите камеру на краю поля у леса (откуда приходят). Через неделю — серия фото: стадо из 8 кабанов приходит в 2:30 ночи. Знаете время — можете организовать отпугивание (ультразвук, свет) или обратиться к охотникам с конкретными данными.
Воровство урожая. Камера у склада или на подъезде к полю. Ночью КамАЗ подъехал, загрузился — фото с номером (если разрешение позволяет и есть подсветка). Доказательство для полиции.
Вандализм. Метеостанция в поле — кто-то регулярно отрывает солнечную панель. Камера рядом: фиксируем человека, время, транспорт. Один раз предупреждаете — проблема исчезает навсегда.
Мониторинг животных. Не обязательно вредителей — камера-ловушка = фотоловушка. Можно наблюдать за гнёздами, водопоями, миграцией. В Европе фермеры используют такие камеры для подсчёта косуль и планирования посевов (косули любят определённые культуры).
Продвинутая версия: детекция движения в кадре
PIR-датчик реагирует на любое тепло: человек, собака, нагретый солнцем столб (ложное срабатывание). ESP32-CAM может анализировать изображение программно — сравнивать текущий кадр с предыдущим и искать изменения.
// Простая детекция движения: сравнение кадров
bool motionDetected(camera_fb_t* current,
camera_fb_t* previous) {
if (!previous) return true; // первый кадр
int diffCount = 0;
int threshold = 30; // порог яркости
int pixelThreshold = current->len * 0.05;
for (size_t i = 0; i < current->len &&
i < previous->len; i++) {
if (abs(current->buf[i] - previous->buf[i])
> threshold) {
diffCount++;
}
}
return diffCount > pixelThreshold;
}
Если изменений в кадре менее 5% — ложное срабатывание PIR, фото не сохраняем. Это экономит место на SD и трафик. На практике фильтрует 60–80% ложных срабатываний.
Стоимость vs. промышленные фотоловушки
Для сравнения — промышленные фотоловушки (Bushnell, Suntek, Филин):
- Bushnell Core DS — от 12 000 ₽. 24 Мп, ИК, SD-карта. Без отправки фото.
- Suntek HC-801LTE — от 8 000 ₽. 16 Мп, 4G, отправка MMS/FTP.
- «Филин 200» (Россия) — от 6 000 ₽. 20 Мп, ИК, SD.
Наша DIY-версия: 1 800 ₽, 2 Мп, ИК, SD + Wi-Fi/Telegram. Разрешение ниже, но для задач «кто приходит?» — более чем достаточно. А главное — полная кастомизация: можно добавить датчик температуры, звуковое оповещение, интеграцию с платформами типа ТерраКвант через API.
Таймлапс: наблюдение за ростом культур
Камера-ловушка — это не только охрана. Если настроить съёмку по таймеру (каждые 6 часов), получается таймлапс роста культур за весь сезон. Засеяли поле — поставили камеру — через 4 месяца у вас видео: от голой земли до колосящейся пшеницы. Красиво? Да. Но главное — полезно:
- Видно неравномерность всходов (где земля плохо обработана)
- Видно момент начала болезни (пятна на посеве)
- Видно стрессовые зоны (смотрите, где растения отстают)
- Доказательство для страховой (градобой, засуха — временная метка на каждом кадре)
Для таймлапса меняем режим с PIR-пробуждения на таймер:
void goToSleep() {
// Пробуждение по таймеру каждые 6 часов
esp_sleep_enable_timer_wakeup(
6ULL * 60 * 60 * 1000000); // микросекунды
// Плюс по PIR (если кто-то пришёл — фото сразу)
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13, 1);
esp_deep_sleep_start();
}
4 фото/день × 120 дней = 480 кадров. При 200 КБ/фото — 96 МБ на SD. Карта 4 ГБ хватит на 40 сезонов. Видео из 480 кадров при 24 fps — 20-секундный ролик. Впечатляет на презентации для инвесторов.
Множество камер: организация сети
Одна камера — точечный контроль. Пять камер — охват всего хозяйства. При цене 1 800 ₽ за штуку — пять камер стоят меньше одной промышленной:
- Камера 1: въезд на территорию (фиксация транспорта)
- Камера 2: склад/зернохранилище (ночная охрана)
- Камера 3: край поля у леса (кабаны, зайцы)
- Камера 4: метеостанция/оборудование (вандализм)
- Камера 5: водоём/водопой (мониторинг)
Все камеры отправляют фото в один Telegram-чат. Каждая подписывает фото своим именем: «[Склад] Движение обнаружено 03:47». Агроном утром открывает чат — видит всё, что произошло за ночь. Если ничего — чат пустой. Работает как push-оповещение: молчит, пока всё спокойно.
Защита от погоды
Камера в поле — это не квартира. Температура от −30 до +40°C, дождь, снег, пыль, конденсат. Как обеспечить надёжность:
Корпус: минимум IP55. Лучше — герметичная распределительная коробка с резиновыми уплотнителями. Окно для камеры — вырезаем отверстие, закрываем стеклом или прозрачным пластиком (оргстекло 2 мм). Герметизируем силиконом.
Конденсат: главный враг электроники в поле. Днём тепло, ночью холодно — внутри корпуса выпадает конденсат на линзе и плате. Решение: пакетик силикагеля (из коробки с обувью) внутри корпуса. Менять раз в месяц или сушить в духовке при 100°C.
Мороз: аккумуляторы 18650 теряют ёмкость при температуре ниже −10°C. Решение: термоизоляция (обернуть аккумуляторы пенофолом) или использовать LiFePO4 аккумуляторы, которые работают до −20°C.
Насекомые: пауки любят тёплые электронные блоки — плетут паутину прямо на объективе. Москитная сетка на вентиляционных отверстиях корпуса решает проблему.
Юридические нюансы
Установка камеры на своей территории — законна. Но есть нюансы:
- Своя территория: снимаете своё поле, свой склад — без ограничений. Размещаете табличку «Ведётся видеонаблюдение» — и формальности соблюдены.
- Общественные места: дорога вдоль поля — съёмка разрешена, но распространение фото с узнаваемыми лицами — с оговорками (ст. 152.1 ГК РФ). Для целей безопасности — можно.
- Скрытая съёмка: скрытые камеры в России запрещены к обороту как «специальные технические средства» (ст. 138.1 УК РФ). Но камера в корпусе с табличкой — не скрытая. DIY-камера в камуфляжном корпусе без таблички — серая зона. Рекомендация: повесьте табличку.
Частые ошибки при сборке
ESP32-CAM не загружается: GPIO0 нужно подтянуть к GND для режима прошивки. После прошивки — отключить перемычку. Если забыли отключить — плата уходит в bootloader при каждом включении.
Камера показывает розовое/зелёное изображение: шлейф камеры OV2640 плохо вставлен в разъём. Переподключите — защёлкните до щелчка. На ESP32-CAM этот разъём хрупкий, не тяните за шлейф.
PIR-датчик срабатывает постоянно: чувствительность HC-SR501 регулируется подстроечным резистором. Выкрутите на минимум и добавляйте по чуть-чуть. Также: не направляйте PIR на солнце или отражающие поверхности (металл нагревается → ИК-излучение → ложное срабатывание).
Фото тёмные: ИК-подсветка слишком слабая или далеко от объекта. Для расстояния >5 м нужен мощный ИК-прожектор (3W LED, ~150 ₽) с линзой, фокусирующей луч. Либо несколько ИК-диодов параллельно.
Аккумулятор быстро садится: ESP32-CAM не уходит в deep sleep — чаще всего из-за ошибки в коде (зациклился) или потому что PIR-датчик постоянно подаёт HIGH. Проверьте: отключите PIR — замерьте ток. Должно быть <0,1 мА в deep sleep.
Wi-Fi не подключается в поле: стандартная антенна ESP32-CAM — PCB-антенна, дальность 30–50 м в открытом пространстве. Для увеличения: замените на внешнюю антенну через IPEX-разъём (на плате есть, но по умолчанию отключён — нужно перепаять резистор 0 Ом). С внешней антенной — до 200 м прямой видимости.
Бонус: звуковой отпугиватель
ESP32-CAM может не только фотографировать, но и отпугивать. Добавьте динамик (пьезо-зуммер, 30 ₽) на свободный GPIO. При срабатывании PIR — громкий звук 3 секунды. Кабаны и косули быстро учатся обходить место.
// Отпугиватель на GPIO14
#define BUZZER_PIN 14
void scare() {
pinMode(BUZZER_PIN, OUTPUT);
// Неприятный для животных звук: чередование частот
for (int i = 0; i < 30; i++) {
tone(BUZZER_PIN, 2000 + random(3000));
delay(50);
noTone(BUZZER_PIN);
delay(50);
}
}
Для продвинутой версии — записанный лай собаки на SD-карте + усилитель PAM8403 (~40 ₽) + динамик 8 Ом (~60 ₽). Кабан приходит → слышит злую собаку → уходит. Через два-три визита перестаёт приходить.
В финальной статье цикла — рентабельность поля: как посчитать прибыль с гектара, учесть все затраты и понять, какие поля зарабатывают, а какие — съедают деньги.




