코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2018-12-27 10:51:48
이번 튜토리얼에서 사용할 보드는 mbed로 ST microelectronics사의 STM32 Nucleo-F103RB입니다.
<ST microelectronics사의 STM32 Nucleo-F103RB보드>
국내에서 mbed는 아두이노에 비해 덜 알려져 있습니다.
그렇기에 유저층도 얇고 mbed에 대한 정보도 쉽사리 얻을 수 없는것이 사실입니다.
국내에 아두이노가 먼저 널리 퍼져서 사용되었기에 선점효과에 의해 mbed가 힘을 못쓰는 것이 아닌가 하는 개인적인 생각을 해봅니다.
하지만 해외에서는 이미 많은 유저층이 존재하고 mbed를 사용하는 다양한 코드와 라이브러리를 제작하여 올리고 있습니다.
mbed의 장점은 코드가 C와 거의 유사하기 때문에 일반 컴퓨터 전공 학생들은 아두이노와 달리 낯설지 않게 코드를 접할 수 있습니다.
그리고 MCU가 아두이노보다 성능이 좋은 ARM사의 칩을 사용하기 때문에 아두이노에서 돌리기 어려운 것들을 mbed에서 시도해 볼 수 있습니다.
마지막으로 튜토리얼에서 사용하는 STM32 Nucleo보드는 아두이노와 핀배열이 동일하기 때문에 선 연결은 아두이노를 사용하던 유저들도 낯설지 않게 연결해 볼 수 있습니다.
mbed의 특징 중 하나는 Web editor를 통해 코딩을 하는 점입니다. 그렇기 때문에 별다른 개발환경 설치가 필요하지 않습니다. 이 부분은 장점이 될 수도 있고 단점이 될 수도 있습니다. 사용자의 편의성에 맡겨야 할 듯 하네요.
mbed 기초 - http://kocoafab.cc/make/view/535
NO | 부품명 | 수량 | 상세 설명 |
1 | mbed | 1 | STM32 Nucleo-F103RB |
2 | LED | 1 | 단색 LED |
3 | 330옴 저항 | 1 | |
3 | 브레드 보드 | 1 | |
4 | 점퍼 케이블 |
부품명 | mbed | LED | 330 옴 저항 | 브레드 보드 | 점퍼 케이블 |
부품 사진 |
#include "mbed.h"
DigitalOut myled(D3);
int main() {
while(1) {
myled = 1; // LED is ON
wait(0.2); // 200 ms
myled = 0; // LED is OFF
wait(1.0); // 1 sec
}
}
코드는 짧아서 간단해보이지만 아두이노를 주로 사용했던 유저라면 많이 낯설어보이는 코드입니다.
아두이노에서는 크게 Setup()과 loop()로 나누어 setup()에서는 1번 실행, loop()에서는 무한반복으로 사용했지만
mbed에서는 int main()을 기본으로 while()문을 통해 무한반복을 합니다.
while()문을 사용하지 않는다면 반복실행이 되지 않기 때문에 반복적인 작업을 하는 보드 특성상 코드에 while(1)은 항상 들어간다고 보면 됩니다.
mbed를 사용할때는 제일 처음에 #include "mbed.h"를 항상 선언합니다.
mbed.h에는 mbed를 사용할때 편리하게 쓸 수 있는 기본적인 명령어 모음을 제공합니다.
Blinky코드에서는 DigitalOut선언을 통해 D3번핀을 digital신호를 Output하는 핀으로 선언합니다.
DigitalOut myled(D3); //D3번핀을 사용하는 DigitalOut의 myled 선언
myled는 DigitalOut으로 선언하였기 때문에 0과 1의 값으로 제어 가능합니다.
myled | Status |
0 | HIGH(3.3v) |
1 | LOW(0v) |
아두이노에서는 delay()함수를 통해 코드의 흐름을 일시정지하였지만 mbed에서는 wait()함수를 사용합니다.
wait()함수도 delay()와 같은 동작을 하면 다만 차이가 있다면 기본 단위가 delay()처럼 ms가 아닌 sec단위입니다.
wait(0.2)는 0.2초 200ms를 중지합니다.
kocoafab