Arduino 보드는 몇가지로 구분할 수 있습니다. 첫번째로 입문용 보드(Entry Level)입니다. 입문용 보드는 초급자들이 사용이 용이하여 기초 전자 지식을 쌓고 처음 코딩을 시작하기에 적합하다는 것입니다. UNO, LEONARDO, MICRO, NANO, MINI 보드 등이 여기에 해당합니다. 특히 MICRO, NANO, MINI 보드는 크기를 최소화 한 것으로 프로그램의 업로드시에 별도의 FTDI 케이블이 필요합니다. 뿐만 아니라 보드가 작기 때문에 대부분의 마이크로컨트롤러는 SMD 타입으로 고장시 초보자는 땜질(soldering)로 교체가 어렵습니다.

※ FTDI 케이블 - USB-Serial (TTL) 변환기로 TTL 장치(아두이노 보드)를 쉽게 USB에 연결할 수 있게 합니다. 언듯 보기에 단순 케이블로 보이지만 USB 커넥터안에는 FT232RQ칩 등이 내장되어 있습니다.


※ SMD(
Surface Mount Device) 타입 - 전통적인 DIP(Dual Inline Package) 타입의 부품들은 기판에 홀이 있어 꽂을 수 있지만, SMD 타입의 부품들은 홀이 없이 부품을 동박면에 얹은 상태로 땜질을 하게 됩니다. 예를 들어, SMD 부품의 동박면에 미리 솔더크림을 바르고, 부품을 얹은 다음 고열을 가해 크림을 녹이므로써 단단한 납으로 변하여 고정됩니다. 이는 기존의 타입에 비해서 부품 패키지가 작아지므로 칩 자체의 성능이 개선될 뿐만 아니라, PCB 입장에서도 홀이 없어 배선이 용이하고 부품의 실장 개수도 증가하며 전반적으로 성능이 개선됩니다.


두번째는 중급용 보드(Enhanced Features)입니다. 향상된 기능과 빠른 성능을 요구하는 좀 더 복잡한 프로젝트에 적합합니다. 이러한 이유로 입출력 핀은 입문용 보드보다 훨씬 많습니다. 대표적인 보드로는 MEGA, DUE, MEGA ADK, PRO, M0 등이 있습니다.

세번째는 사물인터넷(Internet of Things; IoT)에 쉽게 이용할 수 있는 보드로 인터넷에 연결할 수 있는 기능을 제공합니다. 예를 들어, YUN, ETHERNET, TIAN, Industrial101, MKR1000, YUN Mini 보드 등이 여기에 해당합니다. 이외에도 교육 목적이나 Wearable, 3D printing 용도의 보드들도 선보이고 있습니다.

위와 같은 보드(board) 이외에도 모듈(module)과 쉴드(shield)가 있습니다. 모듈과 쉴드는 보드와 흡사하지만 차이가 있습니다. 먼저 모듈은 사용자의 보드에 장착할 수 있도록 핀헤더가 마련된 것이 대부분이고, 이 모듈은 사용자가 원하는 기능을 업로드하여 자체적으로 동작합니다. MICRO, NANO, MINI 보드가 모듈에 해당합니다.

반면에 쉴드는 아두이노 보드에 장착할 수 있는 사용자의 확장 보드로 스스로 동작할 수는 없습니다. 예로써 MOTOR Shield는 아두이노 보드를 이용하여 실제 모터를 구동하기 위해서 제작한 응용 보드입니다. 때로는 사용자가 전자 회로를 직접 꾸밀 수 있도록 PROTO Shield도 제공하는데 이는 PCB만 제공하는 것으로, 핀아웃(Pinout) 배열이 같아 아두이노 보드에 Stack 형태로 장착할 수 있으며 몇가지의 footprint를 만들어 놓아 IC나 저항 등과 같은 소자들을 쉽게 남땜할 수 있습니다.

다음은 대표적인 Arduino 보드를 비교하였습니다.

보드

Microcontroller

동작전압

디지털 I/O

PWM

아날로그I/O

Flash[KB]

SRAM[KB]

EEPROM[KB]

Clock[MHz]

크기[mmxmm]

 특징

Uno

 ATmega328

5

14

6

6

32

2

1

16

68.6x53.4

가장 보편적

Leonardo

 ATmega32u4

5

20

7

12

32

2.5

1

16

68.6x53.3

 컴퓨터 주변장치 인식 가능

Micro

 ATmega32u4

5

20

7

12

32

2.5

1

16

48.0x18.0

 

Nano

 ATmega328

5

22

6

8

32

1

0.51

16

45.0x18.0

 

Mini

 ATmega328

5

14

 

6

32

2

1

16

30.0x18.0

작지만 업로드시 별도의 FTDI 모듈 필요 

Due

 Atmel SAM3X8E

3.3

54

12

12

512

96


84

102.0x53.3

 강력한 프로세싱

Mega

 ATmega2560

5

54

15

16

256

8

4

16

102.0x53.3

다수의 장치 연결 가능 

M0

 Atmel SAMD21

3.3

20

12

6

256

32


48

68.6x53.3

 

Yun Mini

 Atheros AR9331

3.3

20

7

12

32

2.5

1

400

71.1x23.0

Ethernet과 WiFi 가능

Ethernet

 ATmega328

5

20

4

6

32

2

1

16

68.6x53.4

 

Tian

 Atmel SAMD21,

Atheros AR9342

5

20

12


16000

64000


560

68.5x53.0

 

Mega ADK

 ATmega2560

5

54

15

16

256

8

4

16

102.0x53.3

 안드로이드 연결 가능

M0 Pro

 Atmel SAMD21

3.3

20

12

6

256

32


48

68.6x53.3

 

Industrial 101

 ATmega32u4,

Atheros AR9331

5

7

2

4

16000

64000

1

400

51.0x42.0

 

Leonardo Ethernet

 ATmega32u4,

W5500

5

20

7

 12

 32

 2.5

 1

 16

 68.6x53.3

 

MKR1000

 ATSAMW25

3.3

8

12

 7

 256

 32

 

 48

 64.6x25.0

 


자세한 비교 정보는 다음의 링크를 참조하시기 바랍니다.

https://www.arduino.cc/en/Products/Compare



Posted by Nature & Life
Embedded Lecture/Arduino2017. 3. 12. 01:12


아두이노(Arduino) 코딩(coding)을 위해서 아두이노 통합 환경 즉, IDE(Integrated development envirionment)를 다음의 링크에서 사용자의 OS 환경에 맞게 설치하여 합니다.


https://www.arduino.cc/en/Main/Software


사실 IDE에는 2가지가 존재합니다. 첫번째는 사용자 PC에 직접 설치하는 전통적 환경이며, 두번째는 Arduino Web Editor으로 온라인 버젼입니다. 일반적인 설치 버젼은 아두이노가 업데이트 되면 업데이트 작업이 매번 필요하지만, Web Editor 버젼은 항상 아두이노 보드의 모든 라이브러리나 지원 사항을 포함하여 최신 버젼을 유지하고 클라우드에 스케치(sketch)를 저장하게 됩니다. 여기서 스케치는 자신이 코딩한 소스 파일을 의미합니다.


이외에도 사용자의 로컬 PC에서 설치 버젼을 사용시 빠른 속도와 편의기능 등이 있으에도 불구하고 온라인 버젼이 출시되는 이유는 여러 사람이 코딩이 함께 하는 협업에 유리하고 자신의 작성한 코드나 라이브러리를 공유할 수 있으며, 이러한 코드를 효율적으로 안전하게 관리할 수 있기 때문이라는 것입니다.



이는 아두이노 IDE의 첫 화면이며 여기서 프로그램의 코딩과 컴파일(compile) 그리고 아두이노 보드가 PC에 USB를 통해서 제대로 연결되었다면 아두이노 보드로의 다운로드 까지 가능하게 됩니다. 아두이노 보드를 PC에 연결하려면, USB로 아두이노 보드와 연결하고 IDE를 실행한 다음, 메뉴에서 '도구|보드'에 자신이 연결한 아두이노 보드의 종류를 선택하고, '도구|시리얼 포트'에 가상 시리얼 포트의 번호를 선택합니다. 참고로 아두이노 포트 번호는 Windows의 경우 장치관리자에서 확인할 수 있습니다.



위의 아두이노 IDE의 첫 화면에서 아래와 같이 아두이도 코딩의 프로토타입(prototype)을 보여줍니다. 사실 사용자가 이마저도 직접 써야 하지만, 아두이노는 친절하게 반드시 있어야 할 코드는 미리 써주었다는 것입니다. C 언어에 익숙한 사용자라면 프로그램은 반드시 main() 함수로 시작해야 한다고 알고 있는데, 이는 없는 것이 아니고 아두이노 IDE가 사용자 편의를 위해서 내부적으로 처리하게끔 하였다는 것입니다.


void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

일반적인 C 프로그램과 달리 아두이노 하드웨어 프로그램은 위의 2가지 함수인 setup()과 loop()가 반드시 필요합니다. 코딩이란 사용자가 이들 함수를 기반으로 새로운 코드나 함수를 삽입하여 원하는 기능이나 동작을 구현하는 과정이라는 것입니다. setup() 함수는 아두이노 보드의 MCU가 처음 시작할 때 단 한번 실행됩니다. loop() 함수는 setup() 함수가 실행된 이후에 영원히 반복하게 됩니다. 이런 무한 반복을 하드웨어적으로 멈추게 하는 것은 아두이노 MCU의 'RESET' 버튼을 누르는 것인데, 이때 하드웨어는 다시 초기화되고 처음 setup() 함수부터 실행하게 됩니다.





'Embedded Lecture > Arduino' 카테고리의 다른 글

인터럽트와 volatile 지시자  (1) 2017.03.18
아두이노의 TWI(I2C) 통신  (0) 2017.03.18
아두이노의 시리얼 통신  (0) 2017.03.18
인터럽트의 처리(1)  (0) 2017.03.12
LED 깜박이기  (0) 2017.03.12
Posted by Nature & Life



근래에 PC와 랩톱, Portable 장치들에서는 RS232C 포트가 사라진지 오래되었습니다. 기존의 RS232C 포트는 기구적으로 소형화에 걸림돌이기도 하며, 넓은 대역폭으로 빠른 전송 속도와 Plug & Play 등의 장점을 앞세운 USB 포트로 대체되었습니다.


하지만 아직도 AVR을 비롯한 많은 MCU들은 여전히 기존 시리얼 통신 방법을 채택하고 있습니다. 한편 이런 MCU와 PC간의 interactive 제어나 수행 결과를 모니터하기 위해서는 USB 통신을 지원하는 범용 툴을 사용하거나 사용자가 Win32 Application을 직접 제작하여야 한다는 것입니다.


이렇듯 사용자는 PC의 USB 포트로 통신하는 Win32 Application을 기존의 시리얼(RS232C) 통신 프로그램과 마찬가지로 ReadFile(), WriteFile() 혹은 DeviceIoControl() 함수를 이용하여 구현하게 됩니다. 그런데 USB 통신에서는 물리적인 장치에 접근하기 위해서 드라이버(예를 들어, *.sys)가 필요하게 되는데, 좀더 구체적으로 MS Windows 환경하에서는 Windows가 장치에 접근하기 위해서 Windows Driver Model(WDM) 드라이버가 필요하다는 것입니다.


USB 드라이버는 어떻게 해야 할지요?


가장 좋은 방법은 사용자가 직접 자신이 사용할 드라이버를 드라이버 제작 툴(예를 들어, Jungo社의 WinDriver)을 이용하여 만드는 것입니다. 하지만 그리 쉬운 작업이 아니므로 두 번째 방법인 USB 드라이버 칩 제조사가 제공하는 드라이버를 가져다 사용하는 것입니다. 예를 들어, CypressFTDI Chip의 칩셋을 사용하는 경우 각 에서 제공하는 드라이버를 무료로 사용할 수 있습니다.





이러한 드라이버는 범용이기에 필요없는 오버헤드로 인해 다소 느릴 수는 있지만, 대부분의 USB 통신에서 만족할만한 결과를 얻을 수 있을 것입니다. 그러나 최신 아두이노(Arduino) 보드에서는 위와 같은 칩셋을 사용하지 않고 ATmega16U2를 사용하니 세 번째 방법인 직접 드라이버를 일일이 제작해야 합니다.


하지만 다행이도 아두이노는 다음과 같이 설명합니다.

http://arduino.cc/en/Main/arduinoBoardUno


The Uno differs from all preceding boards in that it does not use the FTDI USB-to-serial driver chip. Instead, it features the Atmega16U2 (Atmega8U2 up to version R2) programmed as a USB-to-serial converter.

우노는 FTDI USB-to-serial 드라이버 칩을 사용했던 모든 이전 보드와 다름니다. 대신에 USB-to-serial 컨버터로써 프로그램된 Atmega16U2를 사용합니다.


The '16U2 firmware uses the standard USB COM drivers, and no external driver is needed. However, on Windows, a .inf file is required. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board. The RX and TX LEDs on the board will flash when data is being transmitted via the USB-to-serial chip and USB connection to the computer (but not for serial communication on pins 0 and 1).

'16U2 펌웨어는 표준 USB COM 드라이버를 사용합니다. 그리고 어떤 외부의 드라이버도 필요하지 않습니다. 그러나 Windows 상에서 *.inf 파일이 요구됩니다. 아두이노 소프트웨어는 간단한 텍스트 기반의 데이터를 아두이노 보드로 송수신하기 위한 시리얼 모니터(serial monitor)를 포함합니다. 보드상에 RX와 TX LED들은 컴퓨터의 USB와 USB-to-serial 칩을 경유하여 데이터가 전송될 때 반짝일 것입니다(pin 0 그리고 pin 1 상에 시리얼 통신을 위한 것이 아닙니다).


A SoftwareSerial library allows for serial communication on any of the Uno's digital pins.

SoftwareSerial 라이브러리는 우노의 디지털 pin들이 시리얼 통신을 가능하게 합니다.


The ATmega328 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus; see the documentation for details. For SPI communication, use the SPI library.

ATmega328은 또한 I2C(TWI)와 SPI 통신을 지원합니다. 아두이노 소프트웨어는 I2C 버스의 사용을 간단화하기 위한 Wire 라이브러리를 포함합니다. 자세한 사항은 문서를 확인하세요. SPI 통신에 대해서는 SPI 라이브러리를 사용하세요.


그러므로 아두이노 보드는 별도의 USB 드라이버를 사용하지 않고 표준 USB COM 드라이버를 사용하므로 기존의 RS232C 통신과 동일한 Win32 함수로 데이터를 송수신하는 사용자 전용 통신 프로그램을 제작할 수 있습니다. 간단히 모니터를 위한 것이라면 아두이노 IDE 환경에서 제공하는 '시리얼 모니터'로도 충분하리라 생각됩니다.







Posted by Nature & Life


아두이노(Arduino)가 오픈 소스 플랫폼으로 자리잡은 이유는 AVR 칩이 제공하는 Self-programming 기능으로 거슬러 올라갑니다. Self-programming 기능이란 칩의 퓨즈를 적절히 설정함으로써 부팅시 Application 영역이 아닌 Boot 영역으로 시작 지점이 변경된다는 것입니다.



한편, AVR 칩은 추가적인 하드웨어 구성 없이 USART나 TWI, SPI 등으로 통신이 가능한데, 칩이 Boot 영역에서 수신된 데이터를 감지하고 Application 영역을 변경할 수 있다는 것입니다. 이러한 기능은 3세대 AVR 칩에서 등장하여 펌웨어의 유지 및 보수 목적으로 특히 가혹한 원격지에서 펌웨어 업그레이드에 유연성을 주기 위함이었습니다.


따라서 이러한 기능이 가능하게끔 작성된 Bootloader를 최초 한번 JTAG이나 ISP를 이용하여 펌웨어를 프로그래밍을 하면 아두이노는 그 다음부터 ISP 없이 USART로 프로그램의 간단히 업로드가 가능하게 됩니다. 결국 아두이노 보드는 아래 회로도에서와 같이 별도의 ATmega16U2 칩을 이용해 USB로 데이터를 송수신하고, 이를 다시 ATmega328 칩에 USART 규격으로 통신하는 구조를 가집니다.



요약하면 아두이노 IDE 환경은 AVR 칩에 최초 Bootloader를 탑재하여 PC의 USB 포트로 C 코드인 스케치(Sketch) 파일을 컴파일하고 이를 아두이노 보드로 추가의 하드웨어 없이 전송하여 쉽고 빠른 개발환경을 제공한다는 것입니다. 게다가 아두이노 IDE 환경에서 함께 제공하는 Serial Monitor를 이용해서 클릭 한번으로 그 결과를 바로 확인할 수 있다는 장점을 가집니다.





Posted by Nature & Life
공지사항2014. 5. 17. 12:18



최근, IC뱅큐(http://www.icbanq.com)에서는 Intel 갈릴레오 보드의 무상 체험단을 모집 중이라고 알려집니다.


수행해야 하는 미션이 있지만, 400MHz의 매력적인 CPU 속도와 C 언어를 지원하는 Arduino 개발환경과 호환되어 고성능을 하드웨어를 구현하는데 도전해 볼만한 제품인 듯 합니다.


http://www.icbanq.com/shop/event_list.asp?number=233&paging=&b_type=EVENT#eventTop









Posted by Nature & Life