Automação Residencial JARVIS v1 com Arduino Nano – Tutorial Passo a Passo
Componentes e Materiais
- 1x Arduino Nano R3
- 4x Módulo Relé (genérico)
- 1x Módulo Bluetooth Low Energy (BLE) genérico (ex: HC-05/HC-06)
- 1x Protoboard
- 10x Jumpers
Ferramentas Necessárias
- Ferro de solda
Software
- Arduino IDE
Sobre o Projeto
Por Que Construímos Isso?
Sendo fã do Homem de Ferro, fui inspirado pelo JARVIS, um assistente pessoal controlado por voz, e quis construir meu próprio sistema de automação residencial com Arduino. Embora existam muitos sistemas prontos, decidi criar o meu.
Como Funciona
O objetivo é controlar dispositivos elétricos/eletrônicos (luzes, ventilador, TV, etc.) usando Arduino e circuitos de relé instalados em cada cômodo. Os dados são enviados ao Arduino via módulo Bluetooth a partir de um celular. Implementações futuras podem expandir as funcionalidades.
A tarefa principal é adquirir comandos de voz no celular e publicá-los no Arduino via Bluetooth. Com esses dados, controla-se o liga/desliga dos dispositivos.
Construção do Hardware
A circuitaria é muito simples. O custo total fica abaixo de US$ 20.
Passo 1: Peças e Materiais

- Arduino
- Placa de relé (relay breakout board)
- Módulo Bluetooth HC-05
- Cabos jumpers
Passo 2: Conexões
As conexões abaixo usam jumpers. Para demonstração, usei 4 relés (controlam 4 dispositivos).

Arduino → Módulo BT:
- TX → RX
- RX → TX
- VCC → 3.3 V
- GND → GND
Arduino → Placa de Relé:
- IN1 → D2
- IN2 → D3
- IN3 → D4
- IN4 → D5
- VCC → VCC
- GND → GND
Passo 3: O Código
Código de exemplo abaixo (também disponível no repositório do GitHub).
String voice;
int led1 = 2, led2 = 3, led3 = 4, led4 = 5, led5 = 6;
void allon() {
digitalWrite(led1, HIGH); digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH); digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
void alloff() {
digitalWrite(led1, LOW); digitalWrite(led2, LOW);
digitalWrite(led3, LOW); digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT); pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT); pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop() {
while (Serial.available()) {
delay(10);
char c = Serial.read();
if (c == '#') break;
voice += c;
}
if (voice.length() > 0) {
Serial.println(voice);
// Controle múltiplo
if (voice == "*all on") allon();
else if (voice == "*all off") alloff();
// Liga individual
else if (voice == "*TV on") digitalWrite(led1, HIGH);
else if (voice == "*fan on") digitalWrite(led2, HIGH);
else if (voice == "*computer on") digitalWrite(led3, HIGH);
else if (voice == "*bedroom lights on") digitalWrite(led4, HIGH);
else if (voice == "*bathroom lights on") digitalWrite(led5, HIGH);
// Desliga individual
else if (voice == "*TV off") digitalWrite(led1, LOW);
else if (voice == "*fan off") digitalWrite(led2, LOW);
else if (voice == "*computer off") digitalWrite(led3, LOW);
else if (voice == "*bedroom lights off") digitalWrite(led4, LOW);
else if (voice == "*bathroom lights off") digitalWrite(led5, LOW);
voice = "";
}
}
Passo 4: Aplicativo
Por enquanto, usamos um app pronto. Futuramente publicarei o aplicativo próprio.
BT Voice Control for Arduino por SimpleLabsIN: Download APK
Vídeo de Demonstração
Atualmente a funcionalidade limita-se a ligar/desligar dispositivos, mas processa linguagem natural em nível básico, permitindo integrar NLP a outros projetos.
Muito obrigado ao Hackster.io por permitir que eu e todos os usuários desta plataforma participem.
Obrigado por realizar atividades que incentivam jovens e adolescentes a criar e inventar.
Deixe um joinha se ajudou e siga meu canal para projetos interessantes. Compartilhe se gostou. Inscreva-se: YouTube
Obrigado por ler!
Código
Código de Exemplo (Arduino)
//Coded By: Angelo Casimiro (4/27/14)
//Voice Activated Arduino (Bluetooth + Android)
//Feel free to modify but remember to give credit
String voice;
int led1 = 2, led2 = 3, led3 = 4, led4 = 5, led5 = 6;
void allon() {
digitalWrite(led1, HIGH); digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH); digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
void alloff() {
digitalWrite(led1, LOW); digitalWrite(led2, LOW);
digitalWrite(led3, LOW); digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT); pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT); pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop() {
while (Serial.available()) {
delay(10);
char c = Serial.read();
if (c == '#') break;
voice += c;
}
if (voice.length() > 0) {
Serial.println(voice);
if (voice == "*all on") allon();
else if (voice == "*all off") alloff();
else if (voice == "*TV on") digitalWrite(led1, HIGH);
else if (voice == "*fan on") digitalWrite(led2, HIGH);
else if (voice == "*computer on") digitalWrite(led3, HIGH);
else if (voice == "*bedroom lights on") digitalWrite(led4, HIGH);
else if (voice == "*bathroom lights on") digitalWrite(led5, HIGH);
else if (voice == "*TV off") digitalWrite(led1, LOW);
else if (voice == "*fan off") digitalWrite(led2, LOW);
else if (voice == "*computer off") digitalWrite(led3, LOW);
else if (voice == "*bedroom lights off") digitalWrite(led4, LOW);
else if (voice == "*bathroom lights off") digitalWrite(led5, LOW);
voice = "";
}
}
Repositório do Projeto
GitHub: Arduino-Tutorial-JARVIS-v1
Esquemático

Processo de manufatura
- Construa Sistema de Automação Residencial com Raspberry Pi para Controle Remoto
- Construa Sua Própria Máquina de Escrever Deveres de Casa (Plotter de Caneta) em Casa
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Crie um Botão de Teclado "Socável" Personalizado com Arduino: Guia Passo a Passo
- Volante Joystick Arduino Personalizado para Jogos
- Criar Tons Musicais com Arduino: Um Guia Passo a Passo
- Porta Automática com Arduino e Sensor Ultrassônico HC-SR04
- Sistema Avançado de Monitoramento Residencial com Arduino Mega e Sensores IoT
- Construa um Carro Controlado por Bluetooth com Arduino: Guia DIY Completo
- Dominando Modbus no Arduino: Guia Passo a Passo