Как установить связь между веб-камерой и Arduino UNO и получать прямую трансляцию на мобильном телефоне с помощью ESP8266?

Я работаю над проектом создания умного автомобиля-робота с использованием Arduino UNO, модуля драйвера двигателя L298N, модуля Wi-Fi ESP8266 Esp-01 и приложения RemoteXY для управления через смартфон через Wi-Fi.

Мой вопрос: Если я хочу получить прямую трансляцию изображения, которое видит мой робот, с помощью веб-камеры (скажем, Logitech HD Webcam C270), используя модуль преобразователя USB в последовательный порт или что-то еще, как я могу сделать это возможным? Пожалуйста, дайте мне знать, если нужен какой-либо специальный экран или какая-либо плата обработки. Помощь с кодированием и преобразованием видеоданных в передаваемые данные для Arduino и помощь в создании такого рода данных, которые могут быть прочитаны Устройством (например, смартфоном), также необходимо и будет значительным.

Здесь можно упомянуть, что я новичок и в настоящее время учусь с помощью обучающих программ на YouTube и в блогах. Я полностью завишу от StackExchange, например, от форумов, за помощь в моих проектах, либо всякий раз, когда я делаю ошибку, либо когда я хочу попытаться узнать что-то новое, либо и то, и другое. Пожалуйста, помогите мне, помня об этом.

Пожалуйста, посоветуйте мне несколько хороших книг по этой теме, которые могли бы помочь мне делать подобные вещи самостоятельно.

Заранее большое спасибо!

(PS: Если вы считаете, что этот вопрос следует отвергнуть, сначала дайте мне знать в разделе комментариев, почему вы так думаете, прежде чем голосовать против. Я могу удалить свой вопрос раньше, потому что меня беспокоит моя репутация здесь. )

, 👍2

Обсуждение

Я видел на Banggood некоторые продукты, работающие аналогичным образом. Например, см. [этот](https://www.banggood.in/Xiao-R-DIY-GFS-WiFi-Wireless-Video-Control-Smart-Robot-Tank-Car-Kit-for-Arduino-UNO- p-1284948.html?rmmds=mywishlist&cur_warehouse=CN) . В этом продукте к роботу прикреплена камера, которая передает прямую трансляцию пользователю или контроллеру на его интеллектуальном устройстве. Я тоже хочу сделать что-то подобное, но не знаю, как обмениваться данными между Arduino и WebCam Live. Заранее спасибо!, @Naved THE Sheikh

UNO не может справиться с такой пропускной способностью. Если только вас не устраивает 1 кадр в 10 секунд. USB также будет проблематичным. Я думаю, вам лучше использовать что-то вроде Raspberry Pi для веб-камеры USB. Или [ESP с каким-то конкретным модулем камеры](https://www.hackster.io/punkgeek/a-9-full-open-source-streaming-webcam-with-no-soldering-c4b7c6). Используйте UNO только для управления двигателями., @Gerben

@Gerben, ты прошел по ссылке, которую я прокомментировал? Если да, то не могли бы вы рассказать мне, как это работает? Если нет, пожалуйста, проверьте это один раз, а затем дайте мне понять это явление. Спасибо!, @Naved THE Sheikh

По ссылке показан робот с независимой веб-камерой с поддержкой Wi-Fi. Там нет никакого взаимодействия с Arduino, за исключением того, что камера находится на роботе., @chrisl

@chrisl, пожалуйста, перейдите по этой [ссылке](https://m.youtube.com/watch?v=-BL8LU9ZQa8&t=1137s) и посмотрите, как он подключает свой компьютер только к одной беспроводной сети и запускает обе (камеру и робот) вместе. Тогда объясни мне, что там происходит. Заранее спасибо!, @Naved THE Sheikh

В описании используемого робота упоминается Raspberry Pi 3B. На сайте есть похожие роботы, продающиеся без веб-камеры и только с Arduino с Bluetooth-контроллером. Я предполагаю, что они соединяют Raspberry Pi с Wi-Fi, веб-камерой и Arduino, которая управляет двигателем. Для этого потребуется специальное программное обеспечение как на Pi, Arduino, так и на главном компьютере. Потенциально все это делается с помощью Pi, но в списке также упоминается Arduino., @C.W.G

@CWG Так неужели совершенно невозможно делать такие вещи с Arduino Uno?, @Naved THE Sheikh

Да, во всяком случае напрямую. Я бы порекомендовал либо использовать Raspberry Pi для проекта, либо использовать веб-камеру с поддержкой Wi-Fi, которая может подключаться напрямую к вашему компьютеру., @C.W.G


2 ответа


Лучший ответ:

2

Uno — очень ограниченная платформа, что, возможно, удивительно, учитывая широкий спектр ее возможностей и встроенных аппаратных функций. Двумя наиболее явными ограничениями для вашего приложения являются тактовая частота 16 МГц (по сравнению с современными процессорами для настольных ПК) и, следовательно, его пропускная способность, а также нерасширяемая оперативная память объемом 2 КБ.

Обработка изображения будет прямо из окна, и даже простая передача необработанного изображения приведет к выходу за пределы пропускной способности для любого разумного размера кадра даже с очень скромной частотой кадров.

Пример: для 8-битного кадра 100x100 со скоростью 15 кадров в секунду процессор 16 МГц (16 миллионов инструкций в секунду) будет иметь (16000000 / (100x100x15)) = ~107 тактов (инструкций), доступных для обработки каждого байта. Некоторые из них понадобятся вам либо для опроса готовности к следующему байту, либо для входа и выхода из процедуры обслуживания прерываний для обработки байта. У вас, вероятно, около 20 часов (по грубой догадке), и вы не можете сделать ничего, кроме кусочка провода! Возможно, вы могли бы проделать какую-нибудь тривиальную манипуляцию с каждым байтом на пути (скажем, манипулирование яркостью), используя еще несколько тактовых импульсов, и вы уже используете для этого значительную часть процессора. И памяти недостаточно для обработки части изображения. А если бы вы могли, у вас закончится время процессора, прежде чем вы сможете что-то сделать... Проблема просто усугубляется по мере того, как вы приближаетесь к пределам скорости и объема памяти.

,

2

Как справедливо отметили другие и @JRobert, очень сложно или почти невозможно транслировать видео/аудио в реальном времени через Arduino Uno, который использует микроконтроллер Atmega328, который в основном используется для простой встроенной обработки, такой как считывание датчиков, последовательный порт. /rx, i2c-подобные операции.

Но есть некоторые обходные пути, которые могут сделать это возможным, используя вместе камеру SPI и экран Bluetooth или ESP8266.

Взгляните на этот проект, он может быть вам полезен.

https://github.com/ArduCAM/Arduino

Но помните: не ждите очень хорошего качества или более высокой частоты кадров. Также он может отправлять только видео, то есть кадры изображений, а не аудио.

Второе решение:

Если вы просто хотите, чтобы ваш робот был оснащен камерой, которую необходимо транслировать в прямом эфире на ваш телефон Android/iOS с помощью AV-видео хорошего качества, то лучший способ сделать это — использовать стандартный метод, используемый большинством радиоуправляемых игрушек: БПЛА или роботы.

Что вам нужно:

1) AV-передатчик 5,8 ГГц

  • Мини-камера FPV NTSC/PAL со встроенным передатчиком или
  • FPV-камера и беспроводной аудио/видео передатчик 5,8G, 600 мВт для FPV.

с помощью вышеуказанных опций вы можете получить возможный диапазон от 1 км до 5 км и более.

2) Второе, что вам нужно, это раздел приемника

  • OTG 5.8G 150CH полноканальный FPV-приемник для Android и iOS лучше всего подходит для этого. Этот вышеприведенный модуль поможет вам получать AV-видео с камеры/модуля FPV на ваш Android.

Я не буду давать вам прямые ссылки на продукты, поскольку это не очень хорошая идея здесь, на SE. вместо этого вы можете найти их в Google и выбрать в соответствии с вашими требованиями. стоимость большинства этих модулей будет менее 2000 индийских рупий или 30$

,