Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Smart rover 통신 분석

2,522 views

Published on

  • Login to see the comments

Smart rover 통신 분석

  1. 1. SmartRover 통신 분석 정장석(서기옵빠) 2014. 12. 20
  2. 2. 목차 • H/W 구성 • H/W 통신 사양 • 통신 F/W 흐름도 • UART 통신 함수 구성 • 통신 패킷 처리 방법 • UART 통신 패킷 형식 • UART 통신 응답 처리 함수 • USB VCOM 통신 세부 구성 • USB VCOM 통신 • MSP(Multiwii Serial Protocol) • HexAirBot Protocol • 향후 추가해야 할 통신 기능 • 참고 자료
  3. 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. 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. 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. 6. UART 통신 함수 구성 loop() ->annexCode() ->serialCom() ->readSerial() ->evaluateCommand() • loop() : Main thread 함수 • annexCode() : 주기적으로 호출되 는 센서 처리 및 통신 처리 함수 • serialCom() : UART 통신 데이터를 수신하여 처리하는 함수 • readSerial() : UART 데이터를 수신 하는 함수 • evaluateCommand() : UART를 통 해 전송된 명령을 처리하는 함수
  7. 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. 8. 통신 패킷 처리 방법 • UART로 수신된 데이터들을 분석 해서 명령을 추출해 냄. • serialCom() 함수에서 수행함. • 명령이 추출 후 evaluateCommand() 함수를 호출 해 명령을 수행함.
  9. 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. 10. UART 통신 응답 처리 함수1 headSerialResponse() : 통신 패킷 헤더를 만드는 함수 serialize8() : 1Byte 데이터를 채우는 함수 serialize16() : 2Byte 데이터를 채우는 함수 serialize32() : 4Byte 데이터를 채우는 함수 headSerialReply() : 성공에 대한 응답 패킷을 생성하는 함수 headSerialError() : 실패에 대한 응답 패킷을 생성하는 함수 tailSerialReply() : CRC를 채우는 함수
  11. 11. UART 통신 응답 처리 함수2
  12. 12. USB VCOM 통신 세부 구성 • VCOM으로 PC와 통신 • Endpoint1을 통해 PC로 데 이터를 전송함. • Endpoint3를 통해 PC로 부 터 데이터를 수신함. PC STM32F103 USB Host USB Core EP1 EP3USB OUT USB IN
  13. 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. 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. 15. MSP(Multiwii Serial Protocol) 1 • MSP는 Multiwii Corpter 오픈소스에서 사용되는 시리얼 통신 프로토콜 • Multiwii Config에서 사용 • HostFC로 전송하는 메시지와 FCHost로 전송하는 메시지로 구성 • SmartRover는 UART로 MSP 통신
  16. 16. MSP 2
  17. 17. MSP 3
  18. 18. MSP 4
  19. 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. 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. 21. 향후 추가해야 할 통신 기능 • RF 통신 기능 추가 • PC를 사용한 RF 제어 기능 • PC를 사용한 RF 다중 제어 • 무선 조종기와 연동 • 통신 통합 관리 구조 개선 • 통신 장애 처리 추가
  22. 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

×