当前位置:首页>家电维修>净化器>

蓝牙净化器图片(远程操作净化器图片)

蓝牙净化器图片(远程操作净化器图片)

更新时间:2022-01-28 18:02:08

此款空气净化器我使用的是Nordic的一款蓝牙SOC-NRF52832,其不仅支持低功耗蓝牙BLE,并且也对蓝牙mesh网络有着良好的支持。相信蓝牙mesh网络大家并不陌生,其在物联网领域以及智能家居中都有着广泛的应用,支持数量庞大的节点以及多种节点模型,完善且安全的协议都使得它一直以来都是此领域的香饽饽。在此文章中,我就来分享一下我对我的净化器软件层面上的一些更新,使其支持mesh网络控制。

首先我需要注意的一点是,蓝牙mesh使用的虽然还是BLE低功耗蓝牙的协议栈,但是他和BLE设备之间是不能直接进行通信的,所以代码上会有很大调整。在Nordic官网上,我们可以看到由Nordic提供针对mesh的SDK。

这个SDK有很多版本,下载较新版本的SDK比较好,可以体验更多的功能,也方便后期的升级。这里我使用的是SDK for mesh V4.2.0 这个版本中Nordic加入了一些常用的模型到SDK中,例如sensor以及DFU,详情可见Nordic的更新简介。

下载好了SDK for mesh 之后,还需要下载一下BLE的SDK包,因为之前我说过,mesh是基于BLE开发的,所以BLE的SDK包我们也需要,这里我使用的是SDK16

由于Nordic提供的mesh工程是在SES下建立的,所以我预先在电脑中安装好了SES,这里不多赘述。下载这两个文件之后,我在电脑中新建了一个文件夹,把这两个文件放到了同一目录下,接着打开了SDK for mesh的example文件夹,这里面存放着许多例程,这里我基于light-lightness例程来修改,以达到最终目的。

light-lightness例程实际上就是控制led亮度的一个例程,使用的pwm来控制led亮度,这其实和我的空气净化器需要的一路电机转速控制很是类似,故我在这个例程上修改,添加其他模型。点开light-lightness文件夹之后,发现里面还有两个文件夹,一个是server一个是client,我们使用server来修改,点开之后打开NRF52832的SES工程,如下

观察左侧的工程树,我们可以发现其实和BLE的工程还是有比较多的类似之处,各个层级分层目录很是明显,首先我编译一下工程,发现没有错误没有警告。接着就可以开始修改例程了,首先我把OLED屏幕以及光线传感器的代码移植过来,在工程中新建一个文件夹放入代码,并且添加对应的头文件路径。

接着修改一下pwm的对应引脚,由于在mesh工程中,pwm使用的是软件pwm库,所以pwm的引脚可以任意定义。这里对应我的电路板,修改为第五脚

熟悉Nordic的SDK的同学应该都知道,大部分事情都是在回调函数中处理的,对于light-lightness模型,当模型的状态更新的时候,会调用set_lightness_cb这个回调函数,于是我在回调函数中添加了一个转速的显示函数,用来在改变转速的时相应的显示。

编译工程,然后接上jlink,点击target工具栏下面的连接之后,依次执行擦除和下载指令,程序以及协议栈就会被下载到芯片当中了。下载完成后控制台显示如下

接着给电路板接上电源,手机上安装NRF mesh软件之后,就可以搜索到我的电路板的信号了,此时显示屏也有了显示数据。

此时的电路板处在未配网状态,需要使用手机先对其进行配置,按照手机上的提示依次操作即可,配置好之后点开element目录,发现其中有很多模型,点击generic level server模型,绑定app key之后,就可以使用最下方的滑动条来控制电机转速了。

下面我需要添加的是控制负离子发生器功能,其需要的控制量是开关量,所以我选择添加一个最基本的模型:generic on-off。在工程中新建一个文件夹, 添加generic on-off模型的相关文件,添加好之后如下所示

由于新加入了模型,我们就需要修改一下配置头文件,在工程树中找到nrf_mesh_config_app.h文件,修改其中的ACCESS_MODEL_COUNT(模型总数)以及ACCESS_ELEMENT_COUNT(元素总数)以及ACCESS_SUBSCRIPTION_LIST_COUNT(订阅列表)

修改好之后就可以在main.c文件中添加generic on-off模型的相关初始化以及回调函数了

由于需要传输pm2.5传感器的数据,我还需要添加sensor模型,和以上添加generic on-off模型类似,添加sensor模型相关文件以及相关初始化以及回调函数,由于sensor模型的回调函数有很多,我用到的只有一个,所有我只贴上用到的那个回调函数的代码,其余函数都参考sensor例程编写,并无改动。

由于pm2.5传感器使用串口发送数据,还需要添加串口的相关代码,并且在app_config.h函数中声明相关外设的宏

接着在main.c文件的initialize函数中添加创建软件定时器相关代码,在其回调函数中周期性更新显示数据以及发布数据

编译工程并且下载到电路板上,可以看到pm2.5数据显示正常,重新对电路板进行配网之后,可以看到其中有了3个元素,新添加的generic on-off模型以及sensor模型都可以正常显示。点击generic on-off模型,绑定app-key之后,即可控制负离子发生器的开启和关闭。

为了测试mesh通信是否正常,我制作了一个小的测试板,将其烧录light-lightness的client工程以及配置之后,我们需要配置一下两者的订阅以及发布地址。给电路板的light-lightness模型下添加一个订阅组地址,以及给测试板的light-lightness模型下添加一个发布组地址,注意两者地址需要相同,接着就可以使用测试板的按键来控制空气净化器的电机转速。

,