Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
2024-RSOC
[2024-RSOC]day5,MQTT协议阿里云学习与外设软件包学习
发布于 2024-08-04 21:40:26 浏览:264
订阅该版
[tocm] 本文是关于RT-Thread丰富软件包的介绍和阿里云物联网平台的使用,由于本人也是初次接触的一名小白,文中如有不合适之处欢迎指正。 ### RT-Thread的软件包 ------------ RT-Thread 软件包是运行在 RT-Thread 物联网操作系统平台之上的通用代码库,非常简单易用,适合用来进行快速开发。这就相当于我们不需要重新去写底层设备复杂的驱动了,我们只需要调用官方提供的API接口就可以进行开发了,或者说我们只需要关注应用层了,这就极大的提高了效率。下面我将以通过软件包来实现温湿度采集这个简单的例子来详细说明。 下面这个是非软件包,而是自己编写因此步骤特别繁多。 ```c #include
#include
#include
#include "aht10.h" // AHT挂载的总线名字 #define AHT10_I2C_BUS "i2c3" // 创建AHT线程时待用 #define THREAD_PRIORITY 25 #define THREAD_STACK_SIZE 2048 #define THREAD_TIMESLICE 5 // AHT线程指针 rt_thread_t AHT10 = RT_NULL; // AHT测试样例 void AHT10_Test(void *parameter) { // AHT设备指针 aht10_device_t Dev = RT_NULL; // Humi:湿度值,Temp:温度值 float Humi, Temp; // 初始化设备 Dev = aht10_init(AHT10_I2C_BUS); if (Dev == RT_NULL) { rt_kprintf("AHT10_init Fail"); return; } while (1) { // 读取温湿度值 Humi = aht10_read_humidity(Dev); Temp = aht10_read_temperature(Dev); // 没有下载rt_vsprintf_full软件包的时候 //rt_kprintf("Humi: %d.%d\n", (int)Humi, (int)(Humi * 10) % 10); //rt_kprintf("Temp: %d.%d\n", (int)Temp, (int)(Temp * 10) % 10); // 配合rt_vsnprintf_full软件包使用 rt_kprintf("Humi: %f, Temp: %f\n", Humi, Temp); rt_thread_mdelay(1000); } } void AHT10_Creat_Thread(void) { // 创建线程 AHT10 = rt_thread_create("AHT10", AHT10_Test, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); // 创建成功就启动 if (AHT10 != RT_NULL) { rt_thread_startup(AHT10); } else { rt_kprintf("AHT10_Thread Create Fail"); } } // 导出Shell命令 MSH_CMD_EXPORT(AHT10_Creat_Thread, This Function will creat a AHT10 thread.); ``` 而软件包就简单许多 ```c #define AHT_I2C_BUS_NAME "i2c3" void AHT_TEST(void) { unsigned int count = 1; aht10_device_t AHT = aht10_init(AHT_I2C_BUS_NAME); float Temp, Humi; while (count > 0) { Humi = aht10_read_humidity(AHT); Temp = aht10_read_temperature(AHT); rt_kprintf("Tem: %.2f\n",Temp); rt_kprintf("Humi: %.2f \%\n",Humi); rt_thread_mdelay(1000); count++; } } MSH_CMD_EXPORT(AHT_TEST,AHT_TEST); ``` 下一节阿里云 ### MQTT协议(搭配阿里云平台) MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。 运行框架 Client:客户端,即我们使用的设备。 使用MQTT的程序或设备。客户端总是通过网络连接到服务端。它可以 发布应用消息给其它相关的客户端。 订阅以请求接受相关的应用消息。 取消订阅以移除接受应用消息的请求。 从服务端断开连接。 Server:服务端 作为发送消息的客户端和请求订阅的客户端之间的中介。服务端 接受来自客户端的网络连接。 接受客户端发布的应用消息。 处理客户端的订阅和取消订阅请求。 转发应用消息给符合条件的已订阅客户端。 Topic Name:主题名 附加在应用消息上的一个标签,服务端已知且与订阅匹配。服务端发送应用消息的一个副本给每一个匹配的客户端订阅。 Subscription: 订阅 订阅相应的主题名来获取对应的信息。 Publish:发布 ## 阿里云环境搭建 步骤一 进入阿里云物联网平台,然后开通公共实例,如下图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/f1ad2ac0319d3a5ddbf9ecdbe8f4c6ea.png.webp) 步骤二 在设备管理中新建一个产品,如下图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/4c1cd07f3da4d77cf4d2c8ab189b1a4e.png.webp) 步骤三 查看我们新建的产品,然后将自定义Topic中第一个改成发布和订阅,因为我们想要让我们的板子既可以给云平台发布消息也想从云平台上订阅消息,如下图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/c0a2121c23dc5bf779edccceeeeab2f2.png.webp) 步骤四 在设备管理中新建一个设备,如下图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/8010b34a8504e7ada0c5d7acbffc2c84.png.webp) 步骤五 在env工具中使能RW007 wifi模块,因为上传云平台肯定少不了wifi呀,然后在env中找到阿里云的软件包,修改如下图中框住的四行,就是产品名称,产品密钥,设备名称,设备密钥,然后通过pkgs --update命令下载到本地。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/47dad72d897fb75467b47de3408c2ba0.png.webp) 步骤六 这就是最后一步喽,修改mqtt-example.c,这一步也是稍微有点复杂的一步了,根据你的需求自由发挥,你可以通过修改代码将任何传感器采集到的数据上传云端,我就展示一个简单一点的,将一个固定的温度值上传云端,修改的代码如下图所示 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/eac4af2e7145307c77ec0643de93dfab.png.webp) 结果展示 将代码烧录到板子上后,进行如下操作,如图所示 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/dd0068437d607f28515dc700afde0a1e.png.webp) 同时在阿里云平台上的设备物模型数据中也能看到温度值的变化,如下图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240804/f4bac742f842b727acc071d407018277.png.webp)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
PUVC_7730
这家伙很懒,什么也没写!
文章
4
回答
0
被采纳
0
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部