Wi-Fi 机器人

准备工作:
材料:
该项目所需的所有关键组件列表:
- 1个ZYBO开发板
- 1 TL-WR802N 无线路由器
- 1个影子底盘
- 2个65毫米轮子
- 2个140rpm齿轮电机
- 双轮编码器
- 1个HC-SR04超声波传感器
- 1 BSS138 逻辑电平转换器
- 1 L293 H桥电机驱动器
- 1 12V 至 5V DC/DC 转换器
- 1个2200mAh锂聚合物电池
- 1 根以太网线
- 1 根 USB Micro-B 线缆
- 1 个 XT60 母头连接器
- 2根公对母跳线
- 30 根公对公跳线
- 2个10kΩ电阻
- 1个面包板
此外,目标计算机上还必须安装以下软件:
- Xilinx Vivado 设计套件 2018.2
- Digilent Adept 2.19.2
- FreeRTOS 10.1.1
- Java SE 开发工具包 8.191
组装机器人底盘







组装阴影底盘,并将齿轮电机和编码器安装到底部框架上。ZYBO、面包板和超声波传感器可以使用提供的零件进行安装,这些零件可以 3D 打印,并使用支架和双面胶带固定在底盘上。电池应安装在机器人后部附近,最好位于顶部和底部框架之间。将路由器安装在靠近 ZYBO 的位置,将 DC/DC 转换器安装在靠近面包板的位置。将轮子安装在末端的齿轮电机上。
连接电子设备





将 DC/DC 转换器的输入和输出分别连接到面包板上的两个电源轨。这些将作为系统的 12V 和 5V 电源。如图所示,将 ZYBO 连接到 5V 电源轨。使用 USB Micro-B 电源线将路由器也连接到 5V 电源轨。XT60 线缆应连接到 12V 电源轨。在其余电子设备正确接线之前,请勿插入电池。超声波传感器应连接到 5V 电源轨。使用 ZYBO 上 Pmod 端口 JC 的引脚 6 在面包板上创建 3.3V 电源轨。逻辑转换器的高压输入应连接到 5V 电源轨,而逻辑转换器的低压输入应连接到 3.3V 电源轨。将电机编码器连接到 3.3V 电源轨。将电机驱动器的 VCC1 连接到 5V 电源轨,将 VCC2 连接到 12V 电源轨。将所有 EN 引脚连接至 5V,并将所有 GND 引脚接地。
将超声波传感器的 TRIG 和 ECHO 引脚分别连接到逻辑转换器的 HV1 和 HV2。LV1 应连接到 JC4,LV2 应连接到 JC3。请参阅图表了解 Pmod 引脚排列。将电机连接到电机驱动器。Y1 应连接到右侧电机的正极,Y2 应连接到右侧电机的负极。同样,Y3 应连接到左侧电机的正极,Y4 应连接到左侧电机的负极。A1、A2、A3 和 A4 应分别映射到 JB2、JB1、JB4 和 JB3。有关引脚编号,请参阅原理图。将 JC2 连接到右侧编码器,JC1 连接到左侧编码器。确保使用上拉电阻将这些信号连接到 3.3V 电源轨。最后,使用以太网电缆将 ZYBO 连接到路由器。
在 Vivado 中创建框图

在 Vivado 中创建一个新的 RTL 项目。请确保此时不要指定任何来源。搜索“xc7z010clg400-1”并点击“完成”。下载编码器驱动程序.sv 和超声波驱动程序.sv。将它们放在各自的文件夹中。打开“工具”下的 IP 打包器,选择打包指定目录。将路径粘贴到包含编码器驱动程序的文件夹,然后点击“下一步”。点击“打包 IP”,并对超声波传感器驱动程序重复上述步骤。之后,导航到设置菜单中 IP 子部分下的存储库管理器。添加驱动程序文件夹的路径,然后点击“应用”将其添加到 IP 库中。
创建新的框图并添加“ZYNQ7 处理系统”。双击该模块并导入提供的 ZYBO_zynq_def.xml 文件。在“MIO 配置”下,启用定时器 0 和 GPIO MIO。点击“确定”保存配置。添加 3 个“AXI GPIO”模块和 4 个“AXI 定时器”模块。运行模块自动化,然后运行 S_AXI 的连接自动化。双击 GPIO 模块进行配置。其中一个模块应为双通道,具有 4 位输入和 4 位输出。将这些连接设置为外部连接,并将其标记为 SW(输入)和 LED(输出)。第二个模块也应为双通道,具有两个 32 位输入。最后一个 GPIO 模块为单个 32 位输入。将每个定时器模块的 PWM0 输出设置为外部连接。将它们标记为 PWM0、PWM1、PWM2 和 PWM3。
将编码器驱动器添加到框图中,并将 CLK 连接到 FCLK_CLK0。将 OD0 和 OD1 连接到第二个 GPIO 模块的输入通道。将 ENC 设置为外部,并将 ENC_0 重命名为 ENC。添加超声波传感器模块,并将 CLK 连接到 FCLK_CLK0。将 TRIG 和 ECHO 设置为外部,并将 TRIG_0 重命名为 TRIG,将 ECHO_0 重命名为 ECHO。将 RF 连接到第三个 GPIO 模块。请参考提供的框图。
在“源”窗格中右键单击您的框图文件,并创建一个 HDL 包装器。请确保允许用户编辑。添加提供的 ZYBO_Master.xdc 文件作为约束。点击“生成比特流”,然后休息一下。
设置环境修改程序

前往“文件”页面,将硬件导出至 Vivado SDK。确保包含比特流。导入“CORTEX_A9_Zynq_ZC702”中的 RTOSDemo 项目。该项目位于 FreeRTOS 安装目录中。创建一个新的板级支持包 (BSP),并选择 lwip202 库。将 RTOSDemo 项目中引用的 BSP 更改为您刚刚创建的 BSP*。
*撰写本 Instructable 时,FreeRTOS 似乎在引用正确的 BSP 时存在错误。为了解决这个问题,请创建一个新的 BSP,并使用与第一个相同的设置。将引用的 BSP 更改为新的 BSP,然后在构建失败后将其改回旧的 BSP。现在 FreeRTOS 应该可以编译成功了。您可以随意删除未使用的 BSP。
在RTOSDemo的“src”目录下创建一个名为“drivers”的新文件夹。将提供的gpio.h、gpio.c、pwm.h、pwm.c、odometer.h、odometer.c、rangefinder.c、rangefinder.h、motor.h和motor.c文件复制到“drivers”目录中。
打开 main.c 文件,并将 mainSELECTED_APPLICATION 设置为 2。将“lwIP_Demo”目录下的 main_lwIP.c 文件替换为更新后的版本。“lwIP_Demo/apps/BasicSocketCommandServer”目录下的 BasicSocketCommandServer.c 文件也需要更新为新版本。最后,导航至“FreeRTOSv10.1.1/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos”,并将 Sample-CLI-commands.c 文件替换为提供的版本。构建项目并确保所有代码编译成功。
烧录固件配置无线





使用“Zynq FSBL”模板创建一个名为“FSBL”的新应用程序项目。编译 FSBL 项目后,创建 RTOSDemo 项目的启动映像。确保在“启动映像分区”下选择“FSBL/Debug/FSBL.elf”作为引导加载程序。如果未列出此文件的路径,请手动添加。
将 ZYBO 上的 JP5 跳线移至“JTAG”。使用 USB Micro-B 数据线将电脑连接到 ZYBO。连接电池并开启 ZYBO。运行 Adept 以确保电脑正确识别 ZYBO。在 Vivado SDK 中点击“Program Flash”,并提供 RTOSDemo 中 BOOT.bin 文件和 FSBL 中 FSBL.elf 文件的路径。在点击“Program”之前,请确保选择“Verify after flash”。观察控制台,确保烧写操作成功完成。之后,关闭 ZYBO 电源并断开 USB 数据线。将 JP5 跳线移至“QSPI”。
在电池仍连接的情况下,连接到路由器的 Wi-Fi 网络。默认的 SSID 和密码应该位于路由器底部。然后,导航至http://tplinkwifi.net,并使用“admin”作为用户名和密码登录。运行快速设置向导,将路由器配置为接入点模式并启用 DHCP。确保同时更新设备的默认用户名和密码。完成后,路由器将自动重启进入接入点模式。
打开 ZYBO 的电源,并使用您分配的 SSID 连接到路由器。路由器的 IP 地址很可能是 192.168.0.100 或 192.160.0.101。ZYBO 将被分配路由器没有的地址。要快速确定路由器的 IP 地址,您可以在 Windows 的命令提示符下运行“ipconfig”,或在 Linux 或 MacOS 的终端上运行“ifconfig”。如果您仍然连接到路由器,您将在无线接口旁边看到它的 IP 地址。使用此信息来确定 ZYBO 的 IP 地址。要确认 ZYBO 的 IP 地址,您可以从命令行 ping 它或通过 telnet 连接到它。
运行Java程序

下载 RobotClient.java 并使用命令行中的“javac RobotClient.java”命令编译该文件。运行命令“java RobotClient <ip_address>”,其中“ip_address”是 ZYBO 的 IP 地址。如果计算机与 ZYBO 成功建立连接,则会弹出控制 GUI。将窗口聚焦后,即可使用键盘上的箭头键控制机器人。按下“退出”按钮结束会话并断开与机器人的连接。
图形用户界面 (GUI) 会高亮显示按下的按键,并在右上角显示电机输出功率。左侧的距离计每 2 米填充一格,最高可达 10 米。
校准测距仪

ZYBO 板载开关可用于配置板载测距仪。最小检测距离d由开关输入i决定:
d = 50i + 250
输入值可以在 0 到 15 之间以整数步长变化。这相当于距离范围为 0.25 米到 1 米。在最小距离处,第一个 LED 将开始闪烁。激活的 LED 数量与物体的接近程度成正比。
这款机器人非常易于操作。由于其操控简单,只需一根手指即可完全操控。为了提升可操作性,可以添加对其他输入设备的支持。这样一来,残障人士就可以用身体的其他部位来控制机器人。
视频地址:https://vimeo.com/304757326











