RTThreadIoTOS · 2020年11月11日

【RT-Thread作品秀】使用RT-Thread和TouchGFX实现DIY数字仪表

首发:RTThread物联网操作系统
作者:kk

01概述

    学习一门新技术,最好的办法是带着需求去学习,在项目中不断磨练自己,而不是漫无目的的去学,有了需求驱动,才更容易获得学习成果和完成项目后的成就感。

    本项目涉及到的技术有:RT-Thread系统、TouchGFX、MQTT、HTTP、JSON、微信小程序、面向对象编程思想等。每个关键词里都有很多值得深究的技术细节。

本项目所要实现的功能有:
1. 显示屏第一页显示时钟、近三天天气预报和传感器数值
2. 显示屏第二页可以进行传感器阈值设置和开关控制
3. 传感器:温湿度传感器(SHT30),空气质量传感器 (MQ135)
4. 传感器阈值语音提醒,闹钟语音提醒
5. 传感器数值可以通过微信小程序显示,可以通过微信小程序进行开关控制、设置阈值和闹钟时间
6. 支持二次开发,增加更多扩展功能

02硬件框架

image.png

image.png

03软件框架

    设备连接物联网平台,与物联网平台进行数据通信。物联网平台可将设备数据流转到其他阿里云产品中进行存储和处理。以下是物联网系统的拓扑架构:

image.png

    本项目的物联网后台部分采用的是阿里云物联网平台,借助阿里云丰富的服务,可为后期扩展更多实用的功能,STM32硬件平台作为设备终端,人机设备采用微信小程序。

04RT-Thread使用情况概述

RT-Thread系统介绍:
    RT-Thread的内核对象模型是一种非常有趣的面向对象实现方式。系统级的基础设施都是一种内核对象,例如线程,信号量,互斥量,事件,邮箱,消息队列和定时器,内存池,设备驱动等。
    对于每一种具体内核对象和对象控制块,除了基本结构外,还有自己的扩展属性(私有属性)。因此从面向对象的观点,可以认为每一种具体对象是抽象对象的派生,继承了基本对象的属性并在此基础上扩展了与自己相关的属性。下图则显示了 RT-Thread 中各类内核对象的派生和继承关系:

image.png

在对象管理模块中,定义了通用的数据结构,用来保存各种对象的共同属性,各种具体对象只需要在此基础上加上自己的某些特别的属性,就可以清楚的表示自己的特征。这种设计方法有两大优点:

  • 提高了系统的可重用性和扩展性,增加新的对象类别很容易,只需要继承通用对象的属性再加少量扩展即可;
  • 提供统一的对象操作方式,简化了各种具体对象的操作,提高了系统的可靠性。

RT-Thread使用情况:
内核部分:

  • 线程间同步:信号量、互斥量
  • 线程间通信:邮箱、消息队列
  • 内存管理:memheap管理算法
  • I/O 设备管理:PIN设备、I2C设备、UART设备、ADC设备、RTC设备、TOUCH设备

组件部分:

  • FinSH控制台;
  • ulog日志;
  • netdev网卡;
  • AT命令;
  • SAL 套接字抽象层;

软件包部分:

  • 阿里物联网SDK包:ali-iotkit-latest;
  • AT设备软件包:at\_device-latest;
  • TLS软件包:mbedtls-latest;
  • JSON软件包:cJSON-latest;
  • 网络工具包:netutils-latest;
  • 触摸屏软件包:gt9147-latest;
  • sht3x软件包:sht3x-latest;
  • webclient软件包:webclient-latest;

分类使用说明:
用于连接网络的部分:UART设备;netdev网卡;AT命令;SAL 套接字抽象层;at\_device-latest;

image.png
用于同步时钟的部分:RTC设备;netutils-latest;
用于获取天气的部分:cJSON-latest;webclient-latest;
用于获取温湿度的部分:I2C设备;sht3x-latest;
用于获取空气质量的部分:ADC设备;PIN设备;
用于触摸的部分:I2C设备;gt9147-latest;
用于链接阿里云物联网平台的部分:ali-iotkit-latest;mbedtls-latest;cJSON-latest;

05软件模块说明

TouchGFX介绍:
TouchGFX 4.13版具备了将动画推到60FPS的功能,还增加了可缓存容器、不完全帧缓冲区以及新的L8压缩格式等性能,这表明了 ToughGFX 不断追求优化性能和持续迭代的匠心。4.13版本还解决了另一个问题:嵌入式系统开发人员的用户界面可访问性。通过将TouchGFX Generator集成到 STM32CubeMX 中,经验较少的工程师在使用 TouchGFX 4.13 时,可以通过 STM32CubeMX 这个广为流行的 ST 实用软件程序快速启动项目。这样做的目的在于降低开发者入门门槛,让专业人士和爱好者都能受益于这个交互式的高效解决方案。
微信小程序链接阿里云物联网平台说明:
阿里云IOT物联网平台支持基于WebSocket的MQTT协议。可以首先使用WebSocket建立连接,然后在WebSocket通道上,使用 MQTT 协议进行通信,即MQTT over WebSocket!

06演示效果

image.png

image.png

07项目地址

https://gitee.com/Aladdin-Wan...
本项目更多的教程请参考博客内容:
https://blog.csdn.net/sinat\_31039061/article/details/104870466
RT-Thread
让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。
推荐阅读
【RT-Thread 开源作品秀】时光空间立方
【嵌入式AI入门日记】将 AI 模型移植到 RT-Thread 上(1)

原文链接:https://mp.weixin.qq.com/s/Ty_NtFW_gsh-WG74r2S43g
转载已获授权,禁止二转
推荐阅读
关注数
8072
内容数
181
小而美的物联网操作系统,经过14年的累积发展,RT-Thread 已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过4亿台,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息