Tabla de contenido:

WiBot: 10 pasos (con imágenes)
WiBot: 10 pasos (con imágenes)

Video: WiBot: 10 pasos (con imágenes)

Video: WiBot: 10 pasos (con imágenes)
Video: Sácale provecho a redes sociales, automatizando tus ventas con Wibot 2024, Septiembre
Anonim
WiBot
WiBot

Este instructable detalla el proceso para construir un robot Wi-Fi en la plataforma ZYBO. Este proyecto utiliza un sistema operativo en tiempo real para la detección de objetos, la medición de distancias y el control de respuesta. Esta guía cubrirá la interconexión del ZYBO con periféricos, la ejecución de firmware personalizado y la comunicación a través de la aplicación Java. La siguiente es una lista de todos los componentes clave necesarios para este proyecto:

  • 1 placa de desarrollo ZYBO
  • 1 enrutador inalámbrico TL-WR802N
  • 1 chasis de sombra
  • 2 ruedas de 65 mm
  • 2 motorreductores de 140 rpm
  • Codificadores de 2 ruedas
  • 1 sensor ultrasónico HC-SR04
  • 1 convertidor de nivel lógico BSS138
  • 1 controlador de motor de puente en H L293
  • 1 convertidor DC / DC de 12V a 5V
  • 1 batería LiPo de 2200 mAh
  • 1 cable de Ethernet
  • 1 cable USB Micro-B
  • 1 conector hembra XT60
  • 2 cables de puente macho a hembra
  • 30 cables de puente macho a macho
  • 2 resistencias de 10 kΩ
  • 1 tablero

Además, se debe instalar el siguiente software en el equipo de destino:

  • Xilinx Vivado Design Suite 2018.2
  • Adepto Digilent 2.19.2
  • FreeRTOS 10.1.1
  • Kit de desarrollo de Java SE 8.191

Paso 1: Ensamble el chasis del robot

Ensamblar el chasis del robot
Ensamblar el chasis del robot
Ensamblar el chasis del robot
Ensamblar el chasis del robot
Ensamblar el chasis del robot
Ensamblar el chasis del robot

Ensamble el chasis de sombra y conecte los motorreductores y codificadores al marco inferior. El ZYBO, la placa de pruebas y el sensor ultrasónico se pueden montar con las piezas proporcionadas que se pueden imprimir en 3D y fijar al chasis mediante separadores y cinta adhesiva de doble cara. La batería debe montarse cerca de la parte posterior del robot y preferiblemente entre la parte superior y marcos inferiores. Monte el enrutador cerca del ZYBO y el convertidor CC / CC cerca de la placa de pruebas. Fije las ruedas a los motorreductores al final.

Paso 2: Electrónica de cables

Electrónica de alambre
Electrónica de alambre
Electrónica de alambre
Electrónica de alambre
Electrónica de alambre
Electrónica de alambre

Conecte la entrada y salida del convertidor CC / CC a los dos rieles de alimentación en la placa de prueba, respectivamente. Estos servirán como suministros de 12V y 5V para el sistema. Conecte el ZYBO al riel de 5V como se muestra en la imagen. Utilice un cable de alimentación USB Micro-B para conectar el enrutador al riel de 5V también. El cable XT60 debe conectarse al riel de 12V. No conecte la batería hasta que el resto de los componentes electrónicos estén conectados correctamente. El sensor ultrasónico debe conectarse al riel de 5V. Cree un riel de 3.3V en la placa de pruebas usando el pin 6 del puerto Pmod JC en el ZYBO. La entrada de alto voltaje del convertidor lógico debe conectarse al riel de 5 V, mientras que la entrada de bajo voltaje del convertidor lógico debe conectarse al riel de 3,3 V. Conecte los codificadores del motor al riel de 3.3V. Conecte VCC1 del controlador del motor al riel de 5V y conecte VCC2 al riel de 12V. Ate todos los pines EN a 5 V y conecte a tierra todos los pines GND.

Conecte los pines TRIG y ECHO del sensor ultrasónico a HV1 y HV2 del convertidor lógico respectivamente. LV1 debe conectarse a JC4 y LV2 debe conectarse a JC3. Consulte la tabla para conocer los pines de Pmod. Conecte los motores al controlador del motor. Y1 debe conectarse al terminal positivo del motor derecho y Y2 debe conectarse al terminal negativo del motor derecho. De manera similar, Y3 debe conectarse al terminal positivo del motor izquierdo y Y4 debe conectarse al terminal negativo del motor izquierdo. A1, A2, A3 y A4 deben asignarse a JB2, JB1, JB4 y JB3 respectivamente. Consulte el esquema para conocer los números de los pines. Conecte JC2 al codificador derecho y JC1 al codificador izquierdo. Asegúrese de que se utilicen resistencias pull-up para conectar estas señales al riel de 3.3V. Por último, utilice el cable Ethernet para conectar el ZYBO al enrutador.

Paso 3: crea un diagrama de bloques en Vivado

Crear diagrama de bloques en Vivado
Crear diagrama de bloques en Vivado

Cree un nuevo proyecto RTL en Vivado. Asegúrese de no especificar ninguna fuente en este momento. Busque "xc7z010clg400-1" y presione finalizar. Descarga encoder_driver.sv y ultrasic_driver.sv. Colóquelos en sus propias carpetas. Abra IP Packager en "Herramientas" y elija empaquetar un directorio específico. Pegue la ruta a la carpeta que contiene el controlador del codificador y presione "Siguiente". Haga clic en "paquete IP" y repita los procesos para el controlador del sensor ultrasónico. Luego, navegue hasta el administrador del repositorio en la subsección IP en el menú de configuración. Agregue las rutas a las carpetas del controlador y presione aplicar para incluirlas en la biblioteca de IP.

Cree un nuevo diagrama de bloques y agregue el "Sistema de procesamiento ZYNQ7". Haga doble clic en el bloque e importe el archivo ZYBO_zynq_def.xml proporcionado. En "Configuración MIO", habilite el temporizador 0 y GPIO MIO. presione "Aceptar" para guardar la configuración. Agregue 3 bloques "AXI GPIO" y 4 bloques "AXI Timer". Ejecute la automatización de bloques seguida de la automatización de conexiones para S_AXI. Haga doble clic en los bloques GPIO para configurarlos. Un bloque debe ser de doble canal con una entrada de 4 bits y una salida de 4 bits. Haga estas conexiones externas y etiquételas SW para entrada y LED para salida. El segundo bloque también debe ser de doble canal con 2 entradas de 32 bits. El último bloque GPIO será una única entrada de 32 bits. Haga que la salida pwm0 de cada bloque de temporizador sea externa. Etiquételos como PWM0, PWM1, PWM2 y PWM3.

Agregue el controlador del codificador al diagrama de bloques y conecte CLK a FCLK_CLK0. Conecte OD0 y OD1 a los canales de entrada del segundo bloque GPIO. Haga que ENC sea externo y cambie el nombre de ENC_0 a ENC. Agregue el bloque del sensor ultrasónico y conecte CLK a FCLK_CLK0. Haga que TRIG y ECHO sean externos y cambie el nombre de TRIG_0 a TRIG y ECHO_0 a ECHO. Conecte RF al tercer bloque GPIO. Consulte el diagrama de bloques proporcionado como referencia.

Haga clic con el botón derecho en su archivo de diagrama de bloques en el panel Fuentes y cree un contenedor HDL. Asegúrese de permitir las ediciones del usuario. Agregue el archivo ZYBO_Master.xdc proporcionado como restricción. Haga clic en "Generar Bitstream" y tómese un descanso para tomar café.

Paso 4: Configurar el entorno de desarrollo de software

Vaya a "Archivo" para exportar hardware al Vivado SDK. Asegúrese de incluir el flujo de bits. Importe el proyecto RTOSDemo dentro de "CORTEX_A9_Zynq_ZC702". Estará ubicado dentro del directorio de instalación de FreeRTOS. Cree un nuevo paquete de soporte de placa seleccione la biblioteca lwip202. Cambie el BSP al que se hace referencia en el proyecto RTOSDemo por el BSP que acaba de crear *.

* En el momento de escribir este Instructable, FreeRTOS parece tener un error al hacer referencia al BSP correcto. Para remediar esto, cree un nuevo BSP con la misma configuración que el primero. Cambie el BSP al que se hace referencia por el nuevo y luego cámbielo de nuevo al anterior después de que no se compile. FreeRTOS ahora debería compilarse sin errores. No dude en eliminar el BSP no utilizado.

Paso 5: modificar el programa de demostración

Cree una nueva carpeta llamada "controladores" en el directorio "src" de RTOSDemo. Copie el archivo gpio.h. gpio.c, pwm.h, pwm.c, odometer.h, odometer.c, rangefinder.c, rangefinder.h, motor.h y motor.c en el directorio "drivers".

Abra main.cy configure mainSELECTED_APPLICATION en 2. Reemplace main_lwIP.c en "lwIP_Demo" con la versión actualizada. BasicSocketCommandServer.c en "lwIP_Demo / apps / BasicSocketCommandServer" también debe actualizarse con una nueva versión. Por último, vaya a "FreeRTOSv10.1.1 / FreeRTOS-Plus / Demo / Common / FreeRTOS_Plus_CLI_Demos" y reemplace Sample-CLI-commands.c con la versión proporcionada. Cree el proyecto y asegúrese de que todo se compile correctamente.

Paso 6: Flash del firmware a QSPI

Flash de firmware a QSPI
Flash de firmware a QSPI
Flash de firmware a QSPI
Flash de firmware a QSPI
Flash de firmware a QSPI
Flash de firmware a QSPI

Cree un nuevo proyecto de aplicación llamado "FSBL" utilizando la plantilla "Zynq FSBL". Después de compilar el proyecto FSBL, cree una imagen de arranque del proyecto RTOSDemo. Asegúrese de que "FSBL / Debug / FSBL.elf" esté seleccionado como cargador de arranque en "Particiones de imagen de arranque". Agregue manualmente la ruta a este archivo si no está en la lista.

Mueva el puente JP5 en el ZYBO a "JTAG". Utilice un cable USB Micro-B para conectar su computadora al ZYBO. Conecte la batería y encienda el ZYBO. Ejecute Adept para asegurarse de que la computadora identifique correctamente el ZYBO. Haga clic en "Programa Flash" en Vivado SDK y proporcione las rutas al archivo BOOT.bin en RTOSDemo y el archivo FSBL.elf en FSBL. Asegúrese de seleccionar "Verificar después del flash" antes de presionar "Programa". Observe la consola para asegurarse de que la operación de parpadeo se haya completado con éxito. Luego, apague el ZYBO y desconecte el cable USB. Mueva el puente JP5 a "QSPI".

Paso 7: configurar el punto de acceso inalámbrico

Con la batería aún conectada, conéctese a la red Wi-Fi del enrutador. El SSID y la contraseña predeterminados deben estar en la parte inferior del enrutador. Luego, navegue a https://tplinkwifi.net e inicie sesión usando "admin" para el nombre de usuario y la contraseña. Ejecute el asistente de configuración rápida para configurar el enrutador en modo de punto de acceso con DHCP habilitado. Asegúrese de actualizar también el nombre de usuario y la contraseña predeterminados del dispositivo. El enrutador debería reiniciarse automáticamente en el modo de punto de acceso una vez que haya terminado.

Encienda el ZYBO y conéctese al enrutador usando el SSID que asignó. Lo más probable es que el enrutador aparezca en la dirección IP 192.168.0.100 o 192.160.0.101. Al ZYBO se le asignará cualquier dirección que no tenga el enrutador. Para determinar rápidamente la dirección IP del enrutador, puede ejecutar "ipconfig" desde el símbolo del sistema en Windows o "ifconfig" desde el terminal en Linux o MacOS. Si todavía está conectado al enrutador, verá su dirección IP junto a su interfaz inalámbrica. Utilice esta información para determinar la dirección IP del ZYBO. Para confirmar la dirección IP del ZYBO, puede hacer ping desde la línea de comandos o conectarse a través de telnet.

Paso 8: ejecutar el programa Java

Ejecutar programa Java
Ejecutar programa Java

Descargue RobotClient.java y compile el archivo usando el comando "javac RobotClient.java" desde la línea de comandos. Ejecute el comando "java RobotClient" donde "ip_address" es la dirección IP del ZYBO. La GUI de control aparecerá si se establece una conexión exitosa entre la computadora y el ZYBO. Después de enfocar la ventana, el robot debe poder controlarse usando las teclas de flecha del teclado. Pulsa el botón de escape para finalizar la sesión y desconectarte del robot.

La GUI resaltará las teclas que se presionan y mostrará la salida del motor en la parte superior derecha. El medidor de distancia de la izquierda llena una barra cada 2 metros hasta un máximo de 10 metros.

Paso 9: calibre el telémetro

Los interruptores integrados en el ZYBO se pueden utilizar para configurar el telémetro integrado. La distancia de detección mínima d se da en función de la entrada del interruptor i:

d = 50i + 250

La entrada puede variar entre 0 y 15 en pasos enteros. Esto se traduce en un rango de distancia de 0,25 metros a 1 metro. A la distancia mínima, el primer LED comenzará a parpadear. El número de LED que están activos es proporcional a la proximidad del objeto.

Paso 10: Accesibilidad

Este robot es de muy fácil acceso. Debido a la simplicidad de su control, se puede controlar completamente con un solo dedo. Para mejorar la accesibilidad, se podría agregar soporte para dispositivos de entrada adicionales. Esto podría permitir que los usuarios discapacitados controlen el robot con una parte diferente de su cuerpo.

Recomendado: