Inglês | 中文
Este projeto é um módulo wireless baseado no chip ESP32-pico-d4 da Espressif Systems, com múltiplas interfaces de protocolo de comunicação: UART, SPI. A intenção original do design é facilitar a depuração do algoritmo da câmera para competições de carros inteligentes e reduzir a dificuldade de depuração cooperando com o computador superior.
O hardware esp32 suporta UART de 5Mbps e escravo SPI de 10Mbps
Uma das características deste módulo é que ele pode ser compatível com a interface de porta serial sem fio ZhuFei, tem função de controle de fluxo de hardware e pode usar diretamente o driver de porta serial sem fio ZhuFei para obter comunicação unidirecional, eliminando a necessidade de amigos do carro para testar este módulo. A necessidade de re-placa, atualmente suporta apenas transmissão unidirecional para o computador superior
O software e o hardware deste projeto são difíceis, bem-vindos a todos para se comunicarem e fazerem sugestões de melhorias, meu QQ: 1626632460
O computador superior de transmissão de imagem de carro inteligente de código aberto pode usar o computador superior Zhiyong , este módulo é usado principalmente com este computador superior , o manual do usuário e as rotinas de microcomputador de chip único estão neste armazém de computador superior , link: https://gitee.com /zhou-wenqi/ipc-para-carro
Link do vídeo Bilibili: https://www.bilibili.com/video/BV1oZ4y1m7y2
A simulação de PCB é a seguinte
Categoria | UART+SPI |
---|---|
Simulação 3D | |
Efeito de soldagem | |
Link de código aberto JLC | https://oshwhub.com/Wander_er/891fe1d235694ef7afe684f5a2f05b73 |
Nome | Função |
---|---|
documento | Documento de chip |
motorista | Arquivo de driver |
firmware | Firmware |
hardware | Hardware |
imagem | Foto |
programas | Script python de computador superior de transmissão de imagem simples |
Dois modos de comunicação
Taxa de transmissão UART de até 5 Mbps, receba até 20.000 bytes por vez
Use sondagem serial para extrair dados recebidos do buffer. Existem dois parâmetros, que são o tamanho do buffer de recebimento e o tempo máximo de espera. Quando o número de bytes recebidos atinge o tamanho do buffer, é imediatamente considerado como conclusão de uma recepção; quando o envio for concluído, mas não atingir o tamanho do buffer de recebimento, aguarde um tempo máximo de espera antes de ver como uma transferência foi concluída. Este tempo de espera é fixado em 20ms.
Portanto, pode ser considerado como tendo dois modos, alterne modificando o parâmetro length
na função uart_read_bytes
() no firmware.
Modo transparente : refere-se a nenhum limite fixo de bytes para dados transmitidos. Cada comunicação pode transmitir dados de vários tamanhos, mais flexíveis.
Recomenda-se que o uso do modo transparente tenha um intervalo maior que serial port transmission time
+ 20ms
+ udp transmission time (rate calculated at 30Mbps)
Quando o parâmetro length
é o tamanho do buffer RX_BUF_SIZE -1
, é o modo transparente, ou seja, assumindo que nenhum dado atingirá esse comprimento.
Modo de byte fixo : refere-se a ter um limite de bytes fixo para dados transmitidos. A velocidade é mais rápida que o modo transparente, mas só pode transmitir dados de tamanho fixo.
Recomenda-se que o uso do modo de byte fixo tenha um intervalo maior que serial port transmission time
+ udp transmission time (rate calculated at 30Mbps)
Quando o parâmetro length
é igual ao número de bytes de dados fixos enviados, são bytes fixos, por exemplo, ao transmitir uma imagem em escala de cinza de 60 x 90 quando é 5400.
Obviamente, o envio de dados inferiores a esse comprimento também pode ser considerado um modo transparente.
Taxa de transmissão SPI de até 10 Mbps, receba até 25.000 bytes por vez
SPI transmission time
+ udp transmission time (calculated at 30Mbps)
O firmware integra dois modos de comunicação UART e SPI, que podem ser configurados por protocolo de comunicação serial e gravados em Flash, sem perder energia, eliminando a necessidade de modificações repetidas do firmware
Como se conectar com o computador inferior?
UART
Link da foto | Computador inferior |
---|---|
RXD | TXD |
TXD | RXD |
RTS (mosi multiplex) | CTS (se não estiver disponível, não importa muito, mas você precisa desabilitar a detecção de controle de fluxo na função de transmissão serial do computador inferior) |
IPS
Link da foto | Computador inferior |
---|---|
CLK | CLK |
Miso | Miso |
MOSI | MOSI |
CS | CS |
Fonte de alimentação de 5 V, o fio terra deve estar conectado
Como calcular o tempo que leva para enviar uma imagem completa?
Tomemos como exemplo a transmissão UART de 3 Mbps de uma imagem em escala de cinza de tamanho. Primeiro calcule o número de bits na imagem: 60 x 90 x 8 = 43.200 bits. Em seguida, divida o número de bits pela taxa de transmissão: 43200/3000000 = 0,0144 s = 14,4 ms
Como entrar e usar o modo de configuração?
Use o assistente serial USB para TTL em seu computador para conectar Pic-o Link
, curto-circuitar os pinos MOSI
e CS
e depois redefinir. A luz indicadora RGB fica amarela e indica que você entrou no modo de configuração. Neste momento, você pode configurar os parâmetros do Pic-o Link através da porta serial. A taxa de transmissão é 115200 e o protocolo é mostrado na tabela
| Categoria | Observação | Cabeçalho do quadro | Comprimento | | :--------------------------: | :------------------------------: | :------: |- ----:| | Seleção de protocolo de comunicação |Inteiro sem sinal de 8 bits, 0: UART, 1: SPI| 0x41 (A) | 1 byte | | Taxa de transmissão do modo de comunicação UART | Inteiro não assinado de 32 bits, <=5000000 | 0x42 (B) | 4 bytes | | Modo de comunicação UART recebe número de bytes do buffer | Inteiro sem sinal de 16 bits, <=20000 | 0x43 (C) | 2 bytes | | Conta Wi-Fi | string, até 32 bytes | 0x44 (D) | 32 bytes | | Senha Wi-Fi | string, até 64 bytes | 0x45 (E) | 64 bytes | | Endereço IP do servidor UDP |string, até 16 bytes| 0x46 (F) | 16 bytes | | Porta do servidor UDP |inteiro não assinado de 16 bits, <=65535| 0x47 (G) | 2 bytes | | Ler parâmetros do módulo |instrução única | 0x48 (H) |nenhum | |Escrever parâmetros de memória do módulo no Flash|instrução única | 0x49 (I) |nenhum |
Qual endereço IP devo configurar especificamente?
As duas situações a seguir indicam os parâmetros de endereço IP configurados pelo Pic-o Link:
Como abrir o projeto de firmware?
Pic-o Link
e selecione Open with Code
, espere um pouco após a abertura, o plugin irá instalar automaticamente as dependências e compilar o conjunto de ferramentas Como entrar no modo de download e firmware flash?
Pic-o Link
ao seu computador, pressione e segure o botão DOWNLOAD
no Pic-o Link e, em seguida, pressione o botão RESET
e clique no botão de download na parte inferior da Plataforma IO para compilar e baixar com um clique, lembre-se de pressionar o botão RESET
após o download Como modificar o nome do host do módulo?
CONFIG_LWIP_LOCAL_HOSTNAME
no arquivo sdkconfig.pico32
e recompile e atualize o firmwareQual frequência WiFI o módulo suporta?
Requisitos de desenho de interface e PCB?
O modo UART toma TC264 como exemplo (consulte o diagrama esquemático da interface da porta serial sem fio ZhuFei, pode ser copiado diretamente, observe que, em comparação com a interface UART geral, é necessário um pino de controle de fluxo adicional, pode imitar o driver de envio da porta serial sem fio ZhuFei, use um GPIO como modo de entrada para simular)
Script de exibição do computador superior de transmissão de imagem python simples, com cabeçalho de quadro e detecção de cauda de quadro, semelhante ao computador superior Zhiyong
Bibliotecas Python necessárias para execução:
Teste oficial Espressif da taxa udp/tcp do ESP32:
Tipo/rendimento | Ar no laboratório | Caixa de escudo | Ferramenta de teste | Versão IDF (ID de confirmação) |
---|---|---|---|---|
Pacote RX 802.11 bruto | N / D | 130 MBit/s | Ferramenta interna | N / D |
Pacote TX 802.11 bruto | N / D | 130 MBit/s | Ferramenta interna | N / D |
RX UDP | 30 MBit/s | 85 MBit/s | exemplo iperf | 15575346 |
UDP-TX | 30 MBit/s | 75 MBit/s | exemplo iperf | 15575346 |
RX TCP | 20 MBit/s | 65 MBit/s | exemplo iperf | 15575346 |
TCP-TX | 20 MBit/s | 75 MBit/s | exemplo iperf | 1557534 |