레이블이 하드웨어인 게시물을 표시합니다. 모든 게시물 표시
레이블이 하드웨어인 게시물을 표시합니다. 모든 게시물 표시

2015년 4월 26일 일요일

[00093] 아두이노와 유사한 임베디드 보드의 필수 기능들

 실험을 위해서 여러 하드웨어 보드들을 구해서 잠깐씩 살펴보았는데, 하드웨어를 제어하는 (주로 오픈소스)보드들이 공통적으로 가지고 있는 필수 기능으로 다음과 같은 것들이 있다.

  • (디지털) In/Out 포트            : on/off 입출력
  • 인터럽트 (interrupt)             : 이벤트 처리
  • PWM                                : 아날로그 (처럼) 출력
  • A/D 변환기                         : 아날로그 입력 (주로 센서의 입력)
  • 통신 (주로 시리얼 통신)       : (주로) PC 혹은 다른 보드와의 통신
  • D/A 변환기                      : 아날로그 전압 출력

보드에 따라서 이러한 기능을 구현하는데 사용하는 언어도 다르다.


  • 아두이노는 C++
  • 넷두이노는 (매우 특이하게) C#.Net
  • R-Pi는 주력 언어가 파이썬 (하지만 리눅스 보드이므로 다른 언어도 가능함)
  • 비글본블랙은 자바스크립트 (마찬가지로 C++, JAVA 등도 가능). 비글본블랙은 D/A변환기도 내장하고 있으며 주변기기가 가장 풍부하게 마련되어 있다.

 어떤 보드의 기능과 프로그래밍을 살펴볼 때 위의 기능들을 사용 언어로 어떻게 구현하는지를 파악할 수 있다면 반 이상은 아는 것이라고 봐도 될 것 같다. 많이 사용되는 라즈베리 파이는 GPIO에 A/D변환기가 없으며 PWM기능도 매우 빈약하다.

  언어의 난이도 순으로 배열해 보면 (순전히 주관적인 생각임) 다음과 같다, 


  • C++ >  JAVA, C# > javascript > python

C++이 제일 어렵고 파이썬이 상대적으로 제일 난이도가 낮은 편에 속한다.

얼마 전까지만 해도 임베디드는 닥치고 C/C++ 이었는데 요즘에는 고수준 언어나 심지어 스크립트 언어로도 프로그래밍할 수 있는 보드들이 출시되고 있어서 비전문가들이 좀 더 쉽게 접근할 수 있는 환경이 되고 있다.
[#00093]

2015년 4월 21일 화요일

[00061] PC 밖으로 나온 파이썬

  제목이 좀 거창하긴 한데 파이썬은 컴퓨팅 환경의 첫 번째로 영향력 있는 언어이기도 하지만 마이컴 보드에서도 편리하게 하드웨어를 제어할 수 있는 언어로 점차 그 영역을 넓혀가고 있다. 하드웨어 제어는 닥치고 C/C++ ... 이라는 공식 비슷한 것이 이제는 변하고 있다.

  그 선두에 있는 기기가 바로 잘 알려진 라즈베리파이(raspberry pi)이다. 이 35불 짜리 원보드 리눅스 컴퓨터는 GPIO핀이 내장되어 있고 이것을 제어할 수 있는 파이썬 모듈이 잘 개발되어 있다. C/C++ 몰라도 LED를 깜박이거나 모터를 돌리는 등의 일을 파이썬 코드로 얼마든지 수행할 수 있다.



최근에 출시된 라즈베리 파이 2


본격적으로 파이썬만으로 제어가능한 마이크로 콘트롤러 보드인 micropython 이라는 보드도 있다. 이 보드는 SD카드에 저장된 파이썬 프로그램을 읽어들여서 수행한다. 파이썬의 간결한 문법을 이용하여 다양한 하드웨어를 제어할 수 있다.



좀 더 최근에는 영국의 BBC (알다시피 방송국이다..)에서 어린 학생들의 코딩 능력을 길러주기 위해서 개발하여 보급하고 있는 MicroBit 이라는 보드도 있다.



왜 방송국에서 이런 일을 하는지 알다가도 모르겠지만 어쨋든 이 보드가 지원하는 세 가지 주력 언어 중 하나도 파이썬이다. (이렇게 예를 들고 보니 우연히도 세 가지 보드 모두 영국에서 만들어진 것들이다.)
[#00061]

아두이노+라즈베리파이=?

 라스베리파이(이하 RPi)의 GPIO 핀들은 파이썬으로 제어할 수 있다는 점에서 무척 매력적이지만 GPIO 자체의 기능이 아두이노에 비해서도 빈약하다. 포트핀으로 흘릴 수 있는 전류가 수mA 정도로 제한되어 있으며 특히 PWM핀은 하나이고 아날로그 핀(ADC)은 없어서 아쉽다.
 
 그래서 아두이노의 기능을 얹은 RPi 인터페이스 보드들이 이러한 단점을 상쇄해 줄 수 있으리라 기대가 되어서 구글링 해보니 다음과 같이 몇 가지가 눈에 띄어서 정리해 보았다.

arduberry

 RPi 위에 장착하여 RPi에서 아두이노 IDE를 이용하여 프로그래밍 가능하다. getting start 를 대충 읽어보았는데 이것은 PC대신 RPi 로 프로그래밍한다는 개념인 것 같다. 필요한 프로그램을 설치하면 아두이노 IDE 의 다운로더 메뉴에 'Arduino GPIO' 메뉴가 생기고 이것을 선택하여 RPi에서 직접 코딩을 하고 컴파일과 다운로딩을 할 수 있다.


단순히 PC대신 RPi를 사용할 수 있도록 설계되었기 때문에 PC가 없는 환경이라면 초저가 아두이노 프로그래머를 RPi로 꾸밀 수 있겠으나,  PC를 이미 가진 사용자들에게 어떤 장점을 가지는 지는 의문이다.
 

2. alamode

 RPi 위에 장착가능한 아두이노 호환보드이며 아듀베리와 유사하게 시리얼포트가 연결되어서 RPi가 호스트가 되어 alamode 를 프로그래밍 할 수 있다.
그 뿐만 아니라 alamode 가 RPi를 이더넷쉴드로 사용할 수 있는 등 양방향 통신을 한다고 한다.

3. RPino GOGO

  아듀베리와 비숫한 개념의 국산 아두이노 보드이다. 특이한 점은 전용 스케치로더를 이용하면 독립적인 아두이노보드로 사용할 수 있다는 점이다. RPi 연결모드와 독립 사용 모드를 설정할 수 있다. RPi와 I2C 통신을 하기 위한 전압 레벨 변환기도 내장하고 있다. 개인적으로 구입해서 구동해 보았는데 잘 동작한다.
하지만 아듀베리와 마찬가지로 단순히 PC대신 RPi를 사용할 수 있도록 설계되었기 때문에 PC가 없는 환경이라면 초저가 아두이노 프로그래머를 RPi로 꾸밀 수 있겠으나,  PC를 이미 가진 사용자들에게 어떤 장점을 가지는 지는 의문이다.
 위의 세 가지 제품들은 라즈베리파이가 단순히 컴파일/다운로드를 수행하는 PC대신으로 사용하는 방식인데 사실 보통의 아두이노보드를 라즈베리파이와 USB로 연결해서 프로그램할 수 있으므로 확장보드로서의 의미가 크지 않다는게 필자의 생각이다. 단지 usb케이블을 이용하지 않고 깔끔하게 결합된다는 점과, alamode 의 경우 라즈베리파이를 이더넷쉴드 대용으로 사용할 수 있다는 점은 장점이라 할 수 있다.

4. piFace

 아두이노 호환은 아니지만 RPi GPIO핀에 장착하여 여러가지 IO실험을 할 수 있는 확장보드로 해외에서는 교육용으로 많이 사용되는 것 같다. 영국 맨체스터대에서 교육용으로 개발하였으며 파이썬 모듈을 제공하며 스크래치 언어와의 통합기능을 제공한다. 스크래치 언어를 지원한다는 것은 저학년 아이들의 교육에 무척 유용할 것이라는 예상을 할 수 있다.
piFace (왼쪽) 와 아두이노에 장착한 모습(오른쪽)

 입출력에 RPi의 GPIO 핀을 직접 사용하지 않고 MCP23S17 칩을 사용하며 I2C로 이를 제어하므로 대전류 구동이 가능하며 arduberry, alamode, RPino 와 다르게 독립적으로 구동되지 않고 반드시 RPi쪽에서 제어 프로그램을 구동하여야 한다.
 

5. pcDuino / 갈릴레오 보드 / udoo neo 보드

 이것들은 종류가 다른 보드이지만 리눅스 머신과 아두이노를 아예 하나의 보드 위에 섞어놓은 것이다. 아예 리눅스 보드 위에 아두이노 호환 핀들이 있는 것들이다. 따라서 아두이노가 지원하는 아날로그 핀이나 pwm 등을 바로 사용할 수 있다.
pcDuino3 nano : 아두이노 핀과 호환되기 때문에 아두이노 쉴드들을 바로 사용할 수 있다.
인텔 갈릴레오 gen 2 보드 : 피씨두이노와 마찬가지로 아두이노 쉴드를 바로 장착하여 사용할 수 있다.
 갈릴레오보드는 특이하게도 리눅스를 OS로 사용하지만 비디오 아웃풋 포트가 없으며, 호스트PC를 이용하여 아두이노IDE 와 동일한 인터페이스를 사용하여 프로그래밍할 수 있다는 것이 특징이다. 보드 자체는 아두이노에 비해서 훨씬 고성능이지만 포트핀들의 동작 속도는 아두이노보다 더 떨어지는 단점이 있다. ( 따라서 당연하게도 그렇다면 왜 궂이 이것을 사용해야 하는 지 의문이 드는 제품이다.)

 그리고 현재 (2015년 5월) udoo neo 라는 보드가 킥스타터에서 캠페인을 진행 중이다.


리눅스 보드인데 아두이노 호환 외부핀을 가지고 있으며 와이파이, 블루투스, 9축 가속센서를 내장하면서 $49불 정도의 가격에 판매될 거라고 한다.

6. 비글본블랙(beaglebone black)

  라즈베리파이를 사용하고 있는데 아두이노의 기능이 필요하다면 필자는 개인적으로 비글본블랙을 추천하고 싶다.
비글본 블랙 보드. 저 넘치도록많은 gpio 핀들에서 알 수 있듯이 왠만한 기능은 다 가지고 있다.
 최근에 출시된 dev C는 아예 데비안리눅스가 내장된 eMMC 플래시메모리(용량은 4G)에 올려져서 출시된다. 따라서 추가적인 외부메모리가 필요치 않다. 사진에서 보듯이 GPIO핀이 많을 뿐만 아니라 PWM과 ADC 핀도 넉넉하다. 라즈베리파이보다 약간 고성능인데다 개발에 편리한 기능(예를 들면 usb로 연결하면 바로 터미널 접속이 가능하다던지)들이 있다. 또한 파이썬으로 GPIO핀들을 제어할 수 있으므로 보다 복잡한 제어 알고리듬을 바로 적용해 볼 수 있다. 단 가격은 $55 정도로 라즈베리파이보다는 비싸고 USB포트도 하나 밖에 없는 것이 조금은 불편하다.