SlideShare a Scribd company logo
1 of 22
SmartRover 통신 분석
정장석(서기옵빠)
2014. 12. 20
목차
• H/W 구성
• H/W 통신 사양
• 통신 F/W 흐름도
• UART 통신 함수 구성
• 통신 패킷 처리 방법
• UART 통신 패킷 형식
• UART 통신 응답 처리 함수
• USB VCOM 통신 세부 구성
• USB VCOM 통신
• MSP(Multiwii Serial Protocol)
• HexAirBot Protocol
• 향후 추가해야 할 통신 기능
• 참고 자료
통신 H/W 구성
STM32F103
BLE ModuleUART3
GPS Module
or Serial LCD
UART1
Ultrasonic SensorUART2
nRF24L01+SPI
• Bluetooth 통신 :
BLE 4.0 HM-11 BLE Module 사용
• RF 통신 : nRF24L01+ 사용
• USB 통신 : VCOM
PCUSB VCOM
통신 H/W 사양
• HM-11 BLE Module
TI CC2541 기반 모듈
Bluetooth Specification V4.0 BLE
2.4 GHz ISM band
UART Interface
최대 30M (개방된 공간)
• nRF24L01+
2.4GHz GFSK RF transceiver IC
2.4GHz ISM band operation
GFSK modulation, 1 or 2MHz bandwidth
0, -6, -12, and -18dBm programmable TX output power
Configurable on-air data rate of 250kbps, 1Mbps or 2Mbps
SPI Interface
통신 F/W 흐름도
• Smart Phone과 Bluetooth
로 통신
• 무선 조정기와 RF 2.4GHz
로 통신
• PC와 UART/USB로 통신
SmartRover
Smart PhoneBLE 4.0
RF Controller or
PC
RF 2.4GHz
PCUART / USB
UART 통신 함수 구성
loop()
->annexCode()
->serialCom()
->readSerial()
->evaluateCommand()
• loop() : Main thread 함수
• annexCode() : 주기적으로 호출되
는 센서 처리 및 통신 처리 함수
• serialCom() : UART 통신 데이터를
수신하여 처리하는 함수
• readSerial() : UART 데이터를 수신
하는 함수
• evaluateCommand() : UART를 통
해 전송된 명령을 처리하는 함수
// mw.c
void loop(void)
{
:
// 3.5ms 주기로 annexCode() 함수를 호출함.
if (mcfg.looptime == 0 || (int32_t)(currentTime - loopTime) >=
0)
{
loopTime = currentTime + mcfg.looptime;
computeIMU();
annexCode();
}
:
// cli.c
const clivalue_t valueTable[] = {
{ "looptime", VAR_UINT16, &mcfg.looptime, 0, 9000 },
:
}
// config.c
static void resetConf(void)
{
:
mcfg.looptime = 3500;
:
}
통신 패킷 처리 방법
• UART로 수신된 데이터들을 분석
해서 명령을 추출해 냄.
• serialCom() 함수에서 수행함.
• 명령이 추출 후
evaluateCommand() 함수를 호출
해 명령을 수행함.
UART 통신 패킷 형식
0 1 2 3 4 5+DataSize 5+DataSize+1
‘$’ ‘M’ ‘<‘ Data
Size
MSP
Command
Max 64Bytes checksum
• Host->SmartRover 전송 패킷 형식
• SmartRover ->Host 전송 패킷 형식
0 1 2 3 4 5+DataSize 5+DataSize+1
‘$’ ‘M’ ‘!’
or
‘>’
Data
Size
MSP
Command
Max 64Bytes checksum
UART 통신 응답 처리 함수1
headSerialResponse() : 통신 패킷 헤더를 만드는 함수
serialize8() : 1Byte 데이터를 채우는 함수
serialize16() : 2Byte 데이터를 채우는 함수
serialize32() : 4Byte 데이터를 채우는 함수
headSerialReply() : 성공에 대한 응답 패킷을 생성하는 함수
headSerialError() : 실패에 대한 응답 패킷을 생성하는 함수
tailSerialReply() : CRC를 채우는 함수
UART 통신 응답 처리 함수2
USB VCOM 통신 세부 구성
• VCOM으로 PC와 통신
• Endpoint1을 통해 PC로 데
이터를 전송함.
• Endpoint3를 통해 PC로 부
터 데이터를 수신함.
PC STM32F103
USB
Host
USB Core
EP1
EP3USB OUT
USB IN
USB VCOM 통신 – USB 수신
USB_LP_CAN1_RX0_IRQHandler()
->USB_Istr()
->EP3_OUT_Callback()
->USB_To_USART_Send_Data()
->Hw_VCom_Q_Push()
• USB로 부터 수신된 데이터를
읽는 순서
• 최종적으로
Hw_VCom_Q_Buffer 버퍼에
데이터 저장
• serialRead() 함수를 통해 수
신된 데이터를 버퍼로 부터
얻을 수 있음.
USB VCOM 통신 – USB 송신
serialWrite()
->Hw_VCom_Putch()
->USB_Send_Data()
USART_Rx_ptr_in
USB_LP_CAN1_RX0_IRQHandler()
->USB_Istr()
->SOF_Callback()
->Handle_USBAsynchXfer()
• serialWrite() 함수를 호출해
서 USART_Rx_ptr_in 버퍼
에 데이터를 저장함
• USB ISR에서
Handle_USBAsynchXfer()
함수를 호출해서 버퍼에 저
장된 데이터를 전송함
MSP(Multiwii Serial Protocol) 1
• MSP는 Multiwii Corpter 오픈소스에서 사용되는 시리얼 통신
프로토콜
• Multiwii Config에서 사용
• HostFC로 전송하는 메시지와 FCHost로 전송하는 메시지로
구성
• SmartRover는 UART로 MSP 통신
MSP 2
MSP 3
MSP 4
HexAirBot Protocol 1
명령 기능
MSP_SET_RAW_RC_TINY 기체의 Roll/Pitch/Yaw/Throtle 및 AUX 단자 4개를 조정
MSP_ARM 기체 동작 시작
MSP_DISARM 기체 동작 종료
MSP_TRIM_UP 기체 수평이 맞지 않을 경우 조정
MSP_TRIM_DOWN 기체 수평이 맞지 않을 경우 조정
MSP_TRIM_LEFT 기체 수평이 맞지 않을 경우 조정
MSP_TRIM_RIGHT 기체 수평이 맞지 않을 경우 조정
HexAirBot Protocol 2
명령 기능
MSP_TRIM_UP_FAST 기체 수평이 맞지 않을 경우 조정
MSP_TRIM_DOWN_FAST 기체 수평이 맞지 않을 경우 조정
MSP_TRIM_LEFT_FAST 기체 수평이 맞지 않을 경우 조정
MSP_TRIM_RIGHT_FAST 기체 수평이 맞지 않을 경우 조정
MSP_READ_TEST_PARAM 테스트용
MSP_SET_TEST_PARAM 테스트용
MSP_HEX_NANO 기체의 정보를 전달
향후 추가해야 할 통신 기능
• RF 통신 기능 추가
• PC를 사용한 RF 제어 기능
• PC를 사용한 RF 다중 제어
• 무선 조종기와 연동
• 통신 통합 관리 구조 개선
• 통신 장애 처리 추가
참고 자료
• MultiWii Protocol
http://www.multiwii.com/wiki/index.php?title=Multiwii_Serial_Protocol
• HexAirBot Protocol
http://www.flexbot.cc/wiki/index.php?title=Main_Page
• Bitcraze
http://www.bitcraze.se/
http://wiki.bitcraze.se/
• Bluetooth-V40-HM11-BLE-Module 관련
http://www.seeedstudio.com/depot/Bluetooth-V40-HM11-BLE-Module-p-
1803.html
http://www.seeedstudio.com/wiki/Bluetooth_V4.0_HM-11_BLE_Module
• RF 칩 및 통신 관련 자료
http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P

More Related Content

What's hot

강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더chcbaram
 
OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발chcbaram
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신WooSangHwang
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍chcbaram
 
강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노chcbaram
 
망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8종인 전
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축chcbaram
 
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌종인 전
 
MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치ymtech
 
Ubuntu Host AP Setting
Ubuntu Host AP SettingUbuntu Host AP Setting
Ubuntu Host AP Settingymtech
 
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드종인 전
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324종인 전
 
망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6종인 전
 
Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정ymtech
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계chcbaram
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치ymtech
 
오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개SungTae Moon
 
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)Ubuntu Korea Community
 
OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기Seunghwa Song
 

What's hot (20)

강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더
 
OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍
 
강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노
 
망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
 
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
망고100(s5 pc100),망고64(s3c6410) 구입멤버대상 안드로이드포팅강좌
 
MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치
 
Ubuntu Host AP Setting
Ubuntu Host AP SettingUbuntu Host AP Setting
Ubuntu Host AP Setting
 
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
 
망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6
 
Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치
 
오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개
 
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
 
OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기
 
Avr lecture5
Avr lecture5Avr lecture5
Avr lecture5
 

Similar to Smart rover 통신 분석

김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명진우 이
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitorjieun kim
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초Yu Yongwoo
 
Prometheus Project Journey
Prometheus Project JourneyPrometheus Project Journey
Prometheus Project JourneyJinwoong Kim
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조Logpresso
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD활 김
 
Blockchain 4th dapp programming
Blockchain 4th dapp programmingBlockchain 4th dapp programming
Blockchain 4th dapp programmingihpark92
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210Yong Joon Moon
 
Hm10 Research sheets
Hm10 Research sheetsHm10 Research sheets
Hm10 Research sheetsyyooooon
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
Cortex M3에서 Wi-Fi 사용하기
Cortex M3에서 Wi-Fi 사용하기Cortex M3에서 Wi-Fi 사용하기
Cortex M3에서 Wi-Fi 사용하기동은 곽
 
Blockchain 3rd smart contract programming
Blockchain 3rd smart contract programmingBlockchain 3rd smart contract programming
Blockchain 3rd smart contract programmingihpark92
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜greenday96
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)Cloud-Barista Community
 
라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드Circulus
 
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료choi kyumin
 

Similar to Smart rover 통신 분석 (20)

김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초
 
Prometheus Project Journey
Prometheus Project JourneyPrometheus Project Journey
Prometheus Project Journey
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
Blockchain 4th dapp programming
Blockchain 4th dapp programmingBlockchain 4th dapp programming
Blockchain 4th dapp programming
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210
 
Hm10 Research sheets
Hm10 Research sheetsHm10 Research sheets
Hm10 Research sheets
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
Cortex M3에서 Wi-Fi 사용하기
Cortex M3에서 Wi-Fi 사용하기Cortex M3에서 Wi-Fi 사용하기
Cortex M3에서 Wi-Fi 사용하기
 
Blockchain 3rd smart contract programming
Blockchain 3rd smart contract programmingBlockchain 3rd smart contract programming
Blockchain 3rd smart contract programming
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 대규모 통합 모니터링 (CB-Dragonfly)
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드
 
Mem cached
Mem cachedMem cached
Mem cached
 
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
 

Smart rover 통신 분석

  • 2. 목차 • H/W 구성 • H/W 통신 사양 • 통신 F/W 흐름도 • UART 통신 함수 구성 • 통신 패킷 처리 방법 • UART 통신 패킷 형식 • UART 통신 응답 처리 함수 • USB VCOM 통신 세부 구성 • USB VCOM 통신 • MSP(Multiwii Serial Protocol) • HexAirBot Protocol • 향후 추가해야 할 통신 기능 • 참고 자료
  • 3. 통신 H/W 구성 STM32F103 BLE ModuleUART3 GPS Module or Serial LCD UART1 Ultrasonic SensorUART2 nRF24L01+SPI • Bluetooth 통신 : BLE 4.0 HM-11 BLE Module 사용 • RF 통신 : nRF24L01+ 사용 • USB 통신 : VCOM PCUSB VCOM
  • 4. 통신 H/W 사양 • HM-11 BLE Module TI CC2541 기반 모듈 Bluetooth Specification V4.0 BLE 2.4 GHz ISM band UART Interface 최대 30M (개방된 공간) • nRF24L01+ 2.4GHz GFSK RF transceiver IC 2.4GHz ISM band operation GFSK modulation, 1 or 2MHz bandwidth 0, -6, -12, and -18dBm programmable TX output power Configurable on-air data rate of 250kbps, 1Mbps or 2Mbps SPI Interface
  • 5. 통신 F/W 흐름도 • Smart Phone과 Bluetooth 로 통신 • 무선 조정기와 RF 2.4GHz 로 통신 • PC와 UART/USB로 통신 SmartRover Smart PhoneBLE 4.0 RF Controller or PC RF 2.4GHz PCUART / USB
  • 6. UART 통신 함수 구성 loop() ->annexCode() ->serialCom() ->readSerial() ->evaluateCommand() • loop() : Main thread 함수 • annexCode() : 주기적으로 호출되 는 센서 처리 및 통신 처리 함수 • serialCom() : UART 통신 데이터를 수신하여 처리하는 함수 • readSerial() : UART 데이터를 수신 하는 함수 • evaluateCommand() : UART를 통 해 전송된 명령을 처리하는 함수
  • 7. // mw.c void loop(void) { : // 3.5ms 주기로 annexCode() 함수를 호출함. if (mcfg.looptime == 0 || (int32_t)(currentTime - loopTime) >= 0) { loopTime = currentTime + mcfg.looptime; computeIMU(); annexCode(); } : // cli.c const clivalue_t valueTable[] = { { "looptime", VAR_UINT16, &mcfg.looptime, 0, 9000 }, : } // config.c static void resetConf(void) { : mcfg.looptime = 3500; : }
  • 8. 통신 패킷 처리 방법 • UART로 수신된 데이터들을 분석 해서 명령을 추출해 냄. • serialCom() 함수에서 수행함. • 명령이 추출 후 evaluateCommand() 함수를 호출 해 명령을 수행함.
  • 9. UART 통신 패킷 형식 0 1 2 3 4 5+DataSize 5+DataSize+1 ‘$’ ‘M’ ‘<‘ Data Size MSP Command Max 64Bytes checksum • Host->SmartRover 전송 패킷 형식 • SmartRover ->Host 전송 패킷 형식 0 1 2 3 4 5+DataSize 5+DataSize+1 ‘$’ ‘M’ ‘!’ or ‘>’ Data Size MSP Command Max 64Bytes checksum
  • 10. UART 통신 응답 처리 함수1 headSerialResponse() : 통신 패킷 헤더를 만드는 함수 serialize8() : 1Byte 데이터를 채우는 함수 serialize16() : 2Byte 데이터를 채우는 함수 serialize32() : 4Byte 데이터를 채우는 함수 headSerialReply() : 성공에 대한 응답 패킷을 생성하는 함수 headSerialError() : 실패에 대한 응답 패킷을 생성하는 함수 tailSerialReply() : CRC를 채우는 함수
  • 11. UART 통신 응답 처리 함수2
  • 12. USB VCOM 통신 세부 구성 • VCOM으로 PC와 통신 • Endpoint1을 통해 PC로 데 이터를 전송함. • Endpoint3를 통해 PC로 부 터 데이터를 수신함. PC STM32F103 USB Host USB Core EP1 EP3USB OUT USB IN
  • 13. USB VCOM 통신 – USB 수신 USB_LP_CAN1_RX0_IRQHandler() ->USB_Istr() ->EP3_OUT_Callback() ->USB_To_USART_Send_Data() ->Hw_VCom_Q_Push() • USB로 부터 수신된 데이터를 읽는 순서 • 최종적으로 Hw_VCom_Q_Buffer 버퍼에 데이터 저장 • serialRead() 함수를 통해 수 신된 데이터를 버퍼로 부터 얻을 수 있음.
  • 14. USB VCOM 통신 – USB 송신 serialWrite() ->Hw_VCom_Putch() ->USB_Send_Data() USART_Rx_ptr_in USB_LP_CAN1_RX0_IRQHandler() ->USB_Istr() ->SOF_Callback() ->Handle_USBAsynchXfer() • serialWrite() 함수를 호출해 서 USART_Rx_ptr_in 버퍼 에 데이터를 저장함 • USB ISR에서 Handle_USBAsynchXfer() 함수를 호출해서 버퍼에 저 장된 데이터를 전송함
  • 15. MSP(Multiwii Serial Protocol) 1 • MSP는 Multiwii Corpter 오픈소스에서 사용되는 시리얼 통신 프로토콜 • Multiwii Config에서 사용 • HostFC로 전송하는 메시지와 FCHost로 전송하는 메시지로 구성 • SmartRover는 UART로 MSP 통신
  • 16. MSP 2
  • 17. MSP 3
  • 18. MSP 4
  • 19. HexAirBot Protocol 1 명령 기능 MSP_SET_RAW_RC_TINY 기체의 Roll/Pitch/Yaw/Throtle 및 AUX 단자 4개를 조정 MSP_ARM 기체 동작 시작 MSP_DISARM 기체 동작 종료 MSP_TRIM_UP 기체 수평이 맞지 않을 경우 조정 MSP_TRIM_DOWN 기체 수평이 맞지 않을 경우 조정 MSP_TRIM_LEFT 기체 수평이 맞지 않을 경우 조정 MSP_TRIM_RIGHT 기체 수평이 맞지 않을 경우 조정
  • 20. HexAirBot Protocol 2 명령 기능 MSP_TRIM_UP_FAST 기체 수평이 맞지 않을 경우 조정 MSP_TRIM_DOWN_FAST 기체 수평이 맞지 않을 경우 조정 MSP_TRIM_LEFT_FAST 기체 수평이 맞지 않을 경우 조정 MSP_TRIM_RIGHT_FAST 기체 수평이 맞지 않을 경우 조정 MSP_READ_TEST_PARAM 테스트용 MSP_SET_TEST_PARAM 테스트용 MSP_HEX_NANO 기체의 정보를 전달
  • 21. 향후 추가해야 할 통신 기능 • RF 통신 기능 추가 • PC를 사용한 RF 제어 기능 • PC를 사용한 RF 다중 제어 • 무선 조종기와 연동 • 통신 통합 관리 구조 개선 • 통신 장애 처리 추가
  • 22. 참고 자료 • MultiWii Protocol http://www.multiwii.com/wiki/index.php?title=Multiwii_Serial_Protocol • HexAirBot Protocol http://www.flexbot.cc/wiki/index.php?title=Main_Page • Bitcraze http://www.bitcraze.se/ http://wiki.bitcraze.se/ • Bluetooth-V40-HM11-BLE-Module 관련 http://www.seeedstudio.com/depot/Bluetooth-V40-HM11-BLE-Module-p- 1803.html http://www.seeedstudio.com/wiki/Bluetooth_V4.0_HM-11_BLE_Module • RF 칩 및 통신 관련 자료 http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P