물론 지금까지 다루어 오던 아두이노 엘렉트로닉스류의 코딩이 안드로이드 OS의 지원을 받는 스마트 폰에서 앱 코딩을 지원하는 앱인벤터와 조우하는 경우 아두이노 코딩이 보다 강력한 시너지를 받을 수 있었지만 한편 PC의 Processing에서 시리얼/이더넷 인터페이스나 무선 와이파이에 의한 아두이노 인터페이스 코딩이 가능하다면 아두이노 사물인터넷 코딩의 끝판을 볼 수 있을 듯하다.
교보문고에서 판매 중입니다. 342 페이지 가격 15800원 개인출판(POD)이므로 주문 배송기간이 일주일 정도 소요됩니다.
_______________________________________________________________________________________________________
WeMos LOLIN 보드에서 와이파이 기본적인 사용법은 이미 선을 보였다. WeMos LOLIN 보드의 특징이랄까? 보드 하나에 와이파이 블루투스 둘 다 들어 있다고 하는데 와이파이이 기번 적인 사용법은 이미 선은 보였다. 이번에는 블루투스 사용법을 알아볼 차례이긴 어떻게 시작해야 할지 막막한 면이 없지 않다.
그렇다고 블루투스 분야에 초보자??? 그건 아니올시다라고 말할 수 있다. 이미 2017년 가을 다음 블로그에 스마트폰 블루투스로 조종하는 RC 카 코딩 편들이 다수 포스팅 되어 있다. 이 RC 카는 DC 모터, 아두이노 우노, HC-06 블루투스 보드, Adafruit 모터 쉴드 보드로 구성된다.
L239D 모터쉴드 DC모터 구동 RC카 앱 인벤터 블루투스 제어
http://blog.daum.net/ejleep1/490
아두이노 음성인식 제어 블루투스 RC카 앱인벤터 코딩
http://blog.daum.net/ejleep1/504
블루투스나 와이파이나 그게 그거 아니냐는 의견도 있을 수 있을 것이다. 하지만 RC 카 조종을 위해서는 무선 통신의 방법론 측면에서 확연히 차이가 난다. 예를 들면 와이파이 RC 카의 경우에 스마트폰이 클라이언트로서 교신을 하기 위해서는 반드시 RC카에 설치한 아두이노 호환 보드의 ip를 가지고 앱인벤터 코드에 반영이 되어 있어야 한다. 한편 하나의 스마트 폰으로 조종해 보아야 할 RC 카가 1대 이상이라면 그때 마다 앱인벤터 코드를 수정하여 깔아야 할 필요가 있다.
반면에 블루투스라면 스마트폰 환경에서 페어링 작업으로 족하다. 여러 RC카 페어링 코드가 떠도 해당 RC카 코드를 선택해 페어링 하면 그만이다.
블루투스 성능 확인 작업에는 별도의 배선이 필요 없으며 LOLIN 보드와 USB 케이블을 PC에 연결하면 되므로 배선도 자체는 생략하도록 한다.
와이파이로 데이터를 보내면 웹에서 간편하게 웹서버인 아두이노나 LOLIN 보드에서 가상 ip를 사용하여 request를 보내어 출력이 이루어지나 블루투스에서는 웹사용과 아무런 관련이 없으며 오히려 아두이노의 시리얼 모니터와 유사하다. 즉 아두이노나 LOLIN 보드에서 Serial.print 방식과 유사하게 송신하면 스마트 폰에서 앱인벤터나 블루투스 터미날 앱으로 수신하여 출력이 가능하다. 여기서는 앱인벤터 코딩 준비가 안되었을 경우로 가정해서 후자의 방법을 사용하기로 하며 Kai Morich의 Serial Bluetooth Terminal을 사용해 블루투스 성능을 확인해 나가도록 한다.
아직 스미트 폰 환경 창에서 블루투스 페어링 준비가 완료 되지 않은 경우에 메시지를 입력하고 엔터 키를 누르면 “Serial device not connected” 메시가 뜬다.
LOLIN 보드의 블루투스 예제 코드를 불러내도록 하자. 아두이노 IDE에서 파일⤍예제⤍WeMos LOLIN 32 예제⤍BluetoothSerial⤍SerialToSerialBT를 불러 오자.
코드의 헤더 영역을 살펴 보자. BluetoothSerial.h 라이브러리가 선언되고 있다. 라이브러리 포함하기 리스트에 등재되어 있지 않아도 이미 WeMos LOLIN 설치에 따라 자동적으로 설치가 되어 있으므로 그대로 사용하기로 한다. 아울러 BluetoothSerial 라이브러리의 SerialBT 란 이름으로 클라스 선언이 이루어진다.
SerialBT 클라스 선언이 되었으면 setup()에서 Serial.BT.begin(“ESP32test”) 라는 명령을 실행하게 되면 그 내용이 블루투스 세팅하는 환경 창에 뜨게 됨에 유의하자. 내 디바이스로 하여금 주변의 블루투스 발신자를 검색할 수 있도록 체크한다. 아우러 사용 가능한 디바이스로 나타난 ESP32test를 터치해서 등록된 디바이스 리스트에 HC-06 과 함께 넣어 두도록 한다. HC-06은 아두이노 우노보드에 사용하는 블루투스 보드 명칭임을 참고하자.
무한 반복되는 loop()의 코드를 살펴보자. 예제에서 SerialBT.print(“Hello world!”) 부분이 한줄 추가되었음에 유의하자. 항상 블루투스를 통해 뭔가 텍스트 정보가 입력되면 LOLIN 보드의 입력 버퍼를 체크하자. 문자 100개 정도의 캐파로 알면 된다. 그 내용을 시리얼 모니터에 출력해서 확인하도록 하자. SerialBT.write() 즉 .write() 명령은 아두이노에서 시리얼 케이블을 통해 바이트 데이터를 송신할 때 사용하는데, .print()의 경우는 대조적으로 문자를 그대로 출력하는 경우다.
반면에 스마트폰 터미널 화면에 출력하려면 SerialBT.print() 가 사용된다. delay(2000)은 Terminal 화면에 입력해서 블루투스로 보내 LOLIN 보드가 수신하게 되는 속도를 느리게 조절하는 역할을 한다. 일부러 느리게 한것이니 실제 사용시에는 10msec 로 줄이도록 하자. 아래는 출력되는 화면 캡츄어 샷이다.
이와 같이 터미널 앱을 이용해서도 전진(F) 후진(B) 좌회전(L) 우회전(R) 멈춤(S)을 LOLIN 보드에 송신할 수 있으면 LOLIN 보드를 사용한 RC카도 제작이 가능하다. 단 RC카일 경우에는 보내는 신호의 속도가 빨라야 하므로 이런 터미널 종류로는 한계가 있으며 터치 보드형 입력을 구현해야 하는데 그래서 앱인벤터 코딩이 필요한 듯하다. 머지 않아 블로그에 앱인벤터 코딩에 관해서 올릴 계획이다.
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
블루투스로 직접 핸드폰에서 WeMos LOLIN 보드의 LED를 ON OFF 해보자! (0) | 2018.08.17 |
---|---|
WeMos LOLIN DHT11 온습도 측정결과를 와이파이 ThingSpeak 처럼 블루투스로 직접 핸드폰에서 실시간으로 출력해보자! (0) | 2018.08.15 |
WeMos LOLIN 3색 LED 밝기 조절 (0) | 2018.08.14 |
WeMos LOLIN 보드에서 조도센서로 LED를 ON OFF해보자. (0) | 2018.08.06 |
WeMos LOLIN 보드의 무선 WiFi 성능을 확인하자! (0) | 2018.08.03 |