加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

【RT-Thread作品秀】基于RT-Thread和阿里云的气压温度测量系统

2020/12/28
1003
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【RT-Thread作品秀】基于RT-Thread的气压温度测量系统

作者:安静的句型

概述(说明应用产生的背景、实现功能)

基于ART-Pi,利用MS-P2XD10气压传感器模块,L610-CN-00-MiniPCIe-10Cat模块,设计了一款气压温度测量系统,测量环境的大气压力和温度,并上报到阿里云,连接到物模型,实时显示。

开发环境(所采用的软、硬件方案)

硬件:ART-Pi;L610;LPS22HH

RT-Thread版本:4.0.3

开发工具及版本:MDK-v5.27.0.0

RT-Thread使用情况概述(简要总结下应用中RT-Thread使用情况:内核部分、组件部分、软件包部分、内核、其他)

使用了RT-Thread内核中使用线程、信号量、 邮箱、内存池等功能,在读取到传感器数据后,将气压和温度数据通过邮箱传输到阿里云发布线程,向云端发送。

调用了FinSH组件用于系统过程调试,监视线程应用情况、设备使用情况、其它信息等。

加载了多个软件包:

AT DEVICE软件包,用于L610的驱动。

WebClient软件包,测试L610功能。

ali_iotkit软件包,配置阿里云三元组信息,连接阿里云。

cJSON软件包,进行数据封装

硬件框架(概述应用所采用的硬件方案框图,并对核心部分做介绍)

利用ART-Pi作为主控单元,通过I2C接口与LPS22HH气压传感器模块通讯,获取气压和温度值。通过UART接口与L610Cat通讯模块通讯,与云端连接。

 

其中LPS22HH需注意连线,具体连线如下:

LPS22HH

ART-Pi

定义

VDD

P1-1

3.3V

VDDIO

P1-1

3.3V

SA0

P2-39

GND

SDA

P1-3

I2C-SDA

SCL

P1-5

I2C-SCL

CS

P1-1

3.3V

GND

P1-39

GND

其中VDD和VDDIO都是为LPS22HH供电,直接使用ART-Pi的3.3V电源。SA0是用于选择地址,接地后地址为0x5C。SDA和SCL是I2C接口“i2c3”。CS作为片选信号,接高电平后选择接口为I2C。

L610连线如下:

L610

ART-Pi

定义

UA1_TX

P1-10

UART-TX

UA1_RX

P1-8

UART-RX

AUTO_POWER_ON_1

P1-6

GND

AUTO_POWER_ON_2

P1-12

PI5                                                                                                                                                   

CTS短路帽不接。

电源短路帽接至VUSB。

连接USB接口供电和通讯。

软件框架说明(介绍应用所采用的软件方案框图、流程图等,并加以解说)

    在main.c文件中首先进行了L1610的上电,mqtt初始化,lps22hh初始化等,并创建了四个线程,LED闪烁线程、阿里云发送数据线程、接收阿里云命令线程、定时器线程。

    当前实现了基础功能:

  1. 通过控制台发送读取传感器数据指令后,在阿里云显示的功能。

后期还需继续完善两个功能:

  1. 硬件定时器功能,可按设定的时间间隔进行工作,采集传感器数据并上报云端,当前使能了timer13,但是定时器无法正常工作,程序是按照文档和原潘多拉板直接移植的,暂未找到问题原因。
  2. 阿里云下发命令功能,阿里云可以下发命令控制LED开关,下发命令控制硬件定时器定时间隔,随时修改传感器上报数据频率。除了阿里云在线调试界面,暂未找到如何下发命令方法。

还有一些问题:

  1. L610的初始化过程有些不太清楚,看at_device_l610.c文件,是在其中创建了一个初始化的线程并直接调用了,这个怎么能在main中统一初始化呢,现在是在main中延时了10秒等待初始化完成后再执行mqtt等初始化。
  2. 对接sensor设备框架未成功,尝试了创建sensor设备成功,但是初始化过程应该有问题,对于一个传感器两个参数的情况暂未了解透彻。

 

软件模块说明(介绍应用软件关键部分的逻辑、采用的实现方式等)

sensor_st_lps22hh应用模块

直接调用了st的函数库lps2hh_reg,首先创建了stmdev_ctx_t变量,完成了寄存器读写函数的实例化,在此需注意lps22hh的地址,选择了sa0为gnd后地址为0x5c,此地址为7位,可以直接在i2c设备框架中直接赋值无需右移。另外在读取寄存器值时应首先写地址然后才是读数据。参考st的polling文件,编写了初始化函数和读取数据函数,直接读取气压和温度值,并发送至邮箱。

api_ali应用模块

    参考ali-iotkit的mqtt_example文件,在ENV中配置好三元组信息后,进行mqtt初始化,读取三元组,与云端建立mqtt连接,并订阅了发布和读取主题。编写了数据发布函数,可由发布线程直接调用。试验了cJSON软件包,直接打包成json数据,试验了直接赋值字符串,均可正常实现。试验了接收命令线程,在阿里云中在线调试发送命令,可以在串口助手中看到接收的命令。

演示效果(演示效果请采用3张高清图片,并录制一段不少于1min视频解说应用所实现的效果,视频上传至B站或者腾讯视频或其他视频平台,给出链接即可)

 

 

 

 

 

比赛感悟(可以围绕这次比赛学到了什么,克服了哪些困难,有哪些收获,不低于200字)

  1. 第一次使用L610这种无线通讯模块,遇到了很多问题,从模块连接、模块自测、模块连云等,还出现了USB插座掉落等问题,感谢群里的leon和广和通技术王工,耐心的指点,解决了很多问题,例如没有例程中的算法,其实加载rtt的算法也可以正常运行;L610的连线和功能定义;AT+CLOUDAUTH错误;模块有多个程序版本(有的可以直接连阿里云,有的是通过ART-Pi连接);物联网卡初始化过程需要屏蔽掉CREG自测等等。
  2. lps22hh使用过程中的问题主要是连线,对于开发板的各个引脚连接不太清楚,查看手册后根据开发板上丝印尝试了CS和SA0等的连接,解决问题。
  3. 还有一些问题,sensor框架对接还是没有实现,硬件定时器不工作。
  4. ART-Pi及L610的手册还是有丰富和规范的空间。例如ART-Pi找各个功能模块和引脚定义比较复杂,后来看到了《RT-Thread 开源硬件ART-Pi引脚扩展说明》简化了很多工作,还可以有很多类似工作。

L610的手册很多而且是一个个给出,没有一个清晰的了解。希望能有一个包括连线说明、快速使用、自测方法、移植方法等的一个循序渐进的说明手册。

  1. 没有提供IAR的工程模板,用MDK编译太慢了。另外文件结构也与原来的stm32文件夹下的其他板不一样,没有在board中找到kconfig文件,希望能够统一或者能有指导文件,如何创建IAR工程,如何增加外设等。
  2. 后续还需在上位机或者APP上做一些工作,形成完整的可应用系统。
  • 代码地址.txt
  • 【RT-Thread作品秀】基于RT-Thread的气压温度测量系统.docx
    描述:文档

相关推荐

电子产业图谱