基于Zynq-Zybo开发板及rtl8188无线网卡的远程舵机控制系统设计(五)——最终测试

回顾

在之前的开发中,我们已经完成了Zybo开发板上的硬件平台搭建以及软件应用开发。

现在,我们只需要完成Android系统下的socket发送APP,就可以开始最终的测试了。由于时间限制,博主没有自己独立完成一个Android APP的开发,而是使用了网络上的现有资源,能够介绍的内容有限。所以,这一章就把Android APP和最终测试放在一起叙述。

Android APP调试

在GitHub上找到了一个基于Android Studio的socket聊天应用的工程。界面如下图:
聊天界面 设置界面
可以看到,这款APP有设置界面和聊天界面。可以在设置界面中修改发送socket的目标IPv4地址以及端口号,在聊天界面向目标IP发送包含聊天信息(字符串)的socket信息。
在Android Studio中,通过API28,使这个APP可以在Android 9上运行。然后用Android Studio打包成.apk文件后在手机上安装。这样,就完成了Android端的APP平台搭建。

最终测试过程

先对之前设计得到的相关材料做一下整理
1)通过第二章,我们完成了vivado硬件平台设计,得到了一个把PWM输出模块及USB接口与Zybo板上的ARM处理器连接好的硬件工程。通过vivado的相关工具,可以得到硬件比特流文件(bitstream),FPGA boot loader文件(FSBL文件),.dtb设备树文件
2)通过第三章,我们完成了rtl8188无线网卡在Linux系统下的驱动的编译,以及舵机PWM生成模块的Linux驱动编写及编译。得到了能够驱动rtl8188的内核文件uImage文件,以及能够驱动PWM波生成模块的.ko文件
3)通过第四章,我们完成了Zybo开发板上的“socket接收+舵机控制”应用的开发,并且通过交叉编译生成了arm-v7架构下的可执行文件socketServo文件。
4)通过上一节,得到了一个可以在Android 9操作系统上发送包含字符串信息的socket包的APP应用。
现在,就是把这些东西组合起来进行测试的时候了。下面将逐步介绍测试环境的搭建过程。

1、嵌入式平台搭建

在FPGA上运行嵌入式Linux系统,需要BOOT文件、设备树文件及Linux内核文件。后两个文件我们已经获得,BOOT文件是由FSBL文件,bitstream文件、uboot文件通过vivado的工具合成后得到的文件。将这三个文件放到SD卡的boot分区(ntfs格式)中,然后将文件系统放到SD卡的root分区(ext4格式)中。随后将舵机驱动.ko文件以及可执行文件放入文件系统中,就完成了本次实验嵌入式平台的搭建。
注:第三章介绍过内核及uboot的源码版本。

2、组装硬件环境

之前介绍过,舵机需要5V直流供电,而Zybo没有5V电压输出,所以这里使用一个提供5V直流的Arduino开发板作为直流电源。
组装硬件环境的流程如下:
1.使用杜邦线连接舵机的供电端口和Arduino开发板的5V输出端口,给舵机提供直流电平;
2.使用杜邦线连接Zybo开发板的舵机控制信号输出端口和舵机的控制端口;
3.使用杜邦线连接Zybo开发板和Arduino开发板,使它们共地;
4.在Zybo开发板上插入rtl8188无线网卡,用USB线给Zybo以及Arduino开发板供电。
至此,硬件组装完毕。具体连接图如下图所示:
硬件连接图

3、配置无线网络信道

首先,这一步需要文件系统中有ifconfig工具以及iwconfig工具。本次设计选择的linaro文件系统中有这两个工具,如果选用没有这两个工具的文件系统,就需要自己将这两个工具交叉编译后放到文件系统中。

然后开始配置无线网络信道。
修改文件系统中的文件/etc/net/interface文件,给无线网卡的网络端口“wlan0”配置IP地址192.168.43.1。具体代码如下

iface wlan0 inet static
address 192.168.43.1
netmask 255.255.255.0

使用手机A开启无线热点“Huawei”,不加密。手机B连接该无线热点。
在开发板上输入ifconfig指令,观察网络端口情况。可以发现无线网络端口“wlan0”。如下图所示:
在这里插入图片描述
使用iwlist wlan0 scanning指令,扫描无线网卡可以检测到的WIFI,找到无线热点“Huawei”。如下图所示:
在这里插入图片描述
使用iwconfig wlan0 essid “Huawei”指令,使得无线网卡连入手机A开放的无线热点。在手机A上观察到MAC地址与wlan0相同的设备连入了无线热点,如下图所示:
在这里插入图片描述
在开发板上使用ping指令,ping向手机B的IP地址,开发板上显示成功ping到指定IP。至此,无线网络信道搭建完成。

4、舵机控制测试

在开发板端,使用insmod指令,使得Linux系统能够找到舵机控制信号的输出端口。
在开发板上运行之前编写并编译后的socket程序,等待socket包从手机端发送过来。
开启手机APP,设置目标IP地址为192.168.43.1,发送1-180之间的数字,此时,舵机根据数字改变其旋转方向。具体测试效果详见演示视频。系统工作图如下图所示:
在这里插入图片描述

总结

到此为止,就完成了“基于Zynq-Zybo开发板及rtl8188无线网卡的远程舵机控制系统”的设计及调试的全部过程。
整个过程涉及到的知识点范围较大,包括了FPGA底层硬件设计、Linux操作系统驱动设计、网络编程应用设计、前端Android APP设计。跨度从底层硬件到前端应用,基本上完成了一次比较完整的嵌入式应用开发。而相对应的是本次开发对博主这样的嵌入式开发初学者也有着比较大的难度,好在功夫不负有心人,最终还是成功地做出来了这个系统。

猜你喜欢

转载自blog.csdn.net/qq_36745999/article/details/92834112