Original Article : http://blog.naver.com/simonsayz/220724527073
ESP8266 - The Wrong Solution or Good...
요즘 많이 사용하는 ESP8266을 고속 통신이 필요해서 테스트를 해보았습니다.
인터넷 상에서, 너무 좋은 정보들이 많이 있기는 한데, 개인적으로 정말 필요했던, ESP8266 (ESP12, WROOM02)의 물리적인 속도는 어디까지 나오는가에 대한 정보를 찾을 수가 없었습니다.
그래서 직접 TCP/IP 성능을 직접 확인하기로 하고, 각종 테스트를 진행해보았습니다.
상황 , 전제조건
- 개인 프로젝트용으로 초당 1MB/s 속도로 스트리밍이 되어야 함.
- STM32F4의 통신 모듈로 사용해야 함.
- 인터넷에 있는 내용은 전체가 그런것은 아니지만, 주객전도된 내용이 많음.
(16Mhz Atmega가 80,160Mhz ESP8266을 통신 모듈로 사용해서, 배보다 배꼽이 더 큼.
Atmega가 나쁘다는 것이 아니고, ESP8266 성능이 상대적으로 너무 뛰어남. 접근성에서 Atmega가 좋은 것은 인정)
주의
bps = bit / sec , Bps = byte /sec
실험 결과
- AT Command 방식으로는 해결 않됨. (성능을 향상하기 위해서, Firmware 직접 작성 필수)
- ESP8266ex는 160Mhz 클럭사용해야 함.
- 전체 시스템 통합을 위해서, PC를 사용할 경우,
- STM32F4 (168Mhz) 사용할 경우, UART는 10.5Mbps까지 가능 (USART1,6사용시), 나머지 Uart,Usart는 5.25Mbps까지 가능
- ESP8266 Uart는 9Mbps까지는 가능
( PC로 테스트하기 위해서는 PL2303HXD를 사용해야 함, FT232BM 사용시 장비 최고 속도 미만인 관계로, 테스트 불가)
- ESP8266 단독 실행시 1.4MB/s 정도까지 전송속도가 보장됨 (잘 작성했을 경우)
- STM32F4의 경우, USART를 사용해도 연동시 7Mbps정도만 가능 (보드에 따라서 성능차이 발생함)
Resampling x8 사용시, x16 사용시 5Mbps까지 가능
- 연동을 위해서는 SPI를 사용해야함.
SPI 통신의 문제점을 해결하기 위해서, Uart도 사용해야 함. (Master : ESP8266 / Slave : STM32F4 )
잘 작성을 한다면, SPI만으로도 가능하지만, 응답을 받는 ESP8266 CPU 낭비를 없애기 위해서
기본 구성도는 ...
PC(Mobile) -> Wifi -> ESP8266 -> SPI -> STM32 (Receive)
Uart <- span="" stm32=""> (Send)->
- ESP8266 코드 작성시, 프로토콜의 특성상, TCP<->Uart Transparent Bridge 예제와 같이 작성하면 망함.->
(TCP/IP Nagle때문에, 비대칭 송수신 통신일 경우, 패킷을 모아주어야 함, 특히 무선인터넷에서는 잘못 작성할 경우, 10배정도 차이가
발생할 수도 있음. 응답은 한개의 패킷으로 / 개인 프로젝트에서 비대칭 (PC->Embedded System (패킷多),
Embedded System->PC(패킷小) )
최종 결론 (/w STM32F4)
- 1MBps가 요즘 장비(예. 단말기 - 휴대폰)에서는 저속이나, Embedded 장비에서는 매우 고속임 (bit로 환산할 경우, 10Mbps)
(cf. 115200bps ~= 11520Bps = 11.5KBps)
- 고속 통신을 하려면, Interrupt 방식은 Cortex M4라도 절대 사용하면 않됨
(모두 DMA방식을 사용해야함)
- SDIO는 DMA Stream,Channel이 고정되어 있으므로, DMA 매핑을 할때 0순위로 선정되어야 함.
- DMA 방식으로 적당히 작성시, 100KBps정도까지 가능
- Optimized State Machine으로 작성할 경우, 500KB까지 가능
(손발이 오그라질때까지 최적화를 할 경우, 900KB까지 가능할 것으로 예상)
느낌점
- 하드웨어가 $2이라도, $1000 소프트웨어가 붙어서, $10000 제품이 될 수도 있음.
정말 공개 소프트웨어 개발자분들을 존경해야 함.
- 최근 초등학생을 위한 미국에서 진행하는 S/W 캠프도 있다고 듣고, 엄청 놀랐음.
(어렸을때 좋은 경험은 될수 있겠지만, 금액이 너무 어마 어마 해서... 손발이 곱계 정도로 짜면서 고민해야 이해할 수 있는 부분을
금전으로 해결하는 것 같아서, 슬퍼졌음)
참고. 하드웨어 통신 속도
// --------------------------------------------------------------------------- // Speed Over16 Over8 // ----------- ----------- // 42Mhz 84Mhz 42Mhz 84Mhz // APB1 APB2 APB1 APB2 FPS Limit // -------------------------------------------------------------------------- // 115200 x 8 x 1 = 921600 O O O O 3.75 // 115200 x 8 x 2 = 1843200 O O O O 7.50 // 115200 x 8 x 2.8 = 2580480 - O O O 10.50 // 2625000 - O O O 10.68 // 115200 x 8 x 3 = 2764800 - O O O 11.25 // 3000000 - O O O 12.20 FT232BM // 115200 x 8 x 4 = 3686400 - O O O 15.00 // 115200 x 8 x 5 = 4608000 - - O 18.75 ESP8266 80Mhz(DataSheet p19) // 5250000 - - O 21.36 // 115200 x 8 x 6 = 5529600 - - O 22.50 // 115200 x 8 x 7 = 6451200 - - O 26.25 // 115200 x 8 x 8 = 7372800 - - O 30.00 // ################### 8000000 - - ESP8266 160Mhz // 115200 x 8 x 9 = 8294400 - - O 33.75 // 115200 x 8 x 9.55 = 8801280 - - O 35.81 LPix V1.3b // 115200 x 8 x 10 = 9216000 - - O x 37.50 // 10000000 - - O x 40.69 // 115200 x 8 x 11 = 10137600 - - O x 41.25 // 10500000 - - O 42.7 STM32F4 // 115200 x 8 x 12 = 11059200 - - // 115200 x 8 x 13 = 11980800 - - // 12000000 PL2303HXD |
댓글 없음:
댓글 쓰기