20 Star 80 Fork 44

Aladdin-Wang / hellotouchGFX

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

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

概述

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

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

本项目所要实现的功能有:

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

硬件框架

在这里插入图片描述

硬件端:

主控芯片:STM32F746IGT6

操作系统:RT-Thread v4.0.2

GUI:TouchGFX

开发工具:MDK5.29、TouchGFX 4.13.0 Designer、STM32CubeMX5.6.0、微信开发者工具

时间获取:软件模拟RTC+NTP自动网络对时

天气获取:通过http客户端get心知天气网络API获取天气信息

温湿度传感器SHT30:使用I2C总线获取数据

环境传感器MQ-135(氨气、甲苯):使用ADC读取数据和IO口读取阈值

网络:使用ESP8266当作无线网卡来链接网络

5寸电容屏:使用I2C总线驱动触摸,LCD使用RGB565格式,GUI使用touchgfx

中文TTS文字转语音模块:使用UART发送文字转换语音

服务器端:

云端服务器:阿里云物联网平台

通信方式:MQTT

微信小程序:

编程语言:CSS、XML、JavaScript

通信方式:MQTT over WebSocket

软件框架

​ 设备连接物联网平台,与物联网平台进行数据通信。物联网平台可将设备数据流转到其他阿里云产品中进行存储和处理。以下是物联网系统的拓扑架构: 在这里插入图片描述 ​ 本项目的物联网后台部分采用的是阿里云物联网平台,借助阿里云丰富的服务,可为后期扩展更多实用的功能,STM32硬件平台作为设备终端,人机设备采用微信小程序,通信协议为MQTT。

RT-Thread使用情况概述

RT-Thread系统介绍:

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

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

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

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; 在这里插入图片描述

用于同步时钟的部分:RTC设备;netutils-latest;

用于获取天气的部分:cJSON-latest;webclient-latest;

用于获取温湿度的部分:I2C设备;sht3x-latest;

用于获取空气质量的部分:ADC设备;PIN设备;

用于触摸的部分:I2C设备;gt9147-latest;

用于链接阿里云物联网平台的部分:ali-iotkit-latest;mbedtls-latest;cJSON-latest;

软件模块说明

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!

演示效果

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述在这里插入图片描述

视频演示链接:

https://www.bilibili.com/video/BV1o54y1Q7nQ/

项目详细教程(未完待续):

1.使用RTThread和TouchGFX实现DIY数字仪表(一)——使用STM32CUBMX5.6移植touchGFX4.13

2.使用RTThread和TouchGFX实现DIY数字仪表(二)——把TouchGFX移植到RTThread系统

3.使用RTThread和TouchGFX实现DIY数字仪表(三)——获取温湿度传感器数据

4.使用RTThread和TouchGFX实现DIY数字仪表(四)——同步网络时间

5.使用RTThread和TouchGFX实现DIY数字仪表(五)——同步天气信息

6.使用RTThread和TouchGFX实现DIY数字仪表(六)——链接阿里云物联网平台

7.使用RTThread和TouchGFX实现DIY数字仪表(七)——使用MQTT.fx模拟手机设备进行M2M设备间通信

8.使用RTThread和TouchGFX实现DIY数字仪表(八)——开发微信小程序

BSD 3-Clause License Copyright (c) 2019, Aladdin-Wang All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

touchGFX DEMO 展开 收起
C
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/Aladdin-Wang/hellotouchGFX.git
git@gitee.com:Aladdin-Wang/hellotouchGFX.git
Aladdin-Wang
hellotouchGFX
hellotouchGFX
master

搜索帮助

14c37bed 8189591 565d56ea 8189591