项目简介——基于GD32+FreeRTOS+LVGL的智能通用控制Demo

项目简介——基于GD32+FreeRTOS+LVGL的智能通用控制Demo

一、外观简介

外观以游戏机外观为参考,分为两个按键区域,中间为屏幕显示区域

Pasted image 20241026143253.png

(当然作为游戏机也是可以的,可以文末查看视频效果)

Pasted image 20241026161810.png

底部为LED指示灯接口和SD卡接口:

[Pasted image 20241026143414.png]

顶部是通用USB类外设IO接口,用于连接各类外设、电源按键以及TypeC充电与调试接口

[Pasted image 20241026143505.png]

二、设备功能简介

采用GD32F303x+FreeRTOS+Lvgl的实现的WIFI/蓝牙/4G/CAN通信的综合控制器Demo项目,可应用于智能家具WIFI/蓝牙控制、智能中控屏、掌上CAN控制器以及户外远程控制器、NES游戏机等。

1. 交互控制

控制器采用一块3.5寸的16位40Pin并口屏幕显示,最多支持12个独立按键输入控制,用户可以通过按键选择打开各类应用,支持软件关机和按键关机。

[Pasted image 20241026142449.png]

[Pasted image 20241026142923.png]

2. 系统设置

(1)系统信息

软件移植了FreeRTOS V9.9以及LVGL V8.4,完成整个系统功能框架与显示控制的搭建

[Pasted image 20241026144351.png]

(2)数据采集

板载有3路ADC采集,分别用于电池电压检测、充电电压检测、NTC温度检测

[Pasted image 20241026144610.png]

(3)系统更新

系统支持SD卡文件更新、WIFI/蓝牙、4G、CAN以及TypeC调试串口更新

[Pasted image 20241026145325.png]

(4)亮度调节

屏幕采用PWM调光设置亮度,支持亮度任意调节

[Pasted image 20241026152307.png]

3. 串口通信

通过TypeC可以连接上位机,实现设备控制、查看数据信息、OTA升级等功能

[Pasted image 20241026145632.png]

4. CAN通信

控制器的USB类外设接口可以连接CAN收发器实现CAN通信功能:

[Pasted image 20241026151021.png]

配合CAN上位机完成设备控制、查看数据信息、OTA升级等功能

[Pasted image 20241026152405.png]

5. WIFI/蓝牙通信

控制器的USB类外设接口可以连接串口类的外设模块实现WIFI/蓝牙通信功能,这里的WIFI/蓝牙模块主控采用的是ESP32,采用ESPIDF开发,同样基于FreeRTOS:

[Pasted image 20241026152937.png]

支持WIFI手动配网:

[Pasted image 20241026153506.png]

支持设备接入云平台,实现数据上报:

[Pasted image 20241026153612.png]

以及云端远程命令控制:

[Pasted image 20241026153715.png]

云端后台可查看日志消息:

[Pasted image 20241026153813.png]

6. 4G通信

控制器的USB类外设接口可以连接串口类的外设模块实现4G通信功能,这里的4G模块采用的是Air780EG,支持4G通信和卫星定位,这里也是采用了二次开发,基于Luatos的lua脚本语言开发:

[Pasted image 20241026154000.png]

[Pasted image 20241026153935.png]
支持手动短信收发:

[Pasted image 20241026154804.png]

[Pasted image 20241026154824.png]

支持接入云平台,实现数据上报:

[Pasted image 20241026154901.png]

以及云端命令控制:

[Pasted image 20241026154937.png]

在户外可以通过APP查看定位信息:

[Pasted image 20241026155052.png]

三、软件简介

1. 主控MCU

主控MCU主要是FreeRTOS和LVGL的使用以及IIC、SPI、UART等各底层驱动部分的开发:

[Pasted image 20241026170236.png]

GUI的设计借助了NXP的Gui-guider以及百问网的LVGL参考文档:

[Pasted image 20241026170400.png]

[Pasted image 20241026170502.png]

2. 从机MCU-ESP32

ESP32采用ESPIDF环境开发,基于FreeRTOS:

[Pasted image 20241027095921.png]

3. 从机MCU-Air780EG

Air780EG采用lua脚本语言开发,基于luatos:

[Pasted image 20241027100019.png]

然后使用合宙官方的Luatools的烧录调试工具进行烧录与调试:

[Pasted image 20241027100630.png]

4. PC-QT上位机

PC上位机主要实现的是CAN通信和串口通信功能,采用QT进行设计开发,CAN通信使用的为广成GCAN的驱动,qmake编译环境,串口上位机采用cmake编译环境:

[Pasted image 20241026162341.png]

[Pasted image 20241026162456.png]

5. Android APP

Android APP的设计就相对简单一些,主要是通过HTTP实现华为云物联网平台的一些应用API,用于获取设备属性信息以及命令下发以及百度地图SDK的使用:

[Pasted image 20241026163409.png]

[Pasted image 20241026163519.png]

四、硬件简介

硬件使用立创EDA专业版进行了四层板的PCB设计,MCU基于GD32F303VET6,硬件上支持锂电池充放电管理、板载NTC温度采集、支持CAN/WIFI/蓝牙/4G/UART通信控制(通过模拟开关复用),控制板预留了三组扩展接口,其中项目中使用了两组作为GPIO使用,用于按键输入,还有一组是I2S接口,属于预留接口,暂未使用,主要介绍如下部分:

1. 模拟开关复用USB接口

这里为了扩展多个模块的使用,使用模拟开关控制USB的数据线引脚接入CAN还是UART,当然,也可以当作普通GPIO使用或者完成单线通信等功能

[Pasted image 20241026164344.png]

2. EXMC的屏幕接口

为了提高屏幕刷新速度,使用了EXMC接口+DMA的刷新方式,支持背光调节,可以通过电阻选择支持的屏幕类型,视频中演示的项目是使用的ILI9488,注意不要全部焊接,会短路!

[Pasted image 20241026164424.png]

3. 电源部分

电源部分采用IP5306实现锂电池充放电管理,即锂电池升压5V、5V对锂电池充电、以及按键开关机等,电源按键引脚还接入了MCU一个GPIO用于软件控制关机

[Pasted image 20241026164708.png]

4. 硬件开源

其他部分都是中规中矩的MCU相关设计,最后在嘉立创免费打样:

[Pasted image 20241026165206.png]

硬件项目已开源,详细信息大家可以在下述链接查看:


https://oshwhub.com/jiake/funiot-controller

[Pasted image 20241026164845.png]

五、结构简介

1. 硬件组装

这里用到了两块PCB,一块焊接一块当作屏幕垫板,两个按键板分别安装在两侧,通过排线链接:

[Pasted image 20241026163807.png]

[Pasted image 20241026165002.png]

2. 3D打印外壳

外壳的设计使用的是FreeCAD软件,分为上下两部分,通过导入PCB模型进行的仿真,最后在立创的三维猴平台打印:

[Pasted image 20241026165641.png]

[Pasted image 20241026165650.png]
[Pasted image 20241026165814.png]
[Pasted image 20241026165834.png]

接下来的文章是上述软件中的FreeRTOS移植和LVGL的移植教程。

Licensed under CC BY-NC-SA 4.0