Upload
jang-suk-jung
View
410
Download
3
Embed Size (px)
Citation preview
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 Moduleor Serial LCD
UART1
Ultrasonic Sen-sor
UART2
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 BLE2.4 GHz ISM bandUART Interface최대 30M ( 개방된 공간 )
• nRF24L01+2.4GHz GFSK RF transceiver IC2.4GHz ISM band operationGFSK modulation, 1 or 2MHz bandwidth0, -6, -12, and -18dBm programmable TX output powerConfigurable on-air data rate of 250kbps, 1Mbps or 2Mbps SPI Interface
통신 F/W 흐름도
• Smart Phone 과 Blue-tooth 로 통신• 무선 조정기와 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.cvoid loop(void){ : // 3.5ms 주기로 annexCode() 함수를 호출함 . if (mcfg.looptime == 0 || (int32_t)(currentTime - loop-Time) >= 0) {
loopTime = currentTime + mcfg.looptime;
computeIMU();
annexCode(); } :
// cli.cconst clivalue_t valueTable[] = { { "looptime", VAR_UINT16, &mcfg.looptime, 0, 9000 }, :}
// config.c static void resetConf(void){ : mcfg.looptime = 3500; :}
통신 패킷 처리 방법• UART 로 수신된 데이터들을
분석해서 명령을 추출해 냄 .• serialCom() 함수에서 수행함 .• 명령이 추출 후 evaluateCom-
mand() 함수를 호출해 명령을 수행함 .
UART 통신 패킷 형식
0 1 2 3 4 5+DataSize 5+DataSize+1
‘$’ ‘M’
‘<‘ DataSize
MSP Com-mand
Max 64Bytes checksum
• Host->SmartRover 전송 패킷 형식
• SmartRover ->Host 전송 패킷 형식0 1 2 3 4 5+DataSize 5+DataSize+1
‘$’ ‘M’
‘!’or ‘>’
DataSize
MSP Com-mand
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 에서 사용• HostFC 로 전송하는 메시지와 FCHost 로 전송하는 메시지로
구성• 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 Protocolhttp://www.flexbot.cc/wiki/index.php?title=Main_Page
• Bitcrazehttp://www.bitcraze.se/http://wiki.bitcraze.se/
• Bluetooth-V40-HM11-BLE-Module 관련http://www.seeedstudio.com/depot/Bluetooth-V40-HM11-BLE-Module-p-1803.htmlhttp://www.seeedstudio.com/wiki/Bluetooth_V4.0_HM-11_BLE_Module
• RF 칩 및 통신 관련 자료http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P