前言:距离上一次发帖已经有两周多了,这两周的心态真的觉得变化好多,在医院照顾家人的时候看到了人的脆弱,在其中遇到了一些病友,我拿出自己的一份热情来帮助他们,这可能会给他们带来一份温暖吧,所以,真诚的希望各位坛友都要照顾好自己的身体哦。好了,书回正传吧。我与KW41的渊源很深,深到可以追溯到2015年的那个夏天。当时因其“灵巧”的通讯(thread)吸引着我,今天我终于如愿以偿,可以来试试它。
今天我带来的是基于KW41的Thread通讯,实现终端向节点发送采集到的温度数据,上一节是利用KW41采集DS18B20的温度数据,当然了,当时没有配备thread通讯,而且当时是采用MDK的方式实现的,不过如果想使用thread通讯的话,需要使用NXP提供的IAR的例程和资料才行,使用MDK时非常麻烦的,因此,为了可以更好更稳的体验thread,因此我还是本着“少走弯路”的心态,直接使用thread的IAR例程好了。本次使用的例程为D:\项目评测202401-FRDM-KW41Z\SDK_2_2_3_FRDM-KW41Z\boards\frdmkw41z\wireless_examples\thread的router_eligible_device
在这个例程上来添加DS18B20的代码和初始化,并且实现调用。
由于之前对KW41已经较为熟悉了,所以基础操作就不多说了,直接来移植DS18B20吧。首先将DS18B20的.c和.h文件复制到正在使用的工程之中,并且需要修改IO,本次使用的是PTA19接口。
将DS18B20的文件都移植过来之后,就需要正确的调用了,首先是初始化DS18B20,使用的函数是DS18B20_Init();
初始化之后就需要找到正确的地方调用了。如下图所示。
在工程中找到app_temp_sensor.c中关于温度采集的代码,原来例程是采用ADC采集芯片内部的温度进行数据上报,本次采用的是DS18B20采集的温度进行上报。于是需要将温度返回的路径修改为DS18B20采集的温度路径。修改好之后就可以编译工程了,工程基本上是无问题的,当然,没问题就把程序download在目标板之中吧。下载之后,目标板复位,会提示创建一个网络还是加入一个网络,当然是加入网络了,选择一个没被修改的开发板作为创建网络节点,让修改过的开发板做终端,分别输入thr create和thr join。操作完成之后如下图所示。
网络搭建成功之后,就可以按下终端的SW2来实现温度数据的上报触发喽,其实如果想diy,也可以用定时器的方式实现定时上传温度也是可以的。最后效果如下图所示。可以清晰的看出终端采集的温度可以传送给节点,节点并且可以打印出来。
至此,基于thread的基础通讯就完成喽,《联网——基于Thread通信的温度交互》,其实总的来说,针对thread的网络部分,我们如果没有特殊需求的话,没必要进行修改,其实就可以像我一样,直接将自己需要的应用,添加在工程里就好了,非常容易上手。当然,有些人可能会问,这个温度数据怎么不对劲呢?哈哈,可能是这个传感器模块故障了,晚一些修复一下就好喽,哈哈哈。最后的最后,希望大家也能来玩一下thread或者一些其他的物联网通讯哦,欢迎下方来聊~