Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Smart rover 통신 분석

2.540 visualizaciones

Publicado el

  • Inicia sesión para ver los comentarios

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

×