基于GD32梁山派的中控操作台 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 基于GD32梁山派的中控操作台

简介:本项目主控采用梁山派,采用esp8266作为上位机和下位机的中间层,通过串口和梁山派进行信息交互,通过tcp和上位机进行信息交互,旋钮采用无刷电机,通过AS5600磁编码器读取无刷电机转动的角度。

开源协议: GPL 3.0

(未经作者授权,禁止转载)

已参加:立创·开发板电子设计训练营

创建时间: 2023-08-19 19:44:00
更新时间: 2023-10-17 11:13:36
描述

项目说明

本项目主控采用梁山派,采用esp8266作为上位机和下位机的中间层,通过串口和梁山派进行信息交互,通过tcp和上位机进行信息交互,旋钮采用无刷电机,通过AS5600磁编码器读取无刷电机转动的角度,采用3.5寸并口屏作为显示平台。

开源协议

GPL3.0

项目相关功能

使用梁山派实现当前时间,室内温湿度,天气,每日任务和当前省份辐射值的曲线变化图,同时可通过旋钮对电脑音量进行控制,也可转变为旋钮对页面进行滚动,该中控搭载有大容量锂电池,可以在不插电情况下继续工作,保证时间的准确性。

项目属性

本项目为首次公开,为本人原创项目,代码纯手敲,仅小部分为Ctrl+V。

设计原理

1.1 通讯部分

上位机获取时间,天气和任务等内容打包成json格式后通过TCP发送给ESP8266WiFi模块,ESP8266模块通过串口将这些信息解码打包后再传递给梁山派开发板,除了可以获取这些时间,天气,任务等信息外,DHT11温湿度通过单串口将温湿度信息实时传递给梁山派,梁山派再获得信息后将这些数据通过16pin并口传递给3.5寸显示屏显示。

2.1 主控电路

上图为本项目采用的开发板为梁山派,在立创商城可以购买到。梁山派的主控有一个非常好的优点,自带DAP下载器,同时下载器上集成串口功能,可以更加方便的下载和调试程序,更快定位程序所存在的问题。

2022年12月05号后立创·梁山派开发板主控从GD32F450ZGT6升级到了GD32F470ZGT6,两款芯片兼容主要差别GD32F450ZGT6主频200、SDRAM 256K,GD32F470ZGT6主频240、SDRAM 512K。
 2.2 ESP8266WIFI模块

上图为安信可ESP8266WIFI模块电路,采用100nf滤除电源杂波,保持电源稳定性,因为ESP8266WIFI模块UART串口资源有限,采用软串口速度慢且问题多,采用UART0串口和梁山派进行数据传输,这样也存在调试较困难的弊端,需烧录好ESP8266的程序,然后插上梁山派,后期将进行改进。

2.3 锂电池充放电电路

采用P沟道MOS管对电源进行切换,当有外部电源接入时,P沟道栅极为高电平,MOS截至,通过外部电源供电,当外部电源断开时,P沟道栅极为低电平,MOS导通,通过电池供电;锂电池充放电管理芯片采用TP4056,可以实时控制锂电池的充放电同时显示锂电池的充放电状态。

2.4 5V升压电路

采用MT3608L对MOS输出的电源进行升压,如采用外部电源进行供电,输出为5V左右,而转变为锂电池供电,锂电池充满电也只能输出4.2V电压,需使用MT3608L将电压升高并稳定在5V。

2.5 5V转3.3V降压电路

采用AMS1117-3.3线性稳压器将升压稳定后的5V降为3.3V,为ESP8266模块和烧录芯片供电。

2.6 磁编码器接口

因磁编码器安装于旋钮模块上,与屏幕分离,需采用100mm长FPC排线进行连接。

2.7 ADC电路

采用两个100kΩ的电阻对锂电池进行分压,通过梁山派的ADC采集近地电阻两端的电压,这样做的弊端是两个电阻会和锂电池形成回路,消耗电量,后续需改进。

2.8 磁编码电路

采用AS5600磁编码器,此编码器精度为12bit,采用iic进行通讯,梁山派iic资源多,满足项目要求。

2.9 无刷电机驱动电路

采用DRV8313电机驱动芯片,这样设计更小巧,不需像多MOS方案那样占用太大体积,便于小型化,采用三路PWM输入,我这里采用梁山派TIME4中的CH1,CH2,CH3输出三路PWM进行控制,通过控制pwm的占空比控制无刷电机三路的输入电压,从而控制无刷电机的转动。

软件说明

程序已上传至附件,分为梁山派程序和esp8266程序,这里主要说明一下软件设计过程。

3.1 上位机设计

采用qt designer 软件首先设计上位机的ui和界面布置,布局分为三大块,分别是WIFI模块和本机IP地址框,连接日志,日常任务,IP地址采用LineEdit进行设计,连接日志采用textbrower进行设计,日常任务采用5个LineEdit进行设计,同时设计了一个按键手动同步任务数据,设计好ui后,需编写上位机的程序。

采用pyqt对上位机程序进行编写,程序较多,分为通过新知天气api获取天气信息,电脑计时器获取时间,因辐射值目前没有api可以调取,只能通过爬虫获取,新知天气api调用很简单,查阅文档即可学会,也可百度查阅。举例讲解一下获得本地ip并上传到连接日志的方法,首先使用gethostname函数获得本机名,然后使用gethostbyname获得本机的ip,通过setText函数设置输入框的文字为本机ip地址,使用append函数向连接日志框中加入请将wifi模块连接到:ip port 上。因某些原因,代码需后续开源。

3.2 显示屏ui设计

因屏幕显示,我才用的是lvgl图形库,故采用SquareLine Studio软件对界面进行ui设计,具体设计流程就不细讲,可查看b站学习课程。

3.3 梁山派代码

代码较多,这里主要对时间显示代码进行讲解,首先通过bcdtostr将rtc中读取的时间数据转化为字符串数据,通过sprintf函数将小时,引号和分钟数据进行连接,通过lv_label_set_text函数向ui_Label1这个ui模块中写入拼接好的数据,这里ui——Label1就是小时和分钟的显示模块,从而实现小时和分钟数据的实时显示,其他变化类似,都是对ui模块进行篡改,从而实现图形的变化。值得一提的是,因为梁山派有exmc,可采用exmc+dma对16pin并口屏传输数据,提高数据传输的速度。

3.4 ESP8266代码

esp8266的代码已上传,代码采用arduino进行编写,较为简单,主要是上位机和梁山派的中间层,将上位机传输的json数据解码,然后使用串口发送给梁山派。

机械部分

机械部分采用Solidworks进行设计,上图为整体效果展示图

上图为旋钮的刨面图,可以看到磁编码器与旋钮的距离为2.42mm。

查阅AS5600的官方文档,径向磁铁与编码器的距离最好为0.5-3mm之间,故采用1mm厚径向磁铁较为合适。

为了按键按下后可以很好的回弹,采用四螺丝四弹簧设计方案,当旋钮按下后,按键按下,弹簧被压缩,当旋钮松开后,弹簧回弹,按键被放开,起到了按键的效果。

查阅按键官方手册,按键高度为2.5mm。

为了有足够的压缩空间,我采用的0.3*4*5型号的弹簧,实践证明,适配效果很好。

实物展示

4.1整体实物图展示

4.2屏幕部分实物图

4.3旋钮部分实物图片展示

因编码器pcb和按钮pcb已安装上去就不在展示。

视频展示

第一次剪视频,剪得不是很好,还望大家谅解,谢谢!!!

重点:因梁山派代码文件较大,无法上传,大家可通过下方网盘链接进行下载:

链接: https://pan.baidu.com/s/1GNZMHunz9yjliQbz6DBXiQ?pwd=1234 提取码: 1234 复制这段内容后打开百度网盘手机App,操作更方便哦

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
序号 文件名称 下载次数
1

esp8266_code.zip

12
2

视频展示.mp4

64
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP