- 작성시간 : 2013/05/12 22:19
- 퍼머링크 : mcchae.egloos.com/11019564
- 덧글수 : 38
얼마전 무슨 검색을 하다가 라즈베리 파이 라는 단어를 보게 되었습니다.


























처음에는 무슨 과일이 IT 쪽에 나오지? 하고 의아해 했으나, 검색을 하자마자
마법에 홀린듯 마음을 빼앗기고 말았습니다.
간단한 설명은 영국에서 아이들 교육 목적으로 25유로의 가격으로 만든
리눅스가 도는 컴퓨터입니다. 지금은 두번째 모델로 35유로의 라즈베리 파이 재단에서
만든 싱글보드 컴퓨터 입니다.
가격도 가격이거니와 거기에서 할 수 있는 일이 무궁 무진하다는 생각때문이었습니다.
처음에는 Element14 라는 외국 사이트에서만 판매를 하였다는데,
지금은 옥션이나 쥐마켓 등에서 검색을 하시면 수입판매를 해 주는 채널도 존재합니다.
하여간 지난주 화요일에 주문을 하여 수요일 저녁에 받아보았습니다.
(회사 팀 회식이라 늦게 들어가서 알딸딸한 정신으로 받았습니다.)

오른쪽이 일반 신용카드와 그 위에 32기가 SD 메모리와 USB 와이파이 동글이 있고, 왼쪽이 라즈베리파이 싱글보드 컴퓨터입니다.

지훈이가 케이스 안에 조립을 해 주었습니다. (이제는 이런 것도 알아서 해 주니 든든한 조수가... ^^)

그 다음날 저녁에는 설치를 해 보려 합니다~

HDMI 출력으로 Full HD 모니터에 연결하고, 랜선을 연결한 상태에서 전원 연결된 USB 허브를 꼽으면 바로 기동이 되더군요.

최초 설치시에만 유선랜을 설치하면 됩니다.

4G SD 카드에는 테스트로 XBMC 미디어 센터 프로그램을 설치해 보았습니다. 뭐 애플TV가 안 부러워 지더군요~

다른 32기가 SD 카드에는 이미지를 구워 라즈비언 "wheezy" 라는 데비안 리눅스를 설치한 다음 위의 raspi-config 명령으로 32기가를 Full 로 사용하거나 오버클락 등등을 할 수 있습니다.
boot_behaviour 로 Desktop을 지정하면 최근 4개월 전부터 애용하고 있는 LXDE 윈도우 환경이 그대로... ^^
토요일 점심까지는 헤롱 헤롱 데다가 오후에 철쭉동산에 다녀와서 저녁이 되었는데, 지훈이와 함께 의기 투합이 되어
2009년 미국 출장에서 구입해온 레고 마인드스톰 NXT를 라즈베리파이로 움직여 보자는 프로젝트에 돌입했습니다.
기존에 마인드스톰 NXT에 프로그램을 하려면 PC에서 해당 로직을 짜서 NXT의 제어 brick에 명령을 넣어야 합니다.

가운데 제어 블록에 빛, 소리, 터치, 초음파 네 가지의 입력 센서가 연결되고, 출력으로는 세 개의 스텝모터가 있습니다.
헌데 아주 고맙게도 python-nxt 라는 확장 프로그램을 누군가가 만들어주어 USB 케이블 혹은 블루투스를 이용하여
쉽게 NXT의 입력 및 출력을 바로 컴에서 제어를 할 수 있습니다.
다음은 라즈베리 파이에 python-nxt 를 설치한 과정입니다.
(아주 쉽게 할 수 있었습니다.)
$ sudo apt-get install python-usb
$ wget http://nxt-python.googlecode.com/files/nxt-python-2.2.2.tar.gz
$ tar xvfz nxt-python-2.2.2.tar.gz
$ pushd nxt-python-2.2.2
$ sudo python setup.py install
$ popd
$ sudo groupadd lego
$ sudo usermod -a -G lego pi
$ sudo vi /etc/udev/rules.d/70-lego.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="0694", GROUP="lego", MODE="0660"
(위의 내용을 넣어 주면 됩니다.)
$ sudo reboot
다음에는 NXT의 자동차 버전을 만들어 볼 차례입니다.
우선은 처음부터 참고한 사이트가 이 사이트입니다.
무한쾌도 차를 만들어 보려 하였으나 우리 키트에는 해당 쾌도가 없더군요.
그래서 최대한 유사하게 만들어 보려 말하였으나,
시키고 났더니 지훈이가 혼자 찾아 참고한 사이트를 이용하여
다른 자동차가 탄생했습니다.

토요일 오후 다른 친구들 처럼 어린이날 선물을 못 받았다고 몇번이고 투덜데던 지훈이가 받은 어린이날 선물이... 제대로 작동을 하지 않았습니다.

현서도 도와서 같이 무언가를 하고 있는데 들어갈 틈이 없어 그냥 구경만...

스텝모터에 바퀴도 달고..

메뉴얼 대로 하려고 하는데, 핵심 부터 몇가지가 없는 것이었습니다... 그러나 이 부분에서 지훈이가 다른 부품을 사용해서 문제를 해결하는 것을 보고는..
기특한 생각이 들었습니다.

드디어 자동차의 후륜부 완성~~

현서는 피곤하다고 안방에 엄마랑 같이 자는 사이, 내친김에 지훈이는 완성을 하려는 기세입니다~

아빠는 이마트에서 사온 막걸리 한잔하는 사이...

메뉴얼에 나와있는데로...

이렇게 만들고는 지훈이가 스스로 자신을 얻는 것을 보고... '역시 공대 엄마 아빠를 둔 지훈이구나..' 했습니다. (현서는 안 그렇습니다만...)

이제는 앞바퀴 조종부분과 뒷바퀴 구동축을 연결한 자동차 하체부 완성!!

그 위에 NXT 제어 벽돌을 얹었습니다.

원본에는 없는 부품을 임기 웅변으로 풀어내는 바람에 덤으로 얻은 부분입니다...

원본과는 다른 이 라즈베리파이 컴을 어디다 달아야 하나... 생각하다가,

약간의 힌트를 주기는 했지만 결국은 이렇게 앞부분에 라즈베리를 넣고 제어 벽돌 아래에는 배터리를 넣었습니다.

이제는 웹캠도 달아보았습니다. 웹캠은 Microsoft VX800 이라는 모델을 26,800원에 구입하여
$ sudo apt-get install motion
모션 패키지로 기동시키면 됩니다.

뭐 프레임이 몇 초에 한 장씩 주는 등 별로 좋지는 않지만 훌륭하게 웹으로 전송을 해 줍니다.

비록 밤 1시가 다 되었지만 해 냈다는 뿌듯함으로 한껏 누린 채지훈군... ^^

일요일에는 앞바퀴 조향 장치의 기어비가 잘못되어 그것을 수정하고는 드디어 완성하였습니다.
저기 선이 연결된 것은 라즈베리 파이의 USB 허브의 전원 선입니다.
배터리 만으로 무선 와이파이 동글과 웹캠의 전원을 모두 담당하기에는 무리가 있더군요.
이 상태에서 맥북에서 이 라즈베리 파이에 SSH로 접속하여 Python으로 다음과 같이 작성한 간단한 프로그램으로,
#!/usr/bin/env python
import nxt
import sys
import tty, termios
import nxt.locator
from nxt.sensor import *
from nxt.motor import *
brick = nxt.locator.find_one_brick()
wheel = nxt.Motor(brick, PORT_A)
left = nxt.Motor(brick, PORT_B)
right = nxt.Motor(brick, PORT_C)
both = nxt.SynchronizedMotors(left, right, 0)
#leftboth = nxt.SynchronizedMotors(left, right, 100)
#rightboth = nxt.SynchronizedMotors(right, left, 100)
def getch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
ch = ' '
print "Ready"
while ch != 'q':
ch = getch()
if ch == 'w':
print "Forwards"
both.turn(-100, 360, False)
elif ch == 's':
print "Backwards"
both.turn(100, 360, False)
elif ch == 'a':
print "Left"
#leftboth.turn(100, 90, False)
wheel.turn(60,20,False)
elif ch == 'd':
print "Right"
#rightboth.turn(100, 90, False)
wheel.turn(-60,20,False)
print "Finished"
다음과 같은 결과를 얻을 수 있었습니다.
비록 라즈베리파이를 이용하여 할 수 있는 무궁 무진한 (실은 컴을 이용하여 할 수 있는 모든 일이죠)
것의 하나를 시도해 보고 비교적 금방 적용해 볼 수 있었고,
그것을 지훈이와 함께 잘 할 수 있었고, 자신감을 느낄 수 있어서 좋았습니다.
덧글
좋은 글 감사합니다.
어찌 그런 열정을 아직도 유지하고 계시는건지 신기합니다 하하
감사합니다, 잼스님~~ ^^
재미있게 잘 보고 가요~ 멋지네요~ ^_^`...
저도 나중에 자녀가 생기면 저런 아버지가 되어 줄 수 있으면 좋겠습니다 ^^
나중에 지훈 군이 다 자라도 지금 이런 기억들이 얼마나 즐거운 추억으로 남아있을지 생각하면, 지훈 군이 부럽습니다. ㅎㅎ
현서 양도 잘 따라할 것 같은데.. 지훈 군이 오빠겠지요? 남매가 같이 놀 거리가 있어야 확실히 유대감이 깊어지는 거 같아요. 아무리 둘러봐도 이렇게 훌륭한 놀이 겸 학습이 없는 거 같습니당. ㅎㅎ
감사합니다~~ ^^
라즈베리파이 구입하려고 눈팅중에 좋은 정보 잘봤습니다. ^^
자제분들과 같이라는데서 놀랐고 부러움을 느낍니다 +_+)b
감사합니다~
어려서부터 관심 이끌어주시고, 좋은 경험 많이 주신 듯..
잘 보았어요.
레고 마인드스톰을 본적이 없어서 그런데, 레고로도 지금 만든것이 가능하지 않나요 ?
레고보면 주변기기 굉장히 많던데요.
요즘 아이들 게임에 미쳐있는 아이들만 보다가 이런 아이(지훈) 보니까 기쁩니다.
현서도 오빠랑 같이 즐겁게 하다보면
혹시 과학계의 악동뮤지션이 되지 않을지... 기대해봅니다.
안녕히계세요.
대신 시간을 내서 아이들 좋아하는 것을 하도록 옆에서 도와주었으면 하는 것이지요.
그런데 도와주려다 보니 제가 잘 하는 것을 해야 잘 도와줄 수 있더라구요~
그런 의미에서 부모가 하던일을 아이에게 물려주는 것이 당연하지 않을까 싶습니다~~
감사합니다 ^^
현재 공대생인데 정말 멋진 부모님이 시네요.
저도 꼭 아빠가 되면 아이들과 같이 개발해보고 싶네요~^^
정말 새로운 생각을 가지게 되는 글이 었어요~ㅎㅎ
보면 nxt python 프로그래밍 하실때 원격으로 코드를 짜고 그걸 그대로 nxt에 다운로드하셔서 구동하신 것 같은데...
저는 usb가 꽂혀있는 상태에서 데스크탑에서 작성된 코드로 움직이고 있거든요... nxt에 코드를 받은게 아니라요;
nxt에 어떻게 다운받을 수 있는지 여쭤봐도 될까요? greatmint8@gmail.com으로 메일주셔도 좋아요!!
따라서 NXT 에 별도의 다운로드 같은 것은 필요 없습니다~~
도움이 되셨기를 바랍니다
근데 궁금한게 있어서 질문좀 할게여
레고마인드하고 라즈베리하고 융합해서 작품 만드셨는데
라즈베리활용은 카메라 말고 또 어떤거 하셨나여?
두개 같이한 콜라보한 이유가 궁금합니다
거기에다 프로그램을 할 수 있습니다. 자체 입력 센서들과 세 개의 아웃풋에 해당하는
스텝 모터가 그것이지요.
문제는 이 프로그램이 RC와 같이 원하는 즉시성이 아니라 움직임을 미리 프로그램
해 놓아야하는데 문제가 있더라구요.
그래서 Brick은 단지 스텝 모터 제어의 전달만 해주고, 위와 같이
라즈베리파이에서 직접 구동을 해 보는 것이었습니다~~
저는 오드로이드를 이용해 nxt를 구동해 보려고 하는데 라즈베리파이와 nxt간 통신은 어떻게 하신건가요? 말씀하신거로는
라즈베리파이로 직접구동하신거같은데 유선으로하신건가요?
아님 블루투스동글로 하신건가요?
70-lego.rules 가 안나오고 70-persistent-cd.rules 70-persistent-net.rules 이런것들이 나오는데 여기다 추가해도 되는게 맞나요?
많은 도움이 되고 있습니다. 감사합니다. ^^
미약한 지식이나마 시도를 해 보았으나 그 다음 진도는 많이 나가지 못했네요~~
라즈베리파이와 nxt 를 usb 로 직접 연결해서 제어하셨다고 했는데, 혹시 라즈베리파이에 설치한 nxt-python 에서 어떤설정을 해야 제어가 가능한건가요??? ㅜㅜ
설정을 따로 하는게 아니라면 어떻게 해야 nxt 를 제어할 수 있는지 궁금합니다.!