:::: MENU ::::
Posts tagged with: wiz820io

Fritzing에 Wiz820io 라이브러리 공식 등록

Fritzing 툴의이 최근 버젼(0.6.4)버젼부터 지난번에 제가 만든 Wiz820io가 공식 라이브러리도 등록이 되었습니다.
이번 버젼에서 눈에 띄게 달라진 점은 part 라이브러리가 각 제조사별로 브랜딩되어 있습니다.
즉 Arduino, Parallax, Sparkfun등의 탭들이 생겨서 각 제조사 별로 부품을 찾을 수 있게 되어 있네요.
제가 만든 Wiz820io는 Core Parts에 Connection 항목에 들어가 있습니다.


Maple mini 보드에서 Wiz820io 사용하기

Leaflab사의 블로그를 보고 Maple mini보드에 Wiz820io를 연결해서 테스트를 진행했다. 브레드보드가 있으니 연결은 금방한다. 예제들이 UART3를 사용하기 때문에 아래 그림처럼 RS232 트랜시버가 달려있는 쪽보드를 사용해서 시리얼을 연결했다.


H/W 연결
Maple mini보드의 Fritzing라이브러리도 만들고… 회로 연결은 아래 그림과 같다. 사실 연결할 것은 SPI 시그널과 VCC, GND 밖에 없다. 
    Maple mini Fritzing 라이브러리:


cfile4.uf.1460D83F4EE5A5580D181E.fzpz
라이브러리
아래 첨부한 파일을 Leaflab IDE의 \libraries\wizEthernet에 압축을 풀어서 넣는다.
예제 파일이 telnetServer, webServer 2가지가 있는데, 제공되는 예제가 약간 문제가 있다.
telentServer의 경우 password를 칠때는 문제가 없지만 다른 경우에 매 문자마다 echo back를 해서 이것을 수정을 했고, webServer의 경우 브라우져에서 favicon을 요청시 처리를 위해 “HTTP/1.1 404 Not Found” 페이지를 돌려주기 위한 코드를 추가 했다. 
   wizEthernet 라이브러리: 


cfile29.uf.175DF13F4EE5A4850D2B13.zip



  수정된 예제 파일:


cfile3.uf.172F71414EE5A4430F27EA.pde


cfile27.uf.17335D414EE5A4542CA563.pde




혹시 컴파일후 보드에 다운로그가 문제가 있을 경우, 이전 포스트를 참고(LeafLabs의 Maple mini, Maple Ret 5 보드 사용기)


아두이노 보드에서 W5200 사용하기

아두이노의 공식 Ethernet 쉴드에는 WiznetW5100이 사용된다. 따라서 모든 Ethernet 라이브러리는 W5100을 이용하는 것으로 되어있는데 Wiznet의 신규칩인 W5200을 아두이노 보드에서 사용하기 위해서는 라이브러리를 일부 수정을 해야 한다. W5100과 비교해서 W5200의 장점은 대략 작은 패키지, 8 socket 지원(W5100의 경우 4 socket 지원), Power down mode, Wake on LAN 기능 지원 등이다. 
    W5100 to W5200 migration guide



Hardware 연결
간단한 테스트를 위해 Wiz820io를 사용을 해서 아래 그림처럼 테스트를 했다. 아래 그림은 Fritzing 이라는 툴로 Wiz820io 라이브러리를 만든 후 작성한 연결도이다. Fritzing관련해서는 이전 포스트 참고(Fritzing, Fritzing 라이브러리 만들기)
    Wiz820io의 Fritzing 라이브러리


cfile28.uf.182202414EE59CB821A744.fzpz


* PWDN, nINT, 스위치를 통한 reset 입력은 연결을 안 해도 되고, VCC, GND도 하나의 선만 연결해도 된다.




라이브러리 수정
변경을 최소화하고 기존의 라이브러리와의 호환성을 위해 변경된 드라이버는 W5100과 같은 파일명을 쓴다. 즉 W5100.cpp와 W5100.h 파일만 수정해서 아두이노 IDE가 설치된 폴더에 덮어쓰면 된다. 즉 “/libraries/Ethernet/utility” 아래에 있는 W5100.cpp 및 W5100.h 파일을 아래 첨부한 파일로 변경하면 된다. 파일에 수정된 부분은 W5200으로 검색을 하면 쉽게 찾을 수 있다.


cfile23.uf.160404394EE5D0692C5B5D.cpp


cfile3.uf.177E62394EE5D06A33D119.h




테스트
아두이노의 IDE에서 File > Examples >Ethernet > 에 있는 예제를 열어서 컴파일 후 아두이노보드에 다운로드를 하면 잘 동작한다. 
최근에 릴리즈한 Arduini 1.0 에서는 기존 Ethernet 라이브러리가 좀 더 확장이 되었다.  http://arduino.cc/en/Main/ReleaseNotes 참고

* Support for DHCP and DNS has been added to the Ethernet library, thanks to integration by Adrian McEwen. Most classes in the Ethernet library have been renamed to add a “Ethernet” prefix and avoid conflicts with other networking libraries. In particular, “Client” is now “EthernetClient”, “Server” is “EthernetServer”, and “UDP” is “EthernetUDP”. A new IPAddress class makes it easier to manipulate those values.


* The UDP API has been changed to be more similar to other libraries. Outgoing packets are now constructed using calls to the standard write(), print(), and println() functions – bracketed by beginPacket() and  endPacket(). The parsePacket() function checks for and parses an incoming packet, which can then be read using available(), read(), and peek(). The remoteIP() and remotePort() functions provide information about the packet’s origin. (Again, thanks to Adrian McEwen for the implementation.)


Fritzing 라이브러리 만들기

Frtizing이라는 툴을 지난번에 소개한 적이 있다.  독일의 오픈 소스툴
이 툴을 직접 사용을 해봤는데, 실제 피지컬한 보드를 가지고 설계를 하는 듯한 느낌이 있고 이것을 다시 회로로 변환을 해주는 것이 흥미롭다. 전자공학을 하는 초보자들에게는 좋은 툴인 동시에 이미 많이 개발된 파트 라이브러리 덕에 문서 작업에 유용하게 쓰일 수 있다.
이미 아두이노, 아두이노 이더넷 쉴드, Xbee, mbed…등등의 파트들이 제작이 되어 있다.

자신만의 라이브러리를 만들여면 이미지 작업을 해야하는데, 이미 만들어 놓은 라이브러리를 수정해서 사용하면 좀 편하다. 이미지 파일은 벡터기반의 SVG포맷으로 만들어야 한다. 따라서 오픈 소스 툴인 InkScape를 사용하던지 상용툴인 어도비사의 일러스트레이터를 사용해야 한다. 구체적인 정보: http://fritzing.org/learning/tutorials/creating-custom-parts/

필자가 만들어본 WIZ820io Fritzing 라이브러리

아두이노 보드와 연결된 WIZ820io 회로


STM8S-DISCOVERY 보드와 WIZ820io의 연결

ST마이크로의 8비트 MCU EVB인 STM8S-Discovery 보드에 Wiznet의 WIZ820io를 SPI로 연결하여 테스트를 해보았다.

STM8S-DISCOVERY 관련자료 : http://www.st.com/internet/evalboard/product/247087.jsp
STM8S-DISCOVERY보드의 메뉴얼;

cfile7.uf.185721394EB3C4731FDE54.pdfWIZ820io 관련 자료 : http://www.wiznet.co.kr/wiz820io

1. 하드웨어 연결
SPI 신호들은 CN1, CN2에 나와 있는 SPI 신호에 연결하고, nSS, nINT, nRESET, PWDN 신호들은 각각 STM8S의 GPIOs(PA4, PA5, PA3 and PA6)에 연결이 된다.

2. Firmware
컴파일러는 Cosmic사의 CXSTM8 compiler와 ST 홈페이지에서 다운로드 받을 수 있는 STVD를 사용한다. CXSTM8 compiler는 등록을 하면 일정기간 사용이 가능하다.

3. Test
STM8S의 Application Note인 RS232 communications with a terminal using the STM8S-DISCOVERY를 참고로 시리얼 터미널 기반의 application을 만들어 보았다. 기존의 메뉴에 다음과 같이 네트웍을 설정하고 확인하는 메뉴, TCP/UDP loopback, DNS, Twitter 기능을 테스트 할 수 있는 기능을 추가했다.

Application Note:

cfile7.uf.130B70444EB3C74F2E6C98.pdf


임베디드 보드에서 트위터하기

이 블로그 포스트는 Twitter API Proxy 서비스인 supertweet.net를 이용해서 PC나 스마트폰이 아닌 임베디드 보드에서 트위터 메시지를 보내는 방법을 설명한다.
참조 사이트:mbed의 post to Twitter via SuperTweet 

먼저 트위터 아이디가 필요한데, 테스트를 위해 twitter.com 에서 ID를 하나 만들었다. EspressoDopio2. 참고로 내 트위터 아이디는 EspressoDopio

Supertweet.net 에 접속해서 docoment link에 가면 3가지 step으로 설명을 해 놓고 있다.
1. Sign UP/ Sign in now를 클릭해서 MyAuthAPIProxy가 계정 사용을 승인하도록 한다.
2. Basic Auth를 위한 패스워드를 설정한다. 이 password는 패스워드와 다르게 설정함.
이 설정이 되면 다음과 같이 Username이 나타다고 Secret 밑에 Show 를 클릭하면 내가 정한 password가 나타난다.


3. 이젠 임베디드 보드에서 트위터 메시지를 보내면 되는데, Twitter.com 대신에  http://api.supertweet.net 로 보내면 된다.
구체적인 방법은 http://www.supertweet.net/about/api 링크를 확인하면 되는데, 간단히 메시지 post하는 것을 설명하면…

 아래 예제는 curl를 사용해서 메세지를 보내는데, user:password는 위 테이블의 Username 즉 트위터 아이디가 되겠고, password는 Supertweet에서 설정한 password이다. 트위터 메시지는 “playing with cURL and the SuperTweet.net API” 이게 되겠다.

curl -u user:password -d “status=playing with cURL and the SuperTweet.net API” http://api.supertweet.net/1/statuses/update.xml
참고) cURL은 http://curl.haxx.se/ 에서 다운로드 가능. 윈도우 버젼도 있다.

실제 트위터에 메시지가 올라간 경우.


Wireshark로 실제 날라가는 패킷을 잡아보면 다음과 같다.

빨간색이 보낸 패킷이고 파란색이 받은 패킷이다.
보낸 패킷에서 2번째 줄이 Authorization인데, Basic 뒷 부분은 “Username:password” 가 base64로 인코딩되어 있고, 보낸 패킷의 마지막 부분의 status= 뒷부분이 보낸 메시지 이다.

따라서 임베디드 보드에서 이것을 구현을 하려면,
-. DNS: api.supertweet.net에 접속을 위해
-. HTTP Client
-. Base64 encoding 함수등이 구현이 되야 겠다.

구체적인 구현 결과물은 다음 기회에……