Микроконтроллер ESP32 продолжает набирать популярность у разработчиков, и появляются новые платы на его основе. Очередная новинка – плата AI Thinker ESP32-CAM с 2-мегапиксельной камерой OV2640.
Технические характеристики платы ESP32-CAM:
• Беспроводной модуль - ESP32-S WiFi 802.11 b/g/n + модуль Bluetooth;
• Внешнее хранилище - слот для карт micro- SD емкостью до 4 ГБ;
• Камера
• Разъем FPC;
• Поддержка камер OV2640 (продается с платой) или OV7670;
• Формат изображения - JPEG (только OV2640), BMP, оттенки серого;
• Светодиодная вспышка.
• Контакты – 16 с интерфейсами UART, SPI, I2C, PWM
• Разное - кнопка сброса
• Напряжение питания - 5 В;
• Потребляемая мощность:
• при выключенной вспышке - 180 мА;
• при включенной вспышке - 310 мА;
• глубокий сон - 6 мА;
• модем-сон - 20 мА;
• легкий сон - 6,7 мА.
• Размеры - 40,5 х 27 х 4,5 мм
• Вес - 10 грамм
• Температурный диапазон:
• рабочий: 20 – 85 ℃;
• хранение: -40 - 90 ℃ при 90% относительной влажности.
Схема расположения контактов модуля:
Таблица использования контактов ESP32 для подключения к камере:
Камера |
ESP32 |
D0 |
PIN5 |
D1 |
PIN18 |
D2 |
PIN19 |
D3 |
PIN21 |
D4 |
PIN36 |
D5 |
PIN39 |
D6 |
PIN34 |
D7 |
PIN35 |
XCLK |
PIN0 |
PCLK |
PIN22 |
VSYNC |
PIN25 |
HREF |
PIN23 |
SDA |
PIN26 |
SCL |
PIN27 |
POWER PIN |
PIN32 |
Таблица использования контактов ESP32 для подключения к к micro-SD:
micro-SD |
ESP32 |
CLK |
PIN14 |
CMD |
PIN15 |
DATA0 |
PIN2 |
DATA1 |
PIN4 |
DATA2 |
PIN12 |
DATA3 |
PIN13 |
При программирование ESP32-CAM в среде Arduino IDE необходимо использовать библиотеку OV2640, которую можно скачать по адресу https://github.com/yoursunny/ESP32-CAM-OV2640.
Загружим на плату ESP32 CAM скетч получения изображения с камеры через web-интерфейс:
// подключение библиотек
#include <OV2640.h>
#include <WebServer.h>
#include <WiFi.h>
// параметры точки доступа
const char* WIFI_SSID = "my-ssid";
const char* WIFI_PASS = "my-pass";
// запуск сервера
WebServer server(80);
// создание объекта камеры с указанием пинов
OV2640 camera(OV2640::Pins{D0: 5, D1: 18, D2: 19, D3: 21, D4: 36, D5: 39,
D6: 34, D7: 35, XCLK: 0, PCLK: 22, VSYNC: 25, HREF: 23,
SDA: 26, SCL: 27, RESET: 32,});
void handleBmp() {
bool ok = camera.capture();
Serial.println(ok ? "CAPTURE OK" : "CAPTURE FAIL");
if (!ok) {
server.send(503, "", "");
return;
}
// отправка картинки на страницу
server.sendHeader("Content-Type", "image/bmp");
WiFiClient client = server.client();
camera.writeBmp(client);
}
void setup() {
// запуск последовательного порта
Serial.begin(115200);
Serial.println();
// проверка включения камеры
bool ok = camera.begin(OV2640::R_240x160);
Serial.println(ok ? "CAMERA OK" : "CAMERA FAIL");
// подключение к точке доступа
WiFi.persistent(false);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// вывод IP-адреса, присвоенного модулю
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/bmp");
server.on("/bmp", handleBmp);
server.begin();
}
void loop() {
server.handleClient();
}
В меню Инструменты - Плата выбираем ESP32 Wrover Module, чтобы включить 4 МБ внешнего PSRAM. В противном случае внутренней оперативной памяти недостаточно для поддержки разрешения выше 160х120.
Загружаем скетч на плату, открываем монитор последовательного порта, чтобы увидеть ip-адрес, присвоенные плате. Теперь можем смотреть изображение камеры по сети.
ESP-32CAM может широко использоваться в различных приложениях IoT. Он подходит для домашних интеллектуальных устройств, промышленного беспроводного управления, беспроводного мониторинга, беспроводной идентификации QR, сигналов системы беспроводного позиционирования и других приложений IoT. Это идеальное решение для приложений IoT.
Подробнее о работе ESP32 можно посмотреть здесь.