산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 나노로 JARVIS v1 홈 오토메이션 구축하기 - 단계별 튜토리얼

부품 및 소모품

부품수량비고
아두이노 나노 R31
릴레이 모듈 (범용)44채널 릴레이 보드 권장
블루투스 저에너지(BLE) 모듈 (범용)1HC-05 등
브레드보드 (범용)1
점퍼 와이어 (범용)10

필요 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

왜 이 프로젝트를 만들었나?

아이언맨 팬으로서 자비스(JARVIS)라는 음성 제어 개인 비서에 큰 영감을 받아 나만의 홈 오토메이션 시스템을 직접 만들고 싶었습니다. 기존 시스템들도 많지만 아두이노를 이용해 직접 구축해 보기로 했습니다.

작동 원리

이 프로젝트는 조명, 선풍기, TV 등 전기·전자 기기를 제어하는 것을 목표로 합니다. 각 방에 설치된 릴레이 회로와 아두이노를 사용하며, 데이터는 블루투스 모듈을 통해 모바일에서 아두이노로 전송됩니다. 향후 추가 확장도 가능합니다.

주요 과제는 모바일에서 데이터를 수집해 아두이노에 전달하고, 이를 바탕으로 기기 온/오프를 제어하는 것입니다.

하드웨어 제작

회로는 매우 간단합니다. 전체 비용은 20달러 미만입니다.

1단계: 부품 및 재료

아두이노 나노로 JARVIS v1 홈 오토메이션 구축하기 - 단계별 튜토리얼

2단계: 연결

점퍼 케이블로 다음과 같이 연결합니다. 데모용으로 4채널 릴레이를 사용하여 4개 기기 제어 가능.

아두이노 나노로 JARVIS v1 홈 오토메이션 구축하기 - 단계별 튜토리얼

아두이노 → 블루투스 모듈

아두이노 → 릴레이 보드

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 제작):
https://apkpure.com/bt-voice-control-for-arduino/robotspace.simplelabs.amr_voice/download?from=details

5단계: 작동 영상

현재는 기기 온/오프 기능만 제공하지만 기본적인 자연어 처리가 가능해 다른 프로젝트에도 응용할 수 있습니다.


Hackster.io 플랫폼에 감사드립니다.
젊은이들과 청소년들이 창작하고 발명하도록 장려하는 이런 활동에 감사드립니다.

도움이 되었다면 엄지척 부탁드리고, 채널 구독으로 더 재미있는 프로젝트 만나보세요 :)
영상 공유도 환영합니다.
구독하기: https://www.youtube.com/c/rahulkhanna24june?sub_confirmation=1
읽어주셔서 감사합니다!

코드

샘플 코드 (아두이노)

// Coded By: Angelo Casimiro (4/27/14)
// Voice Activated Arduino (Bluetooth + Android)
// 수정 자유이나 크레딧 표기 바랍니다
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 = "";
  }
}

프로젝트 저장소

https://github.com/Rahul24-06/Arduino-Tutorial-JARVIS-v1-How-to-make-a-Home-Automation

회로도

아두이노 나노로 JARVIS v1 홈 오토메이션 구축하기 - 단계별 튜토리얼

제조공정

  1. 라즈베리 파이 기반 홈 오토메이션 시스템으로 원격 제어 구축하기
  2. 집에서 직접 만드는 DIY 숙제 작성 머신 (펜 플로터)
  3. 아두이노와 블루투스로 만드는 스마트 물건 찾기 'Find Me'
  4. 아두이노로 만드는 맞춤형 '펀처블' 키보드 버튼: 단계별 가이드
  5. 게이밍용 커스텀 아두이노 조이스틱 스티어링 휠 만들기
  6. 아두이노로 음악 톤 만들기: 88키 피아노 음계 구현 가이드
  7. 초음파 센서로 아두이노 자동문 만들기
  8. 아두이노 메가 기반 고급 홈 모니터링 시스템: IoT 센서 연동
  9. 블루투스 조종 아두이노 자동차 만들기 – 완전 DIY 가이드 (아두이노 나노)
  10. 아두이노로 Modbus 마스터하기: 단계별 완벽 가이드