Сборка домашней автоматизации JARVIS v1 на Arduino Nano — пошаговое руководство
Компоненты и материалы
- Arduino Nano R3 — 1 шт.
- Релейный модуль (4 канала) — 4 шт.
- Bluetooth Low Energy (BLE) модуль (например, HC-05) — 1 шт.
- Беспаяная макетная плата — 1 шт.
- Перемычки — 10 шт.
Необходимые инструменты
- Паяльник
Необходимые инструменты и сервисы
- Arduino IDE
О проекте
Зачем мы это сделали?
Буду фанатом «Железного человека», я вдохновился JARVIS — голосовым помощником. Очень хотел построить свою систему умного дома. Несмотря на множество готовых решений, решил сделать свою на Arduino.
Как это работает
Проект управляет электрическими приборами: свет, вентилятор, телевизор и т.д. Используются Arduino и релейные модули, установленные в каждой комнате. Данные передаются на Arduino через Bluetooth-модуль с мобильного телефона. Дальнейшие доработки возможны.
Основная задача — получение данных и передача их на Arduino с мобильного устройства. Затем по этим данным осуществляется управление вкл/выкл приборов.
Сборка железа
Схема очень простая. Общая стоимость менее $20.
Шаг 1: Детали и материалы

- Arduino
- Релейный модуль
- Bluetooth-модуль HC-05
- Перемычки
Шаг 2: Подключение
Соединения перемычками. Для демо использовано 4 реле — управление 4 устройствами.

Arduino → BT-модуль:
- TX → RX
- RX → TX
- VCC → 3.3В
- GND → GND
Arduino → Релейный модуль:
- IN1 → D2
- IN2 → D3
- IN3 → D4
- IN4 → D5
- VCC → VCC
- GND → GND
Шаг 3: Код
Пример кода ниже.
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 = "";
}
}
Шаг 4: Приложение
Пока используем готовое приложение. Позже опубликую свое после оформления сертификатов.
BT Voice Control for Arduino от SimpleLabsIN: ссылка на APK
Рабочее видео проекта
На данный момент функционал ограничен вкл/выкл, но код понимает базовые голосовые команды, что позволяет интегрировать обработку естественного языка в другие проекты.
Большое спасибо Hackster.io за возможность участвовать на этой платформе.
Спасибо за активности, вдохновляющие молодежь на творчество и изобретения.
Поставьте лайк, если помогло, и подпишитесь на канал: https://www.youtube.com/c/rahulkhanna24june?sub_confirmation=1
Спасибо за чтение!
Исходный код
Пример кода (Arduino)
// Coded By: Angelo Casimiro (4/27/14)
// Voice Activated Arduino (Bluetooth + Android)
// Feel free to modify but 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 = "";
}
}
Репозиторий проекта
Схемы

Производственный процесс
- Создайте систему домашней автоматизации на Raspberry Pi для удаленного управления
- Сборка домашней машины для написания домашних заданий (плоттер-писатель)
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Создание настраиваемой «бьющейся» клавиши на Arduino: пошаговое руководство
- Своё рулевое управление (джойстик) для игр на Arduino
- Генерация музыкальных тонов на Arduino: полный спектр 88 клавиш пианино
- Автоматическая дверь на Arduino с ультразвуковым датчиком HC-SR04
- Продвинутая система домашнего мониторинга на Arduino Mega с IoT-датчиками
- Создание Bluetooth-управляемой машины на Arduino: полное DIY-руководство
- Мастерство Modbus на Arduino: пошаговое руководство