블루투스 라즈베리파이 시리얼 콘솔

 

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

무상체험 대상인 BoT-CLE110 Test Kit 구입처http://www.icbanq.com/shop/product_detail.asp?prod_code=P005672731

 

​라즈베리파이 모델B 2대, 라즈베리파이2 모델B 2대, 모두 4대의 라즈베리파이를 가지고 있다. 데모용으로 자주 들고 다니는 라즈베리파이2는 2대는 각각 Ubuntu 14.04 + ROS indigo, 라즈비안과 카메라 영상을 네트워크 스티리밍할 mjpeg streamer가 설치되어 있다. 보통 전원과 네트워크만 연결해 사용하고, 여간해서는 키보드, 모니터 등은 연결하는 일이 거의 없다. 하지만 가끔씩 이 전에 사용했던 네트워크 설정이 데모장소의 네트워크 여건상 수동 설정을 사용했을 경우, 난감한 사태가 벌어진다. 보통 USB to UART 장치를 이용해 시리얼 콘솔 접속으로 설정을 변경하는데, 이 BoT-CLE110 Test Kit을 일종의 쉴드로 만들어 아예 장착해 두면, 바로 PC나 스마트폰에서 무선으로 이 작업이 가능하겠다는 생각이 들었다.

1. BoT-CLE110 Test Kit의 Baudrate 변경


일반적으로 리눅스 시리얼 콘솔로 사용되는 UART Baudrate는 115,200baud를 사용한다. 라즈베리파이 또한 마찬가지이다. 이 작업에 적당한 시리얼통신 에뮬레이터는 아두이노 IDE 프로그램의 시리얼 모니터가 적당하다. 먼저 BoT-CLE110 Test Kit을 마이크로 5핀 USB 케이블을 통해 PC와 연결한다. 이 때 장치관리자의 포트항목에 나타나는 COMxx의 xx에 해당하는 숫자를 기억해두자.


이제 아두이노IDE를 실행시킨 후 '도구 - 포트 - COMxx'을 앞서 기억해 둔 숫자로 맞춘 후   아이콘을 클릭하여, 시리얼모니터를 실행한다.


아래 그림처럼 설정이 되었는 지 확인한다.


AT를 입력하여 +OK가 출력되는 지 확인


AT+UART=115200 를 입력하여 +OK가 출력되는 지 확인


아래 그림에 표시한 것 처럼 보레이트를 115200으로 변경 AT를 입력하여 +OK가 출력되는 지 확인



2. 바즈베리파이의 Serial Cosole 활성화


시리얼 콘솔을 활성화 시키기 위해 raspi-config를 실행한다.

 $ sudo raspi-config

메인메뉴에서 '8. Advanced Options' - 'A08. Serial' - '' - '' 순서로 선택하여 시리얼 콘솔을 활성화 시킨 후,  ''를 선택하여 raspi-config를 종료한다.


 

시리얼 콘솔 포트 확인

 $ sudo ls /dev/ttyA*

   /dev/ttyAMA0

​/dev/ttyAMA0가 라즈베리파이 PGIO포트에 있는 시리얼 콘솔 접속시 사용되는 시리얼 포트의 이름이다.


3. Wiring

라즈베리파이의 I/O 신호레벨이 +3.3V 이므로 특별히 신호레벨을 맞춰 줄 필요는 없다. GND만 맞춰주면 되다. 아래 그림처럼 4가닥만 연결해주면 된다. 점선으로 표시한 SW 방향에 주의한다. 앞서 전송속도를 115200으로 변경할 때와 반대방향으로 맞춘다.

 

 

4. BoT-CLE110 Test Kit를 이용한 라즈베리파이 시리얼 콘솔 접속

 

 


 

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

  

 
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리 4.0 Unported 라이선스에 따라 이용할 수 있습니다 

[미션2. 구현기] 스마트폰 미니 자동차 제어

 

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

※ 구입처 : http://www.icbanq.com/shop/

 

 

미션 2 : 무선스마트폰 미니 자동차 제어

 

 

 이번 미션을 수행하면서 그 동안 RC카를 한번 개조해 보고 싶었던 개인적인 바램이 이렇게 BLE 모듈을 체험해 볼 수 있는 기회와 어우러져 의미있는 시간이지 않았나 생각됩니다.  

 

본론으로 들어가기에 앞서 진행해야 할 작업을 크게 나누어 보면 아래와 같습니다.

1. HW준비 : RC회로를 BoT 테스트 키트로 교체, DC모터 Driver 모듈과  연결  
2. SW준비 : BoT 테스트 키트 용 테스트 apk의 PWM control UI 수정(-> Joystick)  

3. Test 및 보완

 

우선 HW작업으로 불용품 RC카를 분해하여 Radio Controler 회로를 떼어 냅니다.

 

 

그리고 새로운 두뇌(BoT 테스트 키드)로  바꿔주고, 연결 작업을 합니다.

이미 제목에서 알 수 있듯이 DC모터를 PWM 신호로 제어하기 위해 BoT 테스트 보드의 PWM0~3(4개의 출력 신호)를 사용합니다.

 

 

 

 

그리고 BoT테스트 보드의 IO전압(3.3V)과 전류 레벨(?:CSR1010문서에도 없네요..ㅠ.ㅠ)로는 초라한 can모터라 할지라도 직접적인 DC모터제어에 무리가 있어 효율적이고 쉽게 제어하기 위해 ICBANQ에서 구매한 DC모터 Driver(위 사진 중앙 하단)를 적용하였습니다. 

 

 

 

 

 

 DC모터 Driver는 2채널용으로 BA6208 2개만을 사용하여 입출력을 사용하기 편하게 배치한 간단한 쪽보드(piggyback board)입니다.

 

 

 

 

실제 공간이 작은 시스템에 적용하기엔 size가 좀 크네요.^^ 

 

BA6208 보드 기준으로 

     1. control용 입력신호 : BoT테스트보드의 PWM0~3 pin으로 부터 LM0,LM1 / RM0,RM1에 각각 연결

     2. 전원(4.5~15V)  : 배터리팩(전원 스위치 포함)으로 부터 Vcc, Gnd에 연결

     3. DC모터구동용 출력신호 :  2채널 출력(J3/J4)을 각각 DC모터에 연결 (Maximum 500mA)

이렇게 간단합니다.

 

 

 

아래표는 BoT보드의 PWM 출력 -  BA6028 -  DC모터의 구동 방향과의 상관 관계를 나타냅니다.

   DC Motor#

PWM#

BA6208 Output to

DC motor

   Motor1(driving)

PWM0

PWM1

 

                 H

L

정회전

L

H

역회전

H

H

정지

L

L

Open

   Motor2(steering)

PWM2

PWM3

 

H

L

정회전

L

H

역회전

H

H

정지

L

L

Open




 

그리고 BoT 테스트보드의 PWM 출력을 보드 내부(RGB LED, Vibrator)가 아닌 외부(헤드핀 부착부)로 돌리기위해

해당 스위치를 아래 사진과 같이 보드 외부로 설정합니다.

 

 

이제 장착과 연결이 끝났네요.

 

 

기념으로 측면 샷도 한번 눌러 봅니다.

 

 

이로써 HW적인 준비는 마쳤고 ...

 

 

 

 

 

 

 

다음은 SW 관련사항을 한번 볼까요 ...  

 

 

BoT 테스트 키트용 android app에서 PWM control을 위한 UI는 RC카 조정 관점에서는 좀 맞지 않습니다.

그래서 칩센 사이트의 Download 코너에 공유되어 있는 테스트앱을 받아서 수정,구현하기로 가닥을 잡았습니다.

 

 

테스트앱의 구성을  간단히 살펴보면 아래와 같습니다.

(* 그리고 library인 chipsen-cle1x0_1.jar(com.chipsen.bleservice)도 있습니다.)

 

 

 

Activity 진행 순서는 아래와 같습니다.

       chipsen_logo(splash) --> NavigationActivity(각종 data, control이 있는) --> (BLE scanning 시) DeviceScanActivity

 

 

PWM control을 담고 있는 부분이 LedContorlFragment인데, 이 부분에 기존 것(PWM관련 만)을 제거하고 아래와 같이 DualJoystickView 관련 코드를 추가합니다.(시간 관계상 https://code.google.com/p/mobile-anarchy-widgets/wiki/JoystickView를 활용합니다.)

 

 

 

 

그리고 JoystickView로부터 전처리된 터치이벤트가 전파되면  JoystickMovedListener가 감지하여 조정을 위한 판단을 한 후 BLE 서비스로 전달하여 GATT - write characteristic operation을 수행하면  CSR1010에 전달되고 최종적으로 PWM을 control을 합니다.

 

최종 수정된 activity 형태는 아래와 같습니다.

 

 

 

 

작업의 많은 부분을  Driving motor(좌), Streering moter(우) 레벨 조정을 위한 JoystickMovedListener 내부 구현에 투자하였습니다.

우선 원하는 대로 동작 시키는 것에 초점을 두었지만 아직 최적화의 여지는 많이 남아 있어 보입니다.

 

 

 

 

자~ 이제 테스트 단계로 넘어갑니다. 

1차 동작 검증을 위해  아래와 같이 포즈을 취합니다.

 

 

 

 

 

여러차례의 수정을 마치고 나름 잘 굴러갑니다. 

 

 

 

이제 "Hit The road Jack !" 해 볼까요 ~~ 

 

 

 

음주 운전은 절대 안됩니다. ^^

 

* 작업한 소스도 첨부합니다. 

 

 

이상으로 미션2를 마치겠습니다.

 

 

 

 

 

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

라즈베이파이로 텔레그램 봇 만들기[4] - 간단한 텔레그램 봇

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]


사용한 품목


1) 라즈베리파이B+ 베이직 키트: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005607887<ype=R

 

들어가면서


 지난 포스팅까지 라즈비안 위에 서버를 구성하고 텔레그램 봇을 설치까지 마쳤다. 이제 텔레그램 CLI를 실행시키기 위해 번호를 등록하고 테스트 코드를 돌려보도록 하겠다. 가상번호로 텔레그램 봇을 만들어서라즈베리파이에 있는 텔레그램 번호와 내 폰의 텔레그램이 달라야 명령을 내릴 수 있다고 착각했다. 메일의 '내게쓰기'기능처럼 텔레그램도 나에게 메세지를 보낼 수 있었고 이를 이용해서 반응하도록 했다. 아래 URL을 참고했다. 자 이제 본격적으로 텔레그램 봇에 대해 이야기 해보도록 하자.

http://humit.tistory.com/62

Voxox


 

  처음에는 voxox라는 어플을 이용하여 가상번호를 만들려고 했다. 이 어플로 전화를 받거나 메세지를 받기 위해서는 결제를 해야 된다는 정보를 보고 '뭐, 1달러정도는 할 수 있다'라고 생각했다가 실수로 두번 결제했다. 으아ㅏㅏㅏㅏㅏ. $2.86가 바보 같이 내가 결제한 증거다. 

 

 

 생각해보니 내가 폰에 설치한 텔레그램은 이미 내 폰번호로 등록되어 있었다. 그러므로 텔레그램을 새롭게 쓰기 위해서는 번호를 등록해야 하고, 폰에 설치한 텔레그램에 등록된 번호를 voxox 로 받은 가상번호로 바꿔야했다. 근데 바꾸기 위해서는 텔레그램 서버로부터 코드를 받아야 하는데 그게 쉽지 않았다. 일반적으로 voxox는 아이패드나 블루스택, 지니모션과 같이 전화기능이 없는 환경에서 사용한다. voxox 어플을 설치하고 가상번호를 받아 전화로 쓰거나 카카오톡, 텔레그램을 쓰는 것이다. 그러므로 voxox를 사용하여 굳이 지금 내 폰에 등록된 텔레그램의 번호를 가상번호를 바꿀 필요가 없다는 결론을 내렸다.(블루스택은 기숙사에 서버로 쓰는 컴퓨터에 있어서 지금 당장 해볼 수 없었던 이유도 있었다),(문자로 코드도 안오는 이유도 있었다.)

 

'내게 쓰기' 기능과 간단한 텔레그램 봇


 그래서 '내게 쓰기'기능을 이용해보자고 생각했고, 내 번호를 직접 연락처에 넣고 메세지를 날렸다. 카카오톡에서 해보지 않았고 안될 것 같은 느낌이 들었는데, 텔레그램에서 되서 얼마나 기뻤는지 모른다. 

 

▲좋다!

아래와 같이 번호와 이름을 등록하면 login메세지가 뜬다. 처음에는 메모를 위한 봇을 원했지만, 어벤져스를 보면서 나도 자비스같은 봇을 가지고 싶었다. 생각 같은 것도 정리해두고 스크립트 같은 것을 만들어두고 텔레그램으로 명령을 내리면 자동으로 해주는 것을 하나하나 만들어 갈 예정이다. 훗 재밌겠군 

 

이제 전화번호 등록도 ?瑛릿歐?소스를 짜보도록 하자. 간단하게 hello를 입력하면 world를 출력해주는 봇을 만들 것이다. 이것이 의미가 있는 것이 내 명령에 반응을 했다는 것을 의미하므로 world 출력하는 것 대신에 서버의 db에 접근하여 자료를 검색하고 출력하도록 만들 수 있다. 또, 텔레그램 봇에서도 사진을 보낼 수 있으므로 나만의 사진저장소짤방저장소를 만들 수 있을 것 같다 ^오^

1
2
3
4
5
6
7
8
9
function on_msg_receive(msg)
        if(string.lower(msg.text)=="hello")then
            mark_read(msg.from.print_name, ok_cb, false)
            send_msg(msg.from.print_name, "world", ok_cb, false)
        end
end
 
function ok_cb(extra, secces, result)
end
cs

 lua를 포스팅을 하며 처음 만져보므로 소스에 대한 내용을 이야기는 다음 포스팅에서 하도록 하겠다. 간단하게 말하고 넘어가자면 msg.text를 lower로 소문자를 만들어 "hello"라면 send_msg를 이용하여 "world"를 보내는 것이라 직관적으로 쉽게 알 수 있다. 아래 그림은 hello 명령을 폰에서 날렸을 때 텔레그램 봇에서 world를 보내도록 한 것이다.



 또 재밌는 것은 텔레그램은 웹버전도 제공한다는 것이다. 웹 브라우저에서 텔레그램 인증을 통해 바로바로 명령을 날릴 수 있다. 이를 활용할 수 있는 부분을 생각해봤는데, 외부망에서 사내 서버에 직접적으로 접근하지 않고 텔레그램을 이용하여 서버의 상태를 볼 때 사용할 수 있을 거라 본다. 아래 그림은 웹버전의 텔레그램이다.




마치면서


 이번 포스팅에서 내 명령에 반응하는 간단한 텔레그램 봇을 만들어봤다. 생각보다 텔레그램이 가진 기능이 많아서 재밌는 것을 많이 할 수 있을 것 같다. 흥미진진하다. 또, 웹에서도 텔레그램 봇에 접근가능함을 보였다. 그러므로 웹이나 폰에서 텔레그램 봇에 명령을 전달하면 봇은 서버에 담긴 데이터들(사진, 메모 등)을 나에게 보낼 것이다. 물론 이에 대한 내용은 차근차근히 다음 포스팅에 담도록 하겠다..

관련 상품


라즈베리파이2 보드: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005652343

라즈베리파이2 베이직 키트: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005655515

손톱두이노: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005668577

라즈베리파이 전용 방열판 (소): 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P002110427

 

 

 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]