:::: MENU ::::
Posts tagged with: Arduino

오픈 소스 하드웨어를 위해 정부가 할 일?

오픈 소스 하드웨어

업무때문에 2010년도에 아두이노팀을 만나고 오픈소스 하드웨어에 관심을 갖게되어서 뉴욕에서 열린 오픈하드웨어 서밋에도 참석을 하고, 메이커페어도 참석을 했다. 이후에 아두이노 IDE가 다국어 버젼을 지원을 할때, 한국어 번역도 하고(덕분에 지금도 버젼이 바뀌면 메일이 온다…) OSHW definition 도 번역을 했다.  최근 아두이노의 영향때문에 크라우드 펀딩 사이트인 Kickstarter.com에도 아두이노로 검색을 하면 161여개의 프로젝트가 뜬다.

Kickstarter_Arduino

ICT D.I.Y

국내에도 오픈소스 하드웨어에 대한 관심아 졌는데 특히 정부에서도 이 분야에 관심을 가지고 있는듯 하다. 미래창조과학부의 보도 자료에 의하면 2017년까지 ICT R&D예산 총 8.5조를 투자하는데 이중 15대 미래서비스 중 하나로 들어가 있는 것이 ICT D.I.Y서비스 이다. 물론 IoT플랫폼도 오픈 소스 하드웨어와 관련이 있다. 그런데 몇가지 궁금한 점이 있다.

“한류(국산) 오픈 소스 하드웨어 플랫폼”?

기술적으로 국산 오픈 소스 하드웨어 플랫폼이 가능하려면 사용되는 모든 부품 특히 MCU를 만들어야 하는데, 호환성 없는 즉 전혀 생소한 개발 환경의 제품을 만들어 내지는 않을까 우려가 된다. 즉 한국형이라는 말로 정말 한국에서만 쓰이는… 또는 정부 과제를 위한 사업들로 전락하는 것은 아닌지 우려스럽다.

개인적인 바램은 이런 사업으로 중소기업 또는 개인이 이런 플랫폼으로 쉽게 자신의 아이디어를 구체화하고 검증하며 시제품을 만드는데 도움을 줘야한다.

특히 요즘은 하나의 제품을 만드는 것이 단순히 하드웨어를 만드는 것 뿐만 아니라 S/W, 스마트폰 앱, 인터넷 서비스 까지 신경을 써야하기 때문에 이런 부분의 전문가들이 서로 협업을 할 수 있는 공간과 미국의 TechShop처럼 Tool들의 사용법을 가르치고 사용할 수 있는 기반이 필요하다.

또한 해외의 유명 커뮤니티처럼 국내에서도 이런 커뮤니티를 육성하고 지원을 해줄 수 있는 제도도 필요하다. 국내의 카페형 커뮤니티는 너무 폐쇄적임…

너무 이상적인 이야기인가?


Intel Galileo board와 Arduino Tre

Intel Galileo Board

최근 아두이노는 매년 메이커페어에서 신제품의 출시에 대한 내용을 발표하는 것 같다. 올해는 지난 주말에 이태리 로마에서 있었던 메이커페어 유럽에디션에서 인텔과의 협력으로 나온 보드인 Intel Galileo Board를 발표를 했다. PC 기반의 칩셋업체인 인텔이 임베디드분야에 그것도 오픈하드웨어에 발을 담그기 시작한 것이니 최근 오픈 소스 하드웨어의 열풍이 세상을 변화시키고 있는 것은 확실한 것 같다.

그런데 한가지 재미있는 것은 이 제품이 아두이노의 “Arduino Certified” 제품군에 들어간 것이다. 우리가 익히 알고 있듯이 인텔은 자신들의 칩셋을 PC 업체에 공급을 하면서 Intel Inside라는 로고를 붙이게 했다. 하지만 오픈소스하드웨어 시장에서는 도리어 아두이노가 거대 기업 인텔에게 “Arduino Certified”라는 로고를 주다니…

Arduino Certified & Arduino at Heart Program

아두이노가 유명세를 타면서 많은 클론과 카피켓들이 나오고 있는 상황에서 “Arduino Certified”는 이에 대한 대안으로 생각이 된다. 이제 시장에서 “Arduino Certified”가 붙지 않은 제품들은 아무래도 입지가 좁아들 것이고, 반대로 아두이노는 더 큰 영향력을 갖게 될 것이다.

ArduinoAtHeart_logo

이것과 함께, Arduino at Heart Program이 소개가 되었는데, 이것은 Atmel 칩을 사용하면서 아두이노 플랫폼에 기반한 제품들에 주는 로고이다. 즉 아래 칩들을 사용한 제품이 아두이노 기반의 코드로 만들어 있다면 Arduino at Heart 로고를 준다. 아마도 이것은 Atmel과 같이 기획한 냄새가 많이 나는데, 오픈소스하드웨어가 기존의 프로토타입이나 하비스트의 제품을 넘어서 완제품까지 연결이 되는 시대가 왔음을 시사하는 것 같다.

  • ATMega328 clocked at 8 or 16 MHz
  • ATMega1280 clocked at 16 MHz
  • ATMega2560 clocked at 16 MHz
  • ATMega32U4 clocked at 16MHz
  • SAM3X

이 프로그램의 혜택은 아두이노 커뮤니티의 도움을 얻을 수 있고, 사용자가 커스터마이징이 가능하며, 아두이노 채널(홈페이지, 트위터 및 기타 마케팅 채널)을 통해서 프로모션을 해준다는 것. 물론 이 로고를 붙이기 위한 라이센스 비용이 필요하다. -_-;;

Intel® Quark SoC X1000 Application Processor

아무튼 보드의 스펙을 보면 펜티엄기반 Intel® Quark SoC X1000 Application Processor를 사용하고, 아두이노의 IDE 를 사용해서 프로그래밍이 가능하다. 물론 기존의 쉴드들도 사용이 가능하다고 한다.

관련기사: http://blog.arduino.cc/2013/10/03/massimo-banzi-reveals-an-exciting-new-product-and-collaboration-with-intel/

개봉기: http://www.flickr.com/photos/brucesterling/sets/72157636182707015/

Arduino Tre

Arduino Tre

Tre는 이태리어로 3이라는 뜻인데, 기존 Uno, Due보드의 후속의 성격이다. 하지만 TI의 1-GHz Sitara AM335x을 사용해 우노나 네오나르도 보드보다 100배 빠르다고 한다. Arduino Yun보드가 리눅스를 사용한 것 처럼 이보드 역시 리눅스 기반인데 더 의미가 있는 것은 Beagleboard와 협력해서 나온 작품이라는 것이다.

즉 Beaglbone Black에 사용된 동일한 칩을 사용하고 있다. 인텔과의 콜레보레이션에 이어 TI와 콜레보레이션 이라… 아두이노는 8비트 기반에서 High-end로 가고 싶었고, BeagleBoard는 아두이노의 다양한 쉴드 및 커뮤니티를 원했던 것이 아닌가 생각이 된다. ^^*

관련기사: http://beagleboard.org/blog/2013-10-03-beagleboardorg-collaborates-with-arduino/


MQTT

MQTT stands for MQ Telemetry Transport. It
is a publish/subscribe, extremely simple and lightweight messaging protocol,
designed for constrained devices and low-bandwidth, high-latency or unreliable
networks. The design principles are to minimise network bandwidth and device
resource requirements whilst also attempting to ensure reliability and some
degree of assurance of delivery. These principles also turn out to make the
protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of
Things” world of connected devices, and for mobile applications where bandwidth
and battery power are at a premium.


Gmail의 메일을 확인해 주는 파이썬 스크립트

Gmail 계정에 새로운 메일이 있는지 확인해 주는 파이썬 스크립트이다.

Feedpaeser라이브러리가 필요하다. http://code.google.com/p/feedparser/

파이썬에서 시리얼을 쓰러면 Pyserial도 필요하다. http://pyserial.sourceforge.net/

import serial, sys, feedparser

#Settings - Change these to match your account details
USERNAME="[email protected]"
PASSWORD="yourpassword"
PROTO="https://"
SERVER="mail.google.com"
PATH="/gmail/feed/atom"

SERIALPORT = "/dev/tty.usbserial-FTDK0P3M" # Change this to your serial port!

# Set up serial port
try:
    ser = serial.Serial(SERIALPORT, 9600)
except serial.SerialException:
    sys.exit()

newmails = int(feedparser.parse(
    PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH
)["feed"]["fullcount"])

# Output data to serial port
if newmails > 0: ser.write('M')
else: ser.write('N')

# Close serial port
ser.close()

이 코드를 일정한 시간 간격 주기적으로 실행을 하려면, Mac OS X에서는 Launchd가 필요.

Launchd관련 정보 http://zcode.sunji.net/groups/zcode/wiki/4c5b5/launchd__lingon.html

Arduino + Ethernet shield로도 가능할 듯..


아두이노 IDE 빌드 환경 만들기

아두이노 IDE의 한글화를 진행하기 위해 윈도우즈 환경에 아두이노 IDE 빌드 환경을 세팅을 했다. 

1. 개발툴 설치

필요한 사항: Cygwin, Java JDK, ant가 필요하다.

1) Cygwin : Cygwin 은 윈도우즈 환경에서 리눅스를 쓰기위한 툴이다. 이걸 다운로드 한다. http://www.cygwin.com/setup.exe

    다운받은 파일을 실행시키고, 필요한 패키지만 선택을 해서 다운로드 받는다.

    필요한 패키지는 git, make, gcc-mingw, g++, perl, unzip, zip, coreutils, gzip, tar 이다.

    각각의 이름을 search해서 바이너리만 받는다. 

    국내 미러사이트가 없는데, 위치상으로 가까운 일본쪽 미러사이트를 선택을 하면 빨리 다운로드 받을 수 있다.

2) ant :아파치 Ant는 자바라이브러리 및 command-line 툴인데 빌드할때 필요하다.  http://ant.apache.org/bindownload.cgi 에서 

   다운로드하고 설치를 한 다음에, apache-ant-xxx\bin 를 PATH에 추가한다.

3) Java JDK: 오라클 홈페이지에 가서 다운로드하고 설치한다.

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

   시스템 환경 변수에  다음 그림과 같이 JAVA_HOME를 추가하고 설치한 JDK의 위치를 설정한다.

   만약 이 설정이 제대로 되지 않으면 빌드를 할때 “Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar” 이런 에러메시지가 뜬다.

    

2. Github에서 코드 가져오기

   Cygwin Terminal을 열고 다음과 같이소스를 가져온다.

   git clone git://github.com/arduino/Arduino.git

  위와 같이하면 Cygwin의 home 폴더 (따로 HOME을 지정을 하지 않았으면)에 Arduino라는 폴더 아래에 소스를 가져올 것이다. 

3. 빌드하기

  Cygwin Terminal에서 Arduino/build 로 이동한후 ant 라고 치면 빌드를 한다.    

  Arduino/build/windows/work 아래에 arduino.exe 파일이 생겼을 것이다.


Eagle CAD

Open Hardware를 위해 Eagel CAD를 많이 사용을 하지만 정작 사용법에 대한 한글 안내는 많지 않다.
유일한 것이 http://nohau.com.ne.kr/eagle.htm 의 링크에 있는 내용이다.
이 링크는 일본 자료를 번역한 것 같은데, 실제 툴이라는 것이 각각의 기능에 대한 알기보다는 실제로 자기가 사용을 해가면서 왜 기능이 필요한 가를 터득하는 것이 중요하다. 툴의 모든 기능이 다 필요로 하지는 않으니까…
이 링크가 별로 마음에 안드는 것은 웹사이트의 모든 키를 막아놔서 copy가 안되는데, Evernote같은 툴로 페이지를 스크랩하는 것은 가능하다. ^^*

간단히 Eagle CAD의 사용법을 정리하면..

1. Tool 받고 설치하기
http://www.cadsoftusa.com/ 사이트에서 다운로드 받는다.
정식버젼과 fress version과 s/w는 동일하지만 정식버젼은 key값을 입력을 해여하며, free version의 경우 다음과 같은 제약이 있다. 이 정도면 웬만한 작업은 거의 다 가능한 수준이다.

  • PCB의 크기는 100 x 80mm(4 x 3.2인치)까지 지원
  • 2 layer(Top과 Bottom)만 가능
  • Schematic은 sheet 1개만 가능

Free 버젼의 경우 툴을 받고 설치시 마지막에 라이센스를 물어보는 창이 있는데, 이때 “Don’t license now”를 선택하면 된다.

Control Panel
프로그램을 실행시키면 Control Panel이 뜬다.

Libraries 
Part들의 Schematic library와 PCB library가 등록되어 있다. 기호를 클릭할 때 등록된 내용들을 볼 수 있는데, 사용할 라이브러리를 개별적으로 선택이 가능하며 선택된 라이브러리는 초록색 원 모양이 표시된다.
그냥 전부 다 사용으로 한다. Use all 을 선택.. 처음 사용하는데 내가 필요한게 뭔지 어떻게 알 수 있는가?
참고로 라이브러리의 확장자는 lbr.

User Language Programs
 ULP라고 부르며, 아직 직접이런 것을 만들 필요는 없고, 나중에 PCB 작업이 끝나고 drill정보를 export하기위해 drillcfg.ulp정도만 사용이 된다.
Projects
이 폴더에 작업한 내용이 저장이 된다.

http://nohau.com.ne.kr/eagle.htm 이 사이트에서 다음의 2 항목을 참고해서 한번 회로도 및 PCB를 만들어 본다.
2. 프로젝트 만들기 : http://nohau.com.ne.kr/eagle09/eagle03.htm 참고

3.우선 사용하고 봅시다. : http://nohau.com.ne.kr/eagle09/eagle09.htm 참고

4. 라이브러리 만들기
회로도나 PCB작업의 경우 어려운 것은 내가 필요한 심볼 및 PCB footprint를 찾는 것과 만약에 이게 없으면 만들 수 있는 능력이다. 따라서 라이브러리를 만드는 방법은 반드시 알아야 한다. Schematic 라이브러리는 상대적으로 만들기가 쉽고, PCB footprint는 수치를 정확하게 맞추어야 하기 때문에 좀 까다로운 편이다.
라이브러리를 만드는 방법은 다음 링크의 글이 잘 정리가 되어 있다. HOW-TO: Make parts in Cadsoft Eagle 

Instructables에 소개된 회로도에서 PCB까지 만드는 방법에 대한 자료
Turn your EAGLE schematic into a PCB

PDF파일로 저장된 버젼

cfile26.uf.114A5E344F6ADF76136C61.pdf

5. 거버 만들기
Board 파일(*.brd)을 연다.
Drill Rack 파일의 작성: 명령 바에 “run drillcfg” 라고 입력하고 엔터 키를 누르거나, 메뉴 “File” → “Run”을 선택하여 “drillcfg”를 선택.
단위를 선택한 다이얼로그가 표시되면 인치(inch)를 선택하고,OK 버튼을 누른다.

현재 사용되고 있는 드릴(drill) 크기(size)들이 표시되는데, OK 버튼을 누르고 저장을 한다.

Excellon drill 파일의 작성
보드에서 CAM을 선택을 한다.

CAM Procesor 창이 뜨는데, “File > Open > Job…” 을 선택을 하고 표시된 파일중에 “excellon.cam“을 오픈한다.
그리고 좌측 하단의 Process Job을 선택한다.

거버 파일 작성
위 Excellon drill 파일의 작성과 마찬가지로 “File > Open > Job…”을 선택하고, 이번에는 “gerb274x.cam” 을 오픈한다.
그리고 좌측 하단의 Process Job을 선택한다.
이상으로 거버파일이 완성이 되었다. 완성된 거버파일은 gerbv같은 프로그램으로 확인을 한다.

6. 거버 확인하기
gerbv – A Free/Open Source Gerber Viewer :
http://gerbv.gpleda.org/


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

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


아두이노 보드에서 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.)


LeafLabs의 Maple mini, Maple Ret 5 보드 사용기

Arduino가 AVR을 기반으로 하여 오픈하드웨어 플랫폼을 주도하고 있는데, Leaflabs은 STM32시리즈를 기반으로 하는 오픈하드웨어 플랫폼을 만들고 있다. Leaflabs의 보드들의 이름은 Maple이다.
Leaflabs사의 홈페이지에서 주문을 하니 한 일주일만에 배송이 되었다. Arduino가 요즘에는 브랜딩 작업을 하고 있고, 포장 및 디자인까지 신경을 쓰는 반면 역시 후발 주자답게 포장이 좀 허접하다. 대신 사탕을 같이 넣어서 주네..ㅋㅋ



아두이노와 같은 모습의 IDE를 사용하는데, 일단 처음 부터 막힌다. IDE 다운로드


몇시간의 삽질끝과 bootloader 소스까지 받아서 bootloader 가 어떻게 동작을 하는지 알아낸 후에야 이해가 된다.
Windows 환경의 경우 드라이버를 수동으로 설치를 해야 하는데 2 종류의 드라이버를 설치를 해야한다.
 -. Maple R3 COM port 드라이버
 -. LibUSB-Win32 Devices 드라이버
만약 위 2번째 드라이버가 설치가 안되어 있으면, 다운로드시

Couldn’t find the DFU device: [1EAF:0003]


라는 메시지가 뜬다.

설치를 하는 방법이 좀 까다로운데, 리셋을 누르면 LED가 6번 빨리 깜박인다.
이 다음에 BUT 버튼을 누른후 장지관리자에서 설치가 되지 않은 드라이버를 수동으로 설치를 한다.
즉 Perpetual bootloader mode에서 설치를 해야 한다.
설치 파일은 IDE를 인스톨한 폴더 아래 drivers\mapleDrv 아래 dfu, serial 폴더에 각각 있다.

LeafLabs에 있는 Andrew가 알려준 유튜브에 있는 동영상



http://leaflabs.com/docs/maple-ide-install.html#id4 에 있는 설치 정보.


First, install DFU drivers (for uploading code to your Maple) using the following steps.



  1. Plug your Maple into the USB port.

  2. Hit the reset button on your Maple (it’s the small button at the bottom left, labeled RESET). Notice that it blinks quickly 6 times, then blinks slowly a few more times.

  3. Hit reset again, and this time push and hold the other button during the 6 fast blinks (the button is on the top right; it is labeled BUT). You can release it once the slow blinks start.

  4. Your Maple is now in perpetual bootloader mode. This should give you a chance to install the DFU drivers.

  5. Windows should now prompt you for some drivers. In the top level directory of the Maple IDE, point Windows to drivers/mapleDrv/dfu/.

Next, install serial drivers (for communicating with your Maple using serial over USB).



  1. Reset your Maple and allow it to exit the bootloader (wait for the slow blinking to stop). The Maple will next start running whatever program was uploaded to it last. (New Maples will start running the test program we upload to them before shipping them to you).

  2. Once Maple is running some user code, Windows should prompt you for more drivers. Point windows to driver/mapleDrv/serial.

일단 각각의 드라이버가 설치가 잘 되면 그 다음은 Arduino에서 작업을 하듯 할 수 있다.


 


아두이노의 미래


What’s Ahead Of Arduino – Part 1 – Massimo [email protected] 2011

What’s Ahead Of Arduino – Part 2 – Massimo [email protected] 2011
결국 아두이노의 힘은 커뮤니티!!

아래 사진은 Make Fair에서 나눠준 아두이노의 리플렛인데 신제품만 모았다.
각각의 제품마다 밑에 이 보드로 무엇을 할 수 있는지 설명이 있다.
가령 WiFi의 경우 Fully Hackable!
ADK의 경우 Develop your own android accessory !


아래 슬라이드는 아두이노가 OSHW 서밋에서 발표한 자료..


Pages:1234