Как получить данные с Rasberry Pi на ESP32-Cam?

esp32 web-server esp32-cam

В моем случае я использую камеру ESP32, которая служит двум целям:

  1. HTTP-канал (доступ к которому осуществляется с помощью Raspberry Pi 5, который обрабатывает поток и предоставляет ответ)
  2. Микроконтроллер серводвигателя: получает ответ от Raspberry Pi 5 и подает сигнал сервоприводу.

Я использую библиотеки Arduino и могу легко выполнить задачу 1) с помощью библиотеки Wi-Fi и библиотеки esp_camera.

Я потратил часы, пытаясь одновременно выполнить пункты 1) и 2). Есть ли протокол или библиотека, о которых я не знаю? Я много знаю о программировании, но мало что знаю о принципах работы серверов и Wi-Fi. Будут полезны любые ключевые слова или советы по использованию ESP32 для обработки HTTP-потока и получения ответа от Raspberry Pi.

, 👍0

Обсуждение

HTTP-канал (доступ к которому осуществляется с помощью Raspberry Pi 5 ... подумайте об этом, Pi уже отправляет данные в ESP32, @jsotola

Вы здесь смотрели? https://raspberrypi.stackexchange.com/, @VE7JRO


1 ответ


1

Я предполагаю, что ESP — это HTTP-сервер, а Raspberry Pi — клиент.

То, что вы планируете сделать, обычно достигается за счет того, что сервер предоставляет несколько «конечных точек». И конечная точка обычно представляет собой URL-адрес, который вызывает конкретный ответ, часто зависящий от метода HTTP. Например:

  • Запрос GET / предоставит доступ к домашней странице. Это статический HTML-файл, предоставляемый ESP из его файловой системы. Он определяет пользовательский интерфейс. вашего веб-приложения и может ссылаться на внешние ресурсы (изображения, CSS, JavaScript), которые также обслуживаются статически. JavaScript-код — это клиентская часть приложения, и он выдает другие запросы.

  • GET /stream предоставит необработанный видеопоток.

  • POST /servo даст команду ESP переместить сервопривод. Запрос Полезная нагрузка может выглядеть примерно так: angle=42. Некоторые используют GET. запросы на этот тип взаимодействия: это не будет соответствовать семантику HTTP, но может быть полезно, если ваши библиотеки затрудняют обрабатывать POST-запросы.

Способ реализации зависит от используемых вами библиотек. HTTP библиотека обычно позволяет вам написать обратный вызов для конечной точки, и затем вы сообщаете ему: «Всякий раз, когда вы получаете запрос POST на путь "/servo", пожалуйста, вызовите эту мою функцию для обработки запроса». Подробную информацию см. в документации API ваших библиотек.

С Raspberry Pi вы можете протестировать конечную точку POST с помощью -d (например, опция «полезные данные») программы командной строки curl:

server=...  # IP-адрес сервера ESP
curl $server/servo -d 'angle=42'
,

Большое спасибо за содержательный ответ. Я займусь этим и изучу., @jmarywien