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

Arduino UNO와 ThingShield로 SmartThings 연동 IR 브리지 만들기

부품 및 소모품

부품명 수량
Arduino UNO1
SmartThings Shield for Arduino (ThingShield)1
IR 송신 LED1
IR 수신 다이오드1
100옴 저항 (선택 사항)1

프로젝트 소개

소개

일반 TV 리모컨이 SmartThings 클라우드와 연결되면 채널 변경 이상의 많은 일을 할 수 있습니다. 적은 부품 수로 즉각적인 효과를 볼 수 있어 SmartThings 플랫폼을 탐색하기에 좋은 프로젝트입니다.

Arduino와 ThingShield 배경

SmartThings ThingShield를 사용하면 Arduino로 SmartThings 프로토타입을 쉽게 만들 수 있습니다. 이 실드는 UNO에 직접 장착되어 Zigbee 프로토콜로 SmartThings 허브와 통신합니다. 실드의 스위치로 Arduino와의 통신 핀을 0,1번 또는 2,3번 중 선택할 수 있습니다. ThingShield는 6번 핀을 예약하여 사용합니다.

Arduino 시작 가이드: https://arduino.cc/en/Guide/Introduction

1단계: 필요한 부품

2단계: IR 라이브러리 다운로드

Ken Shirriff가 개발한 훌륭한 Arduino 라이브러리에 의존합니다. https://github.com/shirriff/Arduino-IRremote

일반적인 방식으로 Arduino 라이브러리를 설치하세요. https://arduino.cc/en/Guide/Libraries

설치 후, IRRemoteInt.h를 수정하여 9번 핀의 타이머를 사용하도록 해야 합니다. 이 예제에서는 ThingShield와의 통신에 3번 핀을 사용합니다.

3단계: Arduino 스케치 업로드

Arduino 보드에 스케치를 업로드합니다 (코드 섹션 참조).

4단계: 하드웨어 조립

조립은 간단합니다. 먼저 ThingShield를 Arduino 위에 장착합니다. 아래 다이어그램에는 Arduino만 표시되어 있지만, 실드 장착 시 핀 배치는 동일합니다.

IR 수신기의 해당 핀을 GND와 5V에 연결한 다음, 데이터 핀을 Arduino 11번 핀에 연결합니다. IR 송신 LED를 9번 핀과 GND에 연결합니다. 100옴 저항은 선택 사항으로, LED가 신호 전송을 위해 빠르게 점멸하므로 Arduino의 최대 전류를 감당할 수 있습니다. 지속적으로 켜두면 같은 전류로 LED가 타버릴 수 있습니다.

5단계: 커스텀 SmartThings 기기 유형 생성

SmartThings IDE에서 ThingShield용 새 기기 유형을 만듭니다.

  1. "My Device Types" 섹션으로 이동하여 우측의 "New SmartDevice" 클릭
  2. 상단에 새 기기 유형 이름 "Ir Bridge" 입력 (나중 SmartApp 코드에서 참조)
  3. 기기의 속성(Attributes)과 명령(Commands) 정의: 프로그래머블 버튼 2개와 레코드 버튼용 속성/명령 추가
  4. "Create" 클릭하여 기기 코드 작성 단계로 진행
  5. 기기 정의 코드를 IDE 코드 창에 복사 (코드 섹션 참조)
  6. "Save" 후 "Publish" 클릭하여 기기 사용 가능하게 설정

6단계: ThingShield를 새 기기 유형으로 업데이트

ThingShield가 SmartThings 허브에 추가되어 있지 않다면 먼저 추가하세요. 페어링하려면 ThingShield를 Arduino에 장착하고 전원을 공급한 뒤, 실드의 "Switch" 버튼을 6초간 누릅니다. SmartThings 스마트폰 앱에서 "Add" 버튼을 누르고 물리적 "switch" 버튼을 한 번 더 누르면 허브가 ThingShield를 인식합니다.

IDE로 돌아와 "devices"에서 본인의 Arduino ThingShield를 선택하고 "Edit" 클릭. "Type" 드롭다운에서 방금 만든 SmartDevice 유형을 선택합니다. 나중에 쉽게 식별할 수 있도록 의미 있는 레이블 이름을 부여하는 것이 좋습니다. "Update"로 기기 유형 적용.

향후 커스텀 기기 유형 업데이트 게시 시, 물리적 기기가 올바른 기기 유형과 연결되어 있는지 확인하세요.

7단계: SmartThings 앱 (SmartApp) 작성

프로젝트의 마지막 코드인 SmartApp을 작성합니다. "My SmartApps"로 이동하여 우측 버튼으로 "New SmartApp" 생성. 이름, 설명, 카테고리("My apps") 입력 후 "Create"로 코드 작성 진행.

SmartApp 코드를 복사 (코드 섹션 참조). "Save" 후 "Publish"로 SmartThings iOS/Android 앱에서 사용 가능하게 만듭니다.

SmartDevice 유형을 이름으로 참조할 때 "IrBridge"를 사용합니다 (원래 "Ir Bridge"의 공백 제거):

input "irDevice", "device.IrBridge"

이 줄로 SmartApp에서 "Ir Bridge" 유형의 기기만 선택 옵션으로 표시됩니다. 카멜케이싱 규칙: 기기 유형 참조 시 공백 제거, 첫 글자와 공백 다음 글자 대문자화, 나머지는 소문자.

8단계: SmartApp 활성화

SmartThings 스마트폰 앱에서 새 SmartApp을 IR 기기와 연동하고 제어할 스위치를 선택한 후 "Install" 클릭.

앱에서 각 버튼 프로그래밍: 타일 상세 화면(톱니바퀴 아이콘) 진입 → 큰 레코드 버튼 선택(빨간색으로 변경, 레코드 모드) → 제어할 타일(Play/Pause 또는 B) 선택(노란색으로 변경) → 리모컨을 ThingShield에 향하게 하고 원하는 버튼 누름 → ThingShield가 코드를 SmartThings 클라우드로 전송하여 선택한 버튼과 연동 → 프로그래밍된 버튼이 녹색으로 변경, 레코드 버튼은 흰색으로 복구.

이제 리모컨의 해당 버튼을 누르면 SmartApp에서 연동한 스위치가 토글됩니다.

소스 코드

Arduino 스케치 (C/C++)

SoftwareSerial, SmartThings, IRremote 라이브러리 사용. 핀 정의: LED(13), IR 수신(11), ThingShield RX(3), TX(2). 메인 루프에서 SmartThings 통신 처리 및 IR 수신 시 프로토콜 타입(NEC, SONY, RC5, RC6 등) 판별 후 SmartThings로 전송. 메시지 콜백에서 수신된 IR 코드 타입에 따라 irsend로 재송신.

기기 정의 (Groovy)

메타데이터, 타일 UI 정의(레코드 버튼, 버튼 A/B), parse()로 수신 메시지 파싱 및 레코드 모드/일반 모드 분기 처리. record(), buttonA(), buttonB(), clearLast() 함수로 UI 상태 관리 및 IR 코드 저장/전송.

SmartApp 코드 (Groovy)

IR 기기 선택, 버튼 A/B 각각에 연동할 스위치 선택. installed()/updated()에서 이벤트 구독. handleA()/handleB()에서 해당 스위치 토글 제어.

제조공정

  1. 라즈베리 파이와 파이썬으로 로봇 만들기: 완전 가이드
  2. 라즈베리 파이로 셀프 밸런싱 세그웨이 만들기
  3. 신뢰성의 인터넷(Internet of Reliability)에서 데이터 활용: 효과적 관리 전략
  4. 아두이노 나노로 물방울 고속 촬영하기 – DIY 하이스피드 포토그래피
  5. K30 CO2 센서: 실시간 실내 공기질 모니터링
  6. 1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
  7. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  8. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  9. 아두이노 클라우드 연동으로 어디서든 집 온도 모니터링하기
  10. 내일의 인력 구축: 지능형 자동화가 직원 경험을 향상시키는 방법