April 24, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

[19호]초보자를 위한 아두이노 보드 “SPL-Duino All-In-One” 활용하기

SPL-Duino All-In-One  초보자를 위한 아두이노 보드 
“SPL-Duino All-In-One” 활용하기 

글 | ㈜헬로앱스 김영준 대표

목차

1. SPL-Duino란?
2. Simple Programming Language(SPL)가 제공하는 쉬운 프로그래밍 환경
3. LED 체인도 바로 연결
4. 로봇 연결도 바로바로
5. 화분에 물도 주고 분수도 만들고
6. 어두워 지면 저절로 켜지는 전등 구현하기
7. 디지털 Push 버튼으로 선풍기 제어하기
8. 서보 모터 제어하기
9. 장난감 개조는 기본
10. 스마트폰으로 보드와 통신하기
11. 플래시 파일에서 보드와 통신하기

 

1. SPL-Duino란?

SPL-Duino01

브레드보드 사용없이 필요한 센서와 엑츄에이터 등을 바로 꽂아서 사용할 수 있는 SPL-Duino All-In-One 보드는 아두이노 초보자와 매니아 모두를 위한 보드이다.
기존의 아두이노를 사용하려면 브레드보드(일명 빵판)가 반드시 필요하며, 전자회로에 대한 기초 지식 없이는 간단한 회로구성 자체가 어려워 사실상 일반인들에게는 아두이노가 접근하기 어려웠던 것이 사실이다.
특히 최근에는 3핀 형태의 모듈화된 센서들이 쏟아져 나오고 있는 실정이나 일반 아두이노 보드에는 직접적인 연결을 할 수 없고, 브레드보드를 사용하거나 또는 별도의 IO 확장 쉴드를 구매해야만 사용이 가능한 실정이다. 또한 아두이노가 가장 많이 사용되고 있는 시나리오 중에 하나인 로봇 제어의 경우에도 로봇 DC 모터를 연결하기 위해서는 별도의 모터 쉴드를 구매해야만 연결이 가능하여, 생각만큼 아두이노의 활용이 쉽지 않음을 느끼게 된다.
또 한 가지 아두이노 사용자가 가장 필요로 하면서도 불편한 부분은 블루투스 연결이다. 대부분의 아두이노 사용자들은 스마트폰을 활용하여 보드와 통신을 주고 받는 것을 구현하고 싶어하나, 이 또한 별도의 블루투스 쉴드가 있어야 만이 가능하기 때문에, 초보자와 비전문가들에게는 넘기 힘든 벽이 되어 왔으며, 보드 확산에 있어서도 큰 걸림돌이 되어 왔다.
SPL-Duino는 이러한 문제를 해결하기 위해서 만들어진 보드로서, 사용자가 꼭 필요로 하는 위의 세가지 기능을 하나의 보드에 모두 통합시킨 보드이다.

 

2. Simple Programming Language(SPL)가 제공하는 쉬운 프로그래밍 환경

SPL-Duino 보드의 또 다른 장점으로는 제품 이름에도 나와 있듯이 BASIC 수준의 쉬운 프로그래밍 언어와 개발 환경을 제공한다는 것이다. SPL-Duino 편집기는 http://www.helloapps.kr 사이트에서 무료로 다운로드 받아서 설치할 수 있으며, 설치를 하게 되면 USB 드라이버 설치 프로그램과 SPL-Duino 편집기 프로그램이 바탕화면의 SPL 폴더에 생성되게 된다. 맨 처음 사용시 USB 드라이버를 설치해 준 다음, SPL-Duino 편집기를 실행시키면 되며, 그 다음으로 사용자는 보드의 케이블만 연결한 후, 마우스를 통해 간단한 명령어 입력 후, 실행 버튼만 클릭하여 스크립트를 실행시킬 수 있다.

SPL-Duino02
위의 예는 SPL 프로그래밍 툴에서 마우스를 이용해 명령어를 입력하는 과정을 보여주며, 사용자가 별도로 명령어를 외울 필요없이 단 몇 초만에 필요한 스크립트를 작성할 수 있다.
아두이노의 가장 기초 예제인 13번 LED의 점멸 예제는 다음과 같이 4 줄의 코드를 추가함으로써, 완성될 수 있다 (실제는 마우스 클릭 4번 만으로 완성됨)

SPL-Duino03

스크립트 완성 후에는 화면 상단의 실행 버튼(또는 F5 키)을 클릭하여, 스크립트를 실행한다. SPL 툴에서는 사용자가 입력한 스크립트를 AVR C언어로 변환한 후, 컴파일을 하며, 생성된 바이너리 파일을 보드에 자동으로 업로드 시켜 준다.

SPL-Duino04
SPL-Duino 편집기는 SPL 스크립트 외에도 아두이노 스케치 스크립트와 AVR C++언어의 컴파일을 지원하며, 실행창에서 컴파일 옵션을 선택해 줄 수 있다. 또한 오류가 발생하였을 경우에는 상단의 “생성된 스케치” 탭을 클릭하여 변환된 C 코드를 라인번호와 함께 확인한 후, 해당 스크립트를 다시 수정해 주면 된다.

SPL-Duino07

 

3. LED 체인도 바로 연결

아두이노 자체가 유럽 예술인들의 예술 작업을 위해 태동되었듯이, 여전히 아두이노는 예술 작품의 구현에 있어서 많은 관심을 가지고 있는 제품이다.
SPL-Duino에서는 이러한 수요를 해결하기 위해 25개의 RGB LED로 구성된 LED 체인 키트를 별도로 제공(디바이스마트를 통해 판매 예정)하고 있으며, 확장 핀 작업이 되어 있어 50개까지 별도의 전원 공급없이 연결이 가능하다.

SPL-Duino08 SPL-Duino09

LED 체인을 이용할 경우, 간단한 테트리스 게임 구현은 물론 다양한 시뮬레이션, 숫자 표시 등의 응용에 적용할 수 있다.

뒷장의 스크립트는 50개의 LED 셀에 대해 첫번째 셀부터 마지막 50번째 셀까지 0.1초 간격으로 RED 색상으로 변경해 주는 예제를 보여준다.

SPL-Duino10

 

 

4. 로봇 연결도 바로바로

아두이노 사용자가 가장 관심있어 하는 시나리오 중에 하나인 로봇 제어는 SPL-Duino 보드에 있어서는 아주 간단한 일이다. 2개의 모터 포트와 센서 포트에 모터와 아날로그 센서를 연결하기만 하면 되기 때문이다. 2개의 센서 포트는 아날로그 0번과 1번핀에 연결되어 있기 때문에 아날로그 센서 소켓에 있는 핀을 이용해도 되고 모터 옆에 있는 센서 단자를 이용해도 된다.

SPL-Duino11 SPL-Duino12

아래 스크립트 예제는 장애물을 회피하는 자율주행 예제로서 첫 번째 IR 센서 값을 읽어와서 일정 거리 이하에 장애물이 있으면 로봇을 1초간 후진, 1초간 회전, 그리고 1초간 전진시켜 주는 로직을 구현한 것이다.

SPL-Duino13

 

 

5. 화분에 물도 주고 분수도 만들고

SPL-Duino14 SPL-Duino15

SPL-Duino에서는 물공급 펌프와 토양센서를 바로 연결하여 제어할 수 있다. 화분용 물공급 및 분수 키트(디바이스마트를 통해 판매 예정)는 펌프, 토양센서, 분수 키트, 호스 등으로 다음과 같이 구성되어 있다.

펌프는 모터 단자에 연결하고 센서는 아날로그 센서 핀에 연결하면 되며, 간단하게 작동시키는 코드는 다음과 같다.
분수 키트 대신에 호스를 연결할 경우 화분에 물이 직접 전달되도록 구성할 수 있다.

 

6. 어두워 지면 저절로 켜지는 전등 구현하기

SPL-Duino16 SPL-Duino17

SPL-Duino 보드의 모터 단자에는 로봇용 모터 외에도 펌프, 소형 선풍기, LED 전구 등을 연결할 수 있으며, 다음과 같이 전등을 모터 단자에 연결하여 조도 센서와 연동되는 시나리오를 간단히 구현할 수 있다.

SPL-Duino에는 조도센서가 내장되어 있으며, CDSRead() 명령을 통해 아날로그 형태의 조도값을 읽을 수 있다. 조도가 일정 값 이하이면, 전등의 불을 켜는 시나리오는 다음과 같이 간단히 구현된다. 조도센서 외에도 IR 센서를 이용할 경우, 간단한 동작 감시 시나리오도 쉽게 구현할 수 있다.

7. 디지털 Push 버튼으로 선풍기 제어하기

SPL-Duino18 SPL-Duino19

이번에는 SPL-Duino 보드의 모터 단자에 선풍기를 연결하고, 2번 디지털 포트에 Push 버튼을 연결하여 버튼을 누르고 있는 상태에서만 선풍기가 작동되도록 구현해 보자.

디지털 Push 버튼의 값을 읽으면 0 또는 1 값이 리턴되며 각 상태에 따라서 모터의 작동을 켜겨나 끄는 명령어를 추가해 주면 된다.

8. 서보 모터 제어하기

SPL-Duino에서는 일반적인 3핀 서보 모터 역시 별도의 브레드보드 없이 바로 연결이 가능하다. 서보 모터는 디지털 포트에 연결하여 사용가능하며, SPL에서는 ServoWrite() 라는 명령어를 제공하여 단 한줄로 원하는 각도 제어를 수행할 수 있다.

SPL-Duino20 SPL-Duino21

위의 사례는 아날로그 거리 센서를 연결한 후, 일정 거리값 이하에 장애물이 있으면 차단기가 올라가는 형태를 구현한 것으로서 차단기는 일반 시중에서 쉽게 구할 수 있는 3핀 서보 모터를 이용하였다.
아날로그 거리 센서는 5번 아날로그 핀에 연결하였으며, 서보 모터는 9번 디지털 핀에 연결을 하였고, 거리값에 따라 각각 서보 모터의 각도를 0도와 90도로 제어되도록 하였다.

 

9. 장난감 개조는 기본

SPL-Duino의 매력은 모든 장난감 완구가 개조 대상으로 될 수 있다는 것이다. 일반적으로 아두이노 매니아들이 많이 시도하는 탱크 완구 연결 뿐만이 아니라 건전지로 작동되는 대부분의 완구는 모두 제어 대상이 될 수 있다.

아래 사례는 비눗방울을 발사하는 완구를 개조하여 SPL-Duino 보드에서 전원을 제어하도록 한 것이다. 전원 제어 외에도 비눗방울 막을 생성하기 위해서는 별도로 서보 보터를 연결해 주어야 하나 아래 그림에서는 간단히 전원을 작동시키는 결과만을 제시하였다.

SPL-Duino22

비눗방울 완구의 전원을 제어하기 위해서는 전원 케이블을 SPL-Duino 보드의 모터 단자에 연결하기만 하면 된다.

 

10. 스마트폰으로 보드와 통신하기

SPL-Duino에는 블루투스 통신 모듈이 내장되어 있어 별도의 블루투스 쉴드를 구매하지 않아도 바로 스마트폰과 연동이 가능하다.
또한 헬로앱스에서 스마트폰용 앱을 제공해주기 때문에 별도로 앱을 개발할 필요는 없으며, 배포하고 있는 SPL-Duino Lite앱을 이용해서 스마트폰에서 보드와 통신하는 프로그램을 쉽게 개발할 수 있다.

먼저 안드로이드폰용 앱을 다음 경로를 통해서 설치한다.

https://play.google.com/store/apps/details?id=com.helloapps.spl_duino_lite&feature=nav_result

앱을 안드로이드 기반 스마트폰에 설치한 후 실행하고 나면, 아래 그림과 같이 기본 예제 목록이 표시된다.

SPL-Duino23

예제 목록중에서 SPL Example 6을 선택하여, 앱에서 보드의 LED를 제어해 보도록 하자.
6번 예제를 선택하고 나면, 다음과 같이 SPL 스크립트로 구성된 창이 표시되며, 스마트폰에서 SPL 스크립트로 로직이 실행되어 SPL-Duino 보드와 통신을 하는 샘플 로직이 표시된다.

SPL-Duino24

위의 예제는 Button1이 클릭되면 1 값을 전송하고, Button2가 클릭되면 2값이 전송되도록 로직을 구성한 것이다.
이제 SPL-Duino 보드에서 실행되는 스크립트를 작성해 보자. SPL-Duino 편집기에서 다음과 같이 두 번째 스마트폰 연동 예제를 오픈한다.

SPL-Duino25 SPL-Duino26

위의 예제는 시리얼 포트에서 1 바이트 값을 읽은 후, 값이 1이면 13번 LED를 켜고, 값이 2이면 13번 LED를 끄도록 작성된 것이다.

실행 버튼을 클릭하여 스크립트를 보드에 업로드 한 후, 스마트폰 앱에서 Run 버튼을 클릭하여 앱용 스크립트도 실행시킨다. 앱이 실행되고 나면 각각 버튼을 클릭하여, 각 버튼에 따라 13번 LED가 On 또는 Off 되는 것을 확인해 볼 수 있을 것이다.

 

11. 플래시 파일에서 보드와 통신하기

마지막으로 플래시 파일에서 FSCommand 기능을 이용하여 SPL-Duino 보드와 통신하는 과정에 대해 살펴보자.
플래시에서는 FSCommand를 통해 외부로 값을 보낼 수 있으며, 반대로, SetVariables를 통해 외부로부터 값을 받아서 플래쉬 내부의 변수에 전달할 수 있다.
SPL-Duino 편집기에는 플래시 파일 실행 버튼이 있으며, 사용자가 개발한 플래시를 실행시키고 보드의 값을 플래시 파일로 전달하거나 파일의 값을 보드에 전달해 주는 기능을 수행한다.
FSCommand나 SetVariables는 각각 변수 이름과 값 등 2가지 값을 전달하도록 되어 있으며, SPL-Duino 편집기에서는 내부적으로 “변수=값;” 형태로 값을 하나의 문자열로 구성하여 전달한다. 따라서, SPL-Duino 보드에서 플래시로 값을 전달하려면 위와 같이 변수=값; 형태로 문자열을 전달해 주어야 해당 값이 플래시에 전달된다.

SPL-Duino27
SPL-Duino 편집기에서 위와 같이 3번째 플래시 예제 파일을 오픈한다.

OpenFlashPlayWindow(“http://www.helloapps.kr/flash/HelloFlash.swf”)

char buf[80]

procedure loop

a = SerialReadBytesUntil(‘=’, buf, 80)

String s1 = “”
String s2 = “”

if (a > 0)
{

buf[a] = 0
s1 = String(buf)

a = SerialReadBytesUntil(‘;’, buf, 80)

if (a > 0)
{
buf[a] = 0
s2 = String(buf)

}

}

if (s1 == “Drive” && s2 == “Forwards”)
{

PrintLine(“Turn On”)
DigitalWrite(13, HIGH)

}
else if (s1 == “Drive” && s2 == “Stop”)
{

PrintLine(“Turn Off”)
DigitalWrite(13, LOW)

}

Delay(100)

end

위의 예제는 인터넷에 올려져 있는 플래시 파일을 PC에서 실행시킨 후, Forwards 버튼을 클릭하면 13번 LED를 켜고, Stop 버튼을 클릭하면, 13번 LED가 꺼지도록 작동하는 스크립트를 보여준다.

플래시 파일에서 문자열로 값이 넘어오기 때문에, 시리얼로 문자열을 읽은 후, 필요한 변수를 추출하여 활용하는 것을 볼 수 있을 것이다.

SPL-Duino28

Leave A Comment

*