Índice:

WiBot: 10 etapas (com imagens)
WiBot: 10 etapas (com imagens)

Vídeo: WiBot: 10 etapas (com imagens)

Vídeo: WiBot: 10 etapas (com imagens)
Vídeo: WiBit.Net - Programming in Objective C - Lab - Simple iPhone App - Part 1 2024, Novembro
Anonim
WiBot
WiBot

Este instrutível detalha o processo de construção de um robô Wi-Fi na plataforma ZYBO. Este projeto utiliza um sistema operacional em tempo real para detecção de objetos, medição de distância e controle responsivo. Este guia cobrirá a interface do ZYBO com periféricos, a execução de firmware personalizado e a comunicação via aplicativo Java. A seguir está uma lista de todos os principais componentes necessários para este projeto:

  • 1 ZYBO Development Board
  • 1 roteador sem fio TL-WR802N
  • 1 Shadow Chassis
  • 2 rodas de 65 mm
  • 2 motoredutores de 140 rpm
  • 2 codificadores de roda
  • 1 sensor ultrassônico HC-SR04
  • 1 Conversor de nível lógico BSS138
  • 1 Driver de motor L293 H-Bridge
  • 1 conversor 12V para 5V DC / DC
  • 1 bateria lipo de 2200 mAh
  • 1 cabo Ethernet
  • 1 cabo USB Micro-B
  • 1 conector fêmea XT60
  • 2 fios de ligação macho-fêmea
  • 30 fios de ligação macho-macho
  • 2 resistores de 10kΩ
  • 1 breadboard

Além disso, o seguinte software deve ser instalado no computador de destino:

  • Xilinx Vivado Design Suite 2018.2
  • Digilent Adept 2.19.2
  • FreeRTOS 10.1.1
  • Java SE Development Kit 8.191

Etapa 1: montar o chassi do robô

Monte o chassi do robô
Monte o chassi do robô
Monte o chassi do robô
Monte o chassi do robô
Monte o chassi do robô
Monte o chassi do robô

Monte o chassi sombra e fixe os motoredutores e codificadores na estrutura inferior. O ZYBO, placa de ensaio e sensor ultrassônico podem ser montados com as peças fornecidas que podem ser impressas em 3D e fixadas ao chassi usando espaçadores e fita dupla-face. A bateria deve ser montada perto da parte traseira do robô e de preferência entre a parte superior e quadros inferiores. Monte o roteador próximo ao ZYBO e o conversor DC / DC próximo à placa de ensaio. Prenda as rodas aos motoredutores bem no final.

Etapa 2: Eletrônica de fios

Wire Electronics
Wire Electronics
Wire Electronics
Wire Electronics
Wire Electronics
Wire Electronics

Conecte a entrada e a saída do conversor DC / DC aos dois trilhos de alimentação na placa de ensaio, respectivamente. Eles servirão como suprimentos de 12 V e 5 V para o sistema. Conecte o ZYBO ao trilho de 5 V conforme mostrado na imagem. Use um cabo de alimentação USB Micro-B para conectar o roteador ao trilho de 5 V também. O cabo XT60 deve ser conectado ao trilho de 12V. Não conecte a bateria até que o restante dos componentes eletrônicos esteja conectado corretamente. O sensor ultrassônico deve ser conectado ao trilho de 5V. Crie um trilho de 3,3 V na placa de ensaio usando o pino 6 da porta Pmod JC no ZYBO. A entrada de alta tensão do conversor lógico deve ser conectada ao trilho de 5 V enquanto a entrada de baixa tensão do conversor lógico deve ser conectada ao trilho de 3,3 V. Conecte os codificadores do motor ao trilho de 3,3V. Conecte o VCC1 do driver do motor ao trilho de 5 V e conecte o VCC2 ao trilho de 12 V. Amarre todos os pinos EN em 5 V e aterre todos os pinos GND.

Conecte os pinos TRIG e ECHO do sensor ultrassônico ao HV1 e HV2 do conversor lógico, respectivamente. LV1 deve ser conectado a JC4 e LV2 deve ser conectado a JC3. Consulte o gráfico para ver as pinagens do Pmod. Conecte os motores ao driver do motor. Y1 deve ser conectado ao terminal positivo do motor direito e Y2 deve ser conectado ao terminal negativo do motor direito. Da mesma forma, Y3 deve ser conectado ao terminal positivo do motor esquerdo e Y4 deve ser conectado ao terminal negativo do motor esquerdo. A1, A2, A3 e A4 devem ser mapeados para JB2, JB1, JB4 e JB3, respectivamente. Consulte o esquema para obter os números dos pinos. Conecte JC2 ao codificador direito e JC1 ao codificador esquerdo. Certifique-se de que os resistores pull-up sejam usados para conectar esses sinais ao trilho de 3,3V. Por último, utilize o cabo Ethernet para conectar o ZYBO ao roteador.

Etapa 3: Criar Diagrama de Blocos no Vivado

Criar Diagrama de Bloco no Vivado
Criar Diagrama de Bloco no Vivado

Crie um novo projeto RTL no Vivado. Certifique-se de não especificar nenhuma fonte neste momento. Procure por "xc7z010clg400-1" e clique em Concluir. Baixe encoder_driver.sv e ultrasonic_driver.sv. Coloque-os em suas próprias pastas. Abra o IP Packager em "Ferramentas" e escolha empacotar um diretório específico. Cole o caminho para a pasta que contém o driver do codificador e clique em "Avançar". Clique em "pacote IP" e repita os processos para o driver do sensor ultrassônico. Depois, navegue até o gerenciador de repositório na subseção IP no menu de configurações. Adicione os caminhos às pastas do driver e clique em Aplicar para incluí-los na biblioteca de IP.

Crie um novo diagrama de blocos e adicione o "Sistema de processamento ZYNQ7". Clique duas vezes no bloco e importe o arquivo ZYBO_zynq_def.xml fornecido. Em "Configuração MIO", habilite o Timer 0 e GPIO MIO. clique em "OK" para salvar a configuração. Adicione 3 blocos "AXI GPIO" e 4 blocos "AXI Timer". Execute a automação de bloco seguida pela automação de conexão para S_AXI. Clique duas vezes nos blocos GPIO para configurá-los. Um bloco deve ser de canal duplo com uma entrada de 4 bits e uma saída de 4 bits. Torne essas conexões externas e rotule-as de SW para entrada e LED para saída. O segundo bloco também deve ser de canal duplo com 2 entradas de 32 bits. O último bloco GPIO será uma única entrada de 32 bits. Faça com que a saída pwm0 de cada bloco do temporizador seja externa. Rotule-os como PWM0, PWM1, PWM2 e PWM3.

Adicione o driver do codificador ao diagrama de blocos e conecte CLK a FCLK_CLK0. Conecte OD0 e OD1 aos canais de entrada do segundo bloco GPIO. Torne ENC externo e renomeie ENC_0 para ENC. Adicione o bloco do sensor ultrassônico e conecte CLK a FCLK_CLK0. Torne TRIG e ECHO externos e renomeie TRIG_0 para TRIG e ECHO_0 para ECHO. Conecte RF ao terceiro bloco GPIO. Consulte o diagrama de blocos fornecido para referência.

Clique com o botão direito em seu arquivo de diagrama de bloco no painel Origens e crie um wrapper HDL. Certifique-se de permitir as edições do usuário. Adicione o arquivo ZYBO_Master.xdc fornecido como uma restrição. Clique em "Gerar Bitstream" e faça uma pausa para o café.

Etapa 4: configurar o ambiente de desenvolvimento de software

Vá em "Arquivo" para exportar o hardware para o Vivado SDK. Certifique-se de incluir o fluxo de bits. Importe o projeto RTOSDemo dentro do "CORTEX_A9_Zynq_ZC702". Ele estará localizado no diretório de instalação do FreeRTOS. Crie um novo Pacote de Suporte de Placa e selecione a biblioteca lwip202. Altere o BSP referenciado no projeto RTOSDemo para o BSP que você acabou de criar *.

* No momento da redação deste Instructable, o FreeRTOS parecia ter um bug com referência ao BSP correto. Para remediar isso, crie um novo BSP com as mesmas configurações do primeiro. Altere o BSP referenciado para o novo e, em seguida, altere-o de volta para o antigo após a falha na construção. FreeRTOS agora deve compilar sem erros. Sinta-se à vontade para excluir o BSP não utilizado.

Etapa 5: modificar o programa de demonstração

Crie uma nova pasta chamada "drivers" no diretório "src" do RTOSDemo. Copie o gpio.h. fornecido arquivos gpio.c, pwm.h, pwm.c, odometer.h, odometer.c, rangefinder.c, rangefinder.h, motor.h e motor.c no diretório "drivers".

Abra main.c e defina mainSELECTED_APPLICATION como 2. Substitua main_lwIP.c em "lwIP_Demo" pela versão atualizada. BasicSocketCommandServer.c em "lwIP_Demo / apps / BasicSocketCommandServer" também deve ser atualizado com uma nova versão. Por último, navegue para "FreeRTOSv10.1.1 / FreeRTOS-Plus / Demo / Common / FreeRTOS_Plus_CLI_Demos" e substitua Sample-CLI-commands.c pela versão fornecida. Construa o projeto e garanta que tudo seja compilado com sucesso.

Etapa 6: Flash Firmware para QSPI

Firmware Flash para QSPI
Firmware Flash para QSPI
Firmware Flash para QSPI
Firmware Flash para QSPI
Firmware Flash para QSPI
Firmware Flash para QSPI

Crie um novo projeto de aplicativo chamado "FSBL" usando o modelo "Zynq FSBL". Depois de compilar o projeto FSBL, crie uma imagem de inicialização do projeto RTOSDemo. Certifique-se de que "FSBL / Debug / FSBL.elf" esteja selecionado como carregador de inicialização em "Partições de imagem de inicialização". Adicione manualmente o caminho para este arquivo se ele não estiver listado.

Mova o jumper JP5 no ZYBO para "JTAG". Use um cabo USB Micro-B para conectar seu computador ao ZYBO. Conecte a bateria e ligue o ZYBO. Execute o Adept para certificar-se de que o ZYBO está corretamente identificado pelo computador. Clique em "Program Flash" no Vivado SDK e forneça os caminhos para o arquivo BOOT.bin no RTOSDemo e o arquivo FSBL.elf no FSBL. Certifique-se de selecionar "Verificar após flash" antes de clicar em "Programa". Observe o console para garantir que a operação de flash foi concluída com êxito. Em seguida, desligue o ZYBO e desconecte o cabo USB. Mova o jumper JP5 para "QSPI".

Etapa 7: Configurar ponto de acesso sem fio

Com a bateria ainda conectada, conecte-se à rede Wi-Fi do roteador. O SSID e a senha padrão devem estar na parte inferior do roteador. Depois, navegue para https://tplinkwifi.net e faça o login usando "admin" para o nome de usuário e senha. Execute o assistente de configuração rápida para configurar o roteador no modo de ponto de acesso com DHCP habilitado. Certifique-se de atualizar o nome de usuário e a senha padrão do dispositivo também. O roteador deve reiniciar automaticamente no modo de ponto de acesso depois que você terminar.

Ligue o ZYBO e conecte-se ao roteador usando o SSID que você atribuiu. O roteador provavelmente aparecerá no endereço IP 192.168.0.100 ou 192.160.0.101. O ZYBO será atribuído a qualquer endereço que o roteador não tenha. Para determinar rapidamente o endereço IP do roteador, você pode executar "ipconfig" no prompt de comando do Windows ou "ifconfig" no terminal no Linux ou MacOS. Se você ainda estiver conectado ao roteador, verá seu endereço IP exibido ao lado da interface sem fio. Use essas informações para determinar o endereço IP do ZYBO. Para confirmar o endereço IP do ZYBO, você pode executar ping na linha de comando ou conectar-se a ele via telnet.

Etapa 8: execute o programa Java

Executar programa Java
Executar programa Java

Baixe RobotClient.java e compile o arquivo usando o comando "javac RobotClient.java" da linha de comando. Execute o comando "java RobotClient" onde "ip_address" é o endereço IP do ZYBO. A GUI de controle aparecerá se uma conexão bem-sucedida for estabelecida entre o computador e o ZYBO. Depois de focar a janela, o robô deve ser controlável usando as setas do teclado. Pressione o botão Escape para encerrar a sessão e se desconectar do robô.

A GUI irá destacar as teclas que são pressionadas e mostrar a saída do motor no canto superior direito. O medidor de distância à esquerda preenche uma barra a cada 2 metros até um máximo de 10 metros.

Etapa 9: calibrar telêmetro

Os interruptores na ZYBO podem ser usados para configurar o telêmetro integrado. A distância mínima de detecção d é dada em função da entrada do interruptor i:

d = 50i + 250

A entrada pode variar de 0 a 15 em etapas inteiras. Isso se traduz em uma faixa de distância de 0,25 metros a 1 metro. Na distância mínima, o primeiro LED começará a piscar. O número de LEDs ativos é proporcional à proximidade do objeto.

Etapa 10: Acessibilidade

Este robô é facilmente acessível. Devido à simplicidade de seu controle, pode ser totalmente controlado com apenas um dedo. Para melhorar a acessibilidade, pode ser adicionado suporte para dispositivos de entrada adicionais. Isso pode permitir que usuários com deficiência controlem o robô com uma parte diferente do corpo.

Recomendado: