Câmera WebRTC com ESP32 (visualização ao vivo no App e no Portal Sinric Pro)

Nesta seção vamos mostrar como transmitir vídeo ao vivo de uma câmera ESP32 para o App Sinric Pro e o Portal Sinric Pro, de qualquer lugar, usando WebRTC.

Pré-requisitos :

  1. Placa de câmera ESP32 ou ESP32-S3 com PSRAM (por exemplo AI-Thinker ESP32-CAM, XIAO ESP32S3 Sense, Freenove ESP32-S3).
  2. Arduino IDE com o core ESP32 3.3.10 ou 3.3.11 (a biblioteca WebRTC é distribuída pré-compilada para essas versões).
  3. Bibliotecas: SinricPro (com suporte a WebRTC) e SinricProWebRTC.

Como funciona?

  1. O App ou o Portal Sinric Pro cria um offer WebRTC e o envia para a sua câmera por meio do Sinric Pro.
  2. O Sinric Pro adiciona servidores STUN/TURN à requisição para que a câmera possa ser alcançada de fora da sua rede WiFi.
  3. O ESP32 responde, e o vídeo flui diretamente entre a câmera e o seu celular ou navegador. Quando um caminho direto não é possível, ele é retransmitido pelo servidor TURN do Sinric Pro.

Passo 1: Criar o dispositivo de câmera

  1. Vá em portal.sinric.pro → Devices → Add Device e selecione o tipo de dispositivo Camera.
  2. Em Camera Stream Configuration, selecione Board ESP32 e Streaming Protocol WebRTC.
  3. Em um ESP32-S3, marque também H.264 video track se quiser que a câmera chegue à Amazon Alexa e ao Google Home. Veja Câmera H.264 com ESP32-S3 para Alexa e Google Home.
  4. Salve e anote o Device Id. Sua App Key e seu App Secret estão em Credentials.

Passo 2: Instalar as bibliotecas

No Arduino IDE, abra o Library Manager e instale SinricPro e SinricProWebRTC.

Passo 3: Gravar o exemplo

  1. Abra File → Examples → SinricProWebRTC → SinricProCamera.
  2. Em Settings.h, defina seu WiFi, App Key, App Secret, Device Id e CAMERA_BOARD (veja BoardProfiles.h).
  3. Em Tools, ative PSRAM e selecione um esquema de partição com pelo menos 3 MB para o app, como Huge APP (3MB No OTA).
  4. Faça o upload e depois abra o Monitor Serial a 115200 baud. Você deverá ver Connected to SinricPro.

Passo 4: Ver a câmera

As capturas de imagem (Take Snapshot, View Snapshots) continuam funcionando junto com a visualização ao vivo.

Limitações

Solução de problemas

Tutoriais relacionados