Pular para o conteúdo principal

reCamera conecta ao XIAO via HTTP

Este documento demonstra como habilitar a comunicação entre a reCamera e o XIAO via HTTP, transmitindo dados para o XIAO para que você possa integrar a reCamera em seus próprios projetos.

Preparação

reCamera

HTTP API e conexão de rede

Primeiro, prepare o projeto supervisor em C++ da sua reCamera e o ambiente de execução.

Em segundo lugar, a reCamera e o XIAO devem estar na mesma rede local (LAN) de 2,4 GHz para se comunicarem. A reCamera possui uma placa de rede sem fio interna que pode se conectar ao WiFi. Normalmente, você pode se conectar ao WiFi através do Node-RED web da câmera. No entanto, ao executar um projeto C++ personalizado, você deve desativar o Node-RED e reiniciar a reCamera. (Referência: Seeed Studio Wiki). Portanto, precisamos estabelecer a conexão WiFi via terminal Linux.

cd /etc/
ls

Você pode ver o wpa_supplicant.conf :

Você também pode visualizá-lo no diretório de arquivos à esquerda:

Arraste o(s) arquivo(s) para a área de trabalho e abra-o(s) com o Notepad. Adicione a rede como mostrado na imagem e altere para o seu SSID e senha. Observação : Não inclua espaços extras em nenhum dos lados do sinal de igual.

Exclua o arquivo original no terminal da reCamera: /etc/.

sudo rm wpa_supplicant.conf

Abra o Windows PowerShell do seu PC e copie o arquivo para o terminal da reCamera : /home/recamera/:

scp "C:\Users\{your username}\Desktop\wpa_supplicant.conf" [email protected]:/home/recamera

Copie o arquivo de /home/recamera/ para : /etc/:

sudo scp wpa_supplicant.conf /etc/

Reinicie a reCamera. Em seguida, execute o programa.

sudo ./Supervisor_add_detection_http

Certifique-se de que sua reCamera esteja conectada à sua rede WiFi.

XIAO

Conexão de rede e envio de solicitações HTTP

É necessário baixar o Arduino para gravar o programa no XIAO (ESP32-C3).

Passo 1. Baixe e instale a versão mais recente da Arduino IDE de acordo com o seu sistema operacional. Inicie o aplicativo Arduino.

Passo 2. Adicione o pacote da placa ESP32 à sua Arduino IDE Navegue até File > Preferences e preencha "Additional Boards Manager URLs" com a URL abaixo: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

Navegue até Tools > Board > Boards Manager..., digite a palavra-chave "esp32" na caixa de pesquisa, selecione a versão mais recente de esp32 e instale-a.

Passo 3. Selecione sua placa e porta

Board Navegue até Tools > Board > ESP32 Arduino e selecione "XIAO_ESP32C3". A lista de placas é um pouco longa e você precisa rolar até o final para encontrá-la.

Port Navegue até Tools > Port e selecione o nome da porta serial do XIAO ESP32C3 conectado. Provavelmente será COM3 ou superior (COM1 e COM2 geralmente são reservadas para portas seriais de hardware).

Passo 4. Escreva o seguinte programa e clique no botão de upload para compilar e enviar. A reCamera e o XIAO devem estar na mesma rede local (LAN) de 2,4 GHz para se comunicarem.

#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN A0 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 60 // Popular NeoPixel ring size
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500

const char* ssid = {"your wifi name"};
const char* password = {"your wifi password"};
const char* apiUrl = "http://{"your wifi ip"}/modeldetector";

void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");

#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.

pixels.begin();
}

void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(apiUrl);
http.addHeader("Content-Type", "application/json");


int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
Serial.println("HTTP Response:");
// Serial.println(payload);

DynamicJsonDocument doc(1024);
DeserializationError error = deserializeJson(doc, payload);
if (error) {
Serial.print("JSON read failed: ");
Serial.println(error.c_str());
}
else {
Serial.print("Code: ");
Serial.println(doc["Code"].as<String>());
Serial.print("Msg: ");
Serial.println(doc["Msg"].as<String>());
Serial.print("Target: ");
Serial.println(doc["Target"].as<String>());
Serial.print("Score: ");
Serial.println(doc["Score"].as<String>());
Serial.print("Release_duration: ");
Serial.print(doc["Release_duration"].as<String>());
Serial.println("ms");
Serial.print("Capture_duration: ");
Serial.print(doc["Capture_duration"].as<String>());
Serial.println("ms");
Serial.print("Image_preprocessing_duration: ");
Serial.print(doc["Image_preprocessing_duration"].as<String>());
Serial.println("ms");
Serial.print("Detection_duration: ");
Serial.print(doc["Detection_duration"].as<String>());
Serial.println("ms");
Serial.print("Total Duration: ");
Serial.print(doc["Duration"].as<String>());
Serial.println("ms");


if (doc["Target"].as<String>().indexOf("person") != -1){
pixels.clear();
pixels.show();
int smileyLEDs[] = {21,26,29,32,35,39};
int numLEDs = sizeof(smileyLEDs) / sizeof(smileyLEDs[0]);

for (int i = 0; i < numLEDs; i++) {
pixels.setPixelColor(smileyLEDs[i], pixels.Color(2, 2, 0)); // yellow
}
pixels.show();

printf("Target contains 'person'\n");
} else {
pixels.clear();
pixels.show();
printf("Target does not contain 'person'\n");
}
}


} else {
pixels.clear();
pixels.show();
Serial.print("HTTP get failed: ");
Serial.println(httpCode);
}
http.end();
} else {
pixels.clear();
pixels.show();
Serial.println("WiFi disconnected");
}

delay(5000);
}


Observação: Modifique para o nome da sua rede WiFi (SSID), senha e endereço IP wlan0 da reCamera.

Aguarde a conclusão do upload e você poderá ver que o XIAO se conectou com sucesso ao WiFi no serial monitor.

Execução

Certifique-se de que sua reCamera esteja executando o projeto Supervisor e tenha se conectado ao WiFi com sucesso.

sudo ./Supervisor_add_detection_http

Você pode ver os resultados Json do serviço HTTP no serial monitor do XIAO.

Quando a pessoa fica em frente à câmera, o XIAO exibe um rosto sorridente, realizando assim uma câmera sorridente que você pode fazer DIY.

Para mais detalhes, consulte nosso repositório GitHub.


Suporte Técnico e Discussão sobre o Produto

Obrigado por escolher nossos produtos! Estamos aqui para lhe oferecer diferentes formas de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...