:::: MENU ::::
Browsing posts in: Open Source Hardware

임베디드보드에서 트위터하기 2 – 아두이노를 이용한 트위터

이전에 올린 임베디드보드에서 트위터하기의 2번째 버젼으로 아두이노를 이용해서 트위터하는 방법에 대한 분석자료입니다.
관련 자료: http://www.arduino.cc/playground/Code/TwitterLibrary
역시 proxy 사용해서 구현을 하고있는데 이전의 Supertweet.net 보다는 간단한 것 같지만, 테스트를 해보니 단점은 같은 내용의 메시지를 연속해서 보내면 에러가 난다. 아마도 스팸성 트윗을 걸러내기 위한 조치 같네요.

먼저 http://arduino-tweet.appspot.com/ 에 접속을 해서 사용하는 트위터 아이디의 토큰을 받는다.
이 토큰은 아래 소스에서 사용이 된다.

트위터 라이브러리 소스

#define LIB_DOMAIN “arduino-tweet.appspot.com”

bool Twitter::post(const char *msg)
{
 DNSError err = EthernetDNS.resolveHostName(LIB_DOMAIN, server);
 if (err != DNSSuccess) {
  return false;
 }
 parseStatus = 0;
 statusCode = 0;
 if (client.connect()) {
  client.println(“POST http://” LIB_DOMAIN “/update HTTP/1.0”);
  client.print(“Content-Length: “);
  client.println(strlen(msg)+strlen(token)+14);
  client.println();
  client.print(“token=”);
  client.print(token);
  client.print(“&status=”);
  client.println(msg);
 } else {
  return false;
 }
 return true;
}

위 소스에서 보듯이 먼저 arduino-tweet.appspot.com에 80 port로 접속을 한후 메시지를 보내는 형태인데, 실제 보내지게 되는 메시지는 다음과 같다. (* 아래 토큰은 남용을 방지하기 위해 임의로 바꿈)

POST http://arduino-tweet.appspot.com/update HTTP/1.0
Content-Length: 79

token=3737638B3-rfAUaR3oPmUZdhVXwpK3xSqBON6BBMVNWgsoqUaD&status=Hello, World 1!
Content-Length는 token의 길이 + 메시지의 길이 + 나머지 문자 14 바이트의 문자(token=과 &status=)이며, 실제 메시지는 &status=이후에 들어간다. 여기서는 Hello, World 1!


문제는 이런 트윗의 내용이 암호화가 되지 않고 전송이 되므로 Wireshark같은 스니퍼로 패킷을 잡으면 내용이 그대로 노출이 된다. 아무튼 임베디드 보드에서도 간단히 트위터를 사용이 가능하다.



Pachube 인수되다…

지난번 유럽방문시 영국의 펍에서 잠시 Pachube(발음은 patch bay)의 CTO를 만났는데,

올 7월에 이 회사가 LogmeIn사(Nasdaq:LOGM)에 인수 됐습니다 ($15M). 날짜상으로 바로 저희가 만난 직후네요.

Pachube의 블로그상에는 이것을 “Pachube just got some rocket fuel!” 이라고 표현을 하고 있습니다.

LogMeIn상의 공식 press release 자료: https://investor.logmein.com/releasedetail.cfm?ReleaseID=592763



Pachube(pachube.com)는 IoT를 지향하며, 기기들의 real time data를 웹상에서 보여주는 서비스를 제공합니다.

이를 지원하는 기기들도 상용제품에서 arduino까지 다양하며, 앱도 지원을 하고 있습니다.


이중 Nanode는 Ken이 만든 보드입니다.
OggCamp에서 발표하는 Ken: Nanode – An Open Hardware Success Story




현재 웹페이지상에는 67,010여개의 디바이스가 연결이 되어 있는 것으로 나와 있으며,

각종 자료에서는 향후 10년이내에 인터넷에 연결된 디바이스가 50~60 billion 개가 될이라고 전망하는 가운데,

IoT를 지향하는 작은 기술 벤처가 M&A되는 사례라고 할 수 있을 것 같습니다.

LogMeIn사는 Pachube의 어떤 메리트를 보고 인수를 했을까요?

기술? 아니면 현재 서비스를 하고 있는 6만여개의 고객의 가능성?


Arduino Education


아두이노가 Store, Labs에 이어 Education이라는 카테고리를 만들었습니다. http://scuola.arduino.cc/en
교사를 위한 공간이지만 반드시 교사일 필요는 없고, 기존의 커뮤니티 처럼 모두가 참여할 수 있는 구조입니다.
아직 베타버젼이어서 현재 한 20 명정도가 참여하고 있는데, 활성화가 되면 이들의 커뮤니티 확장이 가속도를 내는 것 같습니다.


최근 Lesson중 하나인 아두이노 이더넷 관련 내용 한번 보시죠.



최신 보드인 Arduino Ethernet은 W5100이 메인 보드에 default로 들어가 있고, USB가 빠졌습니다. 대신 작은 USB to Serial 보드로 연결해서 툴과 연결을 합니다.

최근에 Arduino의 멤버인 Banzi가 Getting Started with Arduino의 2nd 버젼도 거의 완성이 됐다는 트윗도 있습니다.

@bjepson(Brian Jepson)은 OReillyMedia의 에디터…



SDCC putchar 버그 수정

지난번 포스팅때 8051 무료 컴파일러인 SDCC를 소개했었고, 이를 이용해서 W7100 TCP loopback 코드까지 만들어 봤었다.
이미 그때도 printf가 잘 안되어서 이상하다고 했었는데, 이번에 telnet 코드를 포팅하면서 문제를 해결했다.
문제는 SDCC 컴파일러가 제대로 C 코드를 ASM으로 변환을 해주지 못하는게 원인… 역시 무료 컴파일러라서 그런가???

void putchar (char c) 
{
  SBUF = c;
  while(!TI);
  TI = 0;
}

위 putchar 함수가 어셈으로 변환된 코드를 보니 TI = 0 을 CLR TI 로 변환을 하지 않네요.
그래서 다음과 같이 inline assembler를 사용해서 수정을 하니 잘 동작을 합니다.

void putchar (char c) 
{
 SBUF = c;
 while(!TI);
__asm 
 clr TI
__endasm;
}

W7100A에 telnet server code를 SDCC로 포팅한 코드로 첨부.

cfile29.uf.181ED1344DE5F44423398E.zip



이젠 오픈소스 하드웨어가 대세

지난 5월 10~11일 구글 I/O 2011 행사에서 구글이 아두이노를 AOA(Android Open Accessory)로 지정한 것은 큰 뉴스거리중의 하나였다. 당연히 이를 통해 아두이노팀이 가장 큰 이득을 보게 될 것이고, 칩 업체로는 아두이노 보드에 MCU로 사용되는 AVR 덕분에 Atmel이 가장 큰 덕을 보게 될 것이다.

이제는 칩 벤더들도 이 오픈소스 하드웨어를 간과하지 않고 있다.

일례로 NXP의 경우 mbed, TI의 경우 Beagleboard를 지원하고 있다.

하지만 최근 마이크로칩이 아두이노 보드와 호환되는 즉 클론 보드를 공개했다.

이름은 chipKIT.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2095&param=en553910

어찌 보면 대형 칩 업체로서 자존심이 상할 법도 한데, 철저하게 아두이노의 사용자들을 자신들의 것으로 끌어오기 위한 전략이 엿보인다.

즉 Hardware, Software, 개발툴을 호환이 되게 만들고, PIC32 라는 32bit를 내세워서 8bit의 아두이노와 경쟁을 하고 있다.

마이크로칩에는 이미 8bit, 16bit 칩이 있음에도 불구하고 32bit 칩을 사용한 것은 전략적인 결정이며, 이름도 Uno32, Max32로 붙여서 아두이노 Uno보드와 Mega2560 보드를 연상하게 하며, 가격도 각각 $3, $15 싸게 내놓았다.

즉 한마디로 성능도 좋고, 가격도 싸다는 것..

얼마나 빨리 아두이노의 사용자들을 마이크로칩이 끌어올지 궁금하네요.

참고로 판매는 마이크로칩과 Digilent라는 회사에서 하고 있습니다.

http://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,892&Cat=18

 

 



Spinneret Web Server 보드 사용기

Spinneret의 뜻은 (동물) (거미·누에 등의) 방적 돌기 ((실이 나오는 구멍))… 보드에 뒷면에 거미와 거미줄 그림이 있다….


이 보드는 Parallax(www.parallax.com)사의 Propeller칩과 Wiznet(www.wiznet.co.kr)의 W5100이 내장된 웹서버 보드이다.
웹서버 어플리케이션을 위해 mSD카드도 장착이 되어 있다.
Open Source Hardware 플랫폼을 지향하기 때문에 모든 자료들은 웹상에 오픈이 되어 있다.
하지만 Propellar칩은 코아가 8개가 들어간 병렬칩으로 좀 생소하기 때문에 익숙해 지기까지는 좀 시간이 걸릴 것 같다.
각 코아는 Cog라고 불린다. 아래 그림 참고..


일단 필요한 것은 개발툴 및 메뉴얼을 http://www.parallax.com/tabid/832/Default.aspx 에서 다운받아서 설치를 하는데, 컴파일러  Propeller/Spin Tool Software v1.2.7 (R2) 를 다운 받아서 설치를 하면 serial terminal 및 메뉴얼까지 설치가 된다.


Spinneret Web Server 보드 관련 자료는
http://www.parallax.com/Store/Microcontrollers/PropellerDevelopmentBoards/tabid/514/ProductID/710/List/0/Default.aspx?SortField=ProductName,ProductName  에서 다운로드하면 된다.

Spinneret Web Server Docs (.pdf)

cfile8.uf.134EAE4F4DAD6D0026BE33.pdf


Spinneret Schematic (.pdf)

cfile8.uf.1647D44F4DAD6D183786D9.pdf


WIZnet W5100 SPI Driver (OBEX) http://obex.parallax.com/objects/614/ 에서 다운로드


Prop Plug : FTDI의 USB to Serial 칩이 내장된 모듈 보드


전원을 J6의 2,3번에 5V를 입력하면 보드가 동작을 하고, 설치된 컴파일러에서 바이너리를 J2에 연결된 Prop plug를 통해 다운로드하면 된다.


동작하는 시리얼 터미널 프로그램.