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

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda

부품 및 소모품

부품 수량
아마존 에코 (Amazon Echo / Alexa) 1
Walabot Creator (3D 이미징 센서) 1
아두이노 레오나르도 (Arduino Leonardo) 1
릴레이 모듈 (제네릭) 2
LattePanda 2G/32GB (윈도우 10 탑재) 1
LattePanda 7인치 1024×600 IPS 디스플레이 1
스탠드 램프 2

프로젝트 개요

문제 정의

스마트 홈 기기 이름이 많아지면 "알렉사, 거실 조명 켜줘" 같은 명령어를 기억하기 어렵고, 잘못된 기기가 켜지거나 알렉사가 못 알아듣는 경우가 빈번합니다. "알렉사, 이 조명 켜줘"라고 말하고, 알렉사가 사용자 위치를 파악해 의도한 조명을 제어하면 훨씬 직관적일 것입니다.

해결책: Walabot 3D 센서

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda

Walabot은 프로그래머블 3D 이미징 센서로, 무선 주파수(RF)를 사용해 주변 물체와 움직임을 감지합니다. 카메라와 달리 사생활 침해 없이 위치 추적이 가능합니다.

LattePanda: 윈도우 10 탑재 x86 SBC

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda

인텔 아톰 x8300 쿼드코어, 2/4GB RAM, 윈도우 10 구동. 내장 ATmega32u4(아두이노 레오나르도 호환) 코프로세서로 GPIO 제어 가능. Walabot(USB)과 아두이노(내장)를 한 보드에서 연결해 에지 컴퓨팅에 최적화.

Node-RED: 비주얼 IoT 로직 빌더

브라우저 기반 플로우 에디터로 알렉사 명령 수신, Walabot 데이터 처리, 아두이노 GPIO 제어를 노드 연결로 구현. 주요 노드:

시스템 동작 흐름

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda

3단계 파이프라인:

  1. Walabot 서비스 처리: 파이썬 스크립트가 Walabot에서 객체 위치(x,y,z) 읽어 TCP 포트 1890으로 JSON 스트리밍
  2. 위치 데이터 저장: Node-RED가 포트 1890 수신 → JSON 파싱 → 전역 변수(X, Y, Z)에 최신 위치 저장
  3. 알렉사 명령 처리: 알렉사 명령 수신 → 저장된 위치 기반으로 어느 램프 제어할지 결정 → 아두이노 릴레이 핀 제어

하드웨어 구성

설치 가이드

1단계: Walabot SDK 설치

Walabot SDK 다운로드 및 설치

2단계: LattePanda 아두이노 설정

  1. 윈도우 설정 → 업데이트 및 보안 → 개발자 모드 활성화
  2. 아두이노 IDE에서 파일 > 예제 > Firmata > StandardFirmata 열기
  3. 보드: "Arduino Leonardo" 선택
  4. 포트: LattePanda 내장 아두이노 COM 포트 선택
  5. 업로드 완료

3단계: 릴레이 연결

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda

릴레이를 LattePanda 아두이노 GPIO 핀에 연결 (예: D2, D3)

4단계: Node.js & Node-RED 설치

5단계: Python 3 설치

Python 3 설치

6단계: 프로젝트 코드 다운로드 및 실행

git clone https://github.com/rondagdag/smart3DSensorForAlexa
cd smart3DSensorForAlexa
npm install
npm start

7단계: 알렉사 연동

  1. 동일 와이파이 네트워크 확인
  2. 알렉사 앱에서 "스마트 홈 스킬" 활성화
  3. "알렉사, 기기 찾아줘" → "Lamp" 발견
  4. Node-RED 플로우 수정: https://localhost:1880/red/

Node-RED 플로우 상세

1. Walabot 서비스 (파이썬)

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda
from __future__ import print_function
from sys import platform
from os import system
from imp import load_source
import socket, sys

WalabotAPI = load_source('WalabotAPI', 'C:\\Program Files\\Walabot\\WalabotSDK\\python\\WalabotAPI.py')

if __name__ == '__main__':
    WalabotAPI.Init()
    WalabotAPI.SetSettingsFolder()
    WalabotAPI.ConnectAny()
    WalabotAPI.SetProfile(WalabotAPI.PROF_SENSOR)
    WalabotAPI.SetThreshold(35)
    WalabotAPI.SetArenaR(50, 400, 4)
    WalabotAPI.SetArenaPhi(-45, 45, 2)
    WalabotAPI.SetArenaTheta(-20, 20, 10)
    WalabotAPI.SetDynamicImageFilter(WalabotAPI.FILTER_TYPE_MTI)
    WalabotAPI.Start()
    
    system('cls' if platform == 'win32' else 'clear')
    numOfTargetsToDisplay = 1
    
    if len(sys.argv) == 2:
        TCP_IP = '127.0.0.1'
        TCP_PORT = int(sys.argv[1])
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind((TCP_IP, TCP_PORT))
        s.listen(1)
        conn, addr = s.accept()
        
        while True:
            WalabotAPI.Trigger()
            targets = WalabotAPI.GetSensorTargets()
            finds = '{"targets": ['
            index = 0
            for i, t in enumerate(targets):
                if i < numOfTargetsToDisplay:
                    index += 1
                    print('Target {}\nx = {}\ny = {}\nz = {}'.format(i+1, t.xPosCm, t.yPosCm, t.zPosCm))
                    finds += '{"x": "%s", "y": "%s", "z": "%s"}' % (t.xPosCm, t.yPosCm, t.zPosCm)
            finds += ']}'
            conn.sendall(str.encode(finds))
            conn.close()
            
            WalabotAPI.Stop()
            WalabotAPI.Disconnect()

2. 위치 데이터 파싱 및 저장 (Node-RED 함수 노드)

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda

raw = msg.payload.toString('UTF-8');
j = JSON.parse(raw);
var msg1 = { payload: raw };
var msg2 = { payload: j };

if (raw.length > 20) {
    X = msg2.payload.targets[0].x;
    Y = msg2.payload.targets[0].y;
    Z = msg2.payload.targets[0].z;
    global.set("X", X);
    global.set("Y", Y);
    global.set("Z", Z);
    var msg3 = { payload: X };
    var msg4 = { payload: Y };
    var msg5 = { payload: Z };
}
return [msg1, msg2, msg3, msg4, msg5];

3. 알렉사 명령 처리 (Node-RED)

스마트 3D 센서: 아마존 에코 음성 제어 램프 – Walabot & LattePanda

node-red-contrib-alexa-local 노드로 알렉사 명령 수신 → 전역 변수(X,Y,Z) 기반으로 위치 판단 → 해당 릴레이 핀 제어 명령 아두이노로 전송

참고 사항

코드 저장소

https://github.com/rondagdag/smart3DSensorForAlexa

제조공정

  1. 라즈베리 파이 3에서 컴퓨터 비전으로 SmartThings 모션 센서 만들기
  2. 라즈베리 파이용 DIY 적외선 모션 센서 만들기 – 단계별 가이드
  3. 스마트 쓰레기통: 자동화된 폐기물 관리를 위한 셀룰러 IoT 솔루션
  4. 라즈베리파이와 파이썬으로 아마존 알렉사로 크롬캐스트 제어하기
  5. 스마트 트래픽 라이트: IoT로 구동되는 적응형 가로등 시스템
  6. 라즈베리 파이 장애물 회피 로봇 만들기 - 초보자 가이드
  7. 스마트 펜: 라즈베리파이와 IMU로 실시간 필기·모션 추적
  8. 전문가들이 밝힌 선도적 스마트 텍스타일 혁신: 발열 의류
  9. 스마트 텍스타일용 초고감도·내구성 변형 센서 혁신
  10. 혁신적 초박막 센서, 스마트 콘택트렌즈 기능 강화