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를 통
해 전송된 명령을 처리하는 함수
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를 채우는 함수
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에서 사용
• HostFC로 전송하는 메시지와 FCHost로 전송하는 메시지로
구성
• SmartRover는 UART로 MSP 통신
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