更新readme

This commit is contained in:
Aladdin-Wang 2020-05-06 20:58:37 +08:00
parent 3bae5620d5
commit 27a200a10a

View File

@ -1,9 +1,12 @@
# 【RT-Thread作品秀】使用RTThread和TouchGFX实现DIY数字仪表
## 概述
学习一门新技术,最好的办法是带着需求去学习,在项目中不断磨练自己,而不是漫无目的的去学,有了需求驱动,才更容易获得学习成果和完成项目后的成就感。
通过本项目涉及到的技术有RT-Thread系统、TouchGFX、MQTT、HTTP、JSON、微信小程序、面向对象编程思想等。每个关键词里都有很多值得深究的技术细节。
学习一门新技术,最好的办法是带着需求去学习,在项目中不断磨练自己,而不是漫无目的的去学,有了需求驱动,才更容易获得学习成果和完成项目后的成就感。
通过本项目涉及到的技术有RT-Thread系统、TouchGFX、MQTT、HTTP、JSON、微信小程序、面向对象编程思想等。每个关键词里都有很多值得深究的技术细节。
本项目所要实现的功能有:
1. 显示屏第一页显示时钟、近三天天气预报和传感器数值
2. 显示屏第二页可以进行传感器阈值设置和开关控制
3. 传感器温湿度传感器SHT30空气质量传感器 MQ135
@ -13,36 +16,55 @@
## 硬件框架
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200505120933913.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMxMDM5MDYx,size_16,color_FFFFFF,t_70)
**硬件端:**
主控芯片STM32F746IGT6
操作系统RT-Thread v4.0.2
GUITouchGFX
开发工具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
## 软件框架
设备连接物联网平台,与物联网平台进行数据通信。物联网平台可将设备数据流转到其他阿里云产品中进行存储和处理。以下是物联网系统的拓扑架构:
设备连接物联网平台,与物联网平台进行数据通信。物联网平台可将设备数据流转到其他阿里云产品中进行存储和处理。以下是物联网系统的拓扑架构:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200505132626399.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMxMDM5MDYx,size_16,color_FFFFFF,t_70)
本项目的物联网后台部分采用的是阿里云物联网平台借助阿里云丰富的服务可为后期扩展更多实用的功能STM32硬件平台作为设备终端人机设备采用微信小程序通信协议为MQTT。
本项目的物联网后台部分采用的是阿里云物联网平台借助阿里云丰富的服务可为后期扩展更多实用的功能STM32硬件平台作为设备终端人机设备采用微信小程序通信协议为MQTT。
## RT-Thread使用情况概述
**RT-Thread系统介绍**
RT-Thread的内核对象模型是一种非常有趣的面向对象实现方式。系统级的基础设施都是一种内核对象例如线程信号量互斥量事件邮箱消息队列和定时器内存池设备驱动等。对于每一种具体内核对象和对象控制块除了基本结构外还有自己的扩展属性私有属性。因此从面向对象的观点可以认为每一种具体对象是抽象对象的派生继承了基本对象的属性并在此基础上扩展了与自己相关的属性。下图则显示了 RT-Thread 中各类内核对象的派生和继承关系:
RT-Thread的内核对象模型是一种非常有趣的面向对象实现方式。系统级的基础设施都是一种内核对象例如线程信号量互斥量事件邮箱消息队列和定时器内存池设备驱动等。对于每一种具体内核对象和对象控制块除了基本结构外还有自己的扩展属性私有属性。因此从面向对象的观点可以认为每一种具体对象是抽象对象的派生继承了基本对象的属性并在此基础上扩展了与自己相关的属性。下图则显示了 RT-Thread 中各类内核对象的派生和继承关系:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200505144709939.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMxMDM5MDYx,size_16,color_FFFFFF,t_70)
在对象管理模块中,定义了通用的数据结构,用来保存各种对象的共同属性,各种具体对象只需要在此基础上加上自己的某些特别的属性,就可以清楚的表示自己的特征。这种设计方法有两大优点:
在对象管理模块中,定义了通用的数据结构,用来保存各种对象的共同属性,各种具体对象只需要在此基础上加上自己的某些特别的属性,就可以清楚的表示自己的特征。这种设计方法有两大优点:
- 提高了系统的可重用性和扩展性,增加新的对象类别很容易,只需要继承通用对象的属性再加少量扩展即可;
- 提供统一的对象操作方式,简化了各种具体对象的操作,提高了系统的可靠性。
@ -80,12 +102,16 @@ RT-Thread的内核对象模型是一种非常有趣的面向对象实现方式
用于获取空气质量的部分ADC设备PIN设备
用于触摸的部分I2C设备gt9147-latest
用于链接阿里云物联网平台的部分ali-iotkit-latestmbedtls-latest;cJSON-latest;
## 软件模块说明
**TouchGFX介绍**
TouchGFX 4.13版具备了将动画推到60FPS的功能还增加了可缓存容器、不完全帧缓冲区以及新的L8压缩格式等性能这表明了 ToughGFX 不断追求优化性能和持续迭代的匠心。4.13版本还解决了另一个问题嵌入式系统开发人员的用户界面可访问性。通过将TouchGFX Generator集成到 STM32CubeMX 中,经验较少的工程师在使用 TouchGFX 4.13 时,可以通过 STM32CubeMX 这个广为流行的 ST 实用软件程序快速启动项目。这样做的目的在于降低开发者入门门槛,让专业人士和爱好者都能受益于这个交互式的高效解决方案。
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
阿里云IOT物联网平台支持基于WebSocket的MQTT协议。可以首先使用WebSocket建立连接然后在WebSocket通道上使用 MQTT 协议进行通信即MQTT over WebSocket
## 演示效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200505163419387.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMxMDM5MDYx,size_16,color_FFFFFF,t_70)