Skip to main content

reCamera se conecta a XIAO vía HTTP

Este documento demuestra cómo habilitar la comunicación entre la reCamera y XIAO vía HTTP, transmitiendo datos a XIAO para que puedas integrar la reCamera en tus propios proyectos.

Preparación

reCamera

API HTTP y conexión de red

En primer lugar, prepara el proyecto supervisor C++ de tu reCamera y el entorno de ejecución.

En segundo lugar, reCamera y XIAO deben estar en la misma red de área local (LAN) de 2.4GHz para comunicarse. ReCamera tiene una tarjeta de red inalámbrica interna que puede conectarse a WiFi. Típicamente, puedes conectarte a WiFi a través de la web Node-RED de la cámara. Sin embargo, cuando ejecutas un proyecto C++ personalizado, debes deshabilitar Node-RED y reiniciar reCamera.(Referencia: Seeed Studio Wiki). Por lo tanto, necesitamos establecer la conexión WiFi vía el terminal de Linux.

cd /etc/
ls

Puedes ver el wpa_supplicant.conf :

También puedes verlo en el directorio de archivos de la izquierda:

Arrastra el/los archivo(s) al escritorio y ábrelo con el Bloc de notas. Añade la red como se muestra en la imagen, y cámbiala por tu SSID y contraseña. Nota : No incluyas espacios adicionales a ningún lado del signo igual.

Elimina el archivo original en el terminal de reCamera: /etc/.

sudo rm wpa_supplicant.conf

Abre el powershell de windows de tu PC y copia el archivo al terminal de reCamera: /home/recamera/:

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

Copia el archivo desde /home/recamera/ a : /etc/:

sudo scp wpa_supplicant.conf /etc/

Reinicia la reCamera. Luego, ejecuta el programa.

sudo ./Supervisor_add_detection_http

Asegúrate de que tu reCamera esté conectada a tu red WiFi.

XIAO

Conexión de red y envío de solicitudes HTTP

Es necesario descargar Arduino para flashear el programa para XIAO (ESP32-C3).

Paso 1. Descarga e instala la última versión del IDE de Arduino según tu sistema operativo. Inicia la aplicación Arduino.

Paso 2. Añade el paquete de placas ESP32 a tu IDE de Arduino Navega a Archivo > Preferencias, y completa "URLs adicionales del gestor de placas" con la url de abajo: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

Navega a Herramientas > Placa > Gestor de placas..., escribe la palabra clave "esp32" en el cuadro de búsqueda, selecciona la última versión de esp32, e instálala.

Paso 3. Selecciona tu placa y puerto

Placa Navega a Herramientas > Placa > ESP32 Arduino y selecciona "XIAO_ESP32C3". La lista de placas es un poco larga y necesitas desplazarte hasta abajo para encontrarla.

Puerto Navega a Herramientas > Puerto y selecciona el nombre del puerto serie del XIAO ESP32C3 conectado. Es probable que sea COM3 o superior (COM1 y COM2 están usualmente reservados para puertos serie de hardware).

Paso 4. Escribe el siguiente programa y haz clic en el botón de subida para compilar y subir. La reCamera y XIAO deben estar en la misma red de área local (LAN) de 2.4GHz para comunicarse.

#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);
}


Nota: Modifica con el nombre de tu WiFi (SSID), contraseña y dirección IP wlan0 de reCamera.

Espera a que se complete la carga, y puedes ver que XIAO se ha conectado exitosamente a WiFi en el monitor serie.

Ejecución

Asegúrate de que tu reCamera esté ejecutando el proyecto Supervisor y se haya conectado exitosamente a WiFi.

sudo ./Supervisor_add_detection_http

Puedes ver los resultados Json del servicio HTTP en el monitor serie de XIAO.

Cuando una persona mira hacia la cámara, XIAO muestra una cara sonriente, realizando así una cámara sonriente que puedes hacer tú mismo.

Para más detalles, consulta nuestro repositorio de GitHub.


Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...