(Remote P2P accessible ESP32 based camera)

Language: C
URL: https://github.com/nabto/nabto-esp32cam
uNabto ESP32 cam demo
Este projeto transforma o ESP32-CAM em uma câmera de vigilância remota P2P acessível. Ele usa o núcleo baseado em esp-idf FreeRTOS (em comparação com alguns outros demos que usam o núcleo do arduino). Também usa a biblioteca espressif esp32-cam com pequenas modificações (não foi possível fazer o reset funcionar).
O vídeo é MJPEG e o módulo pode transmitir remotamente (codificar para mjpeg e criptografar e verificar a integridade) um feed VGA em cerca de 10 quadros por segundo.
Você também deve ler o artigo do blog relacionado: https://www.nabto.com/esp32/
A estrutura
A estrutura do projeto é a seguinte
+ +-->+-------------+ | | Main | This folder contains the initial setup | +-------------+ and the application_event() function defining | the application +-->+-------------+ | Components | +-------------+ | +------->+----------------+ | | unabto | Don't edit here (link to other github rep) | +----------------+ | +------->+----------------+ | | unabto-esp-idf | The platform integration | +----------------+ | +------->+----------------+ | | nabtotunnel | Nabto tunnel application | +----------------+ | +------->+----------------+ | | unabto-esp- | Client fingerprint database | | fingerprint | storage in NVS | +----------------+ | +------->+----------------+ | esp32-camera | From the espressif github (not a link, since we adjusted) +----------------+
O projeto ESP-IDF tem uma estrutura especial. Você pode ler mais sobre isso aqui: https://esp-idf.readthedocs.io/en/v1.0/build_system.html A fonte unabto e o código de integração são feitos como componentes e, portanto, residem na pasta de componentes IDF. O unabto sdk é um link de submódulo para a fonte genérica unabto.
A configuração / comissionamento inicial e o aplicativo estão localizados na pasta principal. unabto_application.c contém o aplicativo (dentro da função application_event), o main.c contém a instalação e configuração do módulo WiFi.
Como configurar
Etapa 1: configurar o ambiente de compilação ESP-IDF
Siga a configuração do conjunto de ferramentas ESP-IDF
http://esp-idf.readthedocs.io/en/stable/get-started/index.html (AVISO !!! É importante usar a versão “estável”, não mais tarde .. Problemas com fcntl foram detectados em final de junho de 2019)
Etapa 2: clonar o repositório
git clone --recursive https://github.com/nabto/nabto-esp32cam.git
Etapa 3: faça menuconfig
Entre no menu “Configuração da câmera”
Edite / ajuste os seguintes itens de menu:
- Nome do ponto de acesso wi-fi (SSID): o ponto de acesso wi-fi ao qual você deseja que o módulo seja conectado
- Senha WIFI: a senha usada pelo ponto de acesso
- ID da Nabto: a ID do dispositivo Nabto que você obtém da sua conta do AppMyProduct
- Chave Nabto – 32 caracteres hexadecimais: A chave para a identificação do dispositivo específico que você inseriu no item mencionado anteriormente
Fiação da câmera! Se você tiver uma placa ESP-EYE, nada mais precisa ser configurado se você tiver uma “ESP32 Cam” da Ai Tinker, você precisa configurar isso também (também no menu “Configuração da câmera”).
Etapa 3: construir o projeto
make
Etapa 4: atualize a imagem
Possivelmente, você precisa ajustar o dispositivo serial a ser usado para flashing, que é configurado na parte menuconfig, mas principalmente a configuração padrão irá corresponder à sua plataforma.
make flash
Como testar o aplicativo
Monitore a saída da placa
Usando o comando monitor, você deverá ver uma impressão semelhante à seguinte sempre que o ESP32-EVB for inicializado:
Procure o “conectado!” dizendo que o dispositivo sabe como se conectar ao seu WIFI. Procure também a mudança de estado do Nabto para “ATTACHED”, o que significa que o dispositivo foi conectado com sucesso à infraestrutura da Nabto (registrado e online, aguardando as solicitações de conexão dos clientes). O endereço do serviço de nuvem (controlador) pode variar dependendo da região geográfica (temos 4 datacenters) e da disponibilidade.
00:00:01:457 main.c(382) connected! 00:00:01:460 main.c(388) IP Address: 192.168.2.147 00:00:01:465 main.c(389) Subnet mask: 255.255.255.0 00:00:01:470 main.c(390) Gateway: 192.168.2.1 00:00:01:475 unabto_application.c(59) In demo_init 00:00:01:479 unabto_application.c(78) Before fp_mem_init 00:00:01:495 unabto_application.c(81) Before acl_ae_init 00:00:01:495 unabto_common_main.c(110) Device id: 'jicnkjqs.ev9dbf.appmyproduct.com' 00:00:01:498 unabto_common_main.c(111) Program Release 4.4.0-alpha.0 00:00:01:505 network_adapter.c(140) Socket opened: port=5570 00:00:01:510 network_adapter.c(140) Socket opened: port=49153 00:00:01:515 unabto_stream_event.c(235) sizeof(stream__)=328 00:00:01:521 unabto_context.c(55) SECURE ATTACH: 1, DATA: 1 00:00:01:526 unabto_context.c(63) NONCE_SIZE: 32, CLEAR_TEXT: 0 00:00:01:532 unabto_common_main.c(183) Nabto was successfully initialized 00:00:01:539 unabto_context.c(55) SECURE ATTACH: 1, DATA: 1 00:00:01:543 unabto_context.c(63) NONCE_SIZE: 32, CLEAR_TEXT: 0 00:00:01:550 network_adapter.c(140) Socket opened: port=49154 00:00:01:555 unabto_attach.c(770) State change from IDLE to WAIT_DNS 00:00:01:561 unabto_attach.c(771) Resolving DNS for jicnkjqs.ev9dbf.appmyproduct.com 00:00:01:675 unabto_attach.c(790) Resolved DNS for jicnkjqs.ev9dbf.appmyproduct.com to: 00:00:01:675 unabto_attach.c(796) Controller ip: 34.232.129.33 00:00:01:678 unabto_attach.c(802) State change from WAIT_DNS to WAIT_BS 00:00:01:887 unabto_attach.c(480) State change from WAIT_BS to WAIT_GSP 00:00:01:888 unabto_attach.c(481) GSP address: 34.194.195.231:5565 00:00:01:895 unabto_attach.c(270) ######## U_INVITE with LARGE nonce sent, version: - URL: - 00:00:02:089 unabto_attach.c(563) State change from WAIT_GSP to ATTACHED
Para testar a câmera, você pode tentar acessar: http: //: 8081 /
Que mostrará algo assim:

Baixe o aplicativo de vídeo AMP
Baixe o aplicativo para Android ou iPhone na app store
- https://play.google.com/store/apps/details?id=com.appmyproduct.video
- https://itunes.apple.com/lc/app/appmyproduct-video-client/id1276975254
Pareie o aplicativo de vídeo com o módulo wi-fi
Configure seu telefone para ser conectado à mesma rede WIFI que o dispositivo. Isso é ultra importante, pois o aplicativo e o dispositivo farão uma descoberta de transmissão para se encontrarem. O aplicativo criará um certificado PKI anônomo e enviará a impressão digital da chave (como SSH) para o dispositivo na rede local que é considerado “seguro” (ou seja, não emparelhe na rede pública). O dispositivo adiciona essa impressão digital à lista de controle de acesso e, depois disso, o dispositivo agora aceitará que o aplicativo possa se conectar remotamente. Leia mais sobre as listas de controle de acesso da Nabto e emparelhamento aqui .


Conecte-se e veja o vídeo
Agora você deve conseguir se conectar à câmera ao clicar no logotipo da câmera.

