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

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

本次做一个手机通过mqtt服务器控制板子上的LED亮灭,板子也可以将按钮状态变化通过mqtt服务器上报给手机的功能
硬件上,从原理图看,LED接到了PA21,高电平点亮。
在这里插入图片描述

按键则时接到了PA11,并接了一个上拉电阻。
在这里插入图片描述

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

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

先定义LED和key的io引脚
在这里插入图片描述

再进行引脚的初始化,初始化中进行了LED亮灭2次闪烁,表示初始化成功。定义按键引脚为上升沿中断,中断中取反LED的亮灭状态,并更新led_state的值。
在这里插入图片描述

然后在main函数中调用初始化。
在这里插入图片描述

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

在这里插入图片描述

初始化 mqtt
在这里插入图片描述

Mqtt连接
在这里插入图片描述

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

发布则是进行对应主题的发布操作
在这里插入图片描述

接下去就是mqtt主处理功能函数,其中主要是维持mqtt连接,并根据本地的按键控制的LED状态是否改变,决定是否publish上报改状态
在这里插入图片描述

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

编译,下载运行
在这里插入图片描述

使用mobaxterm打开端口终端,可以看到如下打印信息
在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

打开手机的MQTTool工具app(iPhone)
点击connect
在这里插入图片描述

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

在这里插入图片描述

App切换到subscribe选项卡,输入 KEY/STATE 订阅主题,并点击Subscribe订阅该主题
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

同时串口终端中输出对应的信息
在这里插入图片描述

而在手机端的app上,切换到subscr选项卡,就可以看到每按一次按键,开发板publish发不上来的消息了
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

同时,开发板在收到上述的两次publish主题消息之后,还会在串口终端上打印如下内容。
在这里插入图片描述

在emqx上可以看到完整的主题
在这里插入图片描述

以及订阅方了
在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/283880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VuePress安装及使用

前言 VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。 例如:JavaFX 前言 这个博客网站就是使用 VuePress 生成的&am…

「Verilog学习笔记」交通灯

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule triffic_light(input rst_n, //异位复位信号,低电平有效input clk, //时钟信号input pass_request,output wire[7:0]clock,output reg…

Kotlin 笔记 -- Kotlin 语言特性的理解(二)

都是编译成字节码,为什么 Kotlin 能支持 Java 中没有的特性? kotlin 有哪些 Java 中没有的特性: 类型推断、可变性、可空性自动拆装箱、泛型数组高阶函数、DSL顶层函数、扩展函数、内联函数伴生对象、数据类、密封类、单例类接口代理、inter…

PostgreSQL常用命令

数据库版本 :9.6.6 注意 :PostgreSQL中的不同类型的权限有 SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE 和 USAGE。 1. 登录PG数据库 以管理员身份 postgres 登陆,然后通过 #psql -U postgres #sudo -i -u postgres …

备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

MySQLhttps://www.mysql.com/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码,使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变,同时添加静态分区,分区字段为etl_da…

【PWN】学习笔记(三)【返回导向编程】(下)

目录 课程回顾ret2libc![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ebe1a9a9e54f4319946621dbe89c5774.png)做题 ret2libc2ret2libc3 课程 课程链接:https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12e7b4e6 课程…

互联网加竞赛 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 🧿 更多资…

4.配置系统时钟思路及方法

前言: 比起之前用过的三星的猎户座4412芯片,STM32F4的系统时钟可以说是小巫见大巫,首先我们需要清晰时钟产生的原理:几乎大多数的芯片都是由晶振产生一个比较低频的频率,然后通过若干个PLL得到单片机能承受的频率&…

模拟IC设计-学习笔记

写在前面:本文是我自己学习b站上up主(jrilee讲电路)的模集课程时记的笔记,原课程:模拟IC设计 第一讲 -- Device and modeling (I)_哔哩哔哩_bilibili 目录 器件基础 求输出电阻 MOS管的小信号模型,拉扎维书上常用的是π模型&am…

Flutter ios 使用ListView 。滚动时 AppBar 改变颜色问题

在Ios 中 列表滚动条向下滚动一段距离后 会导致 AppBar 颜色改变 可以给 AppBar 或者 AppBarTheme。 scrolledUnderElevation: 0.0 属性 全局: MaterialApp(theme: ThemeData(appBarTheme: AppBarTheme(scrolledUnderElevation: 0.0)) ) 局部: App…

硬件基础-电阻

电阻 1.品牌 厚声、风华,三星、罗姆、松下、KOA 2.分类 插件 碳膜电阻:精度-5 J 是在高阻,高压和高温应用中 属负温度系数电阻 金属膜:-1 F 贴片 电阻标识:(含义:阻值大小和精度&a…

keithley 吉时利6221源表

特点 优势 10 14 Ω 输出阻抗 提供广泛的输出阻抗,确保负载中有稳定的电流源。 65000 点源内存 允许直接从电流源执行全面的测试电流扫描。 输出 0.1V 至 105V 的恒流电压,10mV 步长 防止潜在损坏对过电压敏感的设备。 源交流电源范围为 4pA 至…