Tristan_C · 2023年10月16日 · 浙江

【XR806开发板试用】+ 通过网络控制led并上报按键状态

通过网络控制led并上报按键状态

本次做一个手机通过mqtt服务器控制板子上的LED亮灭,板子也可以将按钮状态变化通过mqtt服务器上报给手机的功能
硬件上,从原理图看,LED接到了PA21,高电平点亮。
image.png
按键则时接到了PA11,并接了一个上拉电阻。
image.png

因此,设计上就可以通过按键上升沿中断,作为按键按下一次的事件,然后本地取反一次LED灯,并publish灯的状态给手机端,同时,会subscribe订阅灯的状态,接收手机端publish过来的LED控制数据。而手机端则可以publish控制数据,其中0作为关灯,发送1作为开灯,同时也subscribe订阅板子publish上来的LED状态数据。
Mqtt的服务器使用自行搭建的emqx broker
image.png

下面就开始整代码。首先拷贝mqtt demo代码默认配置
cp project/demo/hello_demo/gcc/defconfig .config
然后先make build_clean将之前的代码清掉
然后使用vim打开mqtt的main.c代码

先定义LED和key的io引脚
image.png

再进行引脚的初始化,初始化中进行了LED亮灭2次闪烁,表示初始化成功。定义按键引脚为上升沿中断,中断中取反LED的亮灭状态,并更新led_state的值。
image.png

然后在main函数中调用初始化。
image.png

下面进行mqtt服务器相关参数的配置,如下,这里定义了两个topic,分别是MQTT_DEMO_TOPIC和MQTT_DEMO_PUB_TOPIC,前者订阅LED的状态,以控制LED的亮灭,后者则可上报按钮状态。HOST_NAME为mqtt服务器主机的ip地址或者域名

image.png

初始化 mqtt
image.png

Mqtt连接
image.png

订阅以及订阅的消息回调,其中在消息回调中,判断接收到的消息是字符0还是字符1,并进行响应的LED亮灭操作。

发布则是进行对应主题的发布操作
image.png

接下去就是mqtt主处理功能函数,其中主要是维持mqtt连接,并根据本地的按键控制的LED状态是否改变,决定是否publish上报改状态
image.png

最后就是主函数初始化硬件、功能和网络,并启动mqtt主进程了。

编译,下载运行
image.png

使用mobaxterm打开端口终端,可以看到如下打印信息
image.png

Wlan的wifi ssid和password是通过命令行command line的方式进行配置的
image.png

image.png

我们需要使用的主要是上面的三条,分别是
配置ssid:net ap set ssid ssid_example
配置password:net ap set psk psk_example
使能启动连接:net ap enable
连接wifi并成功连接mqtt服务器
image.png

此时mqtt broker服务器上也就能看到开发板设备连接上了

image.png

打开手机的MQTTool工具app(iPhone)
点击connect
image.png

就可以在emqx上看到对应的手机设备连接了

image.png

App切换到subscribe选项卡,输入 KEY/STATE 订阅主题,并点击Subscribe订阅该主题
image.png

轻按开发板上的按钮,可以看到板载的LED亮灭切换

image.png
image.png

同时串口终端中输出对应的信息
image.png

而在手机端的app上,切换到subscr选项卡,就可以看到每按一次按键,开发板publish发不上来的消息了
image.png

再切换到Publish选项卡,输入 LED/STATE 内容作为publish发布的主题
此时在Message框中输入1,并点击publish,就可以看到灯亮起

image.png
image.png
而输入0并点击publish发布,则看到灯灭

image.png
image.png
同时,开发板在收到上述的两次publish主题消息之后,还会在串口终端上打印如下内容。
image.png

在emqx上可以看到完整的主题

image.png
以及订阅方了
image.png

至此,小制作实现了LED和按钮的功能,并通过mqtt,实现手机与板子之间的状态上报和控制信息下行。

推荐阅读
关注数
13823
内容数
139
全志XR806开发板相关的知识介绍以及应用专栏。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息