Solución de hogar inteligente con reconocimiento de gestos


¡Comenta cualquier error o corrección que hayas encontrado para esta ruta para tener la oportunidad de ganar a lo grande!

En este miniproyecto, se construye una solución de hogar inteligente desde cero. Una aplicación de reconocimiento de gestos impulsada por IA (Android) puede abrir o cerrar una puerta (remota). Este miniproyecto incluye tecnologías como AI, Data Science, IoT, Android, Cloud Computing, etc.

Índice del contenido

resumen

Las soluciones para el hogar inteligente incluyen tecnologías de IA e IoT para controlar las puertas y mantener el hogar seguro. La IA se utiliza para entrenar imágenes de gestos humanos como la palma y el puño. Una aplicación de Android reconoce los gestos utilizando este modelo entrenado. Esta aplicación envía información de gestos como mensaje MQTT a través del servidor MQTT. Una aplicación IoT se suscribe y recibe estos mensajes. Esta aplicación IoT controla un servomotor para abrir o cerrar la puerta según el mensaje MQTT recibido. Este proyecto incluye tecnologías como AI, Data Science, IoT, Android, Cloud Computing, etc.

Se requieren los siguientes entornos de desarrollo:

  1. Aplicación web para entrenar gestos humanos (HTML)
  2. Google Colab convierte el modelo web en modelo TFLite (Python)
  3. Android Studio desarrolla aplicación de gestos (Java)
  4. Arduino desarrolla una aplicación IOT que se ejecuta en Node MCU (Arduino Sketch)
  5. Máquina virtual de Google Cloud para servidor MQTT (script de Java)
Entrenamiento de gestos con Tensorflow Web
Figura 1: Entrenamiento de gestos con Tensorflow Web

Preparación de datos y entrenamiento.

Paso 1: Prepare el archivo Index.html:

Descarga el archivo index.html de Github

Agregue el código para abrir de la siguiente manera




ABIERTO









Del mismo modo, agregue código para cerrar y ninguno

paso 2: Prepare el archivo ui.js

Descargue el archivo ui.js de Github
Agregue o actualice el código para las etiquetas: abierto, cerrado y ninguno
Agregue o actualice el siguiente código

CONST CONTROLES = [
‘up’, ‘down’, ‘left’, ‘right’, ‘leftclick’, ‘rightclick’, ‘scrollup’,
‘scrolldown’, ‘open’, ‘close’, ‘none’
];

sumas constantes = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
const openButton = documento.getElementById('abrir');
const closeButton = documento.getElementById('cerrar');
const noneButton = document.getElementById('ninguno');

openButton.addEventListener('mousedown', () => ui.handler(8));
openButton.addEventListener('mouseup', () => mouseDown = false);
closeButton.addEventListener('mousedown', () => ui.handler(9));
closeButton.addEventListener('mouseup', () => mouseDown = false);
noneButton.addEventListener('mousedown', () => ui.handler(10));
noneButton.addEventListener('mouseup', () => mouseDown = false);

Paso 3: tomar fotos

Abra index.html en su navegador Chrome.
Establezca los parámetros:
Tasa de aprendizaje = 0,0001, tamaño de pila = 0,4, épocas = 20 y unidades ocultas = 100
Capture imágenes abiertas, cerradas y nada haciendo clic en los iconos apropiados
(cada 200 imágenes con diferentes condiciones de iluminación)

Paso 4: Imágenes de tren

Haga clic en el botón Tren
Espere a que se complete el entrenamiento
Haga clic en el botón Prueba
Prueba abierta, cerrada y sin operaciones
Descarga el modelo haciendo clic en el botón “DESCARGAR MODELO”
Se descargarán los siguientes archivos
etiquetas.txt, modelo.json, modelo.pesos.bin

 Convierta el modelo TensorflowJS al modelo TFLite
Figura 2: Convierta el modelo TensorflowJS al modelo TFLite

Convierta el modelo tensorflowjs en modelo tflite

Paso 1: Subir libreta

Cargue el cuaderno: tensorflowjs_to_tflite_colab_notebook.ipynb desde el enlace de github

Paso 2: Configurar el entorno

En Colab, instala lo siguiente
Tensor Flujo>=1.13.1
tensorflowjs==0.8.6
Keras==2.2.4
Sube los siguientes archivos a Colab:
modelo.json, modelo.pesos.bin

Paso 3: Ejecutar cuaderno

Ejecutar las celdas en el cuaderno
Esto generará un archivo de modelo convertido -> model.tflite
Nota: MobileNet Transfer Learning se usa para crear el modelo final
El modelo web es un top model
MobileNet es el modelo básico

El modelo superior se fusiona con el modelo base para crear un modelo Keras fusionado
Luego, el modelo Keras fusionado se convierte en el modelo TFLite que se puede usar en dispositivos móviles

Paso 4: Descarga el archivo del modelo

Descargue el archivo model.tflite de Colab

Figura 3: Aplicación de gestos
Figura 3: Aplicación de gestos

Cree una aplicación de Android para el reconocimiento de gestos

Paso 1: Cambiar código o descargar código de Github

YO. Cambios de código (ImageClassifier.java)

afuera
labelProbArray = nuevo flotante[1][8];
a
labelProbArray = nuevo flotante[1][3];

II. Cambios en el diseño XML:

Cambiar arriba -> abrir, abajo -> cerrar, izquierda -> ninguno

y

comentar otros elementos de diseño como derecho, clic izquierdo, clic derecho, scroll_up, scroll_down en

res->layout->layout_bottom_sheet.xml
res->layout->layout_direction.xml

tercero Cambios en Camera2BasicFragment.java

Cambiar arriba -> abrir, abajo -> cerrar, izquierda -> ninguno

y comente otros elementos de diseño como derecho, clic izquierdo, clic derecho, scroll_up, scroll_down

IV.- Comente el código que se refiere a
// diseño correcto,
// diseño de clic izquierdo,
// diseño de clic derecho,
// diseño de desplazamiento hacia arriba,
// diseño de desplazamiento hacia abajo;
V. Comprobar probabilidad de cambio de estado:
Cadena probabilidadStr = textToShow.toString().substring(textToShow.toString().indexOf(“:”)+1,
textToShow.toString().indexOf(“:”)+7);
doble probabilidad = 0,0;
Intentar {
Probabilidad = Double.parseDouble(probabilityStr.trim());
} atrapar (NumberFormatException e) {
Log.e("amlan", "numberStr no es un número");
}
cadena token final = token;
si (probabilidad <0.8) {
token final = "NINGUNO";
}

Paso 2: Integrar código MQTT

una. Actualizar Build.gradle
Implementación 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.4'
Implementación 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

b. Actualice el código de Camera2BasicFragment.java o descárguelo de Github

C. Actualizar manifiesto







es decir. Publicar estado de gesto
si (MQTT válido == verdadero) {
Publicar (Cliente, FinalToken);
}

Paso 3: Consultar con Mosquito
Ejecute la aplicación de Android
Abrir una ventana de comando
Suscríbete al tema - "Gesto"
mosquitto_sub -h digitran-mqtt.tk -t gesto -p 1883

Servomotor - SG90
Figura 4: Servomotor - SG90

Cree una aplicación Arduino para abrir/cerrar la puerta

Paso 1: Conecte el servomotor a la conexión de la placa Blynk de NodeMCU:

El cable naranja se conecta al pin digital D4.
El cable marrón se conecta al pin GND
El cable rojo se conecta al pin 3V3

Paso 2: Cree el archivo de la aplicación Arduino (gesture.ino) o descárguelo de GitHub: enlace

Paso 3: Agregue código para abrir y cerrar la puerta.

Suscríbete al tema - 'Gesto'
Para abrir la puerta, gire el servomotor a 90 grados.
Para cerrar la puerta, ajuste el servomotor a 0 grados.

cliente.subscribe("gesto");
if (cadenamensaje == "abrir")
{
servo.escribir(90);
Serial.print("Gesto: ");
Serial.println("abrir");
}
más si (msgString == "cerrar")
{
servo.escribir(0);
Serial.print("Gesto: ");
Serial.println("Cerrar");
}

configuración del proyecto
Figura 5: Estructura del proyecto

Configuración del servidor MQTT

Servidor MQTT: digitran-mqtt.tk
Puerto MQTT: 1883
Consulte el siguiente enlace para conocer los pasos para configurar el servidor MQTT en GCP VM:

manifestación

La demo de este proyecto se puede encontrar en este enlace

referencias

  1. Enlace de ejemplo de clasificación de gestos de TensorFlow Lite Android
  2. Reconocimiento de gestos de movimiento con redes neuronales convolucionales y Tensorflow en Android Link
  3. Reconocimiento de gestos de movimiento con Tensorflow en Android Link
  4. Entrenando una red neuronal para reconocer gestos con OpenCV en Python Link
  5. Conexión del servomotor al enlace NodeMCU
  6. Crea un sistema automático de apertura y cierre de puertas con sensor IR y servomotor | Enlace Proyecto para principiantes



Si quieres conocer otros artículos parecidos a Solución de hogar inteligente con reconocimiento de gestos puedes visitar la categoría Electrónica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir