:::: MENU ::::
Browsing posts in: Open Source Hardware

아두이노 Serial to USB 사용하기

원본소스는 Mac에서 \Resource\Java\hardware\arduino\firmware\atmegaxxu2 아래에 있다. arduino-usbdfu 또는 arduino-usbserial 를 사용한다. 이 소스에는 USB 프레임워크인 LUFA(Lightweight USB Framework for AVRs)가 빠져있으므로 http://www.fourwalledcubicle.com/LUFA.php 에서 다운로드한다. 다운로드한 LUFA 폴더를 arduino-usbserial 폴더와 같은 위치에 복사한다.

make 파일에서 다음과 같은 내용을 수정한다.

LUFA_PATH

# Path to the LUFA library

LUFA_PATH = ../

MCU

MCU = at90usb162  #atmega16u2와 pin to pin 호환임

컴파일된 hex파일은 avr isp등으로 write하면 된다.

이렇게 작업한 내용은 https://github.com/jbkim/usbserial


CAM350에서 Eagle CAD NC drill 데이터를 제대로 불러오기

위 그림은 CAM350에서 Eagle CAD로 만든 거버데이터를 Auto import로 불러온 것이다. drill data의 좌표가 맞지 않아서 우측 상단에 표시된 것 을 볼 수 있다. 이렇게 된 이유는 Eagle CAD에서 NC 데이터를 출력하는 포맷은 2.5인데 CAM350의 기본 설정은 2.4이다. 따라서 다음과 같이 CAM350의 Auto import 포맷에서 Digits항목을 2, 5로 수정하면 된다.

단순히 거버 데이터를 보는 수준이면 상관이 없는데 샘플 PCB가격을 아끼기 위해 2개 이상의 거버데이터를 합기기(영어로 PCB Penalization)위해서는 중요한 이슈이다.


USB 디바이스의 VID, PID

USB 디바이스 제품을 개발하려면 필요한 것이 USB 디바이스의 VID(Vendor ID), PID(Product ID)이다. 여기서 VID는 제조사의 ID이고, PID 제조사의 제품의 ID로 이해할 수 있는데 각각 2바이트로 VID-PID의 쌍으로 수많은 USB 디바이스와 구별이 가능하게 된다.  VID, PID는 USB Implementers Forum, Inc.(http://www.usb.org)에서 발급을 하는데 문제는 발급하는 데 드는 비용이 $5,000이다.

발급 신청서 링크 – http://www.usb.org/developers/vendor/VID_Only_Form_withCCAuth_010113.pdf

이 발급 신청서에 보면 다음과 같이 발급된 VID는 다른 사람에게 판매할 수 없다고 되어 있다. 예외 조항은  “special circumstances, and then only upon prior written approval by USB-IF”

The company set forth above hereby applies for a USB Vendor ID Number and agrees to the following: The USB Implementers Forum is the authority which assigns and maintains all USB Vendor ID Numbers. Each Vendor ID Number is assigned to one company for its sole and exclusive use, along with associated Product ID Numbers. They may not be sold, transferred, or used by others, directly or indirectly, except in special circumstances, and then only upon prior written approval by USB-IF. Unauthorized use of assigned or unassigned USB Vendor ID Numbers and associated Product ID Numbers are strictly prohibited.

하지만 MCS에서는 PID를 9.95유로에 판매(링크)를 한다. 그리고 openmoko의 경우 오픈소스하드웨어에 한하여 PID를 사용할 수 있게 하고 있다. http://wiki.openmoko.org/wiki/USB_Product_IDs  이 리스트를 보니, Marlin, Pinoccio, SparkCore, Tessel등이 openmoko로 부터 PID를 받은 것을 알 수 있다.

각 업체들이 받은 VID, PID는 http://www.linux-usb.org/usb.ids  링크를 참고. 그리고 PC에 연결된 디바이스의 VID, PID를 확인하려면 windows의 경우 장치관리자에서 확인이 가능하다.  

Mac OS에서는 “이 Mac에 관하여 > 개요> 시스템 리포트의 USB” 항목에서 확인이 가능하다.


ARM mbed – 데모 (big mouth billy bass)

ARM mbed는 2008년 ARM사의 직원이었던 Simon과 Chris가 Rapid Prototyping을 위한 개발 보드를 기획하면서 프로젝트가 시작이 되었다. 이때 ARM 코어를 사용하는 NXP사의 LPC1768칩을 사용하여 모듈을 구성하였으며, 2009년에 보스턴에서 열린 ESC(Embedded System Conference)에서 NXP사의 부스에서 모듈이 릴리즈가 되었고 물고기가 트위터 메시지를 네트워크로 수신해서 음성으로 출력하는 데모를 진행하였다.
2009년도 관련 동영상


Arduino Yún 뒷 이야기

Arduino Yun

Arduino YUN은 Artheros의 AR9331칩셋을 사용하는 모듈을 이용해서 만든 무선랜 보드이다. 물론 이 모듈에는 리눅스가 돌아간다. 전통적으로 무선랜 칩셋업체들은 무선랜 장비를 개발할 만한 업체에게 선별적으로 자신들의 무선랜 레퍼런스 보드의 회로도나 관련 자료들을 NDA를 맺고 공개한다. 이것은 자료를 완전히 오픈했을때 기술지원이 감당이 되지 않아서 이기도 하다. Arduino Yun은 dog hunter라는 업체로 부터 공급을 받아서 제품화한 것인데 모듈 내부의 회로도는 공개가 되지 않고 인터페이스만 공개가 되어 있다.   http://arduino.cc/en/uploads/Main/arduino-Yun-schematic.pdf

Arduino 또는 dog hunter에서 Artheros랑 NDA를 맺고 모든 자료를 받았을 것인데, 오픈할 수 없는 상황이다. 하지만 Arduino포럼에는 회로도를 오픈하라는 것…재미있는 것은 처음 이슈를 제기한 사람 [squonk42]이 TL-WR703N을 리버스 엔지니어링 한 사람이라는… 물론 OSHW의 원칙에 따르면 일부만 오픈해도 상관이 없다. 하지만 그동안의 Arduino의 명성에 좋지않은 이슈라는 것.

참고: http://hackaday.com/2015/02/24/is-the-arduino-yun-open-hardware/


Arduino Scuola와 3D 프린팅

최근에 발견한 Arduino Scuola 사이트: http://scuola.arduino.cc/

Arduino Scuola

이 사이트는 AdafruitSparkfun의 learn사이트와 같은 컨셉의 사이트인데, 아직 자료가 많지 않아서 인지 메인 사이트에서 링크도 없다. 하지만 아두이노의 블로그의 글에서 언급한 내용에 이 사이트의 내용이 링크로 연결되는 것으로 보아 곧 활성화가 될 것같다. 오픈소스 하드웨어 비즈니스에서 이러한 접근은 몇 년 전부터 내가 예측하고 있던 방향이다. 즉 초보자 들이 쉽게 따라할 수 있는 컨텐츠를 제공하고, 관련된 부품이나 키트를 온라인 샵에서 같이 판매를 하는 것이다.

또 한가지 추세는 3D프린팅과 디지털기기의 결합이다. 아주 간단한 예가 소개가 되고 있는데, 이런 추세는 더 활발해 질 것 같다. 즉 디지털 기기에 3D 프린터를 사용하여 개인화된 내용이 부가되는 형태이다. 이런 식의 접근을 하고 있는 업체중 하나는 3D Racers인데 온라인에서 장난감 자동차의 외관을 사용자가 디자인 할 수 있다.

3DRacers


아두이노 & 이클립스 (Arduino & Eclipse)

지난번 포스팅 ‘이클립스(Eclipse)에서 아두이노(Arduino)사용하기’ 은 이클립스에서 플러그인을 설치해서 아두이노를 사용하는 것이었다. 하지만 아두이노는 command line에서 컴파일을 지원하므로 이런 플러그인 없이도 make 파일의 위치, 컴파일러 정보등만 이클립스에 설정하면 사용이 가능하다.

1. 프로젝트 만들기

File > New > Makefile Project with Existing Code를 선택후 Project Name을 설정하고 Existing Code Location을 설정한다.

2. Project Properties

C/C++ Build항목에서 Build location의 Build directoty 설정은 makefile이 있는 위치를 지정한다.

C/C++ General 항목의 Path and Symbols에서 Include할 폴더들을 입력하고  Symbol에도 미리 정의돼야 할 심볼을 입력한다.

3. MakeFile

정작중요한 것은 MakeFile이다. 여기에 제대로된 설정이 되어 있는지 확인해야 함.


아두이노에서 정의되지 않은 핀 사용하기

아두이노 보드는 각종 라이브러리들을 잘 만들어 놓아 쉽게 프로그래밍이 가능하다. 일례로 가장 간단한 예제인 blink 예제를 보면 pinMode() 함수를 사용해서 온오프할 핀을 출력으로 정하고 digitalWrite()함수를 사용해서 LED를 온오프한다.

 * 참고로 pinMode() 함수를 사용할때 주의할 점은 인자로 받아들이는 pin의 숫자가 아두이노 보드에 명기된 숫자이지 AVR칩의 pin number가 아니라는 점이다.

Arduino Uno보드의 경우는 Atmega328칩의 모든  핀들이 보드에 나와있어서 문제가 없으나 위 그림과 같이 Arduino Mega보드의 경우 일부 핀들이 보드에 나와있지 않다. 보드에 핀이 나와있지 않으니 라이브러리에도 핀들이 정의되어 있지 않다. 따라서 만약에 이 핀들을 사용을 하려려면 라이브러리를 수정을 해야 하며, pinMode() 라는 함수가 어떻게 동작하는 지 알아야 한다.

위 코드에서 보듯이 digitalPinToBitMask() 함수와 digitalPinToPort() 함수를 어떤 포트의 어떤 핀을 설정할 것인지를 알아낸다. 이 함수들을 따라가다 보면 pins_arduino.c pins_arduino.h에 각 핀들이 어떤 포트에 있는지 정해져 있는데, 이곳에서 추가를 해야 한다. ATmega 2560이 아두이노에서는 디지털 핀의 경우 53번까지 정의가 되어 있으므로(ATmega2560-Arduino Pin Mapping 참고) 정의 되어 있지 않은 핀은 이 번호뒤에 정의해서 사용하면 된다.

pins_arduino.h 파일은 아두이노 1.0.6의 경우 아래 경로에 있다. Arduino.app/Contents/Resources/Java/hardware/arduino/variants/mega/pins_arduino.h


이클립스(Eclipse)에서 아두이노(Arduino)사용하기

이클립스 개발환경에서 아두이노사용하기

  1. 이클립스(Eclipse) 설치 http://www.eclipse.org/downloads/ Eclipse IDE for C/C++ Developers 를 설치
  2. 아두이노 이클립스 플러그인:  저작자의 홈페이지Installation advice, 가 있으니 참고. 플러그인 설치는 이클립스를 실행후 Help >> Install New Software…를 실행후 “http://www.baeyens.it/eclipse/update” 주소를 입력하고 Add 버튼을 누른다. 그러면 Arduino Eclipse extensions 이 나타나는데 이것을 선택하면 설치가 된다.
  3. Preferences > General > Workspace를 선택하고 “Save automatically before build”를 선택 
  4. Arduino항목에서 Arduino가 설치된 path와 library path 를 입력하고, Use Arduino ODE tools in eclipse를 선택한다. 그리고 test serial dll를 클릭해서 serial drive가 동작하는 지 확인한다.
  5. 아두이노 프로젝트 만들기: New >> Project >> Arduino >> New Arduino sketch를 선택, 프로젝트 이름를 설정, 보드와 COM port를 설정하면 setup()과 loop()함수가 만들어진 빈 프로젝트가 생긴다.
  6. 간단한 blink 예제를 만들고 Project >> Build All하면 컴파일이되고, AVR >> Upload Project to Target Device를 선택하면 아두이노 보드에 프로그래밍이된다.

오픈소스하드웨어 체크리스트

OSHWA에서 발표한 오픈소스하드웨어 체크리스트. 이것은 오픈소스하드웨어 정의 및 베스트 프랙티스의 내용을 기반으로 체크리스트를 만들었다.  그리고 오픈소스하드웨어가 반드시 갖추어야 할 요건에  관한 문서도 유용하다.

❏      Does your hardware comply with the open source hardware definition: http://www.oshwa.org/definition/

❏      Have you allowed anyone to study, modify, distribute, make and sell the hardware?

❏      If you used a Creative Commons license for your source files (documentation), did you chose options compatible with the definition? Non-Commercial and No Derivatives are not open source.

❏      Did you put the oshw logo on your hardware so people can easily identify it as open source hardware? (strongly recommended)

❏      Do all company logos on the hardware belong to you? Do not infringe on trademarks!

❏      Are your source files in an easily attainable format?

❏      Are the source files publicly available online?

❏      Are your source files easy to find, for example, linked to from the product page?

❏      Have you documented your project in a way that people will be able to copy?

❏      Is your documentation free of charge?

❏      Have you included images in your documentation? (strongly recommended)

❏      Are you emotionally prepared to allow your project to be copied?

❏      If not all parts/versions are open, have you clearly specified which portions of the design are being released as open source hardware and which are not?

위 체크리스트를 모두 만족하면 오픈소스하드웨어이고, OSHW 로고를 붙일 자격이 있다.