Как получить данные с Rasberry Pi на ESP32-Cam?
В моем случае я использую камеру ESP32, которая служит двум целям:
- HTTP-канал (доступ к которому осуществляется с помощью Raspberry Pi 5, который обрабатывает поток и предоставляет ответ)
- Микроконтроллер серводвигателя: получает ответ от Raspberry Pi 5 и подает сигнал сервоприводу.
Я использую библиотеки Arduino и могу легко выполнить задачу 1) с помощью библиотеки Wi-Fi и библиотеки esp_camera.
Я потратил часы, пытаясь одновременно выполнить пункты 1) и 2). Есть ли протокол или библиотека, о которых я не знаю? Я много знаю о программировании, но мало что знаю о принципах работы серверов и Wi-Fi. Будут полезны любые ключевые слова или советы по использованию ESP32 для обработки HTTP-потока и получения ответа от Raspberry Pi.
@jmarywien, 👍0
Обсуждение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
- ESP32 в Arduino-IDE с FS.h и SPIFFS
- Почему функция server.on() из "ESPAsyncWebServer.h" выполняется на стороне setup(), а не на стороне loop()?
- Автоматическая веб-страница ESP32 AP
- Интернет-сервер Arduino IDE + ESP32 — как перенаправить на root после нажатия кнопки
- Arduino uno R4 против платы разработчика ESP32
- Невозможно установить библиотеку esp_camera
- Точка доступа ESP32 и веб сервер HTTP, как отправить несколько параметров?
- Как установить RTC в ES32 с помощью NTP-сервера?
HTTP-канал (доступ к которому осуществляется с помощью Raspberry Pi 5... подумайте об этом, Pi уже отправляет данные в ESP32, @jsotolaВы здесь смотрели? https://raspberrypi.stackexchange.com/, @VE7JRO