1. RC522模块测试
MF RC522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员。是NXP 公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。MF RC522 适用于各种基于ISO/IEC 14443A 标准并且要求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合。比如:三表;板上单元;公共交通终端;便携式手持设备;非接触式公用电话。我们将rc522模块连接到i.MX6ULL终结者开发板的GPIO口,产品连接如图 1.1所示:
图 1.1i.MX6ULL终结者开发板里面的系统是yocto系统,大家可以在i.MX6ULL终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\03_Yocto文件系统目录下面下载。开发板开机以后,输入rc522,按Tab键补全,然后回车,如图 1.2所示,可以看到已经识别,将IC卡靠近rc522模块,可以看到输出的信息。
图 1.22. 步进电机模块测试
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电动机。本文档介绍步进电机在i.MX6ULL终结者开发板上的使用,开发板里面的系统是yocto。步进电机使用的是GPIO接口上的 IO。
硬件连接
硬件连接分为两个部分,供电和控制线的连接。排线连接,如下图所示。火牛座和 USB 线供电二选一,如图 2.1所示是双头usb 线供电。
这里务必需要注意的是,如果大家使用的是默认的光盘内核镜像,请不要给步进电机上电太长时间。因为步进电机驱动芯片,默认状态是上拉,会导致步进电机处于不正常的状态,会让电机发热。
软件测试
首先我们下载i.MX6ULL终结者光盘资料\05_uboot linux源码下的终结者Uboot和Linux源码.zip,然后将此文件夹解压,里面有俩个压缩包,如图 2.2所示:
我们将内核源码linux-imx-rel_imx_4.1.15_2.1.0_ga_20200611.tar.gz拷贝到Ubuntu/home/topeet目录下。
使用命令以下命令解压
tar -vxf linux-imx-rel_imx_4.1.15_2.1.0_ga_20200611.tar.gz
我们进入到解压目录下,如图 2.3所示:
图 2.3使用命令,
cd arch/arm/boot/dts 进入dts目录下,如图 2.4所示:
使用命令,修改imx6ull-14x14-evk.dts
图 2.5
将#define CONFIG_STEP_MOTOR_CTL 1 注释取消掉,然后保存退出。如图 2.6所示
图 2.6我们返回到linux-imx-rel_imx_4.1.15_2.1.0_ga目录下,直接在终端输入如下命令
./create.sh
开始编译 Linux 内核源码,如图 2.7所示:
图 2.7编译完成如图 2.8所示:
图 2.8编译完成,会在“arch/arm/boot”目录下生成“zImage”文件,如图 2.9所示:
图 2.9会在“arch/arm/boot/dts”目录下生成设备树文件,如图 2.10所示:
图 2.10从上图可以看到生成了十几个设备树文件,因为迅为电子的 i.MX6ULL 核心板有两种类型:EMMC版本和NAND FLASH版本。将对应的镜像zImage和设备树文件拷贝到 Windows 系统下,文件系统选择yocto系统,在 i.MX6ULL 终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\03_Yocto 文件系统目录下面下载。
然后使用 MFGTools 烧写工具烧写到开发板运行。
我们给开发板上电启动,然后通过调试串口登录到开发板上如图 2.11所示:
图 2.11使用命令
step_motor_app
如图 2.12所示,可以看到有如下提示。
图 2.12步进电机的测试例程需要传递参数。
第一个参数是 R 或者 L,用于设置步进电机的方向;
第二个参数是步角距,步角距是 5.625/64 度,4096 个步角距就是 360 度,所以这个参数的范围是 0-4096,取值 4096 是一圈,最小建议为 10。
第三个参数是转速,建议取值为 3000 到 20000 之间,小于 3000 转速不稳定。
我们输入以下命令,可以看到步进电机在右转,转一圈之后就会停下。step_motor_app R 4076 3000
如图 2.13所示
图 2.13
我们输入以下命令,可以看到步进电机在左转,转一圈之后就会停下。用户可以执行测试其它参数。step_motor_app L 4076 3000
如图 2.14
图 2.14
3. GPS模块测试
本章节介绍的是在yocto系统环境下i.MX6ULL终结者 GPS 模块测试步骤。利用 GPS 定位卫星,在全球范围内实时进行定位、导航的系统,称为全球卫星定位系统,简称 GPS。GPS 是由美国国防部研制建立的一种具有全方位、全天候、全时段、高精度的卫星导航系统,能为全球用户提供低成本、高精度的三维位置、速度和精确定时等导航信息,是卫星通信技术在导航领域的应用典范,它极大地提高了地球社会的信息化水平,有力地推动了数字经济的发展。
硬件连接
笔者测试 GPS 模块,使用的是 i.MX6ULL终结者开发板,用排线将GPS模块插在串口处,笔者使用 GPS 专用天线,并将探头延伸至窗外,以确保 GPS 信号强度,如图 3.1所示。
测试软件使用
i.MX6ULL 终结者开发板里面的系统是 yocto 系统,大家可以在 i.MX6ULL 终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\03_Yocto 文件系统目录下面下载。开发板开机以后,输入命令:
gps_test /dev/ttymxc2
然后我们可在超级终端上看到 GPS 回传的信息,注意当信号不强时,部分数据读取不到,模块上电运行几分钟之后可能才会有完整信息,信号实在太弱的情况,可能什么信号都没有。GPS 卫星有 24 颗,地球上任意一点,最多能够接收到 12 颗卫星信号。如图 3.2所示,提示有三颗星,信号比较弱,可以勉强定位。由于作者是在室内测量,又是阴天,这种情况测量得出的数据误差就比较大,理论上三颗卫星就可以定位。但是需要更加精准,则需要更多的卫星来校准纠偏,如果能够达到 5 颗卫星以上,汽车导航仪理论上就可以接受了。
图 3.2如上图所示,接收到的纬度为 N3851.65554,经度为 E11527.732120.23。实际的维度和经度应该缩小100倍,纬度为 N38.5165554,经度为 E115.2773212023。我们可以通过网址“https://www.toolnb.com/tools/getbaidupoint.html”查询下自己的实际位置,实际经纬度和我们所测经纬度偏差不大。
4. zigbee模块测试
ZigBee模块硬件简介
提到zigbee,大家可能会联想到物联网、智能家居这些高大上的热门词。事实上在学习阶段,我们要学会抓学习要点,zigbee模块无论是用在物联网还是智能家居上,核心还是串口数据的传输,对于物联网和智能家居,速率要求不是很高,使用串口来传输数据就够了,迅为的这个zigbee模块是串口接口。
硬件连接
图 4.1模块连接
将 Zigbee模块1接上电源(5V 电源或者双头USB 供电,串口接到 PC 上,电脑如果没有串口,则需要使用 USB 转 RS232 串口。 Zigbee模块1和 PC 连接,如图 4.2所示
将Zigbee模块0接上电源(5V电源或者双头USB 供电),串口用软排线连接到开发板的20Pin 双排母座 (UART),如图 4.3所示:
图 4.3快速测试
zigbee模块可以分为三种模式:1、设置模式;2 、数据传输模式;3、 数据接收模式。
1、设置状态。zigbee模块需要设置IP、网络ID、修改信道以及修改波特率等等,通过命令可以设置模块的参数。
2、数据传输状态。将数据从一个模块发送给zigbee网络中的另外一个模块。
3、数据接收状态。接收zigbee网络中另外一个模块传输过来的数据。
1.设置模式
打开串口调试助手“UartAssist.exe”,我们放在了i.MX6ULL终结者光盘资料\02_开发所需软件\串口调试助手这个路径下,连接zigbee模块1的串口,如图 4.4所示配置
我们在上面的串口调试助手连接zigbee模块1的的串口后,发送以下命令读取模块,如下表所示是zigbee模块1发送命令和接收命令,及读取到的zigbee模块1的信息
注意:配置完模块之后一定要发送重启包,配置才会生效。
我们启动开发板,开始设置zigbee模块0,i.MX6ULL终结者开发板文件系统选择 yocto 系统,大家可以在 i.MX6ULL 终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\03_Yocto 文件系统目录下面下载烧写。
烧写完成后,启动开发板,接串口控制台,如图 4.5所示:
图 4.5输入以下命令,查询zigbee模块0的IP地址,查询zigbee模块0的网络ID,查询zigbee模块0的信道,查询zigbee模块0的波特率,2表示我要发送命令。
zigbee_imx6ull 2 0 //查询zigbee模块0 IP地址
zigbee_imx6ull 2 1 //查询zigbee模块0 网络ID地址
zigbee_imx6ull 2 2 //查询zigbee模块0信道
zigbee_imx6ull 2 3 //查询zigbee模块0波特率
如图 4.6所示可知,zigbee模块0的IP地址是99 4a,网络ID是16 20,信道是13,波特率是08。
图 4.62.模块间通信
模块 0 和模块 1 正常通信模块的信道和网络 ID 必须相同,IP 地址必须不同。如果不满足,则需要重新设置。因为上面给大家示范了模块1修改模块命令,所以可以发现两模块的信道和网络ID是不相同的,我们开始设置模块1的信道和网络ID,使它和模块0的相同。
发送以下命令在串口调试工具,修改模块1的信道为13;
FE 06 90 21 00 00 12 13 FF
FE 05 90 21 00 00 10 FF //重启包
发送以下命令查询信道
FE 05 90 21 00 00 03 FF
串口接收图 4.7所示,可以发现信道已经被修改为13:
图 4.7发送以下命令在串口调试工具,修改模块1的网络ID为16 20;
FE 07 90 21 00 00 12 16 20 FF
FE 05 90 21 00 00 10 FF //重启包
发送以下命令查询网络ID
FE 05 90 21 00 00 02 FF
串口接收如下图 4.8所示,可以发现网络ID为16 20:
图 4.8模块1发送到模块0
模块0设置为输入以下命令,设置为接收模式,3表示我要接收另一个模块发送的数据。
zigbee_imx6ull 3
如下图 4.9所示,可以看见zigbee模块0进入接收状态
图 4.9模块1在串口控制台发送以下命令,注意!99 4A是模块0的IP地址,请大家根据自己的情况自行改写IP
FE 08 91 90 99 4A 00 AE 13 33 FF
如图 4.10所示,我们可以看到模块0接收到了数据
模块0发送到模块1
模块0设置为输入以下命令,发送数据,注意!1F 00是模块1的地址,请大家根据自己的IP自行改写。
1表示我要向另一个模块发送数据。
zigbee_imx6ull 1 FE 08 91 90 1F 00 00 AE 13 33 FF
如图 4.11所示,我们可以看到模块1接收到了数据,右边串口控制台显示了接收到的数据。
图 4.115. 继电器模块测试
继电器(英文名称:relay)是一种电控制器件,是当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。我们将继电器模块用排线连接在i.MX6ULL 终结者开发板的 GPIO 端口,产品连接如图 5.1所示:
图 5.1i.MX6ULL 终结者开发板里面的系统是 yocto 系统,大家可以在 i.MX6ULL 终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\03_Yocto 文件系统目录下面下载。
开发板开机以后,在超级终端中,输入以下命令运行程序
relay 1
如图 5.2所示,终端打印“/dev/relay_ctl sucess”,则表明程序运行成功。此时继电器打开,可以听到继电器清脆的响声。
图 5.2在超级终端中,输入以下命令运行程序
relay 0
如图 5.3所示,终端打印“/dev/relay_ctl sucess”,则表明程序运行成功。此时继电器闭合,可以听到继电器清脆的响声。
图5.3
来源:oschina
链接:https://my.oschina.net/u/4276395/blog/4501669