:::: MENU ::::

Transformer없이 이더넷 구현하기

일반적으로 이더넷 응용에서는 PHY의 출력단에 트랜스포머가 필요하다. 하지만 길이가 짧은 경우나 특별한 응용의 경우 트랜스포머를 사용하지 않고 구현이 가능하다. 이 때는 TX+-, RX+- 신호에 DC 커플링 캐패시터 33nF를 연결을 한다.

[wpdm_file id=6]

사실 이 내용보다는 IEEE802.3에서 요구하는 PHY signal의 형태가 다른 문서에서는 볼 수 없어서 귀중한 자료…

Phy_Signal


6LowPAN Network Processor – CC1180

CC118은 6LowPAN chip으로 검색을 하면 나오는 TI의 칩이다. 데이터시트를 보니 최근 ARM에 인수된 Sendinode의 솔루션이 칩에 들어가 있다. MCU와의 인터페이스는 UART이다.

데이터시트 다운로드는 아래 링크에서… [wpdm_file id=5]

CC1180

 


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/


CortexM0 보드와 CooCox

NXP LPC1114 보드

이전 블로그를 보니 2011년도 초에 NXP와 Nuvoton의 Cortex M0에 대해 쓴 블로그 포스팅이 있었는데 최근 당시에 CooCox로 부터 받은 보드와 최근에 Nuvoton에서 받은 보드를 테스트를 해봤다. 아래 그림에서 위에 있는 것은 NXP칩을 사용한 LPC1114보드이고, 아래 그림은 Nuvoton의 M0516NBL 을 사용한 보드이다.

CortexM0 보드

최근 이런 개발 보드들의 특징은 디버거를 포함을 하고 있는데, 보드의 좌측 부분이 디버거 기능을 하며,  CMSIS-DAP 기능을 한다.

하지만 몇 년 지난 보드를 다시 PC에 연결을 해보니 일단 연결 부터가 되지 않는다. 아마도 이 보드의 CooCoox의 ColinkEX가 업데이트가 됐는가 싶어서 이 보드의 ColinkEX f/w를 확인해 보니 예상한 대로 f/w가 업데이트 되어 있다. 관련 자료: http://www.coocox.org/CoLinkGuide/CoLinkDIY.htm

  • JP1을 쇼트시키고 USB 전원을 연결하면 LPC1343 칩의 내부 메모리가 “”CRP2 ENABLD” or “CRP DISABLD”의 레이블을 가진 MSD로 잡힌다.
  • 여기에 파일을 제거하고 위 링크에서 F/W를 다운로그해서 카피한다.
  • JP1을 오픈하고 USB 전원을 다시 연결한다.

물론 PC에는 드라이버를 설치를 해야한다.

Nuvoton NuTiny-M051보드

이 보드의 왼쪽 부분의 디버거의 이름은 Nulink이며, 보드를 PC에 연결을 하니 USB-HID로 잡힌다. NXP 보드와 마찬가지로 디버거를 이용해 개발을 하고 양산시에는 보드를 잘라서 F/W를 구울수 있는 구조로 되어 있다. 사용해 보니 mbed에 있는 CMSIS-DAP와 다른 점은 호스트에 연결되는 USB로 시리얼까지 처리를 하지는 않아서 시리얼 출력을 보려면 보드에서 선을 따로 뽑아야 한다. 하지만 NXP 보드는 보드에 RS232C 드라이버 칩과 소켓이 있어서 바로 연결을 할 수 있다.

CooCox 개발 환경

CooCox 역시 당시 블로그 포스팅에도 소개를 했었는데 최근 다시 설치를 해서 확인을 해보니 다양한 Cortex 칩들을 지원을 하고 있고, 커뮤니티도 제법 커져있다. 하지만 당시와 달라진 점은 ARM GCC 를 따로 설치를 해주고 경로를 설정을 해줘야 한다.

위 사이트에서 gcc를 다운로드 받고 설치를 한후, Project >> Select Toolchain Path를 지정을 한다.

CoIDE_Set_1

Blink 테스트

입베디드 보드에서의 Hello World와 같은 LED 깜박이기 예제를 돌려보자. 프로젝트를 만드는 것은 쉽다.

coocox

  • Project >> New Project : 프로젝트 이름을 정한다.
  • 칩 또는 보드를 선택을 하는데, 만약 이 툴에서 제공하는 보드리스트에 사용하는 보드가 있다면 보드를 선택을 하고, 없다면 칩을 선택한다.
  • 사용할 컴포넌트를 선택한다.  만약 GPIO를 선택을 하면  CMSIS Core와 CMSIS Boot는 자동으로 로드 된다. (스텝 3)
  • 좌측 창의 Component 부분의 GPIO에  2개의 예제가 있다고 표시가 된다. 이것을 선택을 하고 Blink예제를 add하면 프로젝트의 main 함수에서 blink 함수를 호출을 한다.
  • Blink.c 파일을 보면 Port2의 GPIO9 를 on/off 하는데, 내가 가지고 있는 보드의 설정과 동일하다. 즉 코드를 수정할 필요가 없다.
  • Project  >> Build (단축키 F7)를 한후, Flash >> Program Download를 선택한다. (보드의 JP2는 쇼트)
  • 보드의 JP2를 오픈하고 리셋 버튼을 누르면 다운로드 한 코드가 동작을 한다.

이상으로 코드 한줄 코딩하지 않고 개발 환경 설정하고 칩에 F/W까지 다운로드해서 동작을 확인했다. 사용을 해보니 참 편한데 한가지 아쉬운 점은 CooCox가 Windows만 지원을 한다는 것. LPCXpresso의 경우는 3가지 OS (Win, MAC, Linux)를 다 지원하는데….


CMSIS-DAP 란?

CMSIS

Cortex Microcontroller Software Interface Standard의 약자. 즉 다양한 칩 벤더가 Cortex 시리즈의 IP를 라이센스해가면서 하드웨어 독립적인 표준화된 소프트웨어 인터페이스가 필요하게 됨.  이것은 다음을 포함한다. 스펙은 ARM에 사용자 등록을 하면 받을 수 있다. 회원 가입을 하고 이 링크에 접속을 한다.  https://silver.arm.com/browse/CMSIS

  • CMSIS-CORE: provides an interface to Cortex-M0, Cortex-M3, Cortex-M4, SC000, and SC300 processors and peripheral registers
  • CMSIS-DSP: DSP library with over 60 functions in fixed-point (fractional q7, q15, q31) and single precision floating-point (32-bit) implementation
  • CMSIS-RTOS API: standardized programming interface for real-time operating systems for thread control, resource, and time management
  • CMSIS-SVD: System View Description XML files that contain the programmer’s view of a complete microcontroller system including peripherals
  • CMSIS-DAP

CMSIS-DAP의 DAP는 Coresight Debug Access Port의 약자이다. 구체적인 스펙은 역시 ARM에 사용자 등록을 하면 받을 수 있다. https://silver.arm.com/browse/CMSISDAP 아래 그림은 3가지 mbed모듈에 어떻게 CMSIS-DAP가 연결이 되어 있는지를 보여준다.

cmsis-dap-6

여기서 onboard interface의 기능은 다음 그림으로 설명이 된다. 즉 호스트와는 USB로 연결이 되어, Mass Storage Device 프로그래밍, CMSIS-DAP 로 디버깅, 가상 시리얼 포트를 제공한다.

onboard-if-block

mbed의 HDK에 이것이 포함이 되어서 커스텀 디자인을 지원하지만 현재는 NXP LPC1768, LPC11U24 and KL25Z  이 3가지 칩만 지원을 하고, 몇 벤더(NXP, Freescale)만 선택을 했다는…

The mbed HDK currently supports the NXP LPC1768, LPC11U24 and KL25Z. Due to an unexpectedly high demand for the HDK, we are choosing a few lead partners to work with to iron out any issues that may arise before we make it freely downloadable.

출처: http://mbed.org/handbook/mbed-HDK#mbed-onboard-interface

CMSIS-DAP firmware

중요한 것은 인터페이스 칩의 firmware인데, 이것도 위 사이트에서 다운로드가 가능하며 하드웨어 요구사항은 다음과 같다.

Hardware Requirements

The CMSIS-DAP Firmware is designed for Debug Units that fulfill the following hardware requirements:

  • Cortex-M0, Cortex-M0+, Cortex-M3, or Cortex-M4 processor-based microcontroller.
  • CPU Clock: 48MHz or higher; Microcontroller must have a SYSTICK timer.
  • RAM: 8KB or more; Flash ROM: 16KB or more.
  • Full-speed or High-speed USB Device Peripheral.
  • 7 standard I/O pins for JTAG/SWD Device Interface.
  • optional 2 I/O pins for Status LEDs.

추가자료

  • SeeedStudio의 경우는 보드에 타겟칩만 있는데, 이경우는 보드 2개를 연결해서 프로그래밍을 하기도 한다. 관련 정보
  • NXP에서 제공하는 app. note:  Porting the CMSIS-DAP debugger to the Cortex-M0 platform [wpdm_file id=4] 

mbed 분석

mbed

mbed는 웹 기반의 컴파일러를 사용하는 보드로 2005년 ARM 사의 2엔지니어인 Simon(ARM R&D)과 Chris(ARM Support)가 “Rapid Prototyping for Microcontrollers”라는 비젼으로 시작을 했다. 이제는 오프라인 툴들로의 변환도 지원을 하고 활발한 커뮤니티를 가지고 있는데, 2007년 정도에 지금의 모습을 갖추었다고 한다[1]. 현재 NXP의 ARM CortexM3 칩인 LPC1768을 사용한 모듈과 M0기반인 LPC11U24을 사용한 버젼 그리고 올 2013년에 Freescale의 MKL25Z128VLK4을 사용한  Freedom FRDM-KL25Z 보드등 다양한 플랫폼(http://mbed.org/platforms/) 들이 있다.

mbed_pinout

Features

  • NXP LPC1768 MCU
    • High performance ARM® Cortex™-M3 Core
    • 96MHz, 32KB RAM, 512KB FLASH
    • Ethernet, USB Host/Device, 2xSPI, 2xI2C, 3xUART, CAN, 6xPWM, 6xADC, GPIO
  • Prototyping form-factor
    • 40-pin 0.1″ pitch DIP package, 54x26mm
    • 5V USB or 4.5-9V supply
    • Built-in USB drag ‘n’ drop FLASH programmer
  • mbed.org Developer Website
    • Lightweight Online Compiler
    • High level C/C++ SDK
    • Cookbook of published libraries and projects
  •  mbed회로도: http://mbed.org/media/uploads/chris/mbed-005.1.pdf

모듈의 전면에 있는 칩이 LPC1768이며, 내부에 512KB 플래시 / 32KB  램을 가지고 있으며, 핀 타입은 브레드보드에 꼽기 쉽게 2.54피치의 배수로 되어 있고 USB전원으로 동작한다. 모듈의 뒷면에는 또 다른 칩(CortexM3로 추정되며 mbed Interface라고 불린다.)과 Atmel사의 AT45DB161D 시리얼 플래시 메모리(2MB), 이더넷 PHY가 달려있다.  회로도 및 아래 그림을 보면 mbed Interface는 USB로 PC에 연결이 되어서 시리얼 플래시를 Mass Storage로 보이게 하고, 사용자가 여기에 펌웨어를 넣으면 JTAG으로 연결된 타겟( LPC1768)에 프로그래밍을 한다. Mass Storage의 파일시스템은 FAT12라고 하며, 가장 최근 파일이 프로그래밍이 된다.

mbed-internals

mbed Interface칩의 역할을 더 자세히 알려면 CMSIS-DAP를 알아야 한다.


Nightly build

Nightly build란?

오픈소스프로젝트의 소스를 다운로드하다보니 정식으로 릴리즈된 버젼이 있고, 그 밑에 Nightly build라는 것이 있다. 위키피디아에 찾아보니 다음과 같이 나온다.

소프트웨어 개발 단계에 따라 분류를 나눌 수 있다. 소프트웨어 배포자에 따라 이 소프트웨어 분류는 바뀔 수 있지만 일반적인 룰은 다음과 같다.

  1. 알파 버전: 개발 주기에서 알파 버전의 경우 내부 테스트용으로 공개하는 경우가 많다. 거의 모든 주요 기능을 포함하고 있지만 많은 버그가 존재하고 실제 사용자가 도입해서 사용하기에는 무리가 있는 버전을 말한다. 베타 버전 이전의 단계이다.
  2. 베타 버전: 베타 버전의 경우 알파에서 나온 문제점들을 수정한 단계이고 외부로 공개 테스트를 시작할 수 있을 정도의 완성도를 가진 소프트웨어를 말한다. 이후로는 새로운 기능보다는 나온 문제점들을 수정하고 UI를 최적화 하는 작업을 진행한다.
  3. RC (Release Candidate): RC는 Microsoft에서 사용하는 소프트웨어 개발 단계로 정식판이 배포되지 직전의 단계로 볼 수 있다. 일반적으로 베타와 정식 배포판의 중간단계에 해당한다.
  4. Nightly build: 매일 발생하는 소프트웨어에 대한 수정사항을 포함하고 있는 소프트웨어 배포버전이다. 소프트웨어는 테스트가 되어 있지 않을 수 있기 때문에 매우 불안정한 상태이다.

출처: 위키피디아(소프트웨어)

영문 위키피디아에 보면 왜 nightly build라는 말을썼는지 이해가 더 쉬울듯…

nightly build is a neutral build that takes place automatically. These typically take place when no one is likely to be working in the office so that there are no changes to the source code during the build. The results of the build are inspected by the arriving programmers, who generally place a priority on ensuring the recent changes to the source code have not broken the build process or functionality of the software.

 


LPC810 ARM CortexM0+ Project -1

Project Description

이 프로젝트의 목적은 가장 작은 MCU에 Ethernet connectivity를 구현하는 것이다. 아마 아래 그림과 같은 형태가 될것이다.

lpc810_ethernet

CortexMo+

NXP에서 출시한 LPC800시리즈는 ARM사의 CortexM0+ 시리즈의 칩이다. ARM의 소개 페이지에 있는 것 처럼 CortexM0와 마찬가지로 8, 16비트 시장을 타겟으로 하고 있다. CortexM0와 비교해서는 파워소모를 더 줄였고 성능은 더 높인 버젼이라고 이해하면 될 듯 하다. TI의 MSP430과 비교를 한 사이트도 있는데, GPIO만 적을뿐 가격, 파워 소모, 성능등 모든 면에서 우월하다.

LPC810

LPC800 시리즈중 눈길을 끄는 칩은 8핀 DIP패키지인 LPC810 이다.

Lpc800 dip8

이 패키지의 내부 구조는 아래 그림과 같다. 전원핀 6, 7번을 제외하면 나머지 핀들은 GPIO와 다른 기능이 multiplex되어 있어서 칩의 핀수를 줄일 수 있다. 더구나 내부 RC발진 회로덕분에 외부에 크리스탈 또는 오실레이터를 연결하지 않아도 된다.

LPC810_Pin

LPC810 시리즈는 아래 그림과 같이 메모리 용량에 따라 DIP8, TSSOP16, SO20, TSSOP20등의 패키지가 존재한다.

LPC810 Ordering

회로도

LPC810_Sch

일단 간단한 동작확인을 위해 Ardafruit에서 LPC810 Mini Starter Pack을 구매하고 Adafruit의 회로를 참고해서 위와 같은 회로를 구성하였다. Adafruit의 회로는 초보자를 위해 Fritzing(이 툴 관련 이전 블로그의 글들)을 이용해서 그려져 있는데 사실 엔지니어가 보기에는 회로도가 더 편하다. 암튼 안정적인 동작을 위해 난 리셋 회로를 추가하고 편의를 위해 ISP에 핀 헤더를 달았다. P0_2에는 LED가 달려있으며, MCP1700 레귤레이터를 통해 5V가 3.3V로 변환되어 칩에 입력이 된다.

프로그래밍

요즘 나오는 칩들이 거의 모두다 그렇지만 이 칩도 내부 ROM에 bootloader가 있고,  ISP(In System Programming)기능을 지원한다. 즉 UART를 통해서 내부 Flash의 업데이트가 가능하다.  그리고 NXP에서 제공하는 개발 환경인 LPCXpresso는 이클립스 기반이라서 Win, MAC, Linux를 모두 지원한다.  Adafruit에서 소개하는 페이지에는 Windows기반에서 설명을 하는데 난 MAC  환경이라서 OS X에서 개발 환경을 구축하였다. LPCXpresso를 다운받으려면 http://lpcxpresso.code-red-tech.com/LPCXpresso/ 여기에 사용자 등록을 해야 다운로드가 가능하다. 문제는  MAC용 Falsh Magic에서 아직 LPC800시리즈를 지원하지 않아서 lpc2isp를 사용해야 한다.

  • LPCXpresso에 프로젝트 등록 : 이 내용은 Adafruit에 자세히 나와 있으니 이곳을 참고. 간단히 설명하면  코드를 Github에서 ZIP 형태로 다운로드해서  받아서 LPCXpresso에서 Import Project를 하면 된다.
  • PL2303드라이버: Adafruit의 USB to TTL Serial Cable 에서 설명하는 Prolific 드라이버를 설치했으나 MAC 에서 인식이 되지 않아 인터넷에서 다른 드라이버를 찾아서 인식시켰다. [wpdm_file id=3]
  • Mac에서 시리얼 포트가 잡혔는지 확인하기: ls /dev/tty.*
  • Flash Magic 대신 lpc2isp사용하기: http://lpc21isp.sourceforge.net/에서 소스를 다운로드 받아서 gcc 로 컴파일 한다. 단 make 파일에서 CFLAG에 -static옵션을 빼야지 제대로 컴파일이 된다.

lpc21isp

  • lpc2isp 사용법은 “lpc21isp hex-file명 serial-port baud-rate clock of MCU(in Khz단위)”이다 여기서 마지막 파라미터인 MCU의 clock을 Khz단위로 넣는 것이 중요하다.  즉: ./lpc21isp LPC810_CodeBase.hex usbserial 115200 12000 을 입력하면 아래 그림과 같이 제대로 flash가 write 된다.

lpc2isp

위와 같이 프로그래밍 끝나면,  점퍼를 제거하고 리셋 버튼을 누르면 코드가 동작을 한다. 아래 그림은 LED를 깜박이는 코드를 로드….

LPC810_Board



오픈소스하드웨어에 관하여

최근 국내에서도 오픈소스하드웨어가 점차 인기를 끌고 있다.

인기를 어떻게 알 수 있을까? 오픈소스하드웨어중 하나인 아두이노 관련 책을 인터넷 서점에서 검색해보면 2010년도에 한 권이던 책이, 2012년도를 기점으로 2013년에는 15권이나 된다. 대학에서도 아두이노를 가르치고 심지어는 고등학교 동아리에서도 아두이노를 가지고 프로젝트를 하는 것을 보았다.

2013년도 서울디지털포럼의 주제가 초협력이었고, 여기서 마친 자쿠보우스키(오픈소스 에콜로지 창립자), 카타리나 모타(오픈 머티리얼 & 에브리웨어테크 공동 창립자), 강윤서(오픈테크포에버 창립자) 등 오픈소스 하드웨어 운동가들이 SDF에 참석해 오픈소스 정신의 중요성을 알렸다.  – 참고기사. 크라우드펀딩 사이트인 Kickstarter.com 에서 오픈소스하드웨어 플랫폼인 아두이노로 검색을 하면 122개의 프로젝트가 나온다. 우리나라는 몇 년 늦은 감이 있지만 이미 전세계적으로 오픈소스하드웨어의 열풍은 대단하다. 리눅스같은 오픈소스소프트웨어는 알겠는데, 그럼 오픈소스하드웨어란무엇인가?

오픈 소스하드웨어란?

오픈소스하드웨어도 오픈소스소프트웨어와 크게 다르지 않다. 오픈소스소프트웨어가 소프트웨어를 구성하는 소스코드를 공개하듯, 오픈소스 하드웨어는 하드웨어를 구성하는 회로도, 파트리스트, 회로도 등을 대중에게 공개한 제품을 말한다. 그리고 오픈소스하드웨어협회(Open Source Hardware Association)에서는 오픈소스하드웨어에 대한 정의를 명문화 해서 공개하고 있으며 현재 1.0버젼이 공개되어 있고 위키페이지에 한글 번역본도 공개되어 있다.

여기에 나와 있는 원칙에 대해 살펴보면…

오픈 소스 하드웨어는 누구나 이 디자인이나 이 디자인에 근거한 하드웨어를 배우고, 수정하고, 배포하고, 제조하고 팔 수 있는 그 디자인이 공개된 하드웨어이다. 하드웨어를 만들기 위한 디자인 소스는 그것을 수정하기에 적합한 형태로 구할 수 있어야 한다. 오픈 소스 하드웨어는 각 개인들이 하드웨어를 만들고 이 하드웨어의 사용을 극대화 하기 위하여, 쉽게 구할 수 있는 부품과 재료, 표준 가공 방법, 개방된 시설, 제약이 없는 콘텐트 그리고 오픈 소스 디자인 툴을 사용는 것이 이상적이다. 오픈 소스 하드웨어는 디자인을 자유롭게 교환함으로써 지식을 공유하고 상용화를 장려하여 사람들이 자유롭게 기술을 제어할 수 있도록 한다.

여기서 핵심은 디자인이 공개되야 하며, 공개하는 것도 누구나 쉽게 접근할 수 있도록 가능하면 상용툴이 아닌 오픈툴을 사용하라는 것이다. 즉 예를 들면 회로도는 EagleCad, Kicad등으로 구성하여 회로도 및 아트워크 파일까지 오픈하고, 소스코드로 github이나 Google code 같은 소스 공유 플랫폼을 이용해서 공유하라는 것이다. 그리고 재미있는 것은 오픈소스하드웨어의 원칙은 이 자료를 이용해서 누구나 상용화를 장려한다는 것이다. 아래 동영상은 OSHWA에서 공개한 “What is Open Source Hardware?” 라는 동영상이다.

 

오픈소스하드웨어와 비즈니스

상용화를 장려한다고? 공개를 하지 않아도 중국에서는 몇 개월이면 똑같은 제품을 만들어 내는데….누구나 쓸 수 있게 자료를 다 오픈하면 이게 더 쉬워지는데… 그럼 원저작자는 어떻게 돈을 벌지? 사실 오픈소스하드웨어는 개발 모델이지 비즈니스 모델은 아니라고 생각이 되지만 이미 오픈소스하드웨어기반의 비즈니스로 성공한 크리스 앤더슨의 지난 2012년 서밋의 키노트(MICROECONOMICS FOR MAKERS)를 읽어보면 오픈소스하드웨어 비즈니스에 관해 이해 및 영감을 얻을 수 있을 것 같다.

Open Hardware Business Model

• “Give away the bits, sell the atoms”
• Charge 2.6x BOM
• Keep ahead of cloners by innovating faster, supporting better
• “90-10” Rule: 90% the performance of commercial products at 10% the price
• Democratize the technology: low prices = high volume = high innovation.

상용제품보다 성능은 90%로 약간 떨어지지만 가격은 10% 밖에 안되는 제품을 많이 팔아라. 그리고 카피캣, 클론에 대비하기 위해 지속적으로, 빨리 제품을 업그레이드 해라. 이와 비슷한 얘기를 오픈소스하드웨어 비즈니스에서 성공한 Sparkfun의 CEO인 Nathan Seidle이 TED강연에서도 했다. 아래 동영상 참고.

그는 특허가 혁신을 일으키지 않는다고 하며, 자신의 오픈소스하드웨어 제품은 12주면 카피제품이 나오기 때문에 혁신이 필요하다고 얘기를 한다. 참고로 아래 비디오와 비슷한 내용의 글이 SparkFun 홈페이지에 있는데, 여기서 보면 2012년 당시 Sparkfun의 비즈니스 규모는 $75M이다. (35 co-workers, 75 million dollars of sales, 600,000 customers and our 431 unpatented products…)

그리고 2010년 자료이긴한데 오픈소스하드웨어 비즈니스에서 $1M이상의 규모가 되는 업체 13개를 정리한 블로그 기사와  Adafruit가 공개한 슬라이드를 보면 이쪽의 비즈니스의 규모를 아는데 도움이 될듯하다.


오픈소스하드웨어 비즈니스가 성공하려면

그럼 이런 오픈소스하드웨어 비즈니스가 성공하려면 어떻게 해야 할까?  검색도 하고 다시 한번 고민도 해봤는데, 재미있는 것은 2010년에 내가 관련된 글을 내 블로그에 쓴 게 있었다 !

기술적인 부분가능한 진입장벽을 낮추라

사용자층은 전문 개발자가 아니다Arduino만 하더라도 아티스트디자이너들을 위해 만들어진 프로젝트이다따라서 누구나 쉽게 개발환경을 갖추고 쉽게 개발할 수 있는 툴을 제공할 수 있어야 한다.

  • 사용된 하드웨어 부품은 쉽게 구할 수 있는 것으로 해야 한다.
  • 개발 환경은 무료툴을 제공해야 한다예를 들면 컴파일러의 경우 GNU 계열의 무료 툴을 제공하거나회로도의 경우 무료 CAD 툴인 EAGLE 을 사용해야 한다.
  • 가능한 쉽게 개발이 가능하도록 프로그래밍 툴을 제공해야 한다. GNU 계열의 툴이 무료이지만 사용이 쉽지 않다이것을 캡슐화하거나 배우기 쉬운 스크립트 언어를 제공해야 한다.
  • 개발 보드는 플랫폼 성격을 가지므로 확장성을 고려해 stackable, modular 타입으로 디자인 해야 한다. 예를 들면 Arduino Shield나 Bug labs의 modular 타입의 보드처럼.. 

문화적인 부분사용자들이 소통할 수 있는 온라인 플랫폼을 제공하라.

관심이 있는 다양한 사용자들이 서로 이야기할 수 있는 공간이 온라인 상에 있으므로 서로의 프로젝트를 공유하고서로 자랑하고의견을 나눌 수 있는 환경을 만들어야 한다즉 이 공간을 통해 서로가 자극이 되고 격려가 되어 자신의 프로젝트를 공개할 수 있는 온라인 공간이 필요하다한 사람한 회사에서 주도하는 게시판 성격의 틀이 아닌 누구나 질문을 올리고 서로 답변을 할 수 있는 공간이 되야 한다위의 두가지 조건이 최소의 조건이다.

지금 다시 읽어보니 예전의 생각이나 지금의 생각이나 크게 차이가 없다. 하지만 당시의 생각보다 지금 더 중요하게 생각되는 부분은 바로 두번째 부분인 온라인 플랫폼인 커뮤니티부분이다.  위 오픈소스하드웨어 비즈니스 부분에서 보았던 업체들의 공통점은 무엇인가? 그들은 단순히 하드웨어 제품만 파는 업체들이 아니다. 자신들의 커뮤니티를 통해서 유저들과 소통한다. 즉 홈페이지에 심하다 싶을 정도로 자세한 튜토리얼을 제공하고 유저와 소통하는 포럼을 운영하고 있다. 이중에 개인적으로 가장 잘되어 있다고 생각되는 튜토리얼은 Adafruit의 Learning System이다.  세세한 설명, 고퀄의 사진들… 즉 이들의 비즈니스는 교육과도 무관하지 않다. 

오픈소스하드웨어 비즈니스에서 또 한가지 고민해야 할 부분은 어떻게 카피켓, 클론들 속에서 비즈니스를 지속하느냐 이다. 크리스 앤더슨이 발표한 자료의 마지막에  “7  OSH Limitations”에도 언급이 되어 있는데, 대안은 하드웨어를 모두다 오픈하지 않는다는 것이다. 즉 회로 자체는 오픈하되 디자인 파일들이나 패키지, 금형관련된 부분들은 오픈하지 않는 것이다. 실제로 아두이노노 회로및 아트웍 파일은 오픈하지만 아트웍 파일이 실제 판매되는 파일과 다르다. MakerBot도  비슷한 전략을 쓰고 있다.

관련 글을 쓰다보니 오래된 내 블로그의 글을 다시 한번 확인하게 되었는데, 지금도 흥미로운 글이 몇개 있다. ^^


Pages:1...30313233343536...56