Камера-ловушка для поля за 1 800 ₽: ESP32-CAM + PIR-датчик + Telegram

Фермозавр·9 апреля 2026 г.·12 мин чтения

Кто ходит на ваше поле ночью — кабаны, воры или соседские коровы? Собираем камеру-ловушку с ИК-подсветкой и отправкой фото в Telegram. Автономность — месяцы.

Камера-ловушка для поля за 1 800 ₽: ESP32-CAM + PIR-датчик + Telegram

Кто-то повадился на ваше поле. Может быть, кабаны роют картошку. Может — соседские коровы ломают забор и топчут посевы. Может — вандалы срезают кабель с метеостанции. Или лисы таскают кур. Вы узнаёте об этом утром, когда приезжаете на участок и видите следы разрушений. А виновника — не видите.

Промышленная камера видеонаблюдения с инфракрасной подсветкой стоит от 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 ₽). Кабан приходит → слышит злую собаку → уходит. Через два-три визита перестаёт приходить.

В финальной статье цикла — рентабельность поля: как посчитать прибыль с гектара, учесть все затраты и понять, какие поля зарабатывают, а какие — съедают деньги.

Источник: Фермозавр

💬 Комментарии

Чтобы оставить комментарий, войдите или зарегистрируйтесь

Загрузка комментариев...

Похожие статьи