영국의 ARM사가 주도하는 mbed는 ARM-cortex기반의 MCU를 사용하여 IoT제품이나 여러 전자제품의 프로토타이핑(prototyping)을 쉽게 제작하고 Cloud 서비스 테스트까지 할수 있는 플랫폼으로, Arduino와 같은 해에 시작하고 2009년에 베타서비스를 시작했지만 2013년에야 mbed를 오픈하기로 결정하고 주변 디바이스, API, 기판 설계 데이터, 펌웨어 등을 공개하면서 주목받기 시작하였습니다.



사실 기존에는 Arduino라는 가볍고 쉬운 AVR이 존재했지만 ARM 계열에서는 Arduino Due 제외하고는 가볍고 쉬운 AVR은 없었고 대부분 전문 컴파일러를 사용하여 제작하였기 때문에 전문가가 아니면 사용하기가 어려웠었습니다. 그렇기 때문에 ARM에서도 Arduino와 같이 접근성이 좋고 빠르게 개발이 가능하도록 만든 소프트웨어가 바로 "mbed"라는 것입니다. 아직까지 국내에서는 Arduino보다 인지도가 적은 편이지만 Ardunio보다 더 좋은 성능으로 IoT개발 보드 시장 영역을 넓혀가고 있다는 것입니다.


참고로 ARM사의 cortex-M4를 MCU의 경우에는 IoT에서 가장 중요한 화두인 전력문제에 있어서 저전력기술을 활용함으로써, 100~180MHz로 동작하는 동안 매우 낮은 동적 전력 사용량을 제공하며, 경쟁사 유사제품에 비해 7배 낮은 정적 소비 전력을 보여줍니다. 


웹브라우저를 통한 온라인 컴파일 및 소스 버전 관리 기능(Web-IDE)을 제공하여 어떤 OS에서든 웹브라우저에서 온라인으로 컴파일이 가능하고, 프로그램 업로드는 별도 장비없이 USB에 연결만 하면 가능하도록 되어 있다는 것입니다. 게다가 커뮤니티를 통한 라이브러리 공개 및 방대한 개인 위키 페이지 제공으로 협업에 유익하고 무엇보다, 모든 사용자가 기본적으로 같은 하드웨어를 이용하고 있기에 확장 보드가 아닌 이상 바로 적용 가능하다는 것입니다.



mbed의 장점으로는 기본적으로 MCU의 성능이 Arduino보다 좋기 때문에 고성능으로 더 높은 사양대를 커버할 수 있지만, Ardunio에 비해 상대적으로 사용자가 적다는 단점이 있습니다. 온라인 컴파일러에서 브레이크 포인터를 사용하여 스텝별 실행 및 내부 레지스터, 변수 등의 디버깅은 불가능하고 프로그램 업로드 방식에 있어서도 파일을 추출하고 이 파일을 다시 보드에 업로드 시켜야하는 상대적으로 Arduino에 비해 귀찮은 과정도 단점으로 여겨질 수 있습니다.


Arduino와 mbed 차이점으로, 모든 Arduino는 Atmel MCU 사용하여 작은 메모리와 제한된 기능을 가지고 있으며 느리다는 것입니다. 대부분의 Arduino 보드들은 ATmega328이고, Mega보드는 ATmega2560이며, 새로운 Due보드는 ARM Cortex-M3를 사용한다. 반면에 mbed 플랫폼은 더 빠르고, 메모리도 크고, 더 많은 기능을 가진 ARM Cortex MCU를 사용합니다. 사실 공식적인 mbed 플랫폼들은 Cortex-M0, M3와 M4를 기반으로 만들어진다는 것입니다.


프로토타입을 만드는데는 둘 다 우수하지만 프로토타입을 만든 후에 생산을 하고자 할 때는 mbed가 더 scalable한 플랫폼이기 때문에 더 낮고, 아주 간단한 응용제품을 제외하고는 ARM MCU들이 같거나 더 싼 가격에 더 낮은 전력 소모를 하며, 더 많은 기능을 가지고 있기 때문에 그 입지가 점점 좁아지고 있다는 것입니다.



Posted by Nature & Life


과거 모형 헬기와 같은 전통적 RC는 메인 로터가 양력을 얻어 부양하고 메인 로터가 회전할 때 회전각에 따른 로터의 피치를 조절하여 헬기가 원하는 방향으로 나아가는데, 메인 로터로 인한 헬기 동체의 반동 토크를 상쇄시킬 목적으로 테일 로터도 함께 회전시키게 됩니다(안정성을 강조한 동축반전 헬기는 제외). 이때 헬기 동체가 정숙하게 방향성을 유지하고 호버링하거나 이동하기 위해서는 자이로(gyroscope) 센서의 도움을 받아 실시간 보상하였는데, 이것이 사실 비행 자동화의 전부였으며 나머지는 오직 조종자의 오랜 비행 경험을 토대로 한 자동 반사적인 키감에 의존하여 매우 역동적인 스포츠를 즐기게 되었습니다.


반면에 드론은 쿼드콥터를 예를 들어, 4개의 프로펠러로 양력을 얻고 원하는 방향으로 나아가기 위해서는 개별 로터의 회전속도를 정교히 제어해야 하는데 이는 컴퓨터의 도움없이는 거의 불가능하다는 것입니다. 이러한 이유로 드론의 비행제어기(FC; Flight Controller)는 사람의 심장과도 유사하여 수신모듈로 부터 수신된 명령 신호를 처리하여 각 암(ARM)의 모터를 제어하고, 게다가 가속도계/자이로 센서를 포함하는 관성측정장치(IMU), 바로미터, 컴파스/지자계 등의 센서 데이터를 기반으로 안정적인 비행이 가능하도록 한다는 것입니다.


최근에는 GPS 센서를 탑재하여 GPS 데이터에 기반하여 사전에 입력된 경유지(waypoint)를 순차적으로 운항하거나 RTL(Return to Launch)라는 자동 회귀 기능 등의 탑재로 조종자의 명령이나 각종 기체 이상 등을 감지하여 이륙 장소로 스스로 귀환시키거나, 영상 및 소리 센서들을 활용한 충돌회피 등등 다양한 기능들이 추가되면서 FC는 날로 매우 빠른 연산을 수행하는 MCU가 필요한 추세라는 것입니다.


이를 증명하듯 수 년전에는 오픈 소스에 기반한 APM(AutoPilot Mega) 보드나 multiwii 보드는 8bit 16MHz의 ATmega328이나 ATmega2560의 MCU가 사용되었는데, 그 후로 AruPilot의 PixHawk(3DR)은 훨씬 강력한 32bit 168MHz의 STMicro사의 ARM Cortex M4를 사용하게 되었습니다. 현재의 오픈 소스의 드론 플랫폼으로 가장 인기있는 PX4는 64bit quad-core 2.26GHz의 퀄컴사 SOC(System on Chip) 기반 스냅드래곤 SOC(System on Chip)을 채용하고 있는 실정입니다.



사실 드론이 안정적인 비행으로 대중화를 선언한 그 이면에는 고성능의 MCU 채용만큼이나 FC에서 중요한 것은 센서 기술의 진화에 있다고 해도 지나치지 않다라는 것입니다. 각종 센서들로부터 드론은 비행 속도/각도, 좌표, 위치 데이타 등을 실시간으로 MCU에 제공하여 상당히 안정적인 비행을 가능하게 하지만, 최근에는 저고도에서의 정확한 고도 유지와 포지션홀드 기능을 위해 초음파센서, 옵티컬플루우(Optical Flow) 센서 등이 사용되고 있으며, 또한 충돌회피를 위해 카메라 센서 기반한 SLAM(SImultaneous Localization and Mapping)등의 알고리즘들이 활발히 연구되고 있다는 것입니다.



Posted by Nature & Life
Drone News/Review2017. 2. 23. 22:13


Cheerson CX-20 Auto-Pathfinder는 'Quanum NOVA'라고도 불리우며 비행제어기(flight controller)로서 APM v2.5.2가 사용되며 firmware는 ArduCopter v3.1.2입니다. APM v2.5.2는 외장 지자기(magnetometer) 센서을 사용하며 메인 마이크로컨트롤러는 ATmega2560입니다.


다음은 Cheerson CX-20 Auto-Pathfinder의 내부 구성입니다.


CX-20 Auto-Pathfinder(Quanum NOVA)의 내부 모습


외장 I2C magnetometer와 APM v2.52


Barometric sensor를 보호하기 위해서 폼(foam)을 사용


APM과 프레임 사이에 진동을 차단하기 위해서 폼(foam)을 사용


GPS 


APM은 위의 CPU 보드와 아래의 I/O 보드로 구성


I/O 보드


Brushless 모터와 ESC


CPU 보드(APM v2.5.2)


I/O 보드


Cheerson CX-20 Auto-Pathfinder의 Open Source Version의 구입처:



Posted by Nature & Life


 

아두이노(Arduino)는 오픈 소스(Open Source)를 기반으로 한 단일 보드(board) 마이크로 컨트롤러입니다. 2005년 이탈리아 사람에 의해서 최초 만들어지기 시작한 프로젝트로 현재에도 진행 중에 있으며 Arduino는 이탈리아어로 영어의 'Best Friend'와 같은 의미를 가진다고 알려집니다.

 

아두이노는 대부분 Atmel社의 ATmega8이나 ATmega32U4, ATmega168, ATmega328, ATmega2560 등을 탑재한 보드로 이들 마이크로 컨트롤러에 탑재할 펌웨어(Firmware)를 개발하는 환경에서부터 컴파일 및 독립적으로 작동할 수 있도록 업로드 과정이 편리하여 최근에 전 세계적으로 인기를 끌고 있습니다. 

 

2011년에는 구글의 안드로이드(Android)가 아두이노를 하드웨어 파트너로 선택한 이유도 이런 확장성과 편리함 때문에 상호간에 시너지 효과를 기대해 보자는 것으로 풀이되며, 이러한 추세에 힘입어 얼마전에는 Intel社에서도 아두이노 플랫폼에 자사의 Quark Processor를 탑재한 갈릴레오(Galilo)를 출시하였는데, 이러한 것도 내내 동일한 맥락이라는 것입니다.

 

갈릴레오 보드

 

하드웨어에 서툰 사람들조차도 아두아노에 관심을 가지게 만드는 이유는 요구하는 제품이 기존의 AVR의 개발환경에 비하여 뚜렷하게 간소화됨으로 말미암아 편리함일 수도 있지만, 이러한 과정들이 복잡하지 않아 소프트웨어 제작이나 다양한 하드웨어 DIY(Do It Yourself)를 즐기는 사람들에게 호기심을 불러 일으키기에 충분하였기 때문일 것입니다.

 

그럼 아두이노는 어떤 장점이 있는지 요약하여 봅니다.

 

1) 소프트웨어 개발을 위한 통합 환경(IDE)이 간소화 되었다는 것입니다.

가장 큰 장점으로 기존의 AVR 프로그래밍은 WinAVR로 컴파일하여 별도의 ISP 장치를 통해 업로드 해야하는 번거로운 과정을 거쳐야 하는데, 아두이노는 컴파일된 펌웨어를 보드 내 USB 포트에서 PC의 USB 포트로 케이블을 연결하는 것만으로 쉽게 업로드 할 수 있다는 것입니다.

 

2) Windows를 비롯한 Mac OS X 및 Linux와 같은 다양한 OS 환경을 지원합니다.

 

3) 다양한 소프트웨어와 연동이 가능하다는 것입니다.

사용자들이 기존에 즐겨 사용하여 익숙했었던 Flash나 Processing, Max/MSP, Android, Object C, Labview, Pure Data 등과 같은 소프트웨어를 연동할 수 있다는 것입니다.

 

4) 가격이 저렴합니다.

사실 마이크로컨트롤러를 배우고 싶어서 강좌를 듣거나 데모보드를 구입하려면 최소한 수 십만원 정도 이상을 호가하는데, 이에 비해 아두이노 보드는 상대적으로 매우 저렴하다는 것입니다.

 

5) 아두이노는 오프 소스입니다.

아두이노는 보드의 회로도가 공개되어 있으며 개발환경 조차도 오픈 소스이고 이로 인해 각종 회로도나 펌웨어 소스가 웹상에서 다량 공유되어 있다는 것입니다. 뿐만 아니라 여러 개발자들이 만들어 놓은 라이브러리 조차도 공유되어 개발 시간을 단축시키고 있다는 것입니다. 

 

다음은 아두이노 포럼입니다.

 

http://forum.arduino.cc/

 

 

현재 가장 많이 사용되는 아두이노는 보드는 기본형 우노(Arduino UNO)로써 손바닥만한 크기를 가지면서 ATmega328을 탑재하고 있는데 6개의 아날로그 입력단자와 14개의 디지털 입출력단자를 지원합니다. 이러한 입출력 단자들은 우노 보드에 위로 쌓아(Stack-up) 연결된 확장보드(Shield 보드, Shield-up 보드)에 서로 연결되고, 사용자는 1개 이상의 이들 확장보드에 주변회로를 직접 꾸며주게 됩니다.

 

 

 

Posted by Nature & Life


 

APM 2.6 Set (external compass)
 
The APM 2.6 is a complete open source autopilot system and the bestselling technology that won the prestigious 2012 Outback Challenge UAV competition. It allows the user to turn any fixed, rotary wing or multirotor vehicle (even cars and boats) into a fully autonomous vehicle; capable of performing programmed GPS missions with waypoints. Available with top or side connectors.

APM 2.6는 완전한 오픈 소스 자동조정장치 시스템이며 권위있는 2012 Outback Challenge UAV 대회에서 수상한 가장 많이 팔린 기술입니다. 이것은 사용자가 어떤 고정된, 회전하는 날개 혹은 멀티로터(multirotor) 운송수단(심지어 자동차 그리고 보트)을 완전히 자율적인 운송수단으로 가능하게 합니다; 경유지를 정해 프로그램된 GPS 미션을 수행하는 것이 가능합니다. 위 혹은 옆 커넥터와 함께 가능합니다. 

 

This revision of the board has no onboard compass, which is designed for vehicles (especially multicopters and rovers) where the compass should be placed as far from power and motor sources as possible to avoid magnetic interference. (On fixed wing aircraft it's often easier to mount APM far enough away from the motors and ESCs to avoid magnetic interference, so this is not as critical, but APM 2.6 gives more flexibility in that positioning and is a good choice for them, too). This is designed to be used with the 3DR uBlox GPS with Compass (see option below), so that the GPS/Compass unit can be mounted further from noise sources than APM itself.

보드의 이번 수정판은 온보드 compass를 실장하지 않습니다. 이것은 자기장 간섭을 가능한 피하기 위해서 파워나 모터로부터 멀리 떨어져 위치해야만 하는 compass를 가진 운송수단(특히 멀티콥터 그리고 로버)을 위하여 설계되었습니다. (고정 날개 비행체에서는 자기장 간섭을 피하기 위해 모터나 전자변속기(ESC)로부터 충분히 떨어져 APM를 탑재하는 것이 종종 쉽습니다 그래서 이것은 중요하지 않지만 APM 2.6은 어디에 탑재하느냐에 좀더 유연성을 주고 그것들을 위해서 역시 좋은 선택이 됩니다). 이것은 compass(see option below)를 가진 3DR uBlox GPS을 사용하도록 설계되어졌습니다. 그 결과, GPS/Compass는 APM 자체보다 잡음 소스로부터 좀더 멀리 탑재하는 것이 가능합니다.

 

 

APM 2.6 requires a GPS unit with an onboard compass for full autonomy.

APM 2.6은 완전한 자율조정을 위해서 온보드 compass를 가진 GPS를 필요합니다.

If you are using APM 2.6 with a GPS module that does not have a compass sensor, you must use a stand-alone external compass.

만일 여러분이 compass 센서를 가지지 않는 GPS 모듈과 APM 2.6을 사용한다면 여러분은 독립적인 외장 compass를 사용해야만 합니다. 

 

Features:
- Arduino Compatible!

- Can be ordered with top entry pins for attaching connectors vertically, or as side entry pins to slide your connectors in to either end horizontally.

- Includes 3-axis gyro, accelerometer and magnetometer, along with a high-performance barometer.

  (3축 자이로를 탑재한 가속도계와 지자기계, 고성능의 고도계)

- Onboard 4 MegaByte Dataflash chip for automatic datalogging.

  (자동적인 데이터 기록을 위한 4Mbyte 크기의 플레쉬 메모리 탑재)

- Optional off-board GPS, uBlox LEA-6H module with Compass.

  (지자기 센서를 포함하여 외장 GPS 모듈인 uBlox LEA-6H의 선택 가능)

- One of the first open source autopilot systems to use Invensense's 6 DoF Accelerometer/Gyro MPU-6000.

  (3축 자이로 가속도 센서로 MPU-6000)

- Barometric pressure sensor upgraded to MS5611-01BA03, from Measurement Specialties.

  (공기압을 측정하여 고도를 감지할 수 있는 고도 센서로서 MS5611-01BA03으로 개선됨)

- Atmel's ATMEGA2560 and ATMEGA32U-2 chips for processing and usb functions respectively.

  (USB 통신을 위해서 ATMEGA32U-2 칩을 내장)


APM(AutoPilot Mega) History

APM v2.5 - on board compass.

APM v2.5.2 ~ v2.8 - APM v2.5와 하드웨어와 소프트웨어는 동일하지만, PCB상에서 외란에 대한 간섭을 최소화하기 위해서 외장 지자기 센서를 사용할지 말지에 대한 점퍼스위치를 갖추고 있습니다. 기존에는 내장 Mediatek GPS를 사용하지만 APM v2.6에서는 외장 Ublox GPS/Compass 모듈의 사용이 가능합니다.




Posted by Nature & Life