:::: MENU ::::
Posts tagged with: mbed

BBC Microbit 오프라인에서 사용하기

BBC microbit를 오프라인에서 사용하려면 링크를 참고 하고 Manuall Installation 항목을 따라서 환경을 셋업한다.

1. yotta설치

Mac OS의 경우

brew tap ARMmbed/homebrew-formulae
brew install python cmake ninja arm-none-eabi-gcc
pip install yotta

Trouble shooting
brew 관련 아래과 같은 문제가 있을 경우

sudo chown -R $(whoami):admin /usr/local
cd $(brew –prefix) && git fetch origin && git reset –hard origin/master

터미널에서 다음과 같은 에러메시지가 나올때
error: connection error: (“bad handshake: Error([(‘SSL routines’, ‘ssl3_get_server_certificate’, ‘certificate verify failed’)],)”,)

pip install -U certifi

참고: https://github.com/ARMmbed/yotta/issues/744

2. Srecord 설치

brew install srecord

3. 예제 코드 받기

git clone https://github.com/lancaster-university/microbit-samples
cd microbit-samples

4. 타겟을 miccrobit로 설정

yt target bbc-microbit-classic-gcc

5. 프로젝트 빌드

yt build

6. 마이크로비트에 다운로드 하기
마이크로비트는 MICROBIT라는 이름의 외장디바이스로 되어 있으니 hex파일을 copy하면 된다.

cp ./build/bbc-microbit-classic-gcc/source/microbit-samples-combined.hex /Volumes/”MICROBIT”

참고
https://lancaster-university.github.io/microbit-docs/offline-toolchains/
http://yottadocs.mbed.com/#installing


BBC micro:bit 분석

BBC micro:bit는 영국에서 컴퓨터 교육용으로 디자인된 마이크로컨트롤러 보드이다.

개발에 참여한 파트너사들

하드웨어

  • 메인 MCU: ARM CortexM0 코어에 블루투스 LE 내장된 노르딕사의 nRF51822 (256KB flash, 16KB SRAM)
  • 인터테이스 : USB 2.0 OTG 내장된 NXP KL26Z (CortexM0+) DAPLink를 제공하여, 가상 USB 플래시 드라이브를 제공해서 펌웨어 업데이트를 가능하게 하며, USB 파워를 받아서 전압 레귤레이터의 역할. 관련 포스팅
  • 3 가속도 : NXP MMA8652, 메인 MCU I2C 연결
  • 3 지자기센서 : NXP MAG3110, 메인 MCU I2C 연결
  • 5×5 LED 어레이
  • 2개의 버튼

핀아웃

소프트웨어

모두다 브라우저기반의 컴파일러를 제공하며, 난이도에 따라 아래 그림 처럼 3가지로 나뉠 수 있다.

아키텍처

기타

관련자료


WIZnet mbed 라이브러리

W5500 Ethernet 라이브러리를 mbed에 포팅후 W5100,W5200, W5500까지 지원을 하는 라이브러리를 만들어 mbed.org에 업로드했다. 사용법은 간단하다. 라이브러리를 import하고 사용하는 Wiznet칩 또는 모듈에 따라서 wiznet.h에 있는 #define문에서 사용할 칩만 나두고 나머지는 주석 처리하면 된다.




mbed – SeeedArch 프로그래밍하기

SeeedArch

mbed의 플랫폼 중의 하나인 Seeedstudio에서 만든 보드, SeeedArch를 테스트중이다. 이 보드의 스펙은 다음과 같다.

  • mbed enabled
    • online development tools
    • easy to use C/C++ SDK
    • lots of published libraries, projects
  • Standard Arduino Appearance, two Grove connectors
    • available with 3.3V compatible shields
    • a large number of grove modules
  • Drag-n-drop programming
  • NXP LPC11U24 MCU
    • Low power ARM Cortex-M0 Core
    • 48MHz, 32KB Flash, 8KB RAM, 4KB EEPROM
    • USB Device, 2xSPI, UART, I2C

이 보드의 가장 큰 특징은 보드의 형태가 아두이노 보드와 같아서 아두이노 쉴드를 연결할 수 있다.

.png”>800px-Arch_Pinout.jpg.png” width=”560″ height=”455″ />

코딩은 mbed의 웹컴파일러로 하고 다운로드 역시 msd로 잡히는 외장드라이브에 copy를 하면 되는데, Mac이나 Linux에서는 Windows와 달리 drag & drop이 안된다.

프로그래밍 방법 (Mac)

  • 보드의 왼쪽에 있는 리셋 버튼을 길게 누른다. (짧게 누르면 H/W 리셋이고, 길게 누르면 ISP 모드이다.)
  • 그러면 Finder에 CRP DISABLED 라고 스토리지가 잡힌다. Windows에서는 이 폴더에 있는 firmware.bin을 지우고 새로운 firmware.bin을 copy하면 되지만 Mac에서는 Terminal에서 다음과 같이 dd 명령어로 copy한다.
  • dd if=새로운 firmware 파일명 of=/Volumes/CRP\ DISABLD/firmware.bin conv=notrunc

좀 더 쉽게하기위해서 Mac의 Automator를 사용하여 쉘 스크립트를 만든다.

  • dd if=$* of=/Volumes/CRP\ DISABLD/firmware.bin conv=notrunc

Automator_SeeedArch

LED blink 프로그래밍

SeeedArch

관련정보: SeeedStudio WiKi


ARM Techcon 2013, ARM Technology Symposia 2013

지난 10월 29일부터 3일간 미국 캘리포니아 산타클라라 컨벤션 센터에서 열린 “ARM Techcon 2013” 행사에 참석해서 관련 글을 블로터넷에 기고를 했다. 보낸 원고에서 몇가지 영어 표현들이 한글로 바뀌고 제목들이 추가로 달렸는데, 에디터의 손을 거치니 좀 나아지는 것 같다. 한국에서는 IoT(Internet of Things)가 사물인터넷으로 번역되는 것이 좀 이상하지만…

기고문:  “사물인터넷” 눈독 들이는 ARM

최근  ARM CEO인 Simon Segars의 키노트가 유투브에 올라와 있다.

당시 3일 일정의 모든 세션을 들을 수 있는 티켓을 구매(약 1500불)해서 들었는데, ARM에서는 한국에서도  비슷한 행사를 개최했다.

ARM_Symposia _2013

그런데 이 행사는 ARM Techcon보다는 축소된 내용으로 개괄적인 내용만 다뤄졌고, 한국의 파트너들의 발표를 제외하면 당시 행사에서 발표한 슬라이드를 그대로 사용해서 발표를 했다. 지난번에 미국에서 만난 ARM사의 Diya씨가 이번에 한국에서도 발표를 했는데, 발표가 끝나고 물어보니 한국, 대만, 중국, 일본, 유럽, 인도를 거쳐서 미국에서 고객 미팅도 하고 내년에나 집(영국)에 간다고 한다. -_-;;

Diya씨는 Cortex-M시리즈에 대한 일반적인 내용을 발표를 했다.

IMG_0005_2

이번 발표도 미국서와 마찬가지로 주제는 IoT이다. mbed에 대한 소개가 좀 미흡했지만 국내에서도 이 플랫폼을 가지고 IoT를 촉진시키기 위한 커뮤니티의 확산에 노력을 하지 않을까 생각이 된다.

전시된 제품 중 흥미로운 것은 Sphero Ball에 사용된 칩이 STMicro의 STM32F0인것과, Nike_Fuel Band에  STM32L151QCH 칩이 사용이 된 것이 흥미로웠다.

IMG_0010_2

IMG_0011_2

관련 사진: http://www.flickr.com/photos/jbkim/sets/72157637889539275/

 


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를 알아야 한다.


Fritzing 라이브러리 만들기

Frtizing이라는 툴을 지난번에 소개한 적이 있다.  독일의 오픈 소스툴
이 툴을 직접 사용을 해봤는데, 실제 피지컬한 보드를 가지고 설계를 하는 듯한 느낌이 있고 이것을 다시 회로로 변환을 해주는 것이 흥미롭다. 전자공학을 하는 초보자들에게는 좋은 툴인 동시에 이미 많이 개발된 파트 라이브러리 덕에 문서 작업에 유용하게 쓰일 수 있다.
이미 아두이노, 아두이노 이더넷 쉴드, Xbee, mbed…등등의 파트들이 제작이 되어 있다.

 



자신만의 라이브러리를 만들여면 이미지 작업을 해야하는데, 이미 만들어 놓은 라이브러리를 수정해서 사용하면 좀 편하다. 이미지 파일은 벡터기반의 SVG포맷으로 만들어야 한다. 따라서 오픈 소스 툴인 InkScape를 사용하던지 상용툴인 어도비사의 일러스트레이터를 사용해야 한다. 구체적인 정보: http://fritzing.org/learning/tutorials/creating-custom-parts/

필자가 만들어본 WIZ820io Fritzing 라이브러리


아두이노 보드와 연결된 WIZ820io 회로


임베디드 보드에서 트위터하기

이 블로그 포스트는 Twitter API Proxy 서비스인 supertweet.net를 이용해서 PC나 스마트폰이 아닌 임베디드 보드에서 트위터 메시지를 보내는 방법을 설명한다.
참조 사이트:mbed의 post to Twitter via SuperTweet 

먼저 트위터 아이디가 필요한데, 테스트를 위해 twitter.com 에서 ID를 하나 만들었다. EspressoDopio2. 참고로 내 트위터 아이디는 EspressoDopio

Supertweet.net 에 접속해서 docoment link에 가면 3가지 step으로 설명을 해 놓고 있다.
1. Sign UP/ Sign in now를 클릭해서 MyAuthAPIProxy가 계정 사용을 승인하도록 한다.
2. Basic Auth를 위한 패스워드를 설정한다. 이 password는 패스워드와 다르게 설정함.
이 설정이 되면 다음과 같이 Username이 나타다고 Secret 밑에 Show 를 클릭하면 내가 정한 password가 나타난다.


3. 이젠 임베디드 보드에서 트위터 메시지를 보내면 되는데, Twitter.com 대신에  http://api.supertweet.net 로 보내면 된다.
구체적인 방법은 http://www.supertweet.net/about/api 링크를 확인하면 되는데, 간단히 메시지 post하는 것을 설명하면…

 아래 예제는 curl를 사용해서 메세지를 보내는데, user:password는 위 테이블의 Username 즉 트위터 아이디가 되겠고, password는 Supertweet에서 설정한 password이다. 트위터 메시지는 “playing with cURL and the SuperTweet.net API” 이게 되겠다.

curl -u user:password -d “status=playing with cURL and the SuperTweet.net API” http://api.supertweet.net/1/statuses/update.xml
참고) cURL은 http://curl.haxx.se/ 에서 다운로드 가능. 윈도우 버젼도 있다.

실제 트위터에 메시지가 올라간 경우.


Wireshark로 실제 날라가는 패킷을 잡아보면 다음과 같다.

빨간색이 보낸 패킷이고 파란색이 받은 패킷이다.
보낸 패킷에서 2번째 줄이 Authorization인데, Basic 뒷 부분은 “Username:password” 가 base64로 인코딩되어 있고, 보낸 패킷의 마지막 부분의 status= 뒷부분이 보낸 메시지 이다.

따라서 임베디드 보드에서 이것을 구현을 하려면,
-. DNS: api.supertweet.net에 접속을 위해
-. HTTP Client
-. Base64 encoding 함수등이 구현이 되야 겠다.

구체적인 구현 결과물은 다음 기회에……


Pages:12