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

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

아두이노 보드는 각종 라이브러리들을 잘 만들어 놓아 쉽게 프로그래밍이 가능하다. 일례로 가장 간단한 예제인 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 로고를 붙일 자격이 있다.



Open Source Hardware 관련 기사들

좀 오래된 기사도 있지만 나름 읽어볼 만 하다.

Adafruit’s revenue has tripled year over year, and the company projects full-year revenue for 2013 will reach $20 million. Customers are not just limited to hobbyists and isolated makers, said Limor Fried, founder of Adafruit.

“What we’re building is really twofold,” said co-founder David Lang. “The individual tool and specific device is great. The other half is this community of people who have assembled.” – OpenRoV

Building a community can give rise to brand loyalty. The RepRap has emerged as the most popular open-source 3-D printer. Founder Adrian Bowyer designed it to be self-replicating and easily modified, so users can print replacement components or experiment with new ones.

New York-based littleBits makes electronic modules that snap together with magnets to make larger circuits. The company makes the designs for the circuits open to the public, but not the schematics for the magnetic connector. The idea is to allow the user base to contribute designs for future circuits and kits, while protecting the product. Founder Ayah Bdeir said the threat of another company copying its designs is always a concern, but it can also be an asset. “It’s kind of a double-edged sword. On the one hand, it does create stress, but it also keeps you competitive,” she said.

Although open-source hardware has largely been seen as existing at the simpler end of the electronics design spectrum, it embraces two major assets within the engineering community—goodwill and collective intelligence—and is being recognised as an important movement with increasing opportunities across both industry and education.

RS now hosts the Open Source Design Centreon designspark.com, the company’s online resource for electronics design engineers.

 Protei Inc (creating open source sailing drones),  Sneel.cc

Google, TI, Intel – 커며셜 제품 / 스타트업 / 아티스트, 하비스트

인터넷 덕택에 서로 collaboration이 가능 (community-driven innovation) – The internet has played a huge role in an growth of open source hardware technologies & communities. The internet  has allowed for quick & easy sourcing and distribution of tools like the laser cutter, 3d printers, prototyping boards. Online Wikis and Forums have been hugely influential to allow for conversation amongst people in remote locations. These have allowed easy distribution of how-to manuals as well as a place to get questions answered fast.

I believe that the forces driving the open source hardware landscape originated from growing accessibility of tools, which has been caused by faster communication (via the web) and cheaper faster shipping of physical goods, which has in turn led to a willingness of companies to do faster cheaper run supplies.

1. Distributors – Seeed StudioSparkfun and Adafruit  / 2. Platform technologies – Robotic platforms(OpenROVDiyDrones), Prototyping platforms – Arduino, Beaglebone… ,  Open Hardware toolkits – Lasersaur, Educational platforms – Little Bits

China is a very interesting space for me to look towards as a country that, due to its lack of IP laws, is rapidly producing hardware. There is fast-paced manufacturing, and inexpensive tools and materials. I believe that China is going to be a huge driving force in the open source hardware landscape. Exemplary of this, I really love Tom Igoe’s “Idle Speculation on the Shanzhai and Open Fabrication

the future of OSHW will be driven by the opportunistic semiconductor companies. The level of openness matters. OSHW will also be driven by the intensely creative and nascent Maker community, by the foresighted in academia, and by the altruism found in human nature. Look for more medical-related projects as professionals without borders look to solve problems, such as a low-cost, open source ECG,i and low-cost infusion pumps.

Further reading:


Maker Faire Shenzhen

지난 4월 6-7일 중국 심천에서 메이커페어가 열렸다. 이번이 3번째인데, 이전까지는 미니 메이커 페어였는데 이번에는 정식 메이커페어의 이름을 달고 규모도 크고 글로벌하게 진행이 됐다. 장소는 심천의 Shekou 지역인데 이곳은 외국인도 많이 사는 것 같고 거리는 중국같지 않게(?) 깔금하고 공방, 갤러리, 카페가 많은 지역이다. 외국인이 꽤 있는 이유는 아마도 이 지역에서 하드웨어 스타트업들이 많이 생기고, 생산을 중국에서 하는 외국 업체들이 많아서이지 않을가 추측을 해본다.

2014-04-06 09.29.08

전시 장소로 가는 길

2014-04-07 09.54.47

2014-04-07 09.55.21

메이커페어가 열리는 장소

전시장소는 사거리에 A, B,C,D로 구역을 나누어서 부스가 설치가 되고, 가운데에는 무대가 있어서 매시간 마다 이벤트를 하거나 참가한 메이커를 소개하는 장소이다. 그리고 포럼은 옆의 건물에서 양 이틀간 진행이 되었다.

1_venue

 

가운데 무대에서는 드론을 날리거나 이벤트를 진행을 했는데, 아래 사진은 오픈소스 자동차인 OSVehicle 팀이 45분만에 자동차를 조립하는 데모를 보여줬다.

2014-04-07 11.08.20

이 행사에 참여한 업체 및 메이커들은 총 104개 이고, 미국, 영국, 일본 등 해외업체들도 참가를 많이했다. 특히  오픈소스하드웨어 기반으로 Kickstarter에서 펀딩을 받은 업체인 Spark, Hellios,  Protei 등이 눈길을 끌었다. 이중 부스에 참가한 기업으로는 Atmel, Intel이 부스의 규모가 컸고 각각 아두이노 관련된 제품과 갈릴레오를 이용한 응용들을 전시를 했고, TI의 경우는 LaunchPad등의 제품을 전시를 했다.

이외에 3D 프린터(50만원 이하의 제품도 있음), 개발 보드류, 드론, 패션관련 웨어러블, IoT 제품들이 전시가 되었고, 재미있었던 것 중 하나는 Flappy Bird를 자동으로 하는 로봇이 흥미로웠다. 이것은 이미지 프로세싱을 해서 iPad를 터치하는 것인데, 절대 죽지 않는다. ^^


더 많은 사진 보기 ==> https://www.flickr.com/photos/jbkim/sets/72157643931955115/ 

이번 메이커페어에서 느낀점

  • 미국의 메이커페어는 마치 축제같고 거대한 반면 우리나라의 메이커페어는 주로 취미로 뭔가를 만드는 것들이 많은 반면 중국은 이것을 가지고 사업을 하는 메이커들이 많다.
  • SeeedStudio가 행사를 잘 기획함 – 단지 Maker Fair뿐 아니라, 이 행사의 앞뒤로 IDF(인텔 개발자 포럼 행사), 창업 관련 컨퍼런스, Shenzhen지역의 공장 투어, CITE(China Information technology exhibition)을 묶어서 12일짜리 프로그램으로 외국인들을 초대하고 있다.
  • OSHW 분야가 rapid prototyping에서 production을 촉진하고 있고, 이런 흐름이 가속화 되고 있다.
  • 이를 돕는 것으로 인텔의 에디슨같은 모듈과 중국 공장의 생산(Shenzhen Effect)뿐 아니라 중국의 아이디어(Beijing Maker Space)가 이를 촉진하고 있다.
  • 전세계 H/W Startup들의 중국 생산이 가속화 될 것 같음 – 부품 소싱능력, 생산 능력, 아직까지는 낮은 인건비.

최근 언론에 소개된 SeeedStudio의 기사This Manufacturing Hub Is Also Becoming the Center of Chinese Creativity



SPI of Arduino

SPI of Arduino

ArduinoMOSIMISOSCK
UnoD11 or ICSP4D12 or ICSP1D13 or ICSP3
Mega256051 or ICSP450 or ICSP152 or ICSP3
LeonardoICSP4ICSP1ICSP3
DueICSP4ICSP1ICSP3

SPI 신호들은 ICSP핀이나 보드의 우측 상단(AREF 있는 쪽)에 같이 연결된 경우도 있으나, 그렇지 않은 경우도 있다. 그러므로 SPI를 사용하는 쉴드를 디자인 할 경우 라우팅을 쉽게하기 위해 한쪽만 SPI를 사용하려면 ICSP핀 쪽에만 연결을 하면 된다.


Arduino Ethernet 라이브러리 업데이트

WZnet 칩 W5100, W5200과 W5500을 지원하는 통합 아두이노 라이브러리인 Arduino Ethernet 라이브러리를 업데이트 했다. 기존 코드에서 달라진 점은 다음과 같다.

  • Arduino IDE 1.5.x 지원 : Arduino Due를 지원하기 위함.
  • Due용  SPI 드라이버 추가
  • W5200및 W5500의 경우 SPI드라이버 속도를 높였다. 무려 42Mhz까지 지원
  • w5100::read_data함수의 파라미터의 형 변경
  • flush() 함수 추가

Arduino IDE 1.5.xx를 지원하기 위해서는

  • 32비트 SAM용 SPI 드라이버가 추가 되야한다.
  • IDE 1.5.x의 폴더 구조가 바뀌어서 헤더파일 include가 변경된다.아래 그림 참고…  예를 들면 #include “w5100.h”가 #include “utility/ w5100.h” 이런 식으로…

Arduino_Folder

  • AVR코드와의 구별은 #if defined (ARDUINO_ARCH_AVR)로 한다.

W5500 SPI

W5500_SPI

데이터 시트에는 이론상 80Mhz까지 가능하다고 나오지만 실제로는 33Mhz 정도가 최대 SPI clock으로 명기해 놓고 있다. 그리고 Atmel SAM에서  SPI clock은 다음과 같이 결정된다. 즉 메인 클럭을 분주해서 사용을 하는데, 아두이노에서는 84Mhz를 메인으로 사용하므로 14Mhz, 28Mhz, 42Mhz, 84Mhz가 설정이 가능하다.

SAM_SPI

 

아두이노 코드에서는 다음과 같이 클럭을 분주해서 42Mhz가 가능하다. 1로 분주하면 84Mhz 인데, 칩에서는 80Mhz까지만 지원하므로 84Mhz는 지원이 안된다. 42에서 84는 갭이 크다…

참고로 아두이노에서 W5100의 SPI는 4Mhz로 설정이 되어 있으니, 거의 10배 이상이 빨라짐~~


Arduino 코드에서 WIZnet칩 구별하기

WIZnet 칩

WIZnet 칩중에서 SPI가 지원되는 칩은 W5100, W5200 그리고 W5500이 있다. 이중 W5100은 아두이노에 적용이 되어 Ethernet Shield 및 Arduino Ethernet 보드에 사용이 되고 있다. 물론 W5200으로 만든 Ethernet Shield도 있고 W5500으로 만든 Ethernet Shield도 있다. 그리고 최근에는 아두이노 팀에서 W5500으로 Ethernet Shield를 만들고 있다. 이렇게 3가지 칩으로 적용된 보드가 있는데, 그럼 코드에서 이 칩들을 구별할 수 있는 방법이 있는가?

Arduino 코드에서 WIZnet칩 구별하기

W5100, W5200, W5500의 칩들의 기본 기능은 같지만 H/W적으로는 패키지도 다르고 핀도 다르고, 내부 메모리 맵도 다르다. 모두 SPI 를 사용하지만 칩을 제어하기 위한 SPI format도 다르다. 그리고 W5100은 소켓이 4개이고 나머지 칩들은 모두 8개의 소켓을 지원한다.

코드에서 이들 칩을 구별을 하려면 이 칩들의 내부 레지스터를 읽어서 각 칩들에만 유효한 값을 확인해서 비교를 해야한다. 다행히 W5200과 W5500은 칩의 버젼을 구분하는 레지스터가 있다. 따라서 이들 2칩을 구분하면 3개중 2개를 구분이 되니 W5100은 구분이 가능하다. 즉 W5200이 경우 version 레지스터(0x001F)를 읽으면 0x03이 읽히고, W5500의 경우 0x0039 번지를 읽으면 0x04가 읽힌다.

 W5100W5200W5500
0x001F0x000x030x00
0x00390x000x000x04

아두이노 코드

아래 코드는 아두이노 Ethernet 코드를 수정하여 만든 코드이고, Webserver.ino에서 테스트를 했다.

관련 코드는 : https://github.com/jbkim/Differentiate-WIznet-Chip