May 162017
 

RFLink gateway

RFLink RF gateway의 치명적 단점은 Serial 통신만 지원한다는 것이다. Arduino Mega의 USB포트를 이용하면 USB to Serial converter를 통해, 혹은 Arduino Mega의 Serial 포트를 통해 통신해야한다. Wireless를 지향하는 내 관점에서 이것은 치명적이었다. 할 수 없이 뭔가를 해야 했다.

Serial to Websocket

RF 신호가 올 때만 메시지를 보내는 방식 때문에 뭔가 “비동기”적인 방식을 사용해야 했다. MQTT말고 다른 걸 해보고 싶어 웹소켓을 골랐다. ESP8266 보드에 웹소켓 라이브러리를 넣어서, serial 포트에서 데이타가 들어오면 웹소켓으로 broadcast해 주면 될 듯 했다. 문제는 ESP8266을 한번도, 아니 arduino 조차도 한번도 제대로 해본적이 없다는 점이었다. 그래서 초보에게 쉬운 보드를 찾아보았다. Witty Cloud Development board를 알리익스프레스에서 USD 3.45짜리 2개를 구입했다. USB to serial 컨버터 내장에, 5v를 3.3v로 변환도 해주니 ESP8266에 처음 발들여 놓는 나에게 적당해 보였다. 이 때까지만 해도, 1 ~ 2 시간이면 되겠지 하는 자만심에 빠져 있었다.

삽질의 시작 CH340G USB칩

안 그래도 알리익스프레스에서 구한 저렴한 arduino mega 2560 때문에 머리가 아픈 상황이었다. osx 10.9.5 상태에서 아무리 해도 드라이버가 인식되질 않는 것(윈도우에서는 드라이버 설치시 잘 동작해서 RFLink 펌웨어를 올릴 수 있었슴)이었는데, 아차차 Witty Cloud Development board도 같은 칩을 사용한다는 걸 미리 체크하지 못한 것이었다.

현재 시점에서 CH340G의 osx용 드라이버는 V1.4인데, osx 10.9.5 에서는 이걸 깔면 안된다. V1.3을 깔아야 하는데, 이외에도 usb 케이블 길이에 따른 이슈도 있었다. 가지고 있던 스마트폰 충전용 케이블을 사용했더니 부팅 후 자동으로 종료되는 문제가 발생해서 여러번 시도해보았다. 2시간여를 끙끙대다가 혹시나 싶어, 가장 짧은 케이블을 꽂고 했더니 그제서야 인식이 되었다. 일단 드라이버가 제대로 설치된 이후로는 arduino mega 2560도 긴 usb 케이블을 가지고서도 잘 인식이 되었다.

Arduino IDE로 esp8266 개발 환경 설정 및 라이브러리 설치

Board Manager

ESP8266

  • Arduino 재시작
  • Witty cloud 보드의 아래쪽 보드(ESP8266MOD칩이 없는 보드)에 달린 usb를 pc에 연결
  • Tool – Board
    • WeMos D1 R2 & mini를 선택
    • Port에서 /dev/cu.wchusbserial410 선택
    • Upload Speed에서 57600 선택
  • 필요한 추가 라이브러리 – ArduinoWebsockets하고 WifiManager 설치
    • Sketch – Include Library – Manage Libraries.. 클릭
      • websockets 검색 후 나오는 목록 선택 후 2.X.X 선택 후 설치
      • wifimanager 검색 후 나오는 항목 설치

라이브러리 설치

Websocket for RFLink gateway

  • github에서 Serial to Websocket 예제를 찾은 후 ip대신 이름으로 접근하게 해주는 mDNSOTA 펌웨어 업데이트가 가능하도록 간단히 수정했다. 최종 소스는 여기서 다운 받을 수 있다.
  • Verify 혹은 Upload 실행 후 후 보드의 Flash 버튼 눌러서 펌웨어 업로드하면 되는 데 빌드가 끝날 때쯤해서 Flash버튼을 누르고 있다가 업로드가 시작되면 버튼에서 손을 떼도 된다.
    • 아무리 해도 안되는 경우에는 usb 케이블을 뺀 후 Flash 버튼을 누른 채로 usb 케이블을 연결 후 Upload해서 업로드가 시작된 후 버튼에서 손을 떼면 된다.
  • 이제 Witty cloud 보드에서 하단 보드를 빼고 상단보드만 아두이노에 연결하면 된다. esp8266 자체는 3.3V 기반이지만, Witty cloud 보드는 5V를 3.3V로 바꿔서 사용하므로 VCC에 5V를 넣어줘야 한다는 것이다. 혹시 보드상의 esp8266에 직접 연결시에는 3.3V를 넣어줘야 한다.
    • 아두이노 RX –> 상단 보드 TX
    • 아두이노 TX –> 상단 보드 RX
    • 아두이노 5V –> 상단 보드 VCC
    • 아두이노 GND –> 상단 보드 GND

Witty cloud board pinout

  • Chrome extension Simple WebSocket Client 설치해서 입력(소스에 입력한 명칭을 사용) 후 open 버튼 눌러서 RFLink gateway에서 메시지를 받을 수 있는지 확인해 본다.
  • 웹브라우저로 http://rflink.local/update (소스에 입력한 명칭을 사용) 접속해서 펌웨어 업로드도 가능하다.
May 072017
 

Google Assistant SDK preview

최근 기다리던 반가운 소식을 들었다. Google Assistant SDK가 드디어 release 되었다. Preview이긴 하지만 어쨌든 구글이 경쟁자들보다 한 걸음 더 나아가려는 행보임이 분명했다. 새로운 Ecosystem을 만들어서 온 세상에 Google Home을 퍼뜨리려는 것이다.

재미있는 것은 이번 Preview에 Google Assistant를 Raspberry Pi 3에 Python을 가지고 prototyping 해보는 내용이 같이 들어있는 것이다. 이후 MagPi의 부록으로 Google AIY Kit이 포함되었는데 물론 지금은 구하기가 어렵다. 서점이나 일부 인터넷쇼핑몰에서 파는 듯 한데 구하기가 쉽지 않다. 하지만 RPi3용 intruction을 가지고 Mac OS X에서 누군가 성공했기에 직접 따라해봤다.

Home Brew 설치(아직 설치안된 경우에만 다음을 실행해서 Home Brew 설치한다)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Home Brew 업데이트

brew update

Python 최신 버전 설치

만약 Python이 설치 안된 경우에는 brew install python3 실행해서 신규 설치하고, 기존에 이미 설치된 경우에는 brew upgrade python3해서 설치된 버전을 업그레이드한다(3.4 버전의 경우 인증 실패로 인해 실행이 되지 않았슴).

디렉토리 생성 및 PIP 설치
  • mkdir googlehome (아무 이름이나 상관없슴)
  • cd googlehome
  • python3 -m venv env
  • env/bin/python -m pip install --upgrade pip setuptools
  • source env/bin/activate
Google Assistant SDK sample 다운로드

sudo python3 -m pip install --upgrade google-assistant-sdk[samples]

Google cloud 개발자 계정에서 프로젝트 생성, API 활성화 및 OAuth 2.0 Client ID 생성

Download credential

구글 Home과 연동해서 사용할 사용자 계정(개발자 계정과 달라도 상관없슴)에서 Activity들을 켜줌

https://myaccount.google.com/activitycontrols 에서 다음 항목을 켜 줌

  • Web & App Activity
  • Location History
  • Device Information
  • Voice & Audio Activity
인증

python -m googlesamples.assistant.auth_helpers --client-secrets client_secret_XXXXXXXXXXXXXXXXXXXXXXXX.json (마지막 값은 다운로드한 인증서 파일명이어야 함)

Audio test

python -m googlesamples.assistant.audio_helpers

Google Assistant 테스트

python -m googlesamples.assistant

더 생각해 볼만한 것들…

이제 어떤 기기에서도 Google Assistant를 사용할 수 있게 된다. 이것은 UI 패러다임의 전환이 이제 본격적으로 퍼지게 된다는 것을 의미할 것이다. Conversational Interface는 Input 도구를 사용하기 힘들거나 곤란한거나 불가능하거나 불편한 상황에서 아주 효율적인 UI로 자리매김할 것으로 생각된다.

IoT 측면에서도 정말 유용할 것이다. 비싼 Google Home을 사지 않고도 Google Assistant SDK를 가지고 집안 IoT 제어를 말로 할 수 있게 되었다. 또한 Google Home에서 지원하지 않는 기기도, Philips Hue Emulator를 가지고 제어하거나, Node-RED에서 직접 노드를 구현해서, Google Assistant를 통해 제어 가능하게 될 수 있게 되었다. 누군가의 말처럼, 방마다 Google Home을 둘 수도…

1 2 3 4 5 6 7 8 9 10 11 12 ... 162 »