영어 | 중국어
이 프로젝트는 Espressif Systems의 ESP32-pico-d4 칩을 기반으로 하는 무선 모듈이며 UART, SPI와 같은 여러 통신 프로토콜 인터페이스를 갖추고 있습니다. 설계의 원래 의도는 스마트 자동차 대회를 위한 카메라 알고리즘의 디버깅을 용이하게 하고 상위 컴퓨터와 협력하여 디버깅의 어려움을 줄이는 것입니다.
esp32 하드웨어는 5Mbps UART 및 10Mbps SPI 슬레이브를 지원합니다.
이 모듈의 특징 중 하나는 ZhuFei 무선 직렬 포트 인터페이스와 호환 가능하고 하드웨어 흐름 제어 기능이 있으며 ZhuFei 무선 직렬 포트 드라이버를 직접 사용하여 단방향 통신을 달성할 수 있어 자동차 친구가 테스트할 필요가 없다는 것입니다. 이 모듈. 리보드 제작의 필요성, 현재 상위 컴퓨터로의 단방향 전송만 지원
이 프로젝트 소프트웨어 및 하드웨어는 거칠기 때문에 모든 사람이 소통하고 개선을 제안하는 것을 환영합니다. 내 QQ: 1626632460
오픈 소스 스마트 자동차 이미지 전송 상위 컴퓨터는 Zhiyong 상위 컴퓨터를 사용할 수 있습니다 . 이 모듈은 주로 이 상위 컴퓨터와 함께 사용되며 사용자 설명서 및 단일 칩 마이크로컴퓨터 루틴은 이 상위 컴퓨터 창고에 있습니다 . 링크: https://gitee.com /zhou-wenqi/ipc-for-car
빌리빌리 비디오 링크: https://www.bilibili.com/video/BV1oZ4y1m7y2
PCB 시뮬레이션은 다음과 같습니다
범주 | UART+SPI |
---|---|
3D 시뮬레이션 | |
용접 효과 | |
JLC 오픈 소스 링크 | https://oshwhub.com/Wander_er/891fe1d235694ef7afe684f5a2f05b73 |
이름 | 기능 |
---|---|
의사 | 칩 문서 |
운전사 | 드라이버 파일 |
펌웨어 | 펌웨어 |
하드웨어 | 하드웨어 |
영상 | 그림 |
소프트웨어 | 간단한 이미지 전송 상위 컴퓨터 Python 스크립트 |
두 가지 통신 모드
UART 전송 속도 최대 5Mbps, 한 번에 최대 20000바이트 수신
직렬 폴링을 사용하여 버퍼에서 수신된 데이터를 추출합니다. 수신 버퍼 크기와 최대 대기 시간이라는 두 가지 매개변수가 있습니다. 수신된 바이트 수가 버퍼 크기에 도달하면 즉시 수신이 완료된 것으로 간주됩니다. 전송이 완료되었으나 수신 버퍼 크기에 도달하지 못한 경우 최대 대기 시간을 기다린 후 전송이 완료된 것으로 봅니다. 이 대기 시간은 20ms로 고정되어 있습니다.
따라서 펌웨어의 uart_read_bytes
() 함수에서 length
매개변수를 수정하여 전환하는 두 가지 모드가 있는 것으로 간주할 수 있습니다.
투명 모드 : 전송된 데이터에 대해 고정된 바이트 제한이 없음을 나타냅니다. 각 통신은 다양한 크기의 데이터를 보다 유연하게 전송할 수 있습니다.
투명 모드 사용은 serial port transmission time
+ 20ms
+ udp transmission time (rate calculated at 30Mbps)
보다 큰 간격을 갖는 것이 좋습니다.
length
매개변수가 버퍼 크기 RX_BUF_SIZE -1
이면 투명 모드입니다. 즉, 이 길이에 도달하는 데이터가 없다고 가정합니다.
고정 바이트 모드 : 전송되는 데이터에 대해 고정 바이트 제한이 있음을 나타냅니다. 투명 모드보다 속도는 빠르지만 고정된 크기의 데이터만 전송할 수 있습니다.
고정 바이트 모드 사용은 serial port transmission time
+ udp transmission time (rate calculated at 30Mbps)
보다 큰 간격을 갖는 것이 좋습니다.
length
매개변수가 전송된 고정 데이터의 바이트 수와 같으면 고정 바이트입니다. 예를 들어 5400일 때 60 x 90의 회색조 이미지를 전송하는 경우입니다.
물론 이 길이보다 짧은 데이터를 보내는 것도 투명 모드로 간주될 수 있다.
SPI 보드 속도 최대 10Mbps, 한 번에 최대 25000바이트 수신
SPI transmission time
+ udp transmission time (calculated at 30Mbps)
보다 큽니다.펌웨어는 직렬 통신 프로토콜로 구성하고 전력 손실 없이 플래시에 기록할 수 있는 UART 및 SPI 두 가지 통신 모드를 통합하므로 펌웨어를 반복적으로 수정할 필요가 없습니다.
하위 컴퓨터와 연결하는 방법은 무엇입니까?
UART
픽오링크 | 낮은 컴퓨터 |
---|---|
RXD | TXD |
TXD | RXD |
RTS(다중 MOSI) | CTS (없으면 크게 상관없지만, 컴퓨터 하위 직렬 전송 기능에서 흐름 제어 감지를 비활성화해야 함) |
SPI
픽오링크 | 낮은 컴퓨터 |
---|---|
CLK | CLK |
미소 | 미소 |
모시 | 모시 |
CS | CS |
5V 전원 공급 장치, 접지선을 연결해야 합니다.
전체 이미지를 전송하는 데 걸리는 시간을 어떻게 계산하나요?
크기의 회색조 이미지에 대한 UART 3Mbps 전송을 예로 들어 보겠습니다. 먼저 이미지의 비트 수를 계산합니다: 60 x 90 x 8 = 43200비트. 그런 다음 비트 수를 전송 속도로 나눕니다. 43200 / 3000000 = 0.0144 s = 14.4 ms
구성 모드에 들어가고 사용하는 방법은 무엇입니까?
컴퓨터의 USB-TTL 직렬 보조 장치를 사용하여 Pic-o Link
연결하고 MOSI
및 CS
핀을 단락시킨 다음 재설정하십시오. RGB 표시등이 노란색으로 표시되면 구성 모드에 진입했음을 나타냅니다. 이때 직렬 포트를 통해 Pic-o Link 매개변수를 구성할 수 있습니다. 전송 속도는 115200 이고 프로토콜은 표에 표시됩니다.
| 카테고리 | 비고 | 프레임 헤더 | 길이 | | :---------------: | :------------------: | :------: |- ----:| | 통신 프로토콜 선택 |8비트 부호 없는 정수, 0 : UART, 1 : SPI| 0x41(A) | 1바이트 | | UART 통신 모드 전송 속도 | 32비트 부호 없는 정수, <=5000000 | 0x42(B) | 4바이트 | | UART 통신 모드 수신 버퍼 바이트 수| 16비트 부호 없는 정수, <=20000 | 0x43(C) | 2바이트 | | WiFi 계정 | 문자열(최대 32바이트) | 0x44(D) | 32바이트 | | WiFi 비밀번호 | 문자열(최대 64바이트) | 0x45(E) | 64바이트 | | UDP 서버 IP 주소 |문자열, 최대 16바이트| 0x46(F) | 16바이트 | | UDP 서버 포트 |16비트 부호 없는 정수, <=65535| 0x47(G) | 2바이트 | | 모듈 매개변수 읽기 |단일 명령어 | 0x48(H) |없음 | |모듈 메모리 매개변수를 플래시에 쓰기|단일 명령어 | 0x49(I) |없음 |
구체적으로 어떤 IP 주소를 구성해야 합니까?
다음 두 가지 상황은 Pic-o Link가 구성한 IP 주소 매개변수를 나타냅니다.
펌웨어 프로젝트를 여는 방법은 무엇입니까?
Pic-o Link
폴더를 마우스 오른쪽 버튼으로 클릭하고 Open with Code
선택 하고 연 후 잠시 기다리면 플러그인이 자동으로 종속성을 설치하고 툴체인을 컴파일합니다. 다운로드 모드와 플래시 펌웨어로 들어가는 방법은 무엇입니까?
Pic-o Link
컴퓨터에 연결하고 Pic-o Link에서 DOWNLOAD
버튼을 길게 누른 다음 RESET
버튼을 누른 다음 플랫폼 IO 하단에 있는 다운로드 버튼을 클릭하여 컴파일하고 다운로드합니다. 한 번의 클릭으로 다운로드 후 RESET
버튼을 누르는 것을 잊지 마세요 모듈의 호스트 이름을 수정하는 방법은 무엇입니까?
sdkconfig.pico32
파일의 CONFIG_LWIP_LOCAL_HOSTNAME
항목을 수정하고 펌웨어를 다시 컴파일하고 플래시합니다.모듈은 어떤 WiFI 주파수를 지원합니까?
인터페이스 및 PCB 도면 요구 사항은 무엇입니까?
UART 모드는 TC264를 예로 사용합니다(ZhuFei 무선 직렬 포트 인터페이스 회로도 참조, 직접 복사 가능, 일반 UART 인터페이스와 비교하여 추가 흐름 제어 핀이 필요함, ZhuFei 무선 직렬 포트 송신 드라이버를 모방할 수 있음 GPIO 사용) 시뮬레이션할 입력 모드)
Zhiyong 상위 컴퓨터와 유사한 프레임 헤더 및 프레임 테일 감지 기능이 있는 간단한 Python 이미지 전송 상위 컴퓨터 디스플레이 스크립트
실행에 필요한 Python 라이브러리:
ESP32 udp/tcp 속도에 대한 Espressif 공식 테스트:
유형/처리량 | 에어인랩 | 쉴드박스 | 테스트 도구 | IDF 버전(커밋 ID) |
---|---|---|---|---|
원시 802.11 패킷 RX | 해당 없음 | 130MBit/초 | 내부 도구 | 해당 없음 |
원시 802.11 패킷 TX | 해당 없음 | 130MBit/초 | 내부 도구 | 해당 없음 |
UDP 수신 | 30MBit/초 | 85MBit/초 | iperf 예 | 15575346 |
UDP 송신 | 30MBit/초 | 75MBit/초 | iperf 예 | 15575346 |
TCP 수신 | 20MBit/초 | 65MBit/초 | iperf 예 | 15575346 |
TCP 송신 | 20MBit/초 | 75MBit/초 | iperf 예 | 1557534 |