Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

J.A.R.V.I.S. – Assistente Virtual Inteligente para Casa Inteligente com Arduino

Componentes e Materiais Necessários

Componente Quantidade
Arduino 101 1
Arduino 4 Relays Shield 1
Arduino GSM Shield V2 1

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Sobre este Projeto

Por que enfrentar o problema da Casa Inteligente?

O que há de novo?

Por que decidimos fazer isso?

Funcionamento

O Medidor de Energia Digital

O Assistente Virtual com IA

O fluxo de sinais é o seguinte:

  1. Entrada de voz no App Android
  2. Processamento no App Android
  3. Envio de dados criptografados ao Arduino via Bluetooth
  4. Processamento no Arduino 101
  5. Sinais digitais para o relé

Conexões dos pinos:

Conexões do Medidor de Energia:

Diagrama de Circuito

Hardware e Equipamentos Utilizados

Plataformas de Programação

Implementação

Vídeos

Links Úteis

Código

Código Arduino para leitura de energia digital e cálculo de custo

Este código implementa as unidades de energia consumidas por um aparelho conectado ao Arduino.

Instruções:

  1. Faça as conexões e insira um número de celular no código Arduino
  2. Carregue o código em um Arduino 101
  3. Execute o código
  4. Envie um SMS de qualquer celular para o número especificado no código no formato #qualquertexto*
  5. Uma resposta contendo as unidades consumidas e o custo será recebida
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
int led=13; // declarando LED no pino 13
#define pulsein 8 // definindo pino de entrada de pulso 8
unsigned int pusle_count=0; // Declarando tipo de contagem de pulso como inteiro
float units=0; // Declarando unidades como Float
unsigned int rupees=0; // declarando tipo rupias como inteiro sem sinal
unsigned int temp=0,i=0; // declarando temp e i como inteiro sem sinal
char str[70],flag1=0,flag2=0; // comprimento de caractere como string e declarando flags

void setup() {
  lcd.begin(16,2); // inicializando LCD como 16x2
  Serial.begin(9600); // inicializando taxa de baud serial como 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 Inicializando...");
  gsm_init();
  lcd.clear();
  lcd.print("Sistema Pronto");
  Serial.println("AT+CNMI=2,2,0,0,0");
  init_sms();
  send_data("Sistema Pronto");
  send_sms();
  delay(1000);
  digitalWrite(led, LOW);
  lcd.clear();
}

void loop() {
  serialEvent(); // verificando evento serial
  units=rupees/5.0; // cálculo de unidade
  lcd.setCursor(0,0);
  lcd.print("Unidades:");
  lcd.print(units);
  lcd.print(" ");
  lcd.setCursor(0,1);
  lcd.print("Rupias:");
  lcd.print(rupees);
  lcd.print(" ");
  read_pulse();
  if(temp==1) {
    check();
  }
}

void serialEvent() // evento serial para receber e verificar SMS recebido
{
  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() // inicializando e configuração de envio de mensagem
{
  Serial.println("AT+CMGF=1");
  delay(200);
  Serial.println("AT+CMGS=\"INSIRA NUMERO DE CELULAR AQUI\"");
  delay(200);
}

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

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

// Leitura de Pulso do Medidor de Energia
void read_pulse() {
  if(!digitalRead(pulsein)) {
    digitalWrite(led, HIGH);
    units++;
    rupees=units*5;
    while(!digitalRead(pulsein));
    digitalWrite(led,LOW);
  }
}

// Verificando o status da Mensagem
void check() {
  if(!(strncmp(str,"units",5))) {
    Serial.println("AT+CMGF=1");
    delay(200);
    Serial.println("AT+CMGS=\"INSIRA NUMERO DE CELULAR AQUI\"");
    delay(200);
    lcd.setCursor(0,1);
    send_data("Unidade Medidor Energia:");
    Serial.println(units);
    send_data("\nRupias:");
    Serial.println(rupees);
    delay(200);
    Serial.write(26);
    flag1=1;
    flag2=1;
    temp=0;
  }
}

void message_sent() {
  lcd.clear();
  lcd.print("Mensagem Enviada.");
  delay(1000);
}

void gsm_init() {
  lcd.clear();
  lcd.print("Encontrando Modulo..");
  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("Modulo Conectado..");
  delay(1000);
  lcd.clear();
  lcd.print("Desativando 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("Encontrando Rede..");
  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("Rede Encontrada..");
  delay(1000);
  lcd.clear();
}

Arduino implementando conexão JARVIS ao relé usando Arduino

Este é um código implementando transferência serial Bluetooth de caracteres entre o app Android e o 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);
  // Fornece energia para ambos LEDs
  // Desliga qualquer energia nos canais do relé
  digitalWrite(CH3, HIGH);
  digitalWrite(CH4, HIGH);
  digitalWrite(CH5, HIGH);
  digitalWrite(CH6, HIGH);
  delay(2000); // Aguarda 2 segundos antes de iniciar sequência
}

void loop() {
  delay(100);
  if(Serial.available()) {
    char c = Serial.read();
    Serial.print(c);
    if(c=='b') {
      // café desligado
    } else if(c=='c') // luz ligada
    {digitalWrite(CH4 ,LOW); delay(100);}
    else if(c=='d') // ventilador ligado
    {digitalWrite(CH6,LOW); delay(100);}
    else if(c=='k') // café ligado
    {digitalWrite(CH5,LOW); delay(100);}
    else if(c=='g') // café desligado
    {digitalWrite(CH5,HIGH); delay(100);}
    else if(c=='e') // luz desligada
    {digitalWrite(CH4,HIGH); delay(100);}
    else if(c=='f') // ventilador desligado
    {digitalWrite(CH6,HIGH); delay(100);}
    else if(c=='z') // adeus
    {
      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);
    }
  }
}

Peças Personalizadas e Gabinetes

Instruções:

  1. Baixe e instale o app
  2. Certifique-se de que o telefone está conectado à internet
  3. Inicie o app e aponte para um aparelho configurado com Vuforia (o marcador padrão Vuforia é usado aqui)
  4. O aparelho deve iniciar
  5. Para desligar o aparelho, clique no botão virtual que aparece na tela sempre que o telefone é apontado para o dispositivo

jarvisaugmented_I2zWAu2jGG.apk

Esquemáticos

J.A.R.V.I.S. – Assistente Virtual Inteligente para Casa Inteligente com Arduino

Observação: Conexão ativa à Internet no telefone é necessária o tempo todo

Instruções:

  1. Instale o app em um telefone Android
  2. Após configurar o hardware e executá-lo com sucesso, inicie o app
  3. Para usar o Assistente Virtual (Voz), diga a palavra-chave "Listen Up JARVIS". Isso deve ativar o agente
    1. Fale seu comando claramente
    2. O agente deve fornecer uma resposta
  4. Para iniciar o app de realidade aumentada, clique no botão augment; uma tela em branco deve aparecer
    1. Abra o Jarvis Augmented App em outro telefone (NOTA: O app J.A.R.V.I.S. Android deve estar em outro telefone)
    2. Prossiga para as instruções dadas no JarvisAugmented para implementar realidade aumentada

NOTA:

  1. Se o app travar em qualquer ponto, tente reiniciar o app
  2. Se uma mensagem semelhante a "Não foi possível abrir Microfone" aparecer na tela, reinicie o app
  3. Este app é implementado usando módulo Bluetooth HC05 para aumentar o escopo do projeto. Portanto, Módulo Bluetooth HC05 é recomendado

app-release_eo3LK2AsLV.apk

Processo de manufatura

  1. Construa uma Rede de Sensores Sem Fio Acessível para Sua Casa
  2. Construa Sua Própria Máquina de Escrever Deveres de Casa (Plotter de Caneta) em Casa
  3. Sistema de Iluminação DMX Controlado via Web – Controlador Mestre Arduino
  4. Construa um Spybot Controlado por Bluetooth com Arduino
  5. Construa um Skate VR DIY com Arduino, Google Cardboard e Bluetooth
  6. Robô Assistente Doméstico Autônomo: Lista Completa de Peças e Guia de Configuração
  7. Controlador Residencial Arduino com Alexa: Automação Inteligente Simplificada
  8. Shield de Programação Wireless Arduino com HC-05 Bluetooth – Sem Cabo USB
  9. Shield TFT 2,8" para Arduino Nano – Display SPI 320×240 de Alto Desempenho
  10. Shield Relógio Nixie NCS314 para Arduino UNO/MEGA – Compatibilidade IN‑14/IN‑12