J.A.R.V.I.S. :Um assistente de casa virtual
Componentes e suprimentos
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Ferramentas e máquinas necessárias
![]() |
| |||
![]() |
|
Aplicativos e serviços online
![]() |
| |||
![]() |
| |||
| ||||
| ||||
![]() |
|
Sobre este projeto
Por que resolver o problema da casa inteligente?
O que há de novo?

Por que decidimos fazer isso?





Trabalhando
O medidor digital de energia



O AI Virtual Assistant
O fluxo de sinais é o seguinte:
- 1. Entrada de voz para aplicativo Android
- 2. Processando no aplicativo Android
- 3. Envio de dados criptografados para Arduino via Bluetooth.
- 4. Processando no Arduino 101
- 5. Sinais digitais para retransmissão
Conexões de pinos:
- Pino 8 -> PulseIn [entrada digital]
- Pino 6 -> IN1 -> Saída do ventilador
- Pino 4 -> IN2 -> Saída de luz
- Pin 5 -> IN3 -> Cafeteira







Conexões do medidor de energia:
- Conecte o medidor ao suprimento.
- Cubra o medidor de energia com uma fita preta, evitando o LDR dentro do medidor de energia da luz externa.
- Conecte o fio neutro diretamente às cargas e o fio de fase ao relé.
- Leve os fios do LDR fora do medidor para o circuito do contador.
- Agora leve a saída do circuito do contador para o pino 8 de pulso atribuído como no código.
- Conecte o pino TX, RX do Arduino 101 ao pino RX, TX do módulo GSM.
- Agora ligue as placas após gravar o código.
Diagrama de circuito

Hardware e equipamentos usados:
- Medidor de energia interna:resistor dependente de luz LDR
- Módulo GSM
- Circuito do contador:potenciômetro, IC LM358N
- Arduino 101
- Módulo BlueTooth-HC05
- Módulo de placa de controle de relé de 4 canais 12V 10A com optoacoplador para PIC AVR ARM
Plataformas de programação
- · Para programar o Arduino 101, usamos o Arduino IDE padrão.
- · Desenvolvemos nosso aplicativo Android usando o Android Studio (JAVA e XML).
- · A conectividade do banco de dados é feita usando o Firebase do Google.
- · Para realidade aumentada, usamos o Unity junto com o SDK Vuforia.
Implementação:
- Todos os componentes estão dando leituras para o Arduino, onde estamos convertendo essas leituras em código de caracteres para enviar os bytes de forma eficiente e rápida para o computador. Dentro de um loop sem fim, cada leitura corresponde a um caractere.
- Um código deve ser executado no computador para receber os dados que estão sendo enviados pelo arduino via portas seriais.
- Para desenvolver o aplicativo Android, usamos o Android Studio e, para converter voz em texto, usamos a API padrão do Google.
- Para reconhecimento de fala, estamos usando parâmetros de fala acústico-fonética para reconhecimento de fala independente do alto-falante no aplicativo Android.
- Temos o assistente virtual AI (inteligência artificial) que utiliza técnicas de deep learning como CNN (Convolutional Neural Network) usando python para implementar o processamento de linguagem natural.
- Para o aplicativo de realidade aumentada, estamos usando Unity IDE e VuforiaSDK (é um kit de desenvolvimento de software de realidade aumentada (SDK) para dispositivos móveis que permite a criação de aplicativos de realidade aumentada.
Vídeos
Links úteis:
Código
- Código Arduino para leitura digital de energia e cálculo de custo
- Arduino implementando conexão JARVIS para retransmissão usando Arduino
Código Arduino para leitura digital de energia e cálculo de custo Arduino
Este código implementa as unidades de energia consumidas por um dispositivo conectado ao Arduino.Instruções:
1. Faça as conexões e insira um número de celular no código do Arduino
2. Faça upload do código para um Arduino 101
3. Execute o código
4. Envie um SMS de qualquer celular para o número de celular especificado no código no formato # anytext *
5. Uma resposta contendo as unidades consumidas e o custo seria recebida
#includeLiquidCrystal lcd (7,6,5,4,3,2); int led =13; // declínio do LED no 13º pino # define pulsein 8 // definindo o pino de entrada de pulso 8unsigned int pusle_count =0; // Declarando o tipo de contagem de pulso como unidades integerfloat =0; // Declarando unidades como Floatunsigned int rupees =0; // declarando tipos de rúpias como inteiros não assinados int temp =0, i =0; // declarando temp &i como integerchar sem sinal str [70], flag1 =0, flag2 =0; // comprimento do caractere como string e declaração de flagsvoid setup () {lcd.begin (16,2); // inicializando o tipo de LCD como 16x2 Serial.begin (9600); // inicializando a taxa de transmissão serial como 9600 pinMode (led, OUTPUT); pinMode (pulsein, INPUT); digitalWrite (pulsein, HIGH); lcd.setCursor (0,0); lcd.print ("Energia sem fio"); lcd.setCursor (0,1); lcd.print ("Medidor"); atraso (2000); lcd.clear (); lcd.print ("Por"); atraso (2000); lcd.clear (); lcd.print ("GSM iniciando ..."); gsm_init (); lcd.clear (); lcd.print ("Sistema pronto"); Serial.println ("AT + CNMI =2,2,0,0,0"); init_sms (); send_data ("Sistema pronto"); Enviar SMS(); atraso (1000); digitalWrite (led, BAIXO); lcd.clear ();} void loop () {serialEvent (); // verificação de unidades de evento serial =rupees / 5.0; // cálculo da unidade lcd.setCursor (0,0); lcd.print ("Unidades:"); lcd.print (unidades); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Rúpias:"); lcd.print (rúpias); lcd.print (""); read_pulse (); if (temp ==1) {check (); }} void serialEvent () // evento serial para receber e verificar o sms de entrada {while (Serial.available ()) {if (Serial.find ("#")) {digitalWrite (led, HIGH); atraso (1000); digitalWrite (led, BAIXO); while (Serial.available ()) {char inChar =Serial.read (); str [i ++] =inChar; if (inChar =='*') {temp =1; Retorna; }}}}} void init_sms () // inicialização e configuração de envio de mensagem {Serial.println ("AT + CMGF =1"); atraso (200); Serial.println ("AT + CMGS =\" INSERIR NÚMERO DE CELULAR AQUI \ ""); atraso (200);} void send_data (String mensagem) {Serial.println (mensagem); delay (200);} void send_sms () {Serial.write (26);} // Lendo Pulso do Metervóide de Energia read_pulse () {if (! digitalRead (pulsein)) {digitalWrite (led, HIGH); unidades ++; rúpias =unidades * 5; enquanto (! digitalRead (pulsein)); digitalWrite (led, BAIXO); }} // Verificando o status da mensagem void check () {if (! (Strncmp (str, "unidades", 5))) {Serial.println ("AT + CMGF =1"); atraso (200); Serial.println ("AT + CMGS =\" INSERIR NÚMERO DE CELULAR AQUI \ ""); atraso (200); lcd.setCursor (0,1); send_data ("Unidade do medidor de energia:"); Serial.println (unidades); send_data ("\ nRupees:"); Serial.println (rúpias); atraso (200); Serial.write (26); flag1 =1; flag2 =1; temp =0; }} void message_sent () {lcd.clear (); lcd.print ("Mensagem enviada."); atraso (1000);} void gsm_init () {lcd.clear (); lcd.print ("Módulo de localização .."); booleano at_flag =1; while (at_flag) {Serial.println ("AT"); while (Serial.available ()> 0) {if (Serial.find ("OK")) at_flag =0; } atraso (1000); } lcd.clear (); lcd.print ("Módulo conectado .."); atraso (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; } atraso (1000); } lcd.clear (); lcd.print ("Eco DESLIGADO"); atraso (1000); lcd.clear (); lcd.print ("Localizando Rede .."); boolean net_flag =1; while (net_flag) {Serial.println ("AT + CPIN?"); while (Serial.available ()> 0) {if (Serial.find ("+ CPIN:READY")) net_flag =0; } atraso (1000); } lcd.clear (); lcd.print ("Rede encontrada .."); atraso (1000); lcd.clear ();}
Arduino implementando conexão JARVIS para retransmissão usando Arduino Arduino
Este é um código que implementa a transferência serial do Bluetooth de caracteres entre o aplicativo 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 os LEDs // DESLIGA qualquer energia para os canais de relé digitalWrite (CH3, HIGH); digitalWrite (CH4, HIGH); digitalWrite (CH5, HIGH); digitalWrite (CH6, ALTO); atraso (2000); // Espere 2 segundos antes de iniciar a sequência} void loop () {delay (100); if (Serial.available ()) {//Serial.println(sum1); char c =Serial.read (); Serial.print (c); if (c =='b') {// café desligado} else if (c =='c') // acende {digitalWrite (CH4, LOW); delay (100);} else if (c =='d') // ventilador em {digitalWrite (CH6, LOW); delay (100);} else if (c =='k') // café em {digitalWrite (CH5, LOW); atraso (100);} else if (c =='g') // café desligado {digitalWrite (CH5, HIGH); delay (100);} else if (c =='e') // luz apagada {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); atraso (500); digitalWrite (CH5, BAIXO); atraso (500); digitalWrite (CH5, HIGH); atraso (500); digitalWrite (CH5, BAIXO); atraso (500); digitalWrite (CH5, HIGH); atraso (10000); }}}
Peças personalizadas e gabinetes
Instruções:1. Baixe e instale o aplicativo
2. Certifique-se de que o telefone está conectado à internet
3. Inicie o aplicativo e aponte-o para um aparelho que foi configurado com Vuforia (o marcador Vuforia padrão é 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
Esquemas

Instruções:
1. Instale o aplicativo em um telefone Android
2. Depois de configurar o hardware e executá-lo com sucesso, inicie o aplicativo
3. Para usar o Virtual Assistant (Voice), diga a palavra-chave, 'Listen Up JARVIS'. Isso deve ativar o agente
3.1 Fale seu comando claramente
3.2 O agente deve fornecer uma resposta
4. Para iniciar o aplicativo de realidade aumentada, clique no botão Aumentar; uma tela em branco deve aparecer
4.1 Abra o aplicativo Jarvis Augmented em um telefone diferente (NOTA:O aplicativo para Android J.A.R.V.I.S. deve estar em um telefone diferente)
4.2 Prossiga com as instruções fornecidas no JarvisAugmented para a implementação de realidade aumentada
NOTA:1. Se o aplicativo estiver travado em qualquer ponto, tente reiniciá-lo
2. Se uma mensagem semelhante a 'Não foi possível abrir o microfone' aparecer na tela, reinicie o aplicativo
3. Este aplicativo é implementado usando o módulo HC05 Bluetooth para aumentar o escopo do projeto. Portanto, o Módulo Bluetooth HC05 é recomendado app-release_eo3LK2AsLV.apk
Processo de manufatura
- Construindo uma rede de sensores sem fio em sua casa
- Faça uma máquina de escrever trabalhos de casa DIY em casa
- Controlador DMX operado pela web
- Arduino Spybot
- Faça você mesmo skate de realidade virtual
- Robô assistente autônomo da casa
- Arduino Home Controller ativado por Alexa
- BLUE_P:Wireless Arduino Programming Shield
- TFT Shield para Arduino Nano - Iniciar
- Arduino Shield NCS314 NIXIE Tubes Clock IN-14