오늘은 오로카 강좌용 보드인 STM32- Smartrobot 보드를 이용하여 아두이노 포팅을 해 보았습니다.
해당 보드에 대한 핀맵 및 회로도는 아래 링크에 있습니다.
http://cafe.naver.com/openrt/1812
사실 저도 공부한지 얼마 안되어서 포팅이 뭔지 명확하게 개념이 잡혀있지 않습니다.
여기 저기 물어본 결과 비유하자면 심장을 이식 할 때 기증자의 심장이 수혜자의 몸에서 최대한 거부 없이 뛸수 있도록 주변 환경을 맞추어 주는 것입니다.
자바 버츄어 머신과 비슷하게 이해했는데 그게 아니라 프로그램이 해당 플랫폼에서 동작할 수 있도록 밑단 자체를 갈아주는 것이라고 하더라고요.
혹시 잘못된 개념이있다면 수정 하도록하겠습니다.
쉽게 생각해서 윈도우에서 돌아가는 프로그램을 리눅스에서도 돌아가게 바꾸어주는 작업을 포팅이라고 볼수 있습니다.
지금 하는 건 STM이라는 다른 환경에서 아두이노가 돌아갈수 있도록 세팅해 주는 것이지요
- 개발환경 -
여러가지 프로그램들이 뜰건데 그중 2번째 cortex-M3를 위한 패키지를 설치합니다.
저의 경우 이미 설치가 완료 되어서 Remove버튼이 활성화 되었습니다.
설치가 안된 경우면 현재보이는 Remove 위치에 버전과 인스톨 버튼이 있을겁니다.
이후에 도구에서 현재 사용중인 모듈의 코어와 포트 설정을 해주시면 완료입니다.
프로그래밍 후 컴파일, 업로드해주시면 실행되는 것을 보실수 있습니다.
그렇다면 테스트를 해보겠습니다.
- PWM소스 -
const int analogInPin = 1; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 1; // Analog output pin that the LED is attached to
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
Serial.begin(115200);
}
int a = 0;
void loop() {
analogWrite(analogOutPin, a%256);
Serial.print("\t output = ");
Serial.print(a%256);
delay(500);
a+=5;
}
아두이노에서 제공하는 Analog-output(PWM)예제를 조금 수정하여 만든 소스입니다.
0.5초당 5씩 상승하고 256이되면 다시 초기화 되는 간단한 예제입니다.
아두이노는 처음이라서 대충 무슨뜻인지는 감이 잡히는데 정확하게는 잘 모르겠습니다
그렇게 어렵지 않다고 하니 함수 사용은 금방 할 수 있을것같습니다.
먼저 시리얼 통신을 통해 출력되는 현재 Parameter값입니다.
프로그래밍한것 처럼 5씩 꾸준하게 증하고 하고 있는 모습을 보입니다.
오실로스코프를 찍어보았습니다.
일단 사진으로 펄스 파형이 일정한 간격으로 생성되는것을 확인 할 수 있습니다.
오늘은 SmartRobot 보드에 테스트를 하였지만 현재 연구중인 Spark 모듈에서 아두이노를 포팅한다면 좀 더 쉬운 인터페이스로 STM 조정이 가능합니다.
또한 SmartRobot의 경우 제공되는 STM 포팅 파일로 진행 하였지만 앞서 말씀드린것과 같이 Spark는 기존의 모듈들과 장치가 조금 다르기 때문에 Wifi기능과 호환을 위해서 프로그램을 수정해야 할 것 같습니다.
'개발' 카테고리의 다른 글
[Spark] 스파크 모듈 소개 (0) | 2017.04.18 |
---|---|
[Spark] 스파크 모듈 개발환경 구축 (0) | 2017.04.18 |
[STM32] 소스에서 메모리 주소 찾기 (0) | 2017.04.18 |
[STM32] STM32 세미나 (0) | 2017.04.18 |
[STM32] GPIO 사용방법 (0) | 2017.04.18 |
댓글