В данной статье мы рассмотрим основы работы с платой разработки Realtek AMB82-Mini IoT AI Camera Arduino (стоимость около 25$), которая является очень мощной альтернативой модулю ESP32-CAM (стоимость около 5$).
Плата разработки AMB82-MINI использует Realtek RTL8735BDM SoC (систему на кристалле), что делает ее идеальной для устройств или оборудования с батарейным питанием, которым требуются приложения для сетевых камер AI (искусственного интеллекта). Эта плата обеспечивает как низкое энергопотребление, так и надежную безопасность IoT (интернет вещей). Кроме того, программирование и изучение моделей AI с помощью этого мощного комплекта разработки IoT становится простым и увлекательным занятием.
В этом руководстве мы рассмотрим функции и описания выводов платы, а также то, как ее программировать с помощью Arduino IDE. Мы предоставим руководство для начинающих по настройке Arduino IDE для использования этой платы для ряда приложений AI IoT. Мы также выполним несколько практических упражнений с этой платой, например, заставим светодиод мигать и транслировать видео через веб-сервер. Также приводится подробное сравнение между платами Realtek AMB82-Mini IoT AI Camera и ESP32-CAM.
Плату Realtek AMB82-Mini IoT AI Camera можно успешно применять в таких проектах как потоковая передача живого видео по всему миру, видеозапись, использование камер безопасности, распознавание лиц, обнаружение и идентификацию объектов, а также других проектах, основанных на нейронных сетях.
Плата Realtek AMB82-Mini IoT AI
Плата Realtek AMB82-Mini IoT AI Camera Board — это инструмент разработки, призванный упростить создание приложений для сетевых камер с искусственным интеллектом.
Оснащенная высокоинтегрированной Realtek RTL8735BDM SoC, эта плата обеспечивает маломощные решения 802.11 a/b/g/n WLAN и BLE. Состоящая из Arm® v8M MCU, DualBand Wi-Fi, Bluetooth BLE5, аудиокодека , ISP, кодера H264/H265, памяти DDR2 128 МБ и интеллектуального движка нейронной сети, RTL8735BDM SoC обеспечивает эффективное объединение различных приложений и элементов управления.
AMB82-Mini оптимизирована для устройств с питанием от батареи, демонстрируя быстрое время загрузки в миллисекундах и потребляя сверхнизкую мощность в мА/мкА в зависимости от приложений. Еа встроенная архитектура безопасности с механизмом TrustZone/безопасности и двухдиапазонным Wi-Fi обеспечивает безопасную высококачественную потоковую передачу видео H264/H265 с минимальным энергопотреблением, что делает его идеальным для приложений IoT (интернета вещей).
Кроме того, AMB82-Mini совместима с несколькими платформами программирования, такими как RTOS, IAR, GCC и Arduino IDE. Она не ограничивается только конструкциями беспроводных сетевых камер; внутренний движок NN платы может поддерживать периферийные устройства ИИ (искусственного интеллекта), позволяя разрабатывать интеллектуальное оборудование и множество моделей ИИ, включая обнаружение объектов, распознавание звука и распознавание лиц. С AMB82-Mini разработчики могут исследовать безграничный потенциал технологий IoT и ИИ в своих будущих продуктах.
Основные характеристики и характеристики Realtek AMB82-Mini
- Микроконтроллер: 32-битный Arm v8M, до 500 МГц.
- NPU: Интеллектуальный движок @ 0.4 TOPS.
- Память: 768 КБ ПЗУ, 512 КБ ОЗУ, 16 МБ флэш-памяти, поддерживает встроенную память MCM DDR2/DDR3L до 128 МБ.
- Wi-Fi: 802.11 a/b/g/n, двухдиапазонный Wi-Fi 2,4 ГГц/5 ГГц и простая настройка Wi-Fi.
- Bluetooth: Bluetooth с низким энергопотреблением (BLE) 5.1.
- Безопасность: аппаратный криптографический движок, безопасная загрузка, Trust-Zone, Wi-Fi WEP, WPA, WPA2, WPA3, WPS.
- Аудиокодек: АЦП/ЦАП/I2S.
- ISP/Видео: HDR / 3DNR / WDR; Видеокодер H264/H265/JPEG 1080p@30fps +720p@30fps.
- Модуль камеры: JXF37 1920×1080 Full HD CMOS-датчик изображения с широкоугольным объективом FOV 130°.
- Интерфейс: 1 микрофон на плате разработки, 2 Micro USB_B, 1 слот для карты MicroSD, 2 тактовые кнопки, 3 UART, 2 SPI, 1 I2C, 8 PWM, 2 GDMA, макс. 23 GPIO.
Компоновка платы Realtek AMB82-Mini
На передней стороне платы достаточно много компонентов. Она имеет адаптер для SD-карт, который поддерживает SD-карты до 32 ГБ. Его можно использовать для хранения изображений и видео. Плата имеет микрофон, который поддерживает 3 ключевые функции: аудиокодек, видеокодек и NN (встроенный NPU для AIoT). Плата имеет внутреннюю память DDR2 128 МБ на SoC и 16 МБ внешнюю SPI Nor flash на Dev. Плата называется W25Q128JVSIQ .
Разъем FPC используется для подключения камеры. Он имеет две кнопки: кнопку загрузки и кнопку сброса. Кнопка загрузки переводит устройство в режим программирования. Кнопка сброса используется для сброса платы во время программирования или во время обычной работы.
На плате есть три светодиода: светодиод питания, светодиод_B и светодиод_G . Светодиод_B программируется. Также есть два порта USB - Micro-USB и USB OTG. Используя Micro-USB, мы можем загрузить код на плату или установить последовательную связь с компьютером.
На задней стороне платы встроен основной контроллер Realtek RTL8735BDM SoC. Этот чип имеет архитектуру ARMv8M и поддерживает потрясающую скорость до 500 МГц, что более чем в два раза превышает возможности модуля ESP32. С обеих сторон платы расположены контакты GPIO, которые поддерживают UART, GPIO, ADC, PWM, IIC, SPI, MIPI. Через эти интерфейсы AMB82 MINI может подключаться к внешним электронным компонентам и датчикам.
Модуль датчика изображения камеры JXF37
Плата Realtek AMB82-Mini имеет модуль камеры под названием JXF37. JXF37 — это 5-мегапиксельная высококачественная камера с датчиком изображения Full HD CMOS с разрешением 1920×1080 пикселей. Это впечатляющее разрешение обеспечивает кристально чистые изображения с мелкими деталями, что делает ее идеальной для различных приложений, включая безопасность, фотографию и видеосъемку.
Уникальной особенностью JXF37 является широкий угол обзора (FOV) в 130 градусов, обеспечиваемый высококачественным оптическим объективом. Этот широкий угол обзора обеспечивает более широкую перспективу, что делает камеру идеальной для съемки обширных ландшафтов, больших групповых снимков или наблюдения за обширной территорией.
Возможности ISP
- Расширенное временное и пространственное шумоподавление (3DNR).
- Поддержка основных марок датчиков DOL-HDR или Staggered-HDR.
- Поддержка канала передачи данных MIPI CSI-2.
- Поддержка автоматического разделения на полосы, автоматической экспозиции, автоматического баланса белого.
- Компенсация уровня черного и удаление битых пикселей.
- Компенсация затенения объектива.
- Расширенная настройка контрастности и повышение резкости.
- Программируемая цветовая матрица и гамма-таблица.
- Цифровой WDR.
- Улучшение изображения (яркость, контрастность, насыщенность, оттенок и резкость).
- Инструмент настройки ISP.
Распиновка Realtek AMB82-Mini
Важные ссылки на документы
Сравнение платы Realtek AMB82-Mini IoT AI и платы ESP32-CAM
В следующей таблице приведено сравнение плат Realtek AMB82-Mini IoT AI и CAM ESP32.
Элемент | AMB82-Mini IoT AI | ESP32 CAM |
Микроконтроллер | ARMv8M до 500МГц | ESP32-D0WDQ6 двухъядерный 240 МГц |
NPU (нейронный процессор) | Интеллектуальный движок @ 0.4 TOPS | нет |
Память | 768 КБ ПЗУ, 512 КБ ОЗУ, 16 МБ флэш-памяти, поддерживает встроенную память MCM DDR2/DDR3L объемом до 128 МБ | 520 КБ SRAM, 4 МБ флэш-памяти |
Wi-Fi | 802.11 a/b/g/n 1×1, двухдиапазонный Wi-Fi 2,4 ГГц/5 ГГц | 802.11b/g/n Wi-Fi |
Bluetooth | BLE 5.1 | Bluetooth 4.2 |
Безопасность | Аппаратный криптографический движок, безопасная загрузка | нет |
Аудиокодек | АЦП/ЦАП/I2S | нет |
Видео | HDR/3DNR/WDR; Видеокодер H264/H265/JPEG | нет |
Модуль камеры | JXF37 1920×1080 Full HD CMOS-датчик изображения | OV2640 2-мегапиксельная КМОП-матрица 1600 x 1200 |
Разрешение камеры | Максимум 5 мегапикселей | 2 мегапикселя |
Платформы программирования | RTOS, IAR, GCC, Arduino IDE | Arduino IDE |
Как видим, во многих аспектах Realtek AMB82-Mini IoT AI превосходит ESP32-CAM (правда, и стоит подороже).
Начало работы с AMB82-Mini с использованием Arduino IDE
Лучшая часть Realtek AMB82-Mini IoT AI Camera Board — это поддержка Arduino IDE. Вы можете проверить Arduino IDE SDK для этой платы из репозитория GitHub.
Перед началом работы с платой Realtek AMB82-Mini подключите камеру и антенну к основной плате PCB. Также вставьте карту SD в слот для карты SD.
Настройка Arduino IDE
Сначала нам нужно установить плату AMB82-Mini в Arduino IDE. Чтобы сделать это в Arduino IDE 2.0, перейдите в File > Preferences (Файл > Настройки).
Скопируйте и вставьте следующую строку в поле URL-адресов менеджера дополнительных плат.
1 |
https://github.com/ambiot/ambpro2_arduino/raw/main/Arduino_package/package_realtek.com_amebapro2_index.json |
Откройте Boards Manager (менеджер плат). Вы можете перейти в Tools > Board > Boards Manager … или просто нажать на значок Boards Manager в левом углу.
Найдите AMEBA и нажмите кнопку установки для Realtek Ameba Boards. Вот и все. Она должна установиться через несколько секунд.
Тестирование установки
Чтобы протестировать установку дополнения AMB82-Mini, мы загрузим простой код, который мигает встроенным светодиодом.
Скопируйте следующий код в Arduino IDE:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } |
Загрузка скетча
Подключите плату AMB82-Mini к компьютеру с помощью кабеля micro-USB.
В верхнем выпадающем меню выберите плату “unknown” («неизвестно»). Откроется новое окно, как показано ниже.
Вам необходимо выбрать плату AMB82-Mini и COM-порт.
Плата не имеет автоматического программатора. Поэтому для программирования платы выполните следующую последовательность действий:
- Нажмите и удерживайте кнопку загрузки
- Затем нажмите и отпустите кнопку сброса.
- Наконец отпустите кнопку загрузки.
Плата перешла в режим программирования. В этот момент на плате загорится синий светодиод, указывающий на то, что устройство находится в режиме программирования.
Теперь вам просто нужно нажать кнопку Upload («Загрузить»), чтобы загрузить код в плату.
После загрузки кода Arduino IDE покажет следующие сообщения.
Теперь нажмите кнопку сброса на плате AMB82-Mini, чтобы запустить ее в нормальном режиме. Светодиод будет мигать каждую секунду.
На этом завершается часть тестирования. Теперь мы можем начать использовать плату для приложений искусственного интеллекта, машинного обучения и нейронных сетей.
Пример потоковой передачи видео по протоколу HTTP
Теперь давайте протестируем камеру и транслируем видео с помощью WebServer. В этом примере камера многократно захватывает изображение JPEG и непрерывно отправляет изображения в браузер с помощью HTTP, создавая эффект видео. Мы можем использовать Chrome, Firefox или любой другой веб-браузер для подключения к IP-адресу платы после ее подключения к WiFi или использовать приложение V7RC.
Перейдите в Files > Examples > AmebaMultimedia > CaptureJPEG > HTTPDisplayJPEGContinuous, чтобы открыть скетч.
Вот пример кода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
#include <WiFi.h> #include "VideoStream.h" #define CHANNEL 0 // Use a pre-defined resolution, or choose to configure your own resolution // Depending on your WiFi network quality, using HD resolution may lead to an inconsistent frame rate //VideoSetting config(VIDEO_HD, CAM_FPS, VIDEO_JPEG, 1); //VideoSetting config(VIDEO_VGA, CAM_FPS, VIDEO_JPEG, 1); VideoSetting config(1024, 576, CAM_FPS, VIDEO_JPEG, 1); char ssid[] = "yourNetwork"; // your network SSID (name) char pass[] = "Password"; // your network password int status = WL_IDLE_STATUS; WiFiServer server(80); uint32_t img_addr = 0; uint32_t img_len = 0; #define PART_BOUNDARY "123456789000000000000987654321" char* STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n"; char* IMG_HEADER = "Content-Type: image/jpeg\r\nContent-Length: %lu\r\n\r\n"; void sendHeader(WiFiClient& client) { client.print("HTTP/1.1 200 OK\r\nContent-type: multipart/x-mixed-replace; boundary="); client.println(PART_BOUNDARY); client.print("Transfer-Encoding: chunked\r\n"); client.print("\r\n"); } void sendChunk(WiFiClient& client, uint8_t* buf, uint32_t len) { uint8_t chunk_buf[64] = {0}; uint8_t chunk_len = snprintf((char*)chunk_buf, 64, "%lX\r\n", len); client.write(chunk_buf, chunk_len); client.write(buf, len); client.print("\r\n"); } void setup() { Serial.begin(115200); while (status != WL_CONNECTED) { status = WiFi.begin(ssid, pass); //status = WiFi.apbegin("AmebaVideoAP", "1"); delay(5000); } Camera.configVideoChannel(CHANNEL, config); Camera.videoInit(); Camera.channelBegin(CHANNEL); server.begin(); } void loop() { WiFiClient client = server.available(); if (client) { Serial.println("new client connected"); String currentLine = ""; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); if (c == '\n') { if (currentLine.length() == 0) { sendHeader(client); while (client.connected()) { Camera.getImage(CHANNEL, &img_addr, &img_len); uint8_t chunk_buf[64] = {0}; uint8_t chunk_len = snprintf((char*)chunk_buf, 64, IMG_HEADER, img_len); sendChunk(client, chunk_buf, chunk_len); sendChunk(client, (uint8_t*)img_addr, img_len); sendChunk(client, (uint8_t*)STREAM_BOUNDARY, strlen(STREAM_BOUNDARY)); delay(5); // Increase this delay for higher resolutions to get a more consistent, but lower frame rate } break; } else { currentLine = ""; } } else if (c != '\r') { currentLine += c; } } } client.stop(); Serial.println("client disonnected"); } else { Serial.println("waiting for client connection"); delay(1000); } } |
Перед загрузкой кода вам необходимо внести некоторые изменения в этот код. В следующих строках измените WiFi SSID и Password.
1 2 |
char ssid[] = "yourNetwork"; // your network SSID (name) char pass[] = "Password"; // your network password |
Переведите устройство в режим программирования, как мы делали в примере с миганием светодиода выше. И загрузите код.
После успешной загрузки кода откройте Serial Monitor и нажмите кнопку сброса. И посмотрите на сообщения в окне монитора последовательной связи.
Плата Realtek AMB82-Mini IoT подключится к сети WiFi и распечатает IP-адрес платы.
Используя этот IP-адрес, мы можем транслировать видео. Поэтому скопируйте IP-адрес и вставьте его в адресную строку веб-браузера, затем нажмите Enter.
Теперь здесь появится окно видеопотока.
Теперь вы можете перемещать камеру в любом направлении, чтобы проверить потоковое видео на веб-сервере.
Вы сможете наблюдать за быстро движущимся потоковым видео без задержек в своем веб-браузере.
Вы можете перемещать камеру, чтобы увидеть видеопоток на экране. Лучшее в этом видеопотоке — это чрезвычайно высокое разрешение, и, кроме того, качество изображения выглядит таким первоклассным и четким.
Если вы столкнулись с задержкой видео или у вас медленное интернет-соединение, увеличьте задержку в следующем фрагменте кода в разделе цикла.
1 2 3 4 5 6 7 8 |
while (client.connected()) { Camera.getImage(CHANNEL, &img_addr, &img_len); uint8_t chunk_buf[64] = {0}; uint8_t chunk_len = snprintf((char*)chunk_buf, 64, IMG_HEADER, img_len); sendChunk(client, chunk_buf, chunk_len); sendChunk(client, (uint8_t*)img_addr, img_len); sendChunk(client, (uint8_t*)STREAM_BOUNDARY, strlen(STREAM_BOUNDARY)); delay(5); // Increase this delay for higher resolutions to get a more consi |
Вы можете увеличить задержку до 5, 10, 15, 20 миллисекунд, чтобы наблюдать изменения.
Заключение
В заключение следует отметить, что плата разработки Realtek AMB82-Mini IoT AI Camera Arduino является мощной и эффективной альтернативой модулю ESP32-CAM.
В данной статье мы изучили основные функции и описания выводов платы разработки AMB82-MINI. Мы продемонстрировали, как программировать ее с помощью Arduino IDE, предоставив подробное руководство для начинающих, чтобы облегчить пользователям работу с этим мощным комплектом разработки. Кроме того, мы выполнили практические упражнения, такие как программирование мигания светодиода и реализация потоковой передачи видео через веб-сервер. Подробное сравнение плат Realtek AMB82-Mini и ESP32-CAM дает полное представление об их спецификациях и вариантах использования.
Поскольку мы занимаемся различными проектами, охватывающими потоковую передачу видео в реальном времени, запись видео, использование камер безопасности, распознавание лиц, обнаружение и идентификацию объектов и многое другое, Realtek AMB82-Mini служит нашим инструментом выбора из-за ее эффективности и простоты программирования. Мы ожидаем, что этот модуль позволит совершить прорыв в многочисленных приложениях AI IoT, чему способствуют мощные возможности нейронных сетей. Простота программирования и обучения с помощью этой платы предполагает, что она останется фаворитом как среди энтузиастов, так и среди профессионалов, потенциально открывая инновационные способы интеграции AI и IoT в будущем.