안녕하세요, "생각의 웹"입니다.
앞서 아두이노 보드와 Node.js를 이용해 RESTful Web API와 JavaScript API를 제공하는 Do IoT Yourself 프로젝트를 소개한 바 있습니다.
문득 누군가 이와 유사한 프로젝트를 이미 하지 않을까 하는 생각이 들어 'arduino rest api'로 구글링해 보았습니다.
(친절한 구글 신은 자동 완성 기능을 통해 이런 프로젝트가 존재할 것이라는 제 예상에 힘을 실어 주었습니다.)
그 결과 발견한 프로젝트가 바로 aREST - arduino REST의 축약으로 보입니다. - 입니다.
http://arest.io/
상세 내용에 앞서 이 프로젝트를 통해 가능한 데모 영상 하나 보시죠.
- REST API를 통한 아두이노 제어 가능
// 1. Connect a LED & resistor to pin number 8 of your Arduino board
GET 192.168.2.2/mode/8/o // 2. Set the pin 8 as an output
GET 192.168.2.2/digital/8/1 // 3. Turn on LED
- 다양한 아두이노 보드 지원
: Uno, Mega, Due, Yun and Teensy 3.x.
- 다양한 connectivity 지원
: USB나 XBee를 통한 Serial 통신
: CC3000 WiFi chip를 통한 HTTP 통신
: Ethernet shield를 통한 HTTP 통신
: nRF8001 chip를 통한 Bluetooth Low Energy 통신
- multicast DNS 프로토콜 지원으로 discovery 가능
: Bonjour 서비스 필요
http://arest.io/ 를 보면 arduino library, Node.js module, JavaScript client 세 프로젝트로 구분되어 있는데 각각의
코드를 상세 검토(deep dive) 해 보면 다음과 같이 요약할 수 있습니다.
- arduino library: aREST의 핵심 모듈입니다. arduino IDE 프로젝트 파일 (*.ino)로 다양한 connectivity 하에서
http server 기능을 C/C++로 구현하고 있습니다.
- Node.js module: serial 통신을 통해 연결된 arduino 보드와의 gateway server 역할
- JavaScript client: aREST의 API를 호출하는 AJAX 코드
마무~으리로 이 프로젝트의 장/단점을 정리해 보겠습니다.
- 장점
: 다양한 connectivity를 지원합니다. 필요한 요구사항에 맞춰 가져다 쓸 수 있다는 점은 매우 매력적입니다.
: 아두이노 보드(+ Ethernet or WiFi chip) 만으로도 독립된 인터넷 노드를 만들 수 있습니다.
: 통신 시 전송량이 적은 JSON respresentation를 사용합니다.
- 단점
: 보다 복잡한 기능을 추가하기 위해서는 arduino IDE를 통해 펌웨어를 업데이트해야 합니다.
아두이노 펌웨어에 올릴 수 있는 코드 용량이 한정되어 있는 것으로 알고 있기에 제한을 받으리라 보입니다.
: 제공하는 REST API의 성숙도 수준이 낮습니다.
상태를 변경시키는 unsafe 행위(e.g. LED를 켬)를 GET 명령으로 수행하고 있습니다.
앞서 포스팅한 리처드슨 REST 성숙도 모델에 따르면 Level 1에 해당하며 클라이언트 프로그래밍 시 오류를
야기시킬 수 있습니다.
: 라이센스가 GPL입니다. 상업적인 목적으로 사용하시려는 분은 GPL이 모든 소스코드와 함께 빌드 방법까지 공개해야 하는 점을 유념하시기 바랍니다.
이번 포스팅은 여기까지 입니다.
감사합니다.
'Web of Things > Internet_of_Things' 카테고리의 다른 글
아이나비 FXD5000 커넥티드로 커넥티드 카 만들기 (Making the car connected via its BlackBox being connected) (2) | 2020.06.18 |
---|---|
D.IoT.Y 적용기 - 안방 온습도 모니터링 (6) | 2014.11.23 |
사물인터넷은 어떻게 생각할 수 있게 될까? (0) | 2014.10.30 |
Open Interconnect Consortium - 열기 상호 컨소시엄 소개 (0) | 2014.10.27 |
Do IoT Yourself facebook page 개설 (0) | 2014.10.25 |