站内搜索
发作品签到
【新手向】立创ESP32开发板PulseTabLite电脑监视屏
专业版

【新手向】立创ESP32开发板PulseTabLite电脑监视屏

4.0k
0
0
6

简介

本项目基于立创ESP32S3开发板,开发出一款适合新手学习ardiuno环境下esp32开发的扩展板,同时提供了window电脑监控屏的实战DEMO,为初学者提供了一款实用桌面设备和一块功能拓展版。

简介:本项目基于立创ESP32S3开发板,开发出一款适合新手学习ardiuno环境下esp32开发的扩展板,同时提供了window电脑监控屏的实战DEMO,为初学者提供了一款实用桌面设备和一块功能拓展版。
基于立创开发板电子设计征集令

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-09-13 15:35:32更新时间:2024-11-25 10:19:52

描述

5c81decff346449b850b00e9c6667ee4.jpg

本项目参加了立创开发板举办的基于立创开发板电子设计征集令活动

作品获得重磅奖

项目介绍

本项目是基于NAS PulseTab项目为新手适配的开发拓展板项目。借助立创ESP32S3开发板,使用esp32网络能力和网络通讯协议实现监控屏监控window电脑。拓展板配有引出引脚和LCD屏幕,方便开发者在开发项目的同时还能获得一块可拓展的开发设备。


前言

  • 2024.11.24 更新说明:由于设备寄给了立创开发板,故本项目暂时不更新,等待合适活动会制作一款更为小巧的桌面设备。

本项目基于立创ESP32S3开发板,开发出一款适合新手学习ardiuno环境下esp32开发的扩展板。同时,基于NAS PulseTab项目提供了window电脑监控屏的实战demo,为初学者提供了一款实用桌面设备和一块功能拓展版。

  • 项目优势
  1. 新手友好:基于ESP32开发板和LCD屏模块,原理图绘制和pcb布局简单,主要模块均以插件形式连接(天知道40Pin的FPC座子有多难焊接),焊接结构简单,适合初学者和手残党上手;
  2. 硬件功能完善:拓展板提供了拨轮开关、LED、LCD屏幕、温湿度传感器、电源管理及电池、IO引出引脚等外设,为立创ESP32开发板提供了成熟项目的硬件支持;
  3. 软件全开源:基于NAS PulseTab项目,将FREEROTS、LVGL、SNMP等主要功能简化并开源,方便初学者了解各模块功能实现的基本原理和软件系统的运行逻辑;
  4. 可玩性极强:1块立创ESP32开发板+1块拓展版=1块立创ESP32开发板+ 6大主要功能模块+1组IO引出排针=N种无限可能。开发者可借此硬件进行多种设备开发,包括但不限于LVGL交互、联网功能、物联网设备等领域。

image.png
(兄弟俩合影,NAS多设备监控器见我另一个PulseTabLite项目)


一、硬件实现

本项目硬件实现其实并不复杂,主要包含供电电路、外设电路和开发板电路。其中,为简化初学者硬件设计难度,使用立创ESP32开发板和LCD模块;同时为增加初学者硬件电路设计的成就感,适当设计选配了电源和电池双供电电路。

2.1 原理图说明

2.1.1 供电电路

因项目集成了立创开发板和LCD显示屏模块,为进一步拓展功能、增加初学者硬件设计的成就感,设计了外接电源和锂电池双路供电系统,这也是本项目硬件设计核心难点。

  • 电池充放电及升压电路(选配1)

image.png

采样TP5400作为锂电池充电以及锂电池升压电路的主要芯片。依据手册绘制外围电路

  • 要点解读
    > 1. TP5400是一款锂电池充电兼电源升压模块,较少的外围元器件即可实现给电池充电,以及电池放电时升压至5V功能。充电电流最大1A,输出电流最大1A。
    > 2. 电源输入端串联300m欧电阻,通过电阻和芯片内阻形成分压电路从而适当降低芯片发热;电源用于5引脚电源输入、2引脚充电指示和4引脚充电完成指示;
    > 3. 充电电流通过限制3号引脚电流实现。依据手册选取合适电阻值从而确定充电最大电流,详见下图;
    > 4. 充电电流输出引脚为6号引脚,按硬件手册设计去耦电容;
    > 5. 升压电路利用电感对能量的储存,通过其与输入端电源共同泄放作用实现。当没有电源接入并且锂电池电压在3V-4.2V时,锂电池经由VBAT、L1电感以及D3连接至1引脚,实现5V电压输出;锂电池电压小于3V时TP5400关断升压;
    > 6. 1引脚要求C14使用钽电容或铝电解电容,同时接一个5.5V-6.8V的TVS二极管,使其具有良好的频率特性;同时电容的容压值要高于设计输出电压3倍以上;
    > 7. 电感使用功率电感,3.3-22uH,手册推荐10uH。
    > 8. 走线设计时,外围器件应尽可能靠近芯片,同时电源和接地线路要尽可能端、铺铜走线,以支持大电流设计。

image.png

  • 电源切换电路(选配2)

image.png

  • 要点解读
    > 1. 采样两个Pmoss管实现电源自动切换;
    > 2. 当电源输入时,Q1和Q2的G极为高电平,此时moss管关断,电源通过D1输出;电源电压和电池电压高低不同同样会使Q1和Q2任一关断,因此该电路对电源和电池电压差没有特殊要求;
    > 3. 当电源切断时,Q1和Q2导通,电池通过D1被截止,因此在实现电池供电的同时防止电流倒灌。

  • 电压调理电路

image.png

  • 要点解读
    > 1. 使用基础的AMS1117将5V电压LDO至3.3V;
    > 2. 仅在输入和输出端并联各两个去耦电容即可,但要注意遵循电容容值输入先大后小、输出先小后大原则。
2.1.2 交互电路

交互电路包含LCD屏、按键、传感器外设电路,原理简单。

image.png

  • 要点解读
    > 1. LCD使用立创商城购买的汉昇公司2.8寸TFT显示屏。屏幕支持16BIT、8BIT和4SPI通讯接口,驱动使用ST7789。采购来的显示屏自带驱动板,板载支持字体芯片焊盘,出厂为16BIT通讯协议。拿到驱动板时应将背面焊盘的M1L和M2L焊盘焊点断开,同时焊接M1H和M2H,从而支持4SPI协议;
    > 2. 温湿度模块采样DHT20,虽体积大但比AHT系列焊接方便、采集数据及时并且精准。通过I2C通信;
    > 3. 使用大脚波轮开关,支持左划、右划、按下三种触摸形式。配合LVGL的编码器驱动可以实现波轮替代编码器效果。本次电路设计为低电平按下;
    > 4. ESP32多余引脚引出20pin排座,增强拓展性,方便开发者日后拓展开发其他设备。
2.1.3 ESP32开发板相关电路
  • GPIO口分配

image.png

  • 要点解读
    > 1. esp32的所有GPIO基本都支持相应功能,因此在IO分配时在避开特殊IO口的前提下优先遵循布线协议即可;
    > 2. 本项目设计独立供电原因为,立创esp32开发板的LDO是ME6217,最大电流800mA较小,在外接较多设备时建议设计独立供电。
    > 3. 电源接入检测和电池电量检测通过IO口的高低电平以及ADC功能实现,为选配功能;

2.2 Layout说明

2.2.1 DHT20 温湿度传感器
  • 在PCB中挖出高20mm宽14mm孔洞,焊接DHT20后使其悬空,与电路板接触面积更小,测量的温湿度更精确

image.png

image.png

2.2.2 TP5400充放电模块
  • 原则上要求模块电路尽量宽、短、铺铜设计;本人首次使用该电路并且说明书未提示有关布线要求,这里放出仅做讨论,欢迎批评指正;
  • 为保证TP5400散热建议在PCB两侧设计过孔以及铺铜接地。

image.png


三、软件实现

本项目硬件设计在保证功能的前提下留有拓展空间;而软件实现是项目开发的重点。它借助ESP32实现了多种网络通讯服务,并通过任务调度设计和前端GUI开发实现信息获取和交互功能。

本项目偏向新手向,故软件方面这次讲细一点,同时开源源代码。

3.1 功能框图

image.png

本项目软件层面使用FreeRTOS系统进行后端任务管理,使用LVGL处理前端任务。功能实现方面主要包含网络连接、传感器驱动和界面交互。

  • 后端任务分为:启动程序、配网程序、按键程序、日期天气服务程序、SNMP信息服务程序;
  • 前端任务分为:天气UI更新、时钟日期UI更新、Windows信息面板UI更新。

3.2 配网程序

基于Ardiunofish-five/BGWiFiConfig@^1.0.7库实现。

  • 配置要点
    > 1. 开源作者很贴心,设计了一套完善的配网程序,免去了开发者学习AP和HTML的时间成本。该库支持自定义网页配网,支持OTA模式和自定义配置文本,基于SPIFFS库存取配置信息;
    > 2. 支持配网完成后自动重启,配置wifipw.autoStart(true);,配网耗时约12秒,网页未做动态的回调,因此耐心等待设备重启即可;
    > 3. 使用自定义网页配置时,需要添加如下代码,并严格遵循该顺序:
#define eeshow        // 必须置于#include之前
#define eeshowM 2     // 必须置于#include之前
#include "BGWiFiConfig.h"
#include 

3.3 TFT点屏及LVGL配置

使用ArdiunoTFT_espiLVGL库实现显示屏驱动。

  • TFT_espi配置要点
    > 1. 配置LCD引脚及时钟频率;
    > 2. 实现LCD屏幕ST7789驱动、配置屏幕尺寸和旋转方向。

  • LVGL配置要点
    > 1. 配置色彩模式为16位RGB565;
    > 2. 使用自定义内存,配置屏幕刷新频率,配置时钟频率;
    > 3. 配置屏幕缓冲区buffer_size = screenWidth * screenHeight / 10
    > 4.

3.4 外设驱动配置

外设主要由各类传感器、按钮构成。

  • DHT20温湿度传感器配置要点
    > 1. 使用I2C通讯协议,Ardiunoobtillaart/DHT20@^0.3.1库,使用Wire库配置I2C后每秒循环读取。

  • 波轮开关
    > 1. 原理与按钮类似,配置下拉输入模式pinMode(GPIO_NUM, INPUT_PULLDOWN),同时在循环内读取按键高电平即可igitalRead(GPIO_NUM)==HIGH

3.5 时间天气功能实现

  • 时间功能要点
    > 1. 使用阿里云NTP服务器授时,服务器设置为3个,如ntp1.aliyun.com
    > 2. 时区偏移量,北京是GMT+8,按秒计为gmtOffset_sec = 8 * 3600;;夏令时不使用,配置为0;
    > 3. 时钟配置到获取并更新时间存在5s至10几秒不等的延时,这里在UI设计时采用配置好时间后方可更新UI至主界面。

  • 天气功能要点
    > 1. 经测试多个服务提供商,最终选取了"http://t.weather.sojson.com/api/weather/city/101190801"的服务提供商。该网站稳定、免费、无需注册、获取数据周期短。具体参考https://www.lanol.cn/post/33.html;
    > 2. 数据解析使用ArduinoJson库。

3.6 SNMP通讯实现

该设备与电脑通讯基于SNMP服务。使用SNMP协议进行通讯对基于Linux系统的设备具有通用性。该协议优点在于代理端配置方便,不需要上位机软件;缺点是SNMP服务基于UDP协议(异步收发),数据更新周期在5s左右。

  • SNMP协议通讯要点说明:
    > 1. 使用Ardiunoshortbloke/SNMP Manager@^1.1.12库实现。这是一个国外网友制作的较为经典的库。虽然现在SNMP服务使用较少,但通过该协议了解网络通讯对新手来说是具有一定学习意义的。
    > 2. window端配置SNMP代理服务可以在B站搜索有关资源。这里仅提供win11的SNMP代理配置链接:https://www.bilibili.com/video/BV1sG411y7Pp/?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click&vd_source=c99f4cc51a936036bca99830e36262da
  • 这里提供一套通用的SNMP IOD信息,读者可基于下面的IOD,使用MIB browser软件查找适合于自己设备的IOD信息(每个设备根据CPU线程数内存数、网卡配置和硬盘配置不同,OID的walk成员略有不同),然后配置到代码中。:
1. 服务器负载
	1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
	5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
	15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
	running time: .1.3.6.1.2.1.1.3.0
1. CPU信息
	percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
	raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
	percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
	raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
	percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
	raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
	raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
3. 内存使用
	Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
	Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
	Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
	Total RAM used: .1.3.6.1.4.1.2021.4.6.0
	Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
	Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
	Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
	Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
4. 硬盘使用
	Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
	Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
	Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
	Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
	Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
	Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
	Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
5. 网络接口
	|.1.3.6.1.2.1.2.1.0|网络接口的数目|IfNumber|GET|
	|.1.3.6.1.2.1.2.2.1.2|网络接口信息描述|IfDescr|WALK|
	|.1.3.6.1.2.1.2.2.1.3|网络接口类型|IfType|WALK|
	|.1.3.6.1.2.1.2.2.1.4|接口发送和接收的最大IP数据报[BYTE]|IfMTU|WALK|
	|.1.3.6.1.2.1.2.2.1.5|接口当前带宽[bps]|IfSpeed|WALK|
	|.1.3.6.1.2.1.2.2.1.6|接口的物理地址|IfPhysAddress|WALK|
	|.1.3.6.1.2.1.2.2.1.8|接口当前操作状态[up\|down]|IfOperStatus|WALK|
	|.1.3.6.1.2.1.2.2.1.10|接口收到的字节数|IfInOctet|WALK|
	|.1.3.6.1.2.1.2.2.1.16|接口发送的字节数|IfOutOctet|WALK|
	|.1.3.6.1.2.1.2.2.1.11|接口收到的数据包个数|IfInUcastPkts|WALK|
	|.1.3.6.1.2.1.2.2.1.17|接口发送的数据包个数|IfOutUcastPkts|WALK|
  • 另外,对于特定信息需要通过特定公式计算得出,读者要学会了解SNMP各种数据代表的实际意义:
  1. 内存使用率算法:
    1. memShared + memBuffer + memCached > memTotal 时,内存使用率 memUsage = (memTotal - memAvailable - memBuffer - memCached + memShared )/memTotal * 100
    2. memShared + memBuffer + memCached <= memTotal 时,内存使用率 memUsage = (memTotal - memAvailable - memBuffer - memCached )/memTotal * 100
  2. 磁盘空间计算方法:
    磁盘空间=单元字节大小×单元数=字节数,字节数/1024/1024为MB
  3. 网速计算:
    1. SNMP获取到的网络信息仅有上传和下载数据总量,这里需要计算两个时间差的数据总量,通过作差后除以时间差得出网速信息;
    2. 单位换算注意:1Mbps=1024k bit/s=1024/8 K byte/s=128Kbyte/s=128kb/s

3.7 GUI前端开发

GUI前端开发使用Figma进行UI设计,然后将有关素材文件导入到EEZ studio软件中进行GUI设计,再在工程文件中手写交互程序。

  • Figma是个向量图形编辑软件,具有突出的轻量化、易上手特点,在网页端即可完成用户界面(UI)和用户体验(UX)设计。然后通过导出png图片素材即可。

image.png

  • EEZ studio软件可以进行基本的GUI设计。最初我也是在寻求SquareLineStudio替代品时在B站上看到UP主LonlyPan分享的教程(但是UP主教程只出到5期没有完全讲完,估计是在使用过程中了解到eez的flow功能对于LVGL的支持还是有点欠缺吧,这个我在使用过程中也发现了)。
  • 原来使用的SquareLineStudio软件收费,对我这爱好者优点牵强。因此简单的GUI设计我又学习了这款软件,还是很好上手的。但是对于复杂的LVGL event和交互设计支持有些欠缺。需要复杂GUI的话建议还是SquareLineStudio软件。

image.png

其他交互逻辑和辅助类的程序就不一一赘述了,详见开源代码吧!


四、展望

  • 功能完善方面
    > 本项目参加了立创开发板征集令活动,整个十月不在加班的路上就是在加班(国庆更是万恶的一天没休息),只能抽空闲时间制作。读者看代码,虽然SNMP里面信息已经获取到了CPU每个线程的占用情况、每个硬盘分区的磁盘信息,但是UI仍然未体现出来,主要是因为UI设计和数据处理占用时间较大,我的业余时间有限,结题前未能全部开发完成。今后会慢慢完善。下一步计划将网速曲线、CPU和内存占用曲线、硬盘占用信息这三个功能更新显示出来。

  • 产品优化方面
    > 1. 该项目使用SNMP协议通讯,存在延时高等缺点。下一步计划使用市场主流的AIDA64等软件,配合学习上位机软件开发,进行进一步优化开发,提升实时性和信息覆盖性(比如GPU信息读取)。
    > 2. 第一次设计使用充电管理、电源切换和升压模块,设计不足之处还请大佬们及时指导,谢谢大佬们!
    > 3. 项目的3D外壳使用嘉立创EDA进行设计,个性化和操控性有待提升。
    > 4. 面板还没来得及做,等有活动了顺便蹭个优惠券的车制作一个贴上去。

设计图

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

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
SCH_Schematic1_2024-10-24.pdf
43
2
3DShell_PCB1.zip
34
3
1026_WinPulseTab.zip.002
147
4
1026_WinPulseTab.zip.001
117
5
3_GUI.zip.001
110
6
3_GUI.zip.002
55
7
3_GUI.zip.003
56
8
3_GUI.zip.004
67
9
3_GUI.zip.005
58
10
PulseTabLite电脑监控屏功能演示.mp4
49
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航