'2016/10'에 해당되는 글 4건

Prototype/IoT Platform

1. WizFi310

image

WizFi310은 Embedded Wi-Fi 모듈로서 기본적인 TCP, UDP통신 이외에도 MQTT 프로토콜을 AT Command로 구현되어 있다.

또한 앞서 살펴보았던 IoTMakers SDK가 구현되어 있어 AT Command 몇 개로 IoTMakers에 접속하거나 데이터 전송, 제어 데이터 수신을 할 수 있다.

이번 포스팅에서는 WizFi310으로 IoTMakers에 접속하고 데이터를 보내는 방법에 대한 내용이며, IoTMakers에서 디바이스를 등록하고 대시보드를 생성하는 방법은 가이드 문서에 자세히 나와 있다.

 

EX)

AT+TKTSET1=<Gateway 연결 ID>,<Device ID>,<Device Password>

AT+TKTCON=2,<IoTMakers IP>,<IoT Makers Port>,0,1111

AT+TKTSEND=<Tag Stream Type>,<Tag Stream ID>,<Value>

 

  • AT+TKTSET1: IoTMakers에 접속하기 위해 필요한 인증 정보들이다.
  • AT+TKTCON: IoTMakers의 IP와 Port 정보를 입력하고, 실제 MQTT접속과 디바이스 인증과정을 수행한다.
  • AT+TKTSEND: 데이터를 전송할 때 사용한다.
    • <Tag Stream Type>: 숫자형은 ‘d’, 문자형은 ‘s’를 입력한다.

image

 

2. 디바이스 구성하기

 

image

 

WizFi310에 구현된 IoTMakers SDK를 활용하기 위한 디바이스를 구성했다.

개발환경은 mbed IDE를 사용했다.

보드는 Nucleo-F401RE보드를 사용했고, 센서로는 CDS 조도센서와 Tact 스위치를 사용했다. 조도 센서의 센싱 데이터를 주기적으로 IoTMakers에 보내고, Tact 스위치를 눌렀을 때 이벤트적으로 알림용 데이터를 보낸다.

 

Nucleo-F401RE보드에 대한 설명은 아래 링크를 참고.

https://developer.mbed.org/platforms/ST-Nucleo-F401RE/

 

image

image

IoTMakers_proto

핀 연결은 위와 같이 했다.

WizFi310과 연결된 UART 핀은 Tx, Rx, cts, rts, reset핀 순이다.

PA_1에는 조도센서, LED에는 PC_7, 사용자 버튼에는 PC_13에 연결했다.

 

 

3. 소스코드 설정

https://developer.mbed.org/users/jehoon/code/KT_IoTMakers_WizFi310_Example/

 

image

  • AP_SSID: 디바이스가 접속할 공유기의 SSID를 입력한다.
  • AP_PASSWORD: 공유기의 PASSWORD를 입력한다.
  • AP_SECURITY: 공유기의 보안 타입을 입력한다.(현재 WPA2로 설정됨)

 

  • IoTMakers_GW_ID: Gateway 연결 ID
  • IoTMakers_DEV_ID: Device ID
  • IoTMakers_DEV_PWD: Device Password

 

  • IoTMakers_MQTT_IP: IoTMakers의 MQTT Broker IP
  • IoTMakers_MQTT_PORT: IoTMakers의 MQTT Broker Port

 

  • DELAY_SEND_TIME_MS: 주기 데이터를 전송할 주기(milliseconds)

 

4. 소스코드 메인 loop

image

메인 loop에서는 AP에 접속, IoTMakers에 접속 하는 과정과  주기적으로 센싱 데이터 전송(Periodic_Event())와 사용자 버튼 이벤트(Button_Push_Event()), 제어 신호를 프린트 하도록 구현되어 있다.

 

5. AP에 접속

image

 

 

6. 데이터 전송

image

주기 데이터(illumination, 숫자형)과 버튼 푸시 데이터(switch, 문자형)

 

7. 제어 데이터 수신

image

제어 데이터를 수신했을 때, IoTMakers의 oneM2M 포맷으로 프린트 한다.

snsnTagCd: Tag Stream ID

strVal: 문자형 제어 신호(ex: on, off)

 

 

8. 대시 보드로 센싱 데이터 표현 및 제어

image

Prototype/IoT Platform

1. 프로토콜 선택

앞서 설명했듯이 IoTMakers에서는 아래와 같은 프로토콜을 지원하고 있다.

개발 환경에 따라서 JAVA를 사용할지, C를 사용할지, 아니면 아두이노를 사용할지 선택해야 한다.

 

 

기본적으로 각각의 SDK는 위와 같은 연동 구조로 되어있으며, 디바이스와 IoTMakers 사이의 접속, 데이터 전송, 제어 등을 위한 API(Application Programming Interface)가 구현되어 있다.

 

이번 포스팅에서는 C SDK의 MQTT프로토콜 가이드 문서를 통해 IoTMakers에 접속하는 방법에 대해 알아볼 것이다.

 

2. IoTMakers MQTT API

IoTMakers에 접속해 데이터를 전송해서는 위에 나타난 정도의 함수들로 처리할 수 있다. (1, 3, 6, 11, 14, 15, 17)

 

1. im_init(): 이 함수에서는 IoTMakers의 IP, Port, Gateway 연결 ID, Device ID, Device Password 등 IoTMakers에 접속하기 위한 기본 설정 과정이다.

3. im_connect(): 위의 IP, Port 정보들로 바탕으로 MQTT 연결을 수행하고, receive 핸들러를 등록한다.

6. im_auth_device(): Gateway 연결 ID, Device ID, Device Password 정보로 인증 요청을 수행한다.

11. im_send_numdata(): 숫자 형태의 데이터를 전송할 때 사용한다. 문자형은 im_send_strdata()를 사용하며, 숫자형와 문자형을 동시에 여러 개 보낼 경우 im_send_complexdata()를 사용한다.

14. dataresp_handler(): (3)에서 등록한 receive 핸들러로 수신된 데이터를 확인할 수 있다.

15. im_disconnect(): mqtt disconnect함수

17. im_release(): 메모리 할당 해제

 

함수에 대한 자세한 사용방법이나 예제 소스코드는 가이드 문서를 참고하세요.

http://iotmakers.olleh.com/openp/assets/files/C_SDK_manual_MQTT_2.2.0.pdf

Prototype/IoT Platform

 

 

1. IoT Makers란..

 

국내 통신사들이 IoT 관련 활발해지면서 각 통신사마다 IoT Platform을 내놓고 있다. 그 중 KT에서는 IoT Makers라는 이름으로 IoT Platform을 개발하고 제공하려 하고 있다.

사이트 주소 :  http://iotmakers.olleh.com/

 

 

 

2. IoT Makers 특징

KT의 IoT Makers의 특징은 아래와 같다.

 

  • IoTMakers에서 현재 사용 가능한 프로토콜은 TCP+oneM2M과 MQTT+oneM2M이다. 사설 프로토콜도 사용 가능하다고 되어있는데, 이 점은 테스트해봐야 할 것 같다..
  • 가상 디바이스 시뮬레이터는 센서 디바이스 없이 어플리케이션을 개발하려고 할 때, 가상의 센싱 데이터를 만들 때 사용한다.
  • 다른 IoT Platform 들과 마찬가지로 대시 보드로 데이터를 모니터링 할 수 있다.
  • 사용해보면서 느낀 KT IoTMakers 만의 특징이라고 한다면 GUI 기반의 이벤트 생성이다. 아래 그림처럼 직관적으로 이벤트를 생성할 수 있다.

 

 

3. IoTMakers에 접속하고 데이터 전송하기

디바이스가 IoTMakers에 접속하고 데이터를 전송하거나, IoTMakers로 부터 제어신호를 수신하기 위한 방법은 아래와 같다.

IoTMakers에서 제공하는 SDK(Software Development Kit)은 위와 같다. JAVA SDK에는 TCP, HTTP, MQTT, CoAP 통신 프로토콜이 포함되어 있다. JAVA SDK는 아무래도 어플리케이션 개발에 사용되기 때문에.. 별로 관심이 없다.

C SDK에는 TCP와 MQTT 프로토콜을 제공하고 있으며, 아두이노 용 SDK도 배포 중이다. 아두이노 용 SDK는 기본적으로 C-TCP와 동일한 TCP+oneM2M 구조로 되어 있으며, 임베디드 용으로 구현되었기 때문에 JSON Library 등 utility의 사이즈를 줄이기 위해 심플하게 구현되어 있는 것이 차이점이다.

 

SDK 들 중 사용자의 환경에 맞는 SDK를 사용하면 아래처럼 IoTMakers에 데이터를 전송하고 제어신호를 수신할 수 있다.

 

hobby/FASTWHEEL F0

FASTWHEEL F0의 전원이 켜지지 않는 증상이 발생했고, 수리했던 과정을 생각나는데로 정리했습니다.

테스트&수리하는 과정에서 사용했던 장비들은 (멀티미터, 납땜세트, 파워서플라이 2대, 드라이버)를 사용했으며, 수리하시려면 최소 납땜세트(인두기, 납 등등)과 멀티미터, 드라이버 정도는 가지고 있어야 할 것 같습니다.



1. 증상

FASTWHEEL F0 구매 후 100km 정도 주행하던 중 배터리와 본체 체결하는 부분에서 타는 냄새가 나기 시작했고, 결국 며칠 후 전원이 켜지지 않는 증상이 나타났다. 주행 도중 갑자기 전원이 꺼지더니 다시 전원을 켜려고 해도 아래 영상과 같은 증상을 보이며 전원이 켜지지 않았다.





2. 확인해보았던 부분.

우선 배터리 문제인지 본체의 문제인지 확인해 볼 필요가 있었다. 배터리가 문제라면 구매했던 배대지를 통해서 FASTWHEEL에 정식 A/S를 요청하려고 했고, 본체의 문제라면 국내 사설 A/S센터에서 해결보려고 했다.(배송비 이슈 때문에..) 


먼저 배터리 확인.. 아래 본체와 배터리가 연결되는 쇠 부분이 끊어지는 사례가 종종 있었기 때문에 먼저 확인..-> 이상없어보임



두번째로배터리에서 전원이 제대로 나오고 있는지를 멀티미터로 찍어보았다. -> 41.1V가 출력되고 있는것 확인.





배터리 확인결과 이상이 없어보였다... 아니길 바랬던 본체의 문제로 보임.. 그래도 확인을 위해서 파워서플라이 2대로 40V 전압을 만들어 본체에 직접 넣어보았다..


역시나... 동일한 증상을 보이며 전원이 켜지지 않았다.. 본체 문제임이 확실시 되었다..







3. 분해

처음에는 어디가 고장인지도 모르고 어떻게 분해해야 하는지도 몰랐기 때문에 육각렌치로 풀 수 있는 것들을 다 풀어보고 쓸대없이 T바도 분해해서 쓰로틀 재조립에 몇시간을 투자하기도 했다..

결국 메인 회로가 있는 곳을 여는 방법을 알게 되었고 열어보니 흰색 실리콘 위로 조금 그을린 듯하게 약간 노랗게 되어있었다..

여는 방법은 파란색 박스친 부분으로 일자 드라이버 같은 것을 넣고 들어올리면 된다.

배터리와 연결되는 쇠부분을 롱노즈로 잡아 당기는게 더 잘 빠진다.



탄 냄새의 원인..


회로 뒤쪽으로 플라스틱이 열에의해 녹은 흔적도 보인다..






4. 부품 구하기

결국 소자 하나가 타버려서 그동안 탄 냄새도 났고, 전원도 켜지지 않았던 것이었다. 여기서 또 한번의 고민은.. 소자 하나만 갈아 끼웠을 때 정상동작을 할 것인가.. 추가적인 문제는 없는가 하는 것이다.. 그래도 일단은 갈아끼워보기로 했다.


확인 결과 타버린 부품은 MOSFET이고 부품명은 50P06-15L 이라고 적혀있었다. 이 부품은 SUD50P06, SQD50P06, SQM50P06 등등 종류가 여러가지였다... 별 차이는 없겠지만 그나마 DATASHEET의 특성을 보고 숫자 높은걸로..ㅋㅋ 구매했다.


내가 구매했던 부품 - http://www.icbanq.com/P007314660/S


 그런데 여기서 실수했던 점은 위의 모든 부품들이 사이즈가 동일할 것이라는 착각이었다. 이 부품은 패키지 사이즈가 TO-252, TO-263 두 종류의 사이즈가 존재했다.. 이걸 배송 받고 나서 알게됨... 나는 SQM50P06-15L로 TO-263 사이즈로 구매했는데.. 제거한 MOSFET에 비해 너~~무 큼ㅋㅋㅋ


아래 빨간색 mosfet이 f0에서 사용된 것이고, 파란색 mosfet이 내가 구매한 제품.. 작은 사이즈 부품으로 하나 더 구매하긴 했는데.. 해외 배송 상품이라 배송기간이 1주일 정도 걸리기 때문에.. 그냥 큰 사이즈 mosfet으로 달아보기로 했다..





5. 납땜하기


납땜하기 전에, 최대한 탄 부분을 긁어냈다. 끝이 뾰족한 것으로 긁어내면 되는데, 주의할 점은 PCB의 패턴이 날아가지 않도록 주의해야 한다.



납땜이 완료된 모습.. MOSFET이 너~~무 크다.. 사이즈가 크다고 성능이 더 좋아진건 아닌데... 납땜을 하고 꼭! 확인해 보아야 할 부분은 쇼트된 부분이 있는지 체크해 보아야 한다. 나 같은 경우에는 MOSFET이 크기 때문에 주변 패턴과 쇼트된 부분이 있는지 멀티미터로 확인해 보았다.





6. 켜보기


쇼트 유무를 확인 후 다시 조립해서 전원이 켜지는지 확인해보았다.. 이때가 정말 떨렸다. 그래도 다행히 전원이 켜지고 정상작동하게 되었다.











1
블로그 이미지

IoT 개발자 블로그이고 싶다.

1byte