System Compleat.

'Beagle Board'에 해당되는 글 3건

  1. BeagleBone rolling start (1)
  2. Arduino
  3. Beagle Board

BeagleBone rolling start

Techs
( younjin.jeong@gmail.com, 정윤진 ) 

이번주에 배송이 완료된 BeagleBone 을 오늘에서야 올려 볼 수 있게 되었다. 이 귀여운 보드에는 완벽히 동작하는 리눅스가 Factory Default 로 올려져 있으며, 필요한 경우 안드로이드나 우분투 등 원하는 대로 별도의 OS 를 올리는 것이 가능하다.

귀요미_케이스

 
BeagleBone 을 구매하면 위와 같이 귀여운 케이스와 USB케이블, 그리고 Kingston MicroSD 아답터와 Linux SDK 가 들어있는 MicroSD 가 함께 배송된다. $89 주제에 내용물도 푸짐하다. BeagleBone 외에도 Beagle Board C4 도 함께 주문했는데, C4의 경우에는 별도로 추가된 패키지가 전혀 없다. 기대하지 말자. 

귀요미_보드

 
허접해 보이는 케이스는 보드를 보관하기 꼭 알맞은 사이즈로 되어 있다. 필요하다면 아래에 스펀지 등을 넣어 보호 할 수도 있겠지만, 어차피 내부에 전원 등이 포함되어 있지 않으므로 쇼트가 나지는 않겠지 하는 생각에 그냥 들고 다닌다. ㅋ 
 

연결!!!

 

보드를 처음 노트북과 연결하면, 뭐 별다른 일이 일어나지는 않는다. 만약 맥에서 BeagleBone 을 연결했다면, 사용중인 맥의 버전에 따라 한방에 잘 될 수도, 아니면 시작부터 고생길이 열릴 가능성도 있다. 

일단, 개발용 랩탑과 BeagleBone 은 처음에 USB 연결만 있으면 된다. 5V 의 전원은 USB를 통해 공급받으므로 전원에 대해 당장 걱정할 필요도 없다. Mac OSX Leopard 이상의 시스템에 연결 한 경우, 다음과 같은 내용을 확인 할 수 있다.

BeagleBone Mount

 
처음 연결하고 BeagleBone 이 준비가 되면 위와 같이 시스템에 마운트 되며, 안에는 몇가지의 내용이 들어있다. 이들 중 처음에 제일 중요한 것은 Drivers 디렉토리인데, 맥이건 윈도우용이건 BeagleBoard 의 접근을 위해 반드시 설치 해 주어야 한다. 단!, 한가지 조심 할 것은, 사용중인 맥이 32bit 인가 64bit 인가에 따라 보드에 포함된 파일의 사용 여부가 결정 된다는 것이다. 보드에 포함된 드라이버는 32bit 용이며, 따라서 현재 사용중인 시스템이 64bit 인 경우에는 다음의 링크에서 드라이버를 다운로드 받아 설치하도록 하자.

http://www.ftdichip.com/Drivers/VCP.htm 

내가 사용중인 맥은 Leopard 였던 시스템을 Lion 으로 업그레이드 한 것인데, 별 이상없이 잘 동작했다. 다만 준호형의 맥은 구매 할 때부터 Lion 이었는데, 정상적으로 보드와 연결되지 않는 현상이 발생했다. 아직 해결하지는 못했지만, 조만간 처리 될 것으로 생각된다.

아무튼 OS 가 32인지 64비트인지 잘 확인하고, 가장 최신버전의 Virtual COM Port 드라이버를 설치하도록 하자.
설치가 완료 된 이후 정상적인 경우라면 /dev/tty.usb 로 시작하는 장치명을 확인 할 수 있을 것이다. 하지만 필자의 경우에는 해당 장치가 나타나지 않았는데, 어쨌든 사용에 이상이 없으므로 무시했다. 문제의 해결을 위해서는 다음의 구글 그룹 페이지를 참고하도록 한다.

http://groups.google.com/group/beagleboard/browse_thread/thread/80a42d16976907a9/de2ad27d8bfeb2de 

/dev/tty.usbserial 장치가 나타나지 않더라도, 시스템 환경 설정의 네트워크 부분을 살펴보면 정상적인 경우 다음과 같은 새로운 인터페이스의 확인이 가능하다.

RNDIS/Ethernet Gadget Int.

 
위의 그림처럼 나타난다면, 이제 보드에 접속이 가능하다.  위의 그림처럼 새로운 인터페이스가 나타나지 않는다면, 다음의 커맨드를 맥에서 실행 해 보자. 


sudo kextutil FTDIUSBSerialDriver.kext -v
위의 커맨드는 USBSerial 드라이버를 로드 하도록 한다. 또는 시스템을 재부팅 해도 된다. 이렇게 드라이버를 로드한 후에 인터페이스가 정상적으로 나타 남에도 불구하고 잘 동작하지 않는다면, Finder 에서 마운트 되어있는 BeagleBone 을 마운트 해제하고 잠시 기다려 보도록 하자. 이후에 정상적으로 192.168.7.2 와 ping 을 주고 받을 수 있다면 모든 준비가 완료 된 것이다.

계정은 root 이며, 패스워드는 없다. 그냥 엔터.

 
Younjin-Jeongs-MacBook-Pro:Extensions younjinjeong$ ssh root@192.168.7.2
The authenticity of host '192.168.7.2 (192.168.7.2)' can't be established.
RSA key fingerprint is 74:c4:b7:09:4c:3b:37:ba:69:96:b8:ca:09:61:6f:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.7.2' (RSA) to the list of known hosts.

root@192.168.7.2's password:
root@beaglebone:~#
root@beaglebone:~# hostname
beaglebone
root@beaglebone:~# whoami
root
root@beaglebone:~# ifconfig
eth0 Link encap:Ethernet HWaddr D4:94:A1:35:CA:6B
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:40

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:840 (840.0 B) TX bytes:840 (840.0 B)

usb0 Link encap:Ethernet HWaddr 02:09:34:3A:78:D3
inet addr:192.168.7.2 Bcast:192.168.7.3 Mask:255.255.255.252
inet6 addr: fe80::9:34ff:fe3a:78d3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:233 errors:0 dropped:0 overruns:0 frame:0
TX packets:115 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:38600 (37.6 KiB) TX bytes:15487 (15.1 KiB) 

위의 인터페이스에서 알 수 있듯이, 실제 랩탑과 보드의 통신은 usb0 를 통해 이루어 진다.  eth0 는 보드에 달려있는 이더넷 포트다. 모든 인터페이스의 설정 정보는 우분투와 동일한 위치인 /etc/network/interfaces 에서 확인이 가능하며, 192.168.7.2 는 usb0 에 고정된 인터페이스이다.
더욱 놀라운 다음의 내용을 살펴보도록 하자.
root@beaglebone:~# uname -a
Linux beaglebone 3.1.0+ #1 Tue Nov 15 15:51:15 CET 2011 armv7l GNU/Linux

root@beaglebone:~# Display all 1046 possibilities? (y or n)
root@beaglebone:~# ps -ef | grep node
root 98 1 0 15:31 ? 00:00:06 /usr/bin/node /usr/share/cloud9/bin/cloud9.js -l 0.0.0.0 -w /var/lib/cloud9 -p 3000root 99 1 0 15:31 ? 00:00:01 /usr/bin/node bone101.jsroot 349 342 0 16:19 pts/0 00:00:00 grep node

그렇다. default 로 Node 가 동작중이다. 게다가 이름에서 알 수 있듯이, cloud9 이 포트 3000 에서 돌아가고 있단다. 기가 찰 노릇이 아닌가. 그렇다면 접속 해 볼 일이다.

잇츠_어메이징_붸붸

 
위의 샘플 코드는 보드에 달려있는 사용자 LED 를 통제하는 101 코드가 들어있다. 위의 Run 버튼을 누르면 보드에서 LED 가 껌뻑 거리는 모습을 볼 수 있을 것이다.

이 보드가 시사하는 바는 무엇인가. Arduino 도 마찬가지지만, BeagleBone 은 보다 강력한 성능으로 주변 장치들을 붙이는 것이 가능하고, UNO 보드들과 마찬가지로 아날로그/디지털의 IN/OUT 통제가 가능하다. 이 작은 시스템은 완벽히 동작하는 리눅스의 구동이 가능하며, 저렴하고, 개발조차 쉽다.

이런 장점은 더이상 논하는 것이 무의미하므로, 그만 쓰도록 하고 이제 이 보드의 성능을 대강 살펴 보자.
root@beaglebone:~# free             
total used free shared buffers cached
Mem:
254176 78908 175268 0 8300 31508
-/+ buffers/cache: 39100 215076
Swap: 0 0 0

root@beaglebone:~# cat /proc/cpuinfo
Processor : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 498.89
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
CPU implementer : 0x41CPU architecture: 7
CPU variant : 0x3CPU part : 0xc08
CPU revision : 2
Hardware : am335xevm
Revision : 0000
Serial : 0000000000000000

이제 정말 달리는 일만 남았다.  아, Lion 에서의 문제는 해결 되는 대로 포스팅! 

아참, 그리고 블로그를 깔끔하게 재구성 해 준 퐈이아준 형에게 무한 감사 ㅎㅎ  블로그 노가다 시켜서 미앙~! ㅋ 

( younjin.jeong@gmail.com, 정윤진 ) 

Arduino

Techs
( younjin.jeong@gmail.com, 정윤진) 

지난번에 Beagle Board 에 대해 포스팅을 했었다. 이번에는 Arduino 라는 특별한 임베디드 개발 도구에 대해 소개 하고자 한다.

이 블로그에 방문하는 분들은 컴퓨터 또는 마이크로 컴퓨터에 대해 관심이 있거나, 아니면 없을 수도 있다. 하지만 로봇이라거나, 미로를 찾는 마이크로 마우스 또는 로봇을 만들어 싸움을 붙이거나 또는 동작하는 레고 제품에는 관심이 있을지도 모르겠다.

Beagle xM / Arduino Robot

Image from: http://letsmakerobots.com/node/11252 

임베디드라는 것은 그 사용에 따라 무궁무진한 Variation 을 가진다. 집의 온도와 각종 전기, 전자 도구들을 통제하는 홈컴퓨터로도 사용 될 수 있고, 스키장을 관리하는 통제 시스템의 모듈, 최근 모든 차량에 탑재되어 있는 ECU 와 같은 도구들이 예가 될 수 있겠다.

이전에는 이러한 도구를 사용하는 것이 로우레벨의 프로그래밍 언어와 PCB등의 기판, 칩셋 등에 정통한 기술자가 아니라면 감히 범접하기 힘든 부분이었지만, 최근에는 그렇지도 않다.

이것 저것 설명 하는 것 보다, 이런 분야에 대해 관심이 있다면 아래의 사이트들을 살펴 보시라.

Arduino (아두이노라 부르는 듯) 홈페이지 
http://arduino.cc/  

이를 사용한 각종 프로젝트들. 
http://www.element14.com/community/groups/arduino?CMP=KNC-KR-Arduino&s_kwcid=TC|22099|arduino||S|p|9695349601  

Beagle Board 와 Arduino 를 사용하여 만든 로봇
http://letsmakerobots.com/node/11252 

Arduino Board
http://www.plughouse.co.kr/shop/goods/Goods_view.php?G_code=20081004142229 

조금 살펴보니 국내에 이미 판매를 하고 있는 사이트가 많이 있다.
Korea: Plug HouseMakeZoneArtRobotEleparts 

http://www.makezone.co.kr/ 
http://artrobot.co.kr/ 
http://www.eleparts.co.kr/front/productlist_morning.php?code=017032002&listnum=&sort=&block=&gotopage= 
http://www.plughouse.co.kr/shop/goods/Goods_list.php?Category=023 


Arduino 보드와 개발 언어를 사용하게 되면 여러분은 기존에 쉽게 넘볼 수 없었던 신세계를 경험할 수 있게 될 것이다. 센서를 통해 얻어진 정보를 프로세싱하는 간단한 동작에서부터, Full Linux 구동이 가능한 Beagle Board + 센서, 그리고 Arduino 코드의 조합을 통해 만들어 낼 수 있는 수많은 도구들은 기존의 컴퓨팅에 지친 사람들 또는 새로운 무엇을 찾는 사람들에게 아주 재미난 장난감이 될 것을 믿어 의심치 않는다. 

납땜에 자신이 없기는 하지만, 학생 시절에 만났던 빵판 비슷한 기술을 더 재미지게 다룰 수 있다는 사실은 개발자에게 있어 매우 즐거운 일이 아닐 수 없다. 게다가 웹에는 바로 돌릴 수 있는 코드들도 수없이 떠 다니고 있다. Arduino 보드도 9만원 정도로 저렴하다. ( 물론 비글 보드를 미국에서 직접 공수하는 경우 20만원 정도는 생각 해야 한다.) 각종 센서들도 몇 천원 정도로 저렴하다. 게다가 JTAG 없어도 맥/윈도우에 USB를 붙이는 정도로 쉽게 Access가 가능하다. 무엇이 부족한가.

임베디드를 원래 하셨던 분들 중에는 이미 꽤 진도가 나간 분들도 계신 듯 하다.
http://knight76.tistory.com/category/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8 


이러한 개발을 시작하려 하거나, 더 관심이 있다면 다음의 서적을 추천한다. (물론 한국에서는 원서도 없으며, 교보 문고를 통해 주문하면 약 일주일 정도 걸리는 듯 하다. 5만 7천원 선. Kindle이 있다면 그냥 아마존에서 원클릭 구매.)  
http://shop.oreilly.com/product/9780596154158.do  (1쇄)
http://shop.oreilly.com/product/0636920021735.do  (2쇄)

경험에 의하면, 하드웨어 hacker 나 guru 는 재미에 의해서 탄생된다. 재미가 없다면, 새벽 2시까지 코드를 잡고 있을 이유가 없다. 나는 지금 Beagle Board 에 node.js 를 위한 모듈을 만드는 것을 목표로 하고 있는데, 이는 비단 하드웨어 레벨의 센서 제어만이 아니라, 상위 레벨의 웹 애플리케이션에서 제어가 가능한 임베디드를 만드는 것이 아주 재미진 무엇으로 보이기 때문이다. 

가지고 놀다가 익숙해 지면 무인 RC 헬기/비행기도 GPS센서, 고도, 속도 센서 및 서보등을 사용해서 만드는 것도 가능 할 것이다. 얼마나 재미질까!!!! 

10년전에 비하면 천국과 같아진 이런 환경에 감사할 따름이다. 


Beagle Board 를 한국에서 구매하려면 여러가지 어려움이 많은데, 다음의 사이트에서 구매하면 한국에 배송이 가능하다. 단, 구매하기 전에 이 보드를 군사적인 목적 또는 미사일 등의 개발에 사용할지의 여부를 물어보는데, 반드시 모두 '아니오'라고 답해야 하며 실제로도 그런 목적으로 사용하면 CIA가 맴매 하지 않을.... 어쨌든 즐겨 보도록 하자. 단, 회원 가입 및 해외에서 사용가능한 신용카드가 있어야 한다. 

http://avnetexpress.avnet.com/store/em/EMController?langId=-1&storeId=500201&catalogId=500201&term=Beagle&x=0&y=0&N=0&Ne=100000&action=products 

ULCD7 이라는 제품은 다음과 같이 보드에 붙여서 사용 할 수 있겠다. 

ULCD7



BeagleBoard 에 대한 내용은 다음의 사이트들에서 참고 하도록 하자. 
http://beagleboard.org/ 
http://www.digikey.com/product-highlights/us/en/texas-instruments-beagleboard/685    


즐거운 컴퓨팅 생활이 기다려진다!!

( younjin.jeong@gmail.com, 정윤진 ) 

Adding:   사람 생각하는거 다 비슷하다더니 역시 이미 실행에 옮긴이가 있다. ㅋ 

Cheapest Auto Pilot 
http://diydrones.ning.com/profiles/blog/show?id=705844%3ABlogPost%3A35640

DIY Drones Ardupilot 프로젝트
http://diydrones.com/profiles/blogs/ardupilot-main-page

관련된 재미진 영상들
아래의 영상들은 모두 Arduino 보드와 프로그래밍을 통해 각종 센서로 부터 얻어진 정보를 기반으로 적절한 프로세싱을 거쳐 모터 또는 서보에 전달 함으로서 원하는 목적을 달성하는 아주 재미진 프로젝트라 하겠다.




30 Arduino Projects for the Evil Genius



ArduPilot v2.0 maiden flight




ArduPilot 2.6 - 19 Km Flight Part 1 of 3




Sun Tracking Solar Panel w/ Arduino - Powers ITSELF!!



Testing arduino helicopter auto-stabilisation



RC car control by Arduino BT



Android Home Automation with HomeSeer



Project Sentry Gun Project No.2



Face detection Sentry Gun

Beagle Board

Techs
( younjin.jeong@gmail.com, 정윤진 ) 

최근 클라우드 스토리지 관련해서 어떤 시스템을 구축이 가능 할 것인가에 대해서 살펴보던 도중, 급작스럽게 임베디드 분야를 검색해 보기 시작했다. 이 와중에 아주 흥미로운 제품을 발견했는데, 제품의 이름은 귀엽게도 무려 "Beagle Board".

 
홈페이지는 위의 그림과 같다.

이들이 발매한 Beagle Bone v1 보드 제품은 $89 에 판매되고 있는데,  기본으로 Angstrom Linux 가 탑재되어 USB를 연결하기만 하면 동작한다. 게다가 더 놀라운 사실은, 이 제품에는 Cloud9 IDE가 임베드 되어있어 바로 보드상에서 개발이 가능하다는 점.  이러한 장치에서 Cloud9 IDE 가 돌아간다는 사실은 정말 많은 의미를 내포한다. 

이 보드는 아래와 같은 스펙을 가진다. 

  • Board size: 3.4″ x 2.1″
  • Shipped with 2GB microSD card with the Angstrom Distribution with node.js and Cloud9 IDE
  • Single cable development environment with built-in FTDI-based serial/JTAG and on-board hub to give the same cable simultaneous access to a USB device port on the target processor
  • Industry standard 3.3V I/Os on the expansion headers with easy-to-use 0.1″ spacing
  • On-chip Ethernet, not off of USB
  • 256MB of DDR2
  • 700-MHz super-scalar ARM Cortex™-A8
  • Easier to clone thanks to larger pitch on BGA devices (0.8mm vs. 0.4mm), no package-on-package memories, standard DDR2 vs. LPDDR, integrated USB PHYs and more.

또한, 이 보드가 지원하는 기능 및 이에 대한 장점은 아래와 같다. 

 Features Benefits 
 More than 1,400 Dhrystone MIPS using TI's superscalar AM335x ARM Cortex-A8 microprocessors up to 720 MHz Runs full Linux operating system with full-featured web servers, native compilers and scripting languages, video analytics libraries and much more 
 Two 48-pin, two-row, 0.1-inch spaced female expansion headers  Enables developers easily add off-the-shelf expansion hardware or directly breadboard connections to countless readily available peripherals
 Multipurpose USB device connection with on-board hub, USB-to-serial/JTAG conversion device with software reset and reprogrammable high-speed USB device interface Developers can plug in just one cable to power, debug and interface to their applications and not needing a JTAG emulator saves additional cost 
 Open GL  ES 2.0 capable 3D graphics accelerator Achieves photo-realistic, real-time pixel-shaded graphics for gaming and 3D user interface acceleration
 USB 2.0 host port that supports low, full and high speeds Can be used for USB peripherals like keyboard, mouse, WiFi, Bluetooth, Web cameras or USB hubs for additional expansion via con-chip USB PHY 
 microSD connector Adds multiple gigabytes of storage for your boot image and data 
 On-chip 10/100Mbit Gigabit Ethernet Network your network and the internet with minimal software stacks 
 Four on-board LEDs Provide user status without the need to add additional hardware 

결과를 추려서 한 문장으로 정리 해 보자면, 

- Node.js 를 돌릴 수 있는 저렴한 임베디드 베이스 보드. 

이는, 원하는 거의 모든 오픈소스 패키지의 설치 및 실행이 가능하다고 할 수 있으며, 필요한 경우 스테핑 모터의 연결, 또 이 스테핑 모터를 자바스크립트 코드를 통해 노드로 제어하는 것이 가능하다는 말이 되겠다. 

이러한 임베디드 장치의 출현은 이전에 소개한 Raspberry 프로젝트와 유사하기는 하지만, Beagle Board 의 강점은 사용하기 편리한, 그리고 모든 OS의 기능이 동작하는 ARM 기반의 멋진 임베디드 보드라는 것이다.

이 보드를 가지고 무엇을 할 수 있는지 가만히 생각해 보자. 
여러분은 여기에 카메라 모듈을 붙일 수도, 일반적인 키보드 마우스 모니터를 붙일 수도, 바코드 리더를 붙일 수도, 기타 등등의 상상할 수 있는 모든 임베디드 장치의 형태를 구현 해 낼 수 있게 된다. 

네트워크와 바로 물려있는 카드 결재모듈을 탑재한 POS 장비의 메인 보드로서, 스키장 또는 놀이 동산의 입장권 및 서비스 사용을 위한 바코드 인식, 일반 사용자가 거주하기 힘든 지역의 데이터 수집등등 헤아릴 수 없이 많은 것들이 가능해 진다. 단순히 C 를 사용하는 로우레벨의 개발자가 아니더라도 이런 것들이 가능해 질 것이며, 이는 node.js 모듈만 있다면 자바 스크립트 개발자도 충분히 좋은, 아니 더 멋진 애플리케이션의 작성이 가능해 질 지도 모르겠다. 

http://beagleboard.org/buy


이 간단한 장치에는 단순히 리눅스만 동작 가능한 것이 아니다. 이 장치로 진행중인 다른 프로젝트를 간단히 살펴 보자. 

Android Rowboat Project
Arrow Windows Embedded Bundle
Ubuntu on the BeagleBoard
Ångström Distribution of Linux
XBMC Media Center
RISC OS
Symbian
Gentoo
QNX Neutrino
DesignSomething.org


외국인 아자씨가 소개하는 영상도 한번 보자.
 



이런 장치를 볼 때마다, 정말 세상이 빠르게 변하고 있음을 느낀다. 이전에 ARM 베이스 프로그래밍을 배우고 싶다면 대학에만 할인되는 LED, LCD 모니터가 달린 ARM 보드를 엄청난 고가에 구매해야 했지만, 이제는 더 쉬운 인터페이스와 보다 고 수준의 언어, 그리고 일반적인 OS 가 동작하는 임베디드 보드의 사용이 가능하며, 저렴한 가격에 누구나 구입하여 테스트 해 볼 수 있을 것이다. 


빨리 하나 구매해서 이것저것 해 보고 싶다. 
'프로젝트만 끝나면.'  ㅠㅠ 

참조 
http://beagleboard.org/
http://elinux.org/BeagleBoardUbuntu



( younjin.jeong@gmail.com, 정윤진 ) 

#include <test.h>int x = foo();  /* This is a comment  Continuation of comment */
int y = bar();