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

아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

부품 및 소모품

부품수량비고
아두이노 우노 (Arduino UNO)1아두이노 나노도 사용 가능하며, 더 많은 LED 픽셀을 구동하려면 아두이노 메가를 추천합니다.
라즈베리 파이 3 모델 B (Raspberry Pi 3 Model B)1
네오픽셀 스트립 (NeoPixel strip)1WS2812B 계열의 주소 지정 가능한 LED 스트립이면 모두 사용 가능합니다.

앱 및 온라인 서비스

프로젝트 개요

주소 지정 가능한 RGB LED 스트립의 무한한 색상 효과와 애니메이션 기능에 매료되어, 몇 년 전 아두이노 보드용 라이브러리인 ALA(Arduino Light Animations)를 개발했습니다. 이제 알렉사를 통해 음성으로 실내 조명과 효과를 제어할 수 있게 되었습니다.

시스템 아키텍처

이 프로젝트는 여러 클라우드 및 하드웨어 구성 요소가 유기적으로 연결된 구조입니다.

아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

각 구성 요소 자체는 복잡하지 않지만, 서로 연결된 조각이 많습니다. 제안된 구조를 따라 견고한 기반을 다진 후 다음 단계로 진행하시길 권장합니다. 프로젝트를 두 개의 하위 프로젝트로 나누어 설명합니다.

1단계: 웹 기반 LED 애니메이션 제어 (라즈베리 파이 + 아두이노)

첫 번째 부분은 Hackster.io의 "Web-Controlled LED Animations with Raspberry Pi and Arduino" 프로젝트에서 다룹니다. 라즈베리 파이, 아두이노 보드, WS2812B LED 스트립을 연결하는 단계를 안내합니다. 이 단계를 완료하면 스마트폰이나 PC의 웹 브라우저에서 LED 애니메이션을 제어할 수 있게 됩니다.

아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

2단계: 알렉사 음성 제어 추가

두 번째 부분(본 문서)에서는 앞서 구축한 시스템에 아마존 알렉사를 이용한 음성 제어 기능을 추가합니다. 전체 체인을 올바르게 설정하기 위해 여러 단계를 순차적으로 실행해야 하니, 지침을 주의 깊게 따라주세요.

AWS IoT 설정

하드웨어 부분이 완료되었다면 이제 클라우드로 이동합니다. AWS IoT 플랫폼을 사용하여 인터넷에서 '싱(Thing)'을 관리합니다.

디바이스 섀도우(Device Shadow)를 사용할 것입니다. 이는 싱의 상태 사본과 원하는 변경 사항을 포함합니다. 라즈베리 파이는 이 섀도우의 변경 사항('델타')을 발행하는 알림 피드를 구독합니다. 자세한 내용은 AWS IoT 플랫폼 및 API 문서를 참조하세요.

IoT 싱(Thing) 생성

  1. AWS 콘솔에 로그인합니다. 계정이 없다면 무료 계정을 생성하세요.
  2. 우측 상단에서 미국 동부(버지니아 북부) 또는 EU(아일랜드) 리전을 선택하세요.
  3. 'IoT'를 검색하여 AWS IoT 서비스를 선택하고, Get Started 버튼을 클릭해 소개 튜토리얼을 닫습니다.
  4. 보안 정책 생성: Secure > Policies 메뉴에서 Create a Policy 클릭 후 다음 정보 입력:
    • Name: LightStripPolicy
    • Action: *
    • Resource: *
    • Effect - Allow: 체크
    • Create 클릭
  5. IoT 싱 생성:
    • Manage > Things 메뉴에서 Register a Thing > Create a single thing 클릭
    • Name 필드에 LS01 입력, 나머지는 기본값 유지 후 Next
    • One-click certificate creation 섹션에서 Create certificate 클릭
    • 디바이스용 인증서 3개와 루트 CA 인증서 다운로드 (루트 CA는 우클릭 후 저장 필요)
    • 다운로드 후 Activate 버튼 클릭
    • Attach a Policy 버튼 클릭, 앞서 생성한 LightStripPolicy 선택 후 Register Thing 클릭
  6. AWS IoT 엔드포인트 확인: 좌측 하단 Settings 메뉴에서 엔드포인트 값을 기록해 두세요.
아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

라즈베리 파이에서 '싱' 구독 설정

  1. 라즈베리 파이 터미널에서 AWS IoT Device SDK for Python 설치:
    sudo pip3 install AWSIoTPythonSDK
  2. GitHub에서 LightStrip 저장소 다운로드 및 압축 해제:
    mkdir -p /home/pi/LightStrip
    cd /home/pi/LightStrip
    wget https://github.com/bportaluri/LightStrip/archive/master.zip
    unzip master.zip
  3. IoT 싱 생성 시 다운로드한 4개의 인증서를 /home/pi/LightStrip/LightStrip-master/pi 폴더에 복사합니다.
  4. lightstripcfg.py 스크립트 편집:
    cd /home/pi/LightStrip/LightStrip-master/pi
    nano lightstripcfg.py
    다음 설정을 본인 환경에 맞게 수정하세요:
    • AWSIOT: 앞서 기록한 AWS IoT 엔드포인트
    • ROOT_CA: 루트 CA 인증서 파일명
    • CERTIFICATE: 디바이스 인증서 파일명
    • PRIVATE_KEY: 개인 키 파일명
    • DEVICE_NAME: LS01로 유지
    Ctrl+X, Y 순으로 저장 후 종료합니다.
  5. 스크립트 실행:
    sudo python3 lightstrip.py /dev/ttyACM0
    아두이노가 /dev/ttyACM0에 연결된 경우 포트 인자를 전달합니다.

성공적으로 연결되면 클라이언트 스크립트가 LS01 디바이스 섀도우에 상태를 업데이트하고 확인 메시지를 수신합니다.

아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

동작 테스트

  1. AWS IoT 콘솔에서 Manage > Things > LS01 > Shadow 메뉴로 이동합니다.
  2. Shadow Document 섹션의 Edit 링크를 클릭하고 다음 JSON을 붙여넣기:
    { "desired": { "animation": "101" } }
  3. Save 클릭 시 '델타' 메시지가 라즈베리 파이의 MQTT 클라이언트로 전송되어 LED 스트립이 켜집니다.

색상을 파란색으로 변경하려면 다음 JSON을 사용하세요:

{ "desired": { "color": "0066CC" } }

이제 AWS IoT 서비스에서 LED 스트립을 제어할 수 있게 되었습니다.

AWS Lambda 함수 설정

AWS Lambda는 서버 프로비저닝 없이 클라우드에서 코드를 실행할 수 있게 해주며, 알렉사 스킬 키트와 최종 음성 제어 단계 사이의 완벽한 브리지 역할을 합니다.

  1. AWS 콘솔에서 Lambda 서비스 선택 (동일 리전 유지: 미국 동부 또는 EU 아일랜드)
  2. Create Function > Author from scratch 선택 후 설정:
    • Name: LightStrip
    • Runtime: Python 3.6
    • Role: Create a Custom Role 클릭 > 새 탭에서 Allow 클릭하여 lambda_basic_execution 역할 생성
    • Existing role: lambda_basic_execution 선택
    • Create Function 클릭
  3. 우측 상단의 Lambda ARN ID를 기록해 두세요.
아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기
  1. LightStrip 박스 클릭 > 함수 코드 섹션에서:
    • Code entry type: Edit code inline
    • Runtime: Python 3.6
    • Handler: lambda_function.lambda_handler
  2. lambda_function.py에 GitHub 저장소의 LightStrip\lambda\lambda_function.py 코드 붙여넣기
  3. ala_controller.py 파일 생성 후 LightStrip\lambda\ala_controller.py 코드 붙여넣기
  4. 우측 상단 주황색 Save 버튼 클릭
아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

알렉사 스킬 생성

  1. 아마존 개발자 콘솔 로그인 (계정 등록 필요 시 진행)
  2. Alexa > Alexa Skills Kit (Get Started) 이동
  3. Add a New Skill 클릭 후 Skill Information 탭에서:
    • Skill Type: Custom Interaction Model
    • Language: English (U.S.)
    • Name: LightStrip
    • Invocation Name: light strip
    • Save 클릭
  4. 생성된 Skill ID를 기록해 두세요.
아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기
  1. Interaction Model 메뉴 > Launch Skill Builder 클릭
  2. Code Editor 버튼 클릭 후 LightStrip/alexaskill/lightstrip_skill.json 파일 내용 붙여넣기
  3. Save Model > Build Model 클릭 (수 분 소요)
  4. Skill Information 버튼으로 설정 페이지 복귀
  5. Configuration 메뉴에서:
    • Service Endpoint Type: AWS Lambda ARN 선택
    • 앞서 기록한 Lambda 함수 ARN 붙여넣기
    • 기본값 유지 후 Save 클릭

알렉사 스킬과 Lambda 함수 연결

  1. Lambda 함수 페이지로 돌아가 우측 Add triggers 목록에서 Alexa Skills Kit 선택
  2. 설정:
    • Application Id: 앞서 기록한 Skill ID 입력
    • Add > Save 클릭
아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

완료 및 테스트

프로젝트가 완료되었습니다. 다음 음성 명령으로 테스트해 보세요:

더 고급 상호작용도 가능합니다:

나: 알렉사, Open Light Strip
알렉사: LightStrip에 오신 것을 환영합니다 - LED 스트립이 파란 빛으로 빛납니다
나: 애니메이션 실행해줘
알렉사: 편안한 애니메이션을 원하시나요, 신나는 애니메이션을 원하시나요?
나: 편안한 걸로
알렉사: 알겠습니다 - LED 스트립에 무작위 애니메이션이 표시됩니다
나: 다음 애니메이션
알렉사: 알겠습니다 - 또 다른 무작위 애니메이션이 표시됩니다
아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

개선 및 확장 아이디어

부팅 시 자동 실행

lightstrip.py 스크립트가 부팅 시 자동으로 시작되도록 설정하면, 라즈베리 파이 전원 켤 때마다 수동 실행할 필요가 없습니다. systemd 서비스나 crontab @reboot를 활용하세요.

애니메이션 추가 및 조정

Light Strip 스킬에는 이미 20가지 애니메이션 변형이 정의되어 있습니다. ALA 라이브러리를 사용하면 애니메이션 프리셋, 색상 팔레트, 속도를 조합해 나만의 애니메이션을 쉽게 만들 수 있습니다. ala_controller.py 스크립트 80번째 줄 부근의 애니메이션 설정 리스트를 수정하거나 확장하세요.

코드

이 프로젝트에 필요한 모든 코드: https://github.com/bportaluri/LightStrip

회로도

아두이노와 알렉사로 제어하는 애니메이션 스마트 LED 스트립 만들기

제조공정

  1. 아두이노 나노 비행 시뮬레이터 2020 컨트롤 패널 – LCD & CDI 디스플레이
  2. 마이크로소프트 플라이트 시뮬레이터 2020용 아두이노 스위치 & LED 패널
  3. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  4. 에너지 하베스팅 내장 스마트 자동 끈 신발 제작기
  5. 스마트 아두이노 4족 보행 로봇 제작: 단계별 완벽 가이드
  6. 아두이노 & MPU6050: SG90 & MG996R 서보 모터 정밀 제어
  7. 볼트 IoT와 아두이노 우노로 구현하는 무선 LED 밝기 제어 (PWM 6채널)
  8. u-blox LEA-6H GPS 모듈: 아두이노 & 파이썬 연동 가이드
  9. 스마트 아두이노 제어 로봇 팔 제작: 쉬운 DIY 튜토리얼
  10. 아두이노 Due에서 음성 인식 및 합성 마스터하기