BLE테스트키트 안드로이드 앱을 이용한 라즈베리파이 로봇 제어입니다.

 

"본 글은 아이씨뱅큐가 진행하는 칩센의 블루투스 4.1 모듈 테스트 키트 무상 체험단의 일환으로 ICbanQ의 지원을 받아 작성되었습니다" 

구입처입니다. 

원래 라즈베리파이와 테스트 키트를 블루투스 통신하여 서보모터로 스위치를 제어하려고 했는데, 
생각같이 되지 않아 제가 활동하는 커뮤니티에서 만들고 있는 로봇에 컨트롤러로 사용하여 미션을 수행하였습니다.

제공한 안드로이드 앱의 터미널을 통해 로봇에게 명령 하달하기 입니다.

다른 것은 개별적으로 했던 것이고, BLE 테스트 키트와 관련있는 부분은 BLE 테스트 앱의 터미널을 통해
데이터를 전달하고 라즈베리파이에서 이를 시리얼 통신으로 수신해서 처리하는 내용입니다.
 
 
 
급조해서 로봇 머리에 테스트 키트를 부착했습니다.
다른 라인들 때문에 좀 지저분해졌는데 양해바랍니다.
 
 
 
로봇은 원래 라즈베리파이를 웹을 통해 제어하는 구조였는데, 라즈베리파이의 USB와 테스트 키트를 연결하여 제공된 안드로이드
앱의 터미널을 통해 로봇을 제어하려고 합니다.
 



부팅 시키고 나서 페어링까지 완료한 모습입니다.
이제부터 터미널에 글을 쓰고 send하게 되면 라즈베리파이의 시리얼을 통해 로봇을 제어할 수 있는데요.
저는 기존에 사용하던 node.js의 오픈 소스를 이용하여 구현하였습니다.

아래의 소스가 시리얼 통신으로 터미널에서 전송한 데이터를 받아오는 소스입니다. 보내는 것도 가능한데,
이번 미션에서는 받아오는 부분만 필요해서 받는 이벤트 쪽만 구현했습니다.

var serialport = require("serialport");
var SerialPort = serialport.SerialPort
var serialPort = new SerialPort("/dev/ttyUSB0", {
  baudrate: 9600,
  parser: serialport.parsers.readline("\n") // 
}, false); // this is the openImmediately flag [default is true] 
 
 serialPort.open(function (error) {
  if ( error ) {
    console.log('failed to open: '+error);
  } else {
    console.log('open');

    serialPort.on('data', function(data) {
      console.log('received: ' + data);
      
      if (data[0] === 'f') //forward
        forward(0);
      else if (data[0] === 'b') //backward
        backward(0);
      else if (data[0] === 'l') //left
        left(0);
      else if (data[0] === 'r') //right
        right(0);
    else if (data[0] === 's') //stop
        stop();
    });
  }
});

로봇 제어 API는 좀 길어서 생략했습니다. 
잠시 공간을 할애하자면, 간혹 IT 커뮤니티에서 보신 분들도 계시겠지만, 
개인적으로 circulus라는 커뮤니티에서 활동하면서 제작하고 있는 로봇입니다.
pololu 서보모터 컨트롤러, sg5010, as3103등의 서보모터를 사용하여 만들었고요. circulus라는 개발 platform에서
소프트웨어를 구현하고 있고, 웹을 통해 제어하고 있는데, 이번에는 BLE제어 키트를 이용하여 안드로이드 앱으로
제어하게 되었네요. 
pololu의 서보모터 컨트롤러의 소프트웨어 역시, npmjs.org에 오픈소스를 찾으실 수 있습니다.

아래는 로봇을 제어하는 동영상입니다.
 
 
 
 
 
 



 
지금까지 읽어주셔서 감사합니다. 좋은 하루 보내세요.

"본 글은 아이씨뱅큐가 진행하는 칩센의 블루투스 4.1 모듈 테스트 키트 무상 체험단의 일환으로 ICbanQ의  
        지원을 받아 작성되었습니다"