22
SmartRover 통통 통통 통통통 ( 통통통통 ) 2014. 12. 20

Smart rover 통신 분석

Embed Size (px)

Citation preview

Page 1: Smart rover 통신 분석

SmartRover 통신 분석정장석 ( 서기옵빠 )

2014. 12. 20

Page 2: Smart rover 통신 분석

목차• H/W 구성• H/W 통신 사양• 통신 F/W 흐름도• UART 통신 함수 구성• 통신 패킷 처리 방법• UART 통신 패킷 형식• UART 통신 응답 처리 함수• USB VCOM 통신 세부 구성• USB VCOM 통신 • MSP(Multiwii Serial Protocol) • HexAirBot Protocol • 향후 추가해야 할 통신 기능• 참고 자료

Page 3: Smart rover 통신 분석

통신 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

Page 4: Smart rover 통신 분석

통신 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

Page 5: Smart rover 통신 분석

통신 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

Page 6: Smart rover 통신 분석

UART 통신 함수 구성

loop()->annexCode()  ->serialCom() ->readSerial()    ->evaluateCommand()

• loop() : Main thread 함수• annexCode() : 주기적으로

호출되는 센서 처리 및 통신 처리 함수• serialCom() : UART 통신

데이터를 수신하여 처리하는 함수• readSerial() : UART 데이터를

수신하는 함수• evaluateCommand() : UART 를

통해 전송된 명령을 처리하는 함수

Page 7: Smart rover 통신 분석

// 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; :}

Page 8: Smart rover 통신 분석

통신 패킷 처리 방법• UART 로 수신된 데이터들을

분석해서 명령을 추출해 냄 .• serialCom() 함수에서 수행함 .• 명령이 추출 후 evaluateCom-

mand() 함수를 호출해 명령을 수행함 .

Page 9: Smart rover 통신 분석

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

Page 10: Smart rover 통신 분석

UART 통신 응답 처리 함수 1

headSerialResponse() : 통신 패킷 헤더를 만드는 함수serialize8() : 1Byte 데이터를 채우는 함수serialize16() : 2Byte 데이터를 채우는 함수serialize32() : 4Byte 데이터를 채우는 함수headSerialReply() : 성공에 대한 응답 패킷을 생성하는 함수headSerialError() : 실패에 대한 응답 패킷을 생성하는 함수tailSerialReply() : CRC 를 채우는 함수

Page 11: Smart rover 통신 분석

UART 통신 응답 처리 함수 2

Page 12: Smart rover 통신 분석

USB VCOM 통신 세부 구성 • VCOM 으로 PC 와 통신• Endpoint1 을 통해 PC 로

데이터를 전송함 .• Endpoint3 를 통해 PC 로

부터 데이터를 수신함 .

PC STM32F103

USB Host

USB Core

EP1

EP3USB OUT

USB IN

Page 13: Smart rover 통신 분석

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() 함수를 통해 수신된 데이터를 버퍼로 부터 얻을 수 있음 .

Page 14: Smart rover 통신 분석

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() 함수를 호출해서 버퍼에 저장된 데이터를 전송함

Page 15: Smart rover 통신 분석

MSP(Multiwii Serial Protocol) 1

• MSP 는 Multiwii Corpter 오픈소스에서 사용되는 시리얼 통신 프로토콜

• Multiwii Config 에서 사용• HostFC 로 전송하는 메시지와 FCHost 로 전송하는 메시지로

구성• SmartRover 는 UART 로 MSP 통신

Page 16: Smart rover 통신 분석

MSP 2

Page 17: Smart rover 통신 분석

MSP 3

Page 18: Smart rover 통신 분석

MSP 4

Page 19: Smart rover 통신 분석

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 기체 수평이 맞지 않을 경우 조정

Page 20: Smart rover 통신 분석

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 기체의 정보를 전달

Page 21: Smart rover 통신 분석

향후 추가해야 할 통신 기능• RF 통신 기능 추가• PC 를 사용한 RF 제어 기능• PC 를 사용한 RF 다중 제어• 무선 조종기와 연동• 통신 통합 관리 구조 개선• 통신 장애 처리 추가

Page 22: Smart rover 통신 분석

참고 자료• 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