레이블이 iOS인 게시물을 표시합니다. 모든 게시물 표시
레이블이 iOS인 게시물을 표시합니다. 모든 게시물 표시

2015년 8월 20일 목요일

Blynk를 사용해 아두이노에서 IoT 맛보기

Blynk (http://www.blynk.cc)를 사용하면 아두이노를 스마트폰이나 PC와 연결하여 매우 쉽게 제어가 가능해진다. 물론 아두이노 뿐 아니고 ESP8266이나 Raspberry Pi등에서도 사용이 가능하다. 현재 사용할 수 있는 하드웨어 목록은 http://community.blynk.cc/t/hardware-supported-by-blynk/16 에서 확인할 수 있다.


여기서는 아두이노 우노에 CC3000 Wifi shield를 사용해 보도록 한다.



먼저 CC3000 Wifi shield를 위해 Adafruit_CC3000 Library를 설치해준다. https://github.com/adafruit/Adafruit_CC3000_Library 에서 다운받을 수 있다. (라이브러리 설치 방법은 이전 포스트 (http://arsviator.blogspot.kr/2015/07/install-library-in-arduino.html)

다음은 Blynk 라이브러리를 설치해 줘야 한다. https://github.com/blynkkk/blynk-library 에서 다운받으면 된다.

정상적으로 설치를 완료했으면 아두이노를 재시동하고 예제 -> Blynk -> BoardsAndShields 에서 CC3000을 선택한다.


코드 구조는 매우 간단하다. 단 코드중에 아래 표시한 부분은 각자 자신에 맞게 변경해 줘야만 한다.


일단 여기까지 진행하였으면 아두이노는 일단 잠시 놔두고 스마트폰을 설정해 준다.



Blynk 홈페이지에 보면 iOS와 안드로이드용 앱을 다운받을 수 있는 링크가 있다. 자신의 폰에 맞는걸 선택해 자신의 폰에 Blynk 앱을 설치해 준다.


앱을 실행해 서비스에 가입해주면 된다. 가입 후 로그인 되면 다음과 같은 초기화면을 볼 수 있을 것이다.


Create New Project를 눌러 새 프로젝트를 생성한다.


프로젝트 이름(여기서는 FirstTest)을 써주고, 사용할 보드(여기서는 아두이노 우노)를 선택한다. 그 아래쪽의 Auth Token이 아두이노 스케치 코드에 넣어줘야 하는 값이다. E-mail 버튼을 누르면 가입시 사용한 메일주소로 이 토큰값이 메일로 보내지기 때문에 메일에서 복사해 붙이면 된다. 이제 Create Project 버튼을 눌러주면 프로젝트가 만들어진다.


이제 화면을 디자인해야 하므로 화면 검은색 부분중에 원하는 부분을 터치한다.


그럼 위와 같이 설치할 수 있는 위젯 목록이 나타난다. 여기서는 단순히 아두이노에 있는 LED on/off를 제어하기 위해 Button을 선택한다.


원하는 위치에 버튼이 추가되었다. 이제 버튼의 설정을 변경해 주기 위해 버튼을 터치한다.


버튼 설정 화면이다. 여기서 버튼의 이름(여기서는 LED)을 지정하고, 이 버튼이 아두이노의 어떤 핀과 연동될 것인지 알려준다. (아두이노 보드에 붙어있는 LED는 D13에 연결되어 있으므로 Digital에 D13을 선택)


설정이 끝나면 스위치의 이름과 연동된 핀 번호가 스위치에 표시된다. 디자인이 다 끝나고 실제 동작을 시키려면 맨 오른쪽 위의 삼각형 버튼을 선택해주면 된다.


아두이노 코드에 Auth Token 값을 넣어주고, setup() 함수에 pinMode(13, OUTPUT); 을 추가한 다음 아두이노에 업로드 하면 된다.

업로드 후 시리얼 모니터를 열어봤을 때 다음과 같이 출력되면 된다.


이제 스마트폰의 버튼을 눌러보면 그에 따라 아두이노의 LED가 on/off 되는걸 볼 수 있을 것이다.

Blynk에는 단순히 스위치 뿐 아니고 슬라이드, 조이스틱, 그래프등의 다양한 위젯이 있어 스마트폰에서 아두이노에 연결된 액츄에이터를 제어하거나, 반대로 아두이노에 연결되어 있는 센서들의 상태를 다양한 방법으로 확인이 가능하다. 또한 Push notification이나 Twitter 위젯도 있어 아두이노가 특정 상태가 되면 폰으로 push 메시지를 보내거나 트위터에 메시지를 트윗하는것도 가능하다. 다음 포스트에서 blynk를 좀 더 다양하게 사용하는걸 다뤄보도록 하겠다.

























2015년 3월 11일 수요일

TI SensorTag

Bluetooth Low Energy(BLE)를 테스트 하기에 가장 좋은 장비중에 하나가 TI에서 나온 SensorTag이다.


저렴한 가격($29)에도 불구하고 믿을수 없을만큼 다양한 센서가 장착되어 있어 여러가지 테스트를 해 볼 수 있다. 그리고 CR2032 배터리 하나로도 몇달 이상 동작할만큼 저전력으로 동작한다.

TI의 CC2541을 사용하고 있고 총 6종류의 센서와 2개의 푸쉬버튼 스위치를 가지고 있다. 장착되어 있는 센서의 종류는 다음과 같다.
  • TMP006 - IR Temperature sensor (비접촉으로 물체의 온도를 측정)
  • C953H - Barometric Pressure sensor (기압 측정)
  • MAG3110 - Magnetometer (3축 디지털 컴파스)
  • IMU3000 - MEMS Gyroscope (3축 자이로스코프)
  • KXTJ9-1007 - Accelerometer (3축 가속도 측정)
  • SHT21 - Humidity sensor (온습도 측정)




쉽게 사용해 볼 수 있도록 iOS, Android용 앱도 나와있고, SensorTag를 사용하는 프로그램을 쉽게 만들 수 있도록 스마트폰 앱에서 접속에 필요한 소스코드 부분을 자동으로 생성해주는 기능까지 가지고 있다.





 그리고 앱에서 SensorTag에 설치된 펌웨어를 OTA로 업데이트 하는것도 가능하다.

좀 더 상세한 내용은 TI의 SensorTag User Guide 를 참고하면 된다.

다음번 포스트에서는 인텔 에디슨에서 SensorTag에 연결해 센서의 값을 읽거나 푸쉬버튼을 누른것을 통보받는등의 기능을 실험해 보도록 하겠다.

에디슨에서 SensorTag 사용하기



2015년 1월 24일 토요일

OSC(Open Sound Control) in Intel Edison - part 2

이전 포스트(OSC(Open Sound Control) in Intel Edison - part 1)에서 에디슨에서 OSC를 사용하기 위해 필요한 liblo, pyliblo를 설치하는 방법을 설명했다.

이제 실제로 OSC를 통해 메시지를 주고받아 보겠다. 여기서는 TouchOSC를 사용했는데 다른 OSC 클라이언트(mrmr 등)를 사용해도 상관없다.


TouchOSC를 실행하면 아래와 같은 설정화면이 뜨게 된다.


여러개의 샘플 레이아웃이 들어있지만 여기서는 Simple 을 사용한다. Connections의 OSC: ... 부분을 클릭해 OSC 서버의 네트웍 정보 (여기서는 에디슨의 네트웍 정보)를 넣어줘야 한다.


에디슨의 Host 에는 무선랜 IP 주소를, Port (outgoing)에는 에디슨에서 실행한 OSC 서버 프로그램 포트번호를 넣어주고 Enable을 On으로 해 주면 된다. 설정을 다 입력했으면 왼쪽 위의 '< TouchOSC' 를 눌러 초기화면으로 돌아간다.


이제 모든 설정이 끝났으니 오른쪽 위의 'Done'을 눌러 Simple 레이아웃 화면으로 넘어간다.

현재 화면에는 5개의 슬라이더(또는 fader)와 4개의 토글 버튼이 있다. 슬라이더를 움직여 값을 바꾸거나 (0.0~1.0), 토글 버튼을 눌러 값을 0.0 또는 1.0으로 바꿔 줄 수 있다. 값에 변화가 생길 때 마다 지정된 OSC 서버에 OSC 메시지가 전송되게 된다.


각 UI들에 해당하는 path는 위와 같이 되어 있다. 즉 왼쪽 아래 버튼을 누르면 '/1/toggle1 1.0', 또 한번 더 누르면  '/1/toggle1 0.0'이란 메시지가 전달된다.

이제 실제 메시지를 확인해 보도록 하겠다. Liblo가 설치되었다면 다음 명령을 실행하고 TouchOSC 화면의 슬라이더를 움직이거나 버튼을 눌러보면 전달되는 메시지가 화면에 출력된다.

# oscdump 9001
/1/fader1 f 0.004219
/1/fader1 f 0.012658
...
/1/fader1 f 0.109705
/1/fader1 f 0.109705
/1/toggle2 f 1.000000
/1/toggle4 f 1.000000
/1/toggle1 f 1.000000
/1/fader5 f 0.011152
...
/1/fader5 f 0.107807
^C


이제 동작하는게 확인되었으니 pyliblo를 사용해 간단한 서버 프로그램을 만들어본다.

# cat svrsimple.py
#!/usr/bin/env python

import liblo, sys

try:
    server = liblo.Server(9001)
except liblo.ServerError, err:
    print str(err)
    sys.exit()

def slide_cb(path, args):
    f = args[0]
    id = int(path.split('fader')[1])
    print "Slider%d moved to %f" % (id, f)
#    print "received message '%s' with arguments '%f'" % (path, f)

def sw_cb(path, args):
    f = args[0]
    sid = int(path.split('toggle')[1])
    if f == 0.0:
      print "SW%d turned OFF" % sid
    else:
      print "SW%d turned ON" % sid

def fallback(path, args, types, src):
    print "got unknown message '%s' from '%s'" % (path, src.url)
    for a, t in zip(args, types):
        print "argument of type '%s': %s" % (t, a)

# register method taking an int and a float
server.add_method("/1/fader1", 'f', slide_cb)
server.add_method("/1/fader2", 'f', slide_cb)
server.add_method("/1/fader3", 'f', slide_cb)
server.add_method("/1/fader4", 'f', slide_cb)
server.add_method("/1/fader5", 'f', slide_cb)

server.add_method("/1/toggle1", 'f', sw_cb)
server.add_method("/1/toggle2", 'f', sw_cb)
server.add_method("/1/toggle3", 'f', sw_cb)
server.add_method("/1/toggle4", 'f', sw_cb)
# register a fallback for unhandled messages
server.add_method(None, None, fallback)

# loop and dispatch messages every 100ms
while True:

    server.recv(100)
# chmod +x svrsimple.py
# ./svrsimple.py
Slider1 moved to 0.831224
Slider1 moved to 0.789030
Slider1 moved to 0.767932
...
SW1 turned ON
SW4 turned ON
SW3 turned ON
SW2 turned ON
SW3 turned OFF
Slider5 moved to 0.724907
Slider5 moved to 0.736059
Slider5 moved to 0.747212
^C
#

이제 mraa 라이브러리를 사용하고 slide_cb, sw_cb의 코드를 수정하면 에디슨에 연결된 LED의 밝기나 모터의 속도 제어, 가전제품의 ON/OFF 등을 스마트폰에서 바로 제어가 가능해진다.