发作品签到
专业版

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

工程标签

1.7k
0
0
1

简介

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

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

开源协议

GPL 3.0

创建时间:2023-08-19 11:44:00更新时间:2023-10-17 03:18:45

描述

项目说明

本项目主控采用梁山派,采用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,操作更方便哦

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
esp8266_code.zip
19
2
视频展示.mp4
65
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航