ESP32-CAM — это удобный небольшой модуль камеры с большой встроенной мощностью, и вы можете превратить его в незаметную шпионскую камеру, чтобы спрятать ее в любой комнате. Есть только одна проблема: в нем отсутствует порт USB. Это немного усложняет программирование, но с платой на основе ESP32, программатором FTDI и несколькими перемычками у вас будет запрограммированная шпионская камера ESP32 Wi-Fi в кратчайшие сроки. В данной статье мы рассмотрим как происходит настройка шпионской камеры Wi-Fi.
Необходимые детали
Это основные вещи, которые вам нужны для продолжения этого проекта:
Обратите внимание, что требуемая батарея может быть другого размера, если это необходимо.
Настройка камеры в Arduino IDE
В Arduino IDE перейдите к «Arduino» или «Файл» в строке меню, выберите «Настройки», затем щелкните значок окна рядом с «URL-адресами менеджера дополнительных плат». В отдельной строке добавьте следующий URL-адрес, затем нажмите «ОК» и «ОК» еще раз.
https://dl.espressif.com/dl/package_esp32_index.json
Затем в строке меню перейдите в «Инструменты», затем «Доска», а затем «Диспетчер досок». В поле поиска введите «esp32», затем установите последнюю версию «esp32 от Espressif Systems».
Откройте эскиз камеры по умолчанию
Снова перейдите в «Инструменты» в строке меню, выберите «Доска», затем выберите «AI Thinker ESP32-CAM» в разделе «ESP32 Arduino». Выбрав эту плату, перейдите в «Файл» -> «Примеры» -> «ESP32» -> «Камера» -> «CameraWebServer». Это откроет скетч, и вы увидите следующий код.
#include "esp_camera.h"
#include <WiFi.h>
//
// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
// Ensure ESP32 Wrover Module or other board with PSRAM is selected
// Partial images will be transmitted if image exceeds buffer size
//
// Select camera model
#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
#include "camera_pins.h"
const char* ssid = "*********";
const char* password = "*********";
void startCameraServer();
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
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;
// if PSRAM IC present, init with UXGA resolution and higher JPEG quality
// for larger pre-allocated frame buffer.
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
#if defined(CAMERA_MODEL_ESP_EYE)
pinMode(13, INPUT_PULLUP);
pinMode(14, INPUT_PULLUP);
#endif
// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
sensor_t * s = esp_camera_sensor_get();
// initial sensors are flipped vertically and colors are a bit saturated
if (s->id.PID == OV3660_PID) {
s->set_vflip(s, 1); // flip it back
s->set_brightness(s, 1); // up the brightness just a bit
s->set_saturation(s, -2); // lower the saturation
}
// drop down frame size for higher initial frame rate
s->set_framesize(s, FRAMESIZE_QVGA);
#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)
s->set_vflip(s, 1);
s->set_hmirror(s, 1);
#endif
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
startCameraServer();
Serial.print("Camera Ready! Use 'http://");
Serial.print(WiFi.localIP());
Serial.println("' to connect");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10000);
}
Настройка кода примера эскиза
В скетче CameraWebServer по умолчанию нам нужно убедиться, что выбрана наша плата AI Thinker, а не другая плата. На данный момент следующая доска не будет закомментирована:
#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
И вам нужно добавить // в начало этого, а затем удалить // из начала этой строки:
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM
Итак, этот раздел в коде теперь должен выглядеть так:
// Select camera model
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
Затем нам нужно ввести имя SSID и пароль для сети Wi-Fi, к которой мы хотим подключить шпионскую камеру. Найдите эти две строки, затем замените звездочки именем и паролем вашей сети Wi-Fi.
const
char* ssid = "*********"; const char* password = "*********";
Вот и все для настройки эскиза. Нажмите кнопку компиляции, чтобы скомпилировать его, после чего вы будете готовы прошить ESP32-CAM программой.
Подключение ESP32-CAM
С вашим программатором FTDI и модулем ESP32-CAM используйте перемычки с макетной платой или без нее, чтобы соединить вместе программатор FTDI и модуль ESP32-CAM.
- Подключите GND на FTDI к GND (через U0T) на ESP32-CAM.
- Подключите 5В на FTDI к 5В на ESP32-CAM.
- Подключите TX на FTDI к U03 на ESP32-CAM.
- Connect RX on the FTDI to U0T on the ESP32-CAM.
- Подключите I00 на ESP32-CAM к GND рядом с ним.
Это последний слишком короткий модуль CAM, чтобы его можно было перевести в режим программирования.
Вот как это должно выглядеть в готовом виде:
Загрузка скетча в ESP32-CAM
После того, как все перемычки установлены, вы можете подключить к нему кабель Mini-USB с обычным разъемом USB к компьютеру, а затем загрузить скетч.
Найдите порт, к которому подключена ваша ESP32-CAM, в Arduino IDE. Сначала перейдите в «Инструменты», выберите «Доска», затем выберите «AI Thinker ESP32-CAM» в разделе «ESP32 Arduino», если вы еще этого не сделали по какой-либо причине (вы должны были сделать это на шаге 2).
Затем перейдите в «Инструменты», выберите «Порт», затем измените его на правильный, если он еще не был выбран автоматически. Будьте особенно осторожны, выбрав правильный порт для ESP32-CAM, так как вы не захотите перезаписывать какие-либо другие устройства.
Чтобы передать скетч Wi-Fi на ESP32-CAM, нажмите кнопку загрузки (стрелка вправо в левом верхнем углу). Вы увидите, как произойдет куча вещей. Как только на экране появляется красный текст, вы знаете, что он на самом деле мигает. Когда это будет сделано, вы можете открыть Serial Monitor с помощью Control-Shift-M, чтобы убедиться, что не было сумасшедших ошибок или отключений, и искать перезагрузки.
Найти источник питания для вашего ESP32-CAM
Теперь, когда ваш ESP32-CAM запрограммирован, вы можете отключить программатор FTDI; вам это понадобится только в том случае, если вам нужно будет обновить код на вашей шпионской камере позже. Вы также можете подключить постоянный источник питания к программатору FTDI, когда он все еще подключен к ESP32-CAM, если вы хотите таким образом включить камеру, но, поскольку мы хотим, чтобы это была шпионская камера, батарея была бы намного лучше.
Отключите ESP32-CAM от макетной платы, а затем подключите его к D1 Mini Battery Shield, который позволит нам питать шпионскую камеру от небольшой батареи LiPo. При их подключении убедитесь, что контакты 5V на обоих правильно выровнены. Затем подключите литий-ионный полимерный аккумулятор к защитному экрану с помощью двухконтактного разъема JST-PH.
Подключение к интерфейсу вашей шпионской камеры
В окне браузера откройте IP-адрес ESP32-CAM, который вы нашли ранее в той же сети Wi-Fi. Это даст вам доступ к настройкам шпионской камеры. Вы можете изменять разрешение, качество видео, яркость, контрастность и насыщенность, пока не получите желаемое изображение, а также добавлять специальные эффекты и настраивать другие параметры.
В нижней части меню вы увидите параметры «Распознавание лиц» и «Распознавание лиц», которые вы можете включить. На данный момент он работает только с разрешениями 400 x 296 и ниже.
Нажмите «Начать трансляцию» внизу, чтобы просмотреть видеопоток. Если у вас включено только распознавание лиц, вы должны увидеть рамку вокруг чьей-либо головы, чтобы знать, что это работает. При включенном распознавании лиц он сделает то же самое, но также назовет лицо, которое сначала будет злоумышленником. Вы можете нажать кнопку «Зарегистрировать лицо», чтобы зарегистрировать его как ненарушителя
Заключение
Эти платы могут сильно нагреваться, поэтому в зависимости от вашей батареи и того, как долго вы используете камеру, она может не работать или отключаться. Если это произойдет, подумайте о том, чтобы получить надлежащий радиатор, чтобы рассеивать тепло и сохранять прохладу. Чем больше вещей вы добавите в шпионскую камеру, тем сложнее будет спрятать ее в незаметном месте, так что имейте это в виду.