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

J.A.R.V.I.S. - Arduino로 구동하는 스마트 홈 가상 비서

필요한 부품 및 소모품

Arduino 101 1개
Arduino 4 릴레이 쉴드 1개
Arduino GSM 쉴드 V2 1개

필요한 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

왜 스마트 홈 문제를 해결하려 했나?

무엇이 새로운가?

왜 이 프로젝트를 만들기로 했나?

작동 원리

디지털 에너지 미터

AI 가상 비서

신호 흐름:

  1. 안드로이드 앱으로 음성 입력
  2. 안드로이드 앱에서 처리
  3. 블루투스를 통해 암호화된 데이터를 Arduino로 전송
  4. Arduino 101에서 처리
  5. 릴레이로 디지털 신호 출력

핀 연결:

에너지 미터 연결:

회로도

회로도 이미지 참조

사용된 하드웨어 및 장비

프로그래밍 플랫폼

구현

비디오

프로젝트 시연 영상

유용한 링크

코드

디지털 에너지 판독 및 비용 계산용 Arduino 코드

이 코드는 Arduino에 연결된 가전제품의 소비 전력량을 구현합니다.

#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
int led=13;
#define pulsein 8
unsigned int pusle_count=0;
float units=0;
unsigned int rupees=0;
unsigned int temp=0,i=0;
char str[70],flag1=0,flag2=0;

void setup() {
  lcd.begin(16,2);
  Serial.begin(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 Initilizing...");
  gsm_init();
  lcd.clear();
  lcd.print("System Ready");
  Serial.println("AT+CNMI=2,2,0,0,0");
  init_sms();
  send_data("System Ready");
  send_sms();
  delay(1000);
  digitalWrite(led, LOW);
  lcd.clear();
}

void loop() {
  serialEvent();
  units=rupees/5.0;
  lcd.setCursor(0,0);
  lcd.print("Units:");
  lcd.print(units);
  lcd.print(" ");
  lcd.setCursor(0,1);
  lcd.print("Rupees:");
  lcd.print(rupees);
  lcd.print(" ");
  read_pulse();
  if(temp==1) { check(); }
}

void serialEvent() {
  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() {
  Serial.println("AT+CMGF=1");
  delay(200);
  Serial.println("AT+CMGS=\"INSERT MOBILE NUMBER HERE\"");
  delay(200);
}

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

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

void read_pulse() {
  if(!digitalRead(pulsein)) {
    digitalWrite(led, HIGH);
    units++;
    rupees=units*5;
    while(!digitalRead(pulsein));
    digitalWrite(led,LOW);
  }
}

void check() {
  if(!(strncmp(str,"units",5))) {
    Serial.println("AT+CMGF=1");
    delay(200);
    Serial.println("AT+CMGS=\"INSERT MOBILE NUMBER HERE\"");
    delay(200);
    lcd.setCursor(0,1);
    send_data("Energy Meter Unit:");
    Serial.println(units);
    send_data("\nRupees:");
    Serial.println(rupees);
    delay(200);
    Serial.write(26);
    flag1=1; flag2=1; temp=0;
  }
}

void message_sent() {
  lcd.clear();
  lcd.print("Message Sent.");
  delay(1000);
}

void gsm_init() {
  lcd.clear();
  lcd.print("Finding Module..");
  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("Module Connected..");
  delay(1000);
  lcd.clear();
  lcd.print("Disabling 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("Finding Network..");
  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("Network Found..");
  delay(1000);
  lcd.clear();
}
JARVIS 릴레이 연결 구현 Arduino 코드

안드로이드 앱과 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);
  digitalWrite(CH3, HIGH);
  digitalWrite(CH4, HIGH);
  digitalWrite(CH5, HIGH);
  digitalWrite(CH6, HIGH);
  delay(2000);
}

void loop() {
  delay(100);
  if(Serial.available()) {
    char c = Serial.read();
    Serial.print(c);
    if(c=='b') { /* coffee off */ }
    else if(c=='c') { digitalWrite(CH4, LOW); delay(100); } // light on
    else if(c=='d') { digitalWrite(CH6, LOW); delay(100); } // fan on
    else if(c=='k') { digitalWrite(CH5, LOW); delay(100); } // coffee on
    else if(c=='g') { digitalWrite(CH5, HIGH); delay(100); } // coffee off
    else if(c=='e') { digitalWrite(CH4, HIGH); delay(100); } // light off
    else if(c=='f') { digitalWrite(CH6, HIGH); delay(100); } // fan off
    else if(c=='z') { // goodbye
      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);
    }
  }
}

커스텀 파트 및 인클로저

안드로이드 앱 APK 파일 제공 (JARVIS 증강현실 앱, 메인 JARVIS 앱)

회로도

회로도 이미지 및 사용 설명서 포함

제조공정

  1. 가정용 저렴한 무선 센서 네트워크 구축하기
  2. 집에서 직접 만드는 DIY 숙제 작성 머신 (펜 플로터)
  3. 웹 제어 DMX 조명 시스템 - 아두이노 마스터 컨트롤러
  4. 블루투스 제어 아두이노 스파이봇(Spybot) 만들기
  5. 아두이노, 구글 카드보드, 블루투스로 DIY VR 스케이트보드 만들기
  6. 자율 홈 어시스턴트 로봇 'O'nine' 제작 – ROS, Alexa, MoveIt, 내비게이션 완전 가이드
  7. 알렉사 연동 아두이노 홈 컨트롤러: 음성으로 스마트홈 제어하기
  8. HC-05 블루투스 모듈을 활용한 무선 아두이노 프로그래밍 실드 – USB 케이블 불필요
  9. 아두이노 나노용 고성능 2.8" TFT 실드 – 320×240 SPI 디스플레이
  10. 아두이노 우노/메가용 닉시관 클록 실드 NCS314 – IN-14/IN-12 호환