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

알렉사(Alexa)로 천장 선풍기 제어하기 - 단계별 가이드

부품 및 소모품

라즈베리 파이 3 모델 B (로컬 서버용) 1개
아두이노 우노 (릴레이 제어용) 1개
릴레이 모듈 (5V, 아두이노 직접 구동 가능) 1개
팬 레귤레이터 (구형 저항식 권장, 단자 접근 용이) 1개

필요 도구

앱 및 온라인 서비스

프로젝트 소개

일반 천장 선풍기를 알렉사 음성 명령으로 켜기/끄기, 풍속 올리기/내리기 제어하는 시스템입니다. 아키텍처: 알렉사 → ngrok 터널 → 라즈베리파이(Flask 서버) → 시리얼 → 아두이노 → 릴레이 → 팬 레귤레이터

라즈베리파이 서버 설정

  1. 패키지 설치:
    sudo apt-get install python-pip
    pip install flask flask-ask
    sudo apt-get install python-serial libpython2.7-dev
    
  2. 파이썬 서버 코드 실행 (자동 시작 등록 권장):
    from flask import Flask
    from flask_ask import Ask, statement
    import serial
    
    ser = serial.Serial("/dev/ttyAMA0", 9600)
    app = Flask(__name__)
    ask = Ask(app, '/')
    
    @ask.launch
    @ask.intent("FanOn")
    def on():
        ser.write(b'1')
        return statement("Ceiling Fan turned on.")
    
    @ask.intent("FanOff")
    def off():
        ser.write(b'0')
        return statement("Ceiling Fan turned off.")
    
    @ask.intent("FanLevelUp")
    def up():
        ser.write(b'+')
        return statement("Ceiling Fan speed up.")
    
    @ask.intent("FanLevelDown")
    def down():
        ser.write(b'-')
        return statement("Ceiling Fan speed down.")
    
    if __name__ == "__main__":
        app.run(debug=True)
    
  3. ngrok 다운로드(ARM용) → 압축 해제 → ./ngrok http 5000 실행 → 생성된 HTTPS URL 복사

알렉사 스킬 생성

  1. Amazon Developer Console 로그인 → Alexa Skills Kit → 'Add new skill'
  2. 스킬 이름/호출 이름 설정 (예: "천장 선풍기", "팬")
  3. 인텐트 스키마 정의:
    { "intents": [
      { "intent": "FanOn" }, { "intent": "FanOff" },
      { "intent": "FanLevelUp" }, { "intent": "FanLevelDown" }
    ] }
    
  4. 샘플 발화(utterances) 등록:
    FanOn say fan on
    FanOn say on
    FanOff say off
    FanOff say fan off
    FanLevelUp say fan level up
    FanLevelUp say increase fan speed
    FanLevelDown say fan level down
    FanLevelDown say decrease fan speed
    
  5. 엔드포인트: HTTPS 선택 → ngrok HTTPS URL 붙여넣기 → SSL 인증서 '두 번째 옵션' 선택
  6. 테스트: ngrok과 파이썬 서버 실행 중일 때 알렉사 시뮬레이터 또는 실기기에서 "알렉사, 팬 켜줘" 등 테스트

아두이노 코드

int Fan[] = {13, 12, 11, 10, 9, 8};  // 릴레이 6개 (풍속 0~5단계)
int n = 0;

void reset() {
  for (int i = 0; i < 6; i++) digitalWrite(Fan[i], LOW);
}

void set(char x) {
  switch (x) {
    case '1': n = 1; break;   // 켜기 (1단)
    case '+': n++; break;     // 풍속 올리기
    case '-': n--; break;     // 풍속 내리기
    case '0': n = 0; break;   // 끄기
  }
  if (n < 0) n = 0;
  if (n > 5) n = 5;
  digitalWrite(Fan[n], HIGH);
}

void setup() {
  for (int i = 0; i < 6; i++) pinMode(Fan[i], OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    char x = Serial.read();
    reset();
    set(x);
  }
}

하드웨어 연결

  1. 아두이노 D8~D13 → 릴레이 모듈 IN1~IN6
  2. 릴레이 COM/NO → 팬 레귤레이터의 각 풍속 단자 탭 연결 (공통선은 전원선)
  3. 아두이노 USB → 라즈베리파이 USB (시리얼 통신, /dev/ttyAMA0 또는 /dev/ttyUSB0)
  4. 팬 레귤레이터 입력 → 메인 전원

알렉사(Alexa)로 천장 선풍기 제어하기 - 단계별 가이드

확장 아이디어

같은 방식으로 다른 가전제품(에어컨, 조명 등)도 음성 제어 가능. 릴레이 채널 수와 인텐트만 확장하면 됨.

제조공정

  1. 가정용 저렴한 무선 센서 네트워크 구축하기
  2. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  3. 아두이노 파워 컨트롤 센터: N-FET, P-FET, 릴레이 & RTC 키트
  4. 라즈베리 파이와 알렉사로 LED 제어하기 – 초보자를 위한 단계별 가이드
  5. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  6. 아두이노 릴레이 제어 가습기 자동화 – 고전압 안전 설계
  7. 아두이노 나노와 조이스틱으로 2개 스테퍼 모터 제어하기 – 비주이노(Visuino) 튜토리얼
  8. 윈도우 10 코타나와 블루투스로 아두이노 LED 제어하기 (UWP 앱)
  9. 아두이노 IoT 클라우드로 알렉사와 TV 제어하기: 단계별 가이드
  10. 아두이노 우노로 25kHz 4핀 PWM 팬 제어하기 - 제작, 코드 및 테스트