2013년 6월 19일 수요일

더 낮게 더 쉽게.. Scratch & AppInventor




얼마전 정부에서 초딩 코딩 교육 발언으로 왁자지껄해 진적이 있다. 개인적으로 머 별 감흥은 없다. 해도 그만 안해도 그만... 다소 부정적인 이유인데는 나름 이번 놀이를 하면서 느낀게 있기 때문이다. 아이들에게 필요한건 놀이지 기교가 아니다. 어떤 행위가 다음 스텝을 위한 준비 과정에 불과하다면 성인들을 그것을 견딜만한 능력과 연륜이 있지만 애들은 아니다. 무조건 현재가 즐겁지 않으면 바로 아웃이다. 어느덧 애들은 친구들 만나러 놀러 나가고 나만 홀로 돋보기 쓰고 납땜하는 모습을 발견한다.

그렇다고 여기서 물러설순 없다. 또 구글링... 대단한 놈을 찾았다. 바로

ScratchApp Inventor

둘다 MIT에 서버를 두고있다. 앞에 것은 pc 용 뒤에것은 스마트폰(안드로이드)용 개발 도구다. 둘은 거의 이란성 쌍둥이다. 사용법이 거의 같다고 보면된다. 다만 각 기기에 맞는 특별한 기능만 일부 다를뿐. 이런 걸 일석이조, 원샷투킬, 도랑치고.... 등등..



요리 생겼다. 대충 매뉴얼 없이도 이것저것 해보면서 익혀가다가 나중에 매뉴얼 읽으면 되시것다.일단 급하게 그래픽 기반의 개발툴을 찾는 신입 너드가 있어 오늘은 소개만 하기로하고..

참 정작 중요한 점..  Scratch 이게 pc 용이라 아두이노에 프로그램이 직접 안된다.. 다행히
S4A (Scratch for Arduino) 라는 놈이 여기에 숨어 있다..

http://seaside.citilab.eu/scratch/arduino


사족: 사실 scratch 때문에 아두이노에서 라즈베리파이로 갈아탈까 고민하던중 S4A를 발견했다. 아직 검증은 못했고... 그래도 라즈베리파이용 스크래치는 검증이되었고.. App Inventor 또한 대단한 물건이다.. 긴말 필요없다 일단 써보면 안다


추신: 아참 공돌이들의 사랑을 듬뿍 받고 있는 LabView. 여기에도 아두이노 Toolkit 모듈 공짜로 제공합니다.

https://decibel.ni.com/content/groups/labview-interface-for-arduino

<http://www.adafruit.com/blog/2011/07/01/labview-interface-for-arduino/>

이왕 나온김에.. Matlab 과도 연동 모듈도 있어요 (이건 놀이라기보다 노동에 가깝기 때문에 언급안하려 했는데 !!)
http://www.mathworks.co.kr/hardware-support/arduino-simulink.html

2013년 6월 16일 일요일

ATMEGA 128 and Wiring


ATMEGA 128! 오늘은 이 놈 얘기다.

원래 아들과 함께하는 놀이로 시작했는데 이놈 때문에 어려워서 좀 흥미를 잃은 눈치다. 그래도 기록으로 남기기위해서 시작해 본다.

우연히 주운 물건 (알고보니 칩이 타서 버린거였음 다행히 친절한 아저씨? 의 도움으로 공짜로 칩을 교환했음). 아마도 싸고 사용할 수 있는 I/O 가 많아 공돌이들의 많은 사랑을 받고 있나보다 (어디까지나 추측이다. 이런 종류의 물건들이 머하는건지 최근에야 알았으니깐). 기능에 비해 가격도 저렴하다. http://www.eleparts.co.kr/EPX33Y3V 참고하시고.. (이 사이트와 이해관계 있어서 링크건건 아니다. 핀번호 및 기능은 간단히 참고 하기에 좋다)

이 놈은 보시다시피 최소한의 기능만 가지고 있다. 우선 프로그램을 어떻게 집어 넣지? 부터 고민해 보자. PC 에서 프로그램을 어찌저찌하여 0-1 로 이루어진 데이터를 저기에 넣어야 무언가라도 할텐데..  우선 왕초보가 구글링하여 data sheet 를 찾아본다.


회로도 및 기능들이 설명되어 있는데 당췌 머가먼지 모르겠다. 일단 아 그렇구나 하고 다시 삽질을 시작한다. 다행히 "AVR ISP" 라는 키워드를 건져 겨우 시작을 해본다. 저 그림 오른쪽 상단에 핀 6개가 힌트 였다. 시리얼 통신 방식이 UART, SPI, ... 여러가지 있는것도 처음 알았다. 더 자세한건 지루하니 과감히 생략.. 그래도 이건 한번 볼 필요가 있다. 


AVR 계열에서는 SPI 통신을 이용해 프로그래밍 하는 방법에 대한 얘기인데 그것을 In-System Programming (ISP) 라고 부른다. 우연하게도 통신방식 SPI (Serial Peripheral Interface) 와 매우 헷갈리는 이름이다. (원문 매뉴얼에서 퍼오긴 했는데.. 꼭 궁금한 분만 읽어 보시고..)

For In-System Programming, the programmer is connected to the target using as few
wires as possible. To program any AVR microcontroller in any target system, a simple
Six-wire interface is used to connect the programmer to the target PCB. Figure 1
below shows the connections needed.
The Serial Peripheral Interface (SPI) consists of three wires: Serial ClocK (SCK), Master
In – Slave Out (MISO) and Master Out – Slave In (MOSI). When programming the
AVR, the In-System Programmer always operate as the Master, and the target system
always operate as the Slave.
The In-System Programmer (Master) provides the clock for the communication on the
SCK Line. Each pulse on the SCK Line transfers one bit from the Programmer (Master)
to the Target (Slave) on the Master Out – Slave In (MOSI) line. Simultaneously,
each pulse on the SCK Line transfers one bit from the target (Slave) to the Programmer
(Master) on the Master In – Slave Out (MISO) line.

요약: 통신에  4개의 포트가 사용됨. 



그러나 불친절 하게도 핀 배열을 알 수 없다. 일일이 멀티미터로 찍어서 확인한다. 머 다들 알겠지만 디지털 멀티미터에서 SHORT (연결) 가 되면 '삐' 소리나는 기능이 있다. 그걸 이용하면 되겠다. 

여기까진 되었는데, PC 에서 어떻게 SPI 연결을 하지? 불행히도 돈을 들여야 한다. AVR ISP라는 장치로 .. 단 구매할때 주의 해야할건 어떤 장치는 AVR 보드에 별도의 전원을 공급해야하는것도 있다. 아뭏든 아래 그림과 같은 장치를 구(걸?) 했다. USB에 연결해서 ISP 프로그램을 업로드 하는 장치..




여기까지 하드웨어는 다 준비가 되었는데.. 무엇으로 어떻게 해야지? 다행히 AVR 칩제조사에서 Atmel Stduio (http://www.atmel.com/microsite/atmel_studio6/) 를 무료로 제공한다. MS VisualStduio 와 거의 유사한 인터페이스를 제공한다. 모든 게임이 끝난것 같은데.. 아뿔싸..


<출처: http://www.pololu.com >


소스를 보니 공돌이 냄새 흠씬 풍긴다. C언어 책에서나 보았던 쉬프트 연산자 (<<) 도 보이고. 가지고 놀자는데 이런 고급 연산자를 쓸 수는 없는일.. 조금더 검색해 보니

Wiring (http://wiring.org.co/) 이라는게 있다.
아두이노도 여기에서 출발했다고 하니 이 동네의 큰형님 격인데.. 지금은 시장을 동생한테 거의 뺏기고...  아뭏든 다시한번 비즈니스라는게 오묘하다는 생각이 든다.. 다행히  wrinng 이 지원하는 보드중에 "Wring mini" 제품이 있는데 이게 ATMEGA 128 칩을 사용한다. 일단 프로그램을 다운받고 우선 bootloder 부터 설치한다. 당연히 장비는 AVR ISP 장치로 한다.




성공적으로 부트로더를 심은 후 드디어 간단한 LED 회로를 꾸민 후 깜빡이는 스케치를 만드어 업로드 해본다. 문법은 아두이노와 동일하다. 깜빡이는 LED를 볼 수 있을 것이다.