Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino

Componentes y suministros

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Arduino 101 × 1
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Arduino 4 Relays Shield × 1
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Arduino GSM Shield V2 × 1

Herramientas y máquinas necesarias

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Soldador (genérico)
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Pistola de pegamento caliente (genérica)

Aplicaciones y servicios en línea

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Unity
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Android Studio
Vuforia
Adobe Illustrator
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino Arduino IDE

Sobre este proyecto

¿Por qué abordar el problema del hogar inteligente?

¿Qué hay de nuevo?

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino

¿Por qué decidimos hacerlo?

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino

Funcionamiento

El medidor de energía digital

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino

El asistente virtual IA

Flujo de señales:

  1. Entrada de voz en la App Android
  2. Procesamiento en la App Android
  3. Envío de datos encriptados a Arduino vía Bluetooth
  4. Procesamiento en Arduino 101
  5. Señales digitales a relés

Conexiones de pines:

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino
J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino

Conexiones del medidor de energía:

Diagrama de circuito

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino

Hardware y equipos utilizados

Plataformas de programación

Implementación

Videos

Videos disponibles en el proyecto original.

Enlaces útiles

Enlaces disponibles en el proyecto original.

Código

Código Arduino para lectura de energía digital y cálculo de coste

Implementa las unidades de energía consumidas por un aparato conectado al Arduino.

Instrucciones:

  1. Haz las conexiones e inserta un número móvil en el código Arduino.
  2. Sube el código a un Arduino 101.
  3. Ejecuta el código.
  4. Envía un SMS desde cualquier móvil al número especificado en formato #cualquier_texto*.
  5. Recibirás una respuesta con unidades consumidas y coste.
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
int led=13;
#define pulsein 8
unsigned int pusle_count=0;
float units=0;
unsigned int rupees=0;
unsigned int temp=0,i=0;
char str[70],flag1=0,flag2=0;

void setup() {
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(pulsein, INPUT);
  digitalWrite(pulsein, HIGH);
  lcd.setCursor(0,0); lcd.print("Wireless Energy");
  lcd.setCursor(0,1); lcd.print(" Meter ");
  delay(2000); lcd.clear();
  lcd.print("By "); delay(2000); lcd.clear();
  lcd.print("GSM Initilizing..."); gsm_init(); lcd.clear();
  lcd.print("System Ready");
  Serial.println("AT+CNMI=2,2,0,0,0");
  init_sms(); send_data("System Ready"); send_sms(); delay(1000);
  digitalWrite(led, LOW); lcd.clear();
}

void loop() {
  serialEvent();
  units=rupees/5.0;
  lcd.setCursor(0,0); lcd.print("Units:"); lcd.print(units); lcd.print(" ");
  lcd.setCursor(0,1); lcd.print("Rupees:"); lcd.print(rupees); lcd.print(" ");
  read_pulse();
  if(temp==1) check();
}

void serialEvent() {
  while(Serial.available()) {
    if(Serial.find("#")) {
      digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW);
      while (Serial.available()) {
        char inChar=Serial.read(); str[i++]=inChar;
        if(inChar=='*') { temp=1; return; }
      }
    }
  }
}

void init_sms() {
  Serial.println("AT+CMGF=1"); delay(200);
  Serial.println("AT+CMGS=\"INSERT MOBILE NUMBER HERE\""); delay(200);
}

void send_data(String message) {
  Serial.println(message); delay(200);
}

void send_sms() { Serial.write(26); }

void read_pulse() {
  if(!digitalRead(pulsein)) {
    digitalWrite(led, HIGH);
    units++; rupees=units*5;
    while(!digitalRead(pulsein)); digitalWrite(led,LOW);
  }
}

void check() {
  if(!(strncmp(str,"units",5))) {
    Serial.println("AT+CMGF=1"); delay(200);
    Serial.println("AT+CMGS=\"INSERT MOBILE NUMBER HERE\""); delay(200);
    lcd.setCursor(0,1);
    send_data("Energy Meter Unit:"); Serial.println(units);
    send_data("\nRupees:"); Serial.println(rupees); delay(200);
    Serial.write(26); flag1=1; flag2=1; temp=0;
  }
}

void message_sent() {
  lcd.clear(); lcd.print("Message Sent."); delay(1000);
}

void gsm_init() {
  lcd.clear(); lcd.print("Finding Module..");
  boolean at_flag=1;
  while(at_flag) {
    Serial.println("AT");
    while(Serial.available()>0) { if(Serial.find("OK")) at_flag=0; }
    delay(1000);
  }
  lcd.clear(); lcd.print("Module Connected.."); delay(1000);
  lcd.clear(); lcd.print("Disabling ECHO");
  boolean echo_flag=1;
  while(echo_flag) {
    Serial.println("ATE0");
    while(Serial.available()>0) { if(Serial.find("OK")) echo_flag=0; }
    delay(1000);
  }
  lcd.clear(); lcd.print("Echo OFF"); delay(1000);
  lcd.clear(); lcd.print("Finding Network..");
  boolean net_flag=1;
  while(net_flag) {
    Serial.println("AT+CPIN?");
    while(Serial.available()>0) { if(Serial.find("+CPIN: READY")) net_flag=0; }
    delay(1000);
  }
  lcd.clear(); lcd.print("Network Found.."); delay(1000); lcd.clear();
}

Arduino implementando conexión JARVIS a relés vía Bluetooth

Código para transferencia serial Bluetooth de caracteres entre la app Android y el Arduino.

#define CH3 7
#define CH4 4
#define CH5 5
#define CH6 6

void setup() {
  Serial.begin(9600);
  pinMode(CH3, OUTPUT); pinMode(CH4, OUTPUT);
  pinMode(CH5, OUTPUT); pinMode(CH6, OUTPUT);
  digitalWrite(CH3, HIGH); digitalWrite(CH4, HIGH);
  digitalWrite(CH5, HIGH); digitalWrite(CH6, HIGH);
  delay(2000);
}

void loop() {
  delay(100);
  if(Serial.available()) {
    char c = Serial.read(); Serial.print(c);
    if(c=='b') { /* café off */ }
    else if(c=='c') { digitalWrite(CH4,LOW); delay(100); } // luz on
    else if(c=='d') { digitalWrite(CH6,LOW); delay(100); } // ventilador on
    else if(c=='k') { digitalWrite(CH5,LOW); delay(100); } // café on
    else if(c=='g') { digitalWrite(CH5,HIGH); delay(100); } // café off
    else if(c=='e') { digitalWrite(CH4,HIGH); delay(100); } // luz off
    else if(c=='f') { digitalWrite(CH6,HIGH); delay(100); } // ventilador off
    else if(c=='z') { // goodbye
      digitalWrite(CH6,HIGH); digitalWrite(CH4,HIGH);
      digitalWrite(CH3,HIGH); digitalWrite(CH5,HIGH); delay(500);
      digitalWrite(CH5,LOW); delay(500); digitalWrite(CH5,HIGH);
      delay(500); digitalWrite(CH5,LOW); delay(500);
      digitalWrite(CH5,HIGH); delay(10000);
    }
  }
}

Piezas personalizadas y cajas

Instrucciones:

  1. Descarga e instala la app.
  2. Asegúrate de que el teléfono tenga conexión a Internet.
  3. Inicia la app y apúntala a un electrodoméstico configurado con Vuforia (se usa el marcador por defecto).
  4. El electrodoméstico debería encenderse.
  5. Para apagarlo, pulsa el botón virtual que aparece en pantalla al apuntar al dispositivo.

jarvisaugmented_I2zWAu2jGG.apk

Esquemáticos

J.A.R.V.I.S. – Asistente virtual para hogar inteligente con Arduino

Nota: Se requiere conexión a Internet activa en el teléfono en todo momento.

Instrucciones:

  1. Instala la app en un teléfono Android.
  2. Tras configurar el hardware y ejecutarlo, inicia la app.
  3. Para usar el Asistente Virtual (Voz), di la palabra clave: "Listen Up JARVIS". Esto activará al agente.
    1. Habla tu comando claramente.
    2. El agente debería responder.
  4. Para iniciar la app de realidad aumentada, pulsa el botón "augment"; aparecerá una pantalla en blanco.
    1. Abre la app Jarvis Augmented en otro teléfono (NOTA: la app J.A.R.V.I.S. Android debe estar en un teléfono diferente).
    2. Sigue las instrucciones de JarvisAugmented para implementar la realidad aumentada.

NOTAS:

  1. Si la app se bloquea, reiníciala.
  2. Si aparece "Could not open Microphone", reinicia la app.
  3. Esta app usa módulo Bluetooth HC05 para ampliar el alcance. Se recomienda HC05.

app-release_eo3LK2AsLV.apk

Proceso de manufactura

  1. Construya una Red de Sensores Inalámbrica Económica para su Hogar
  2. Construye tu propia máquina de escribir deberes casera (DIY Homework Writing Machine)
  3. Sistema de Iluminación DMX Controlado por Web – Controlador Maestro Arduino
  4. Construye un Spybot controlado por Bluetooth con Arduino
  5. Construye un Skateboard VR Casero con Arduino, Google Cardboard y Bluetooth
  6. Robot Asistente Doméstico Autónomo "O'nine" – Integración ROS, Alexa y Brazo Robótico
  7. Controlador doméstico Arduino con Alexa: Automatización inteligente simplificada
  8. Shield de Programación Inalámbrica para Arduino con HC-05 Bluetooth – Sin Cable USB
  9. Pantalla TFT Shield de Alto Rendimiento 2.8” para Arduino Nano – Display SPI 320×240
  10. Shield de Reloj Nixie NCS314 para Arduino UNO/MEGA – Compatibilidad IN‑14/IN‑12
  11. Sistema Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT