站内搜索
更多
PulseTabLite:ESP32多NAS物联网信息监测设备
专业版

PulseTabLite:ESP32多NAS物联网信息监测设备

1.8w
0
0
26

简介

借助ESP32强大的网络能力开发出一款交互式物联网设备,解决了NAS设备网络连通性和硬件健康监测问题,实现了NAS设备安全管理;外设传感器支持环境温湿度调整,使NAS设备持续运行在健康环境、健康状态中

简介:借助ESP32强大的网络能力开发出一款交互式物联网设备,解决了NAS设备网络连通性和硬件健康监测问题,实现了NAS设备安全管理;外设传感器支持环境温湿度调整,使NAS设备持续运行在健康环境、健康状态中
基于ESP32物联网征集令

开源协议

GPL 3.0

创建时间:2024-08-14 11:39:26更新时间:2024-11-25 10:19:55

描述

5c81decff346449b850b00e9c6667ee4.jpg

本项目参加了由乐鑫科技和立创开源广场举办的基于ESP32物联网征集令活动

作品获得一等奖

项目介绍

NAS是一种专用于数据存储的服务器。它通过网络连接,以数据为中心将存储设备与服务器分离,从而实现数据集中管理。NAS设备需要稳定的网络连通性、持续的硬件健康监测,以实现重要数据的备份与安全管理。本项目借助ESP32强大的网络能力开发出一款交互式物联网设备,实现了NAS网络状态监控、设备硬件及系统健康监测;同时配有必要的传感器外设以支持进行环境温湿度调整,使NAS设备持续运行在健康环境、健康状态中。

产品演示视频:https://www.bilibili.com/video/BV1kb4ze6E7E/?spm_id_from=333.999.0.0&vd_source=c99f4cc51a936036bca99830e36262da


2024年10月26日更新说明:

  1. 【新手向】立创ESP32开发板PulseTabLite电脑监视屏 项目已经完成并开源,待审核通过后有兴趣的水友可以自行访问,硬件设计和源代码均开源。

image.png
(兄弟俩合影)


前言

完成本项目,你将获得:

  • 熟练使用乐鑫ESP32进行嵌入式开发
  1. 熟练掌握在Ardiuno环境下开发ESP32产品的能力;
  2. 熟练掌握按钮、触摸、温湿度传感器、光敏传感器的驱动编写;
  3. 学会使用esp32的GPIO/PWM/ADC等引脚功能;
  4. 了解ESP32-S3的GPIO引脚限制情况,学会使用其进行电路设计。
  • 学会嵌入式系统使用及GUI前端开发
  1. 学会使用TFT_espi以及LVGL驱动LCD屏幕;
  2. 熟练使用Figma配合LVGL进行GUI设计;
  3. 学会进行LVGL代码编辑以实现功能交互;
  4. 能够上手freeRTOS系统的基本使用方法。
  • 初步掌握网络通讯技术并实现应用
  1. 能够使用HTTP/UDP等通讯协议,实现联网获取API等各类功能;
  2. 了解到SNMP进行设备通讯的基本原理。
  • 学会项目开发基本流程
  1. 经历一个项目从想法到产品实现的全过程;
  2. 形成品牌意识,了解项目命名及品牌包装的内涵;
  3. 了解品牌开发历程。

一、项目简介

1.1 需求分析

本人是DIY NAS的深度爱好者。通过几次DIY产品迭代,目前家中使用IstoreOS系统的主路由、OpenWRT系统旁路由,以及一机双系统NAS,包含底层Unraid系统和Unraid虚拟机安装的DSM系统。各系统功能及关注点如下:

  • IstoreOS主路由

    1. 放置在弱电箱内,需要关注夏季电箱温度及散热问题;
    2. 入户网络枢纽,DHCP服务及流量监控。
  • OpenWRT旁路由

    1. 放在书房中当做旁路由,魔法上网使用,需要不时进行有关网站的链接测试;
    2. 使用红米AX6一带路由神机刷级,相比软路由硬件配置差,需要关注系统占用情况。
  • Unraid NAS

    1. NAS底层系统,使用Docker和虚拟机跑一些服务,需要关注系统占用和网络占用情况;
    2. 底层系统直接读取设备资源,需要关注系统温度、硬盘占用和风扇情况。
  • DSM 群辉NAS

    1. 用于重要数据的存储及备份,因此需要重点关注硬盘和储存空间的健康状态、系统运行状态;
    2. 系统网络监测。

因为NAS设备(包括轻NAS系统的软路由设备)在日常运行时无前端系统检测,需要登陆特定IP网页才可了解设备运行状态,带来一定的不便。

1.2 功能构想

通过上述需求分析,设想出本项目需要实现的功能:

  1. 一个监控屏幕,一机即可查看多个NAS设备的运行状态;
  2. 针对特定NAS系统的关注点,进行特定信息监测;
  3. UI界面贴合原系统设计,数据直观可读;
  4. 操作简便,没有繁琐的系统和操作;
  5. 兼顾诸如时钟、天气功能。

1.3 品牌开发

项目的品牌开发是指通过一系列策略和活动,在目标市场中建立和提升品牌形象,进而促进项目的成功和可持续发展。虽然DIY爱好者是以学习和DIY乐趣为主要的,但是一个成功的项目产品必然会通过对品牌的开发来提升产品形象,并通过结合营销策略在市场中进行推广。

因品牌开发更多涉及到市场营销有关领域,故本篇文章中有关对品牌开发的论述以简要形式为主。同时,本项目通过借助百度人工智能文心一言进行了一定程度的品牌开发,故该部分论述会使用文心一言的有关论述。

1.3.1 品牌及内涵(with文心一言)

品牌的命名及内涵简明扼要地揭示出项目最具核心的价值体现。本项目的核心价值为:轻量化、准确性、直观度。

  • 品牌名称:NAS Pulse Tab Lite - NAS脉络轻绘
  • 品牌内涵:
  • NAS

网络附属存储(NAS)作为现代数据中心的基石,承载着企业与个人关键数据的存储与共享。NASPulseTabLite正是针对这一核心领域,提供精确、高效的性能监测与优化服务。

  • Pulse:

如同人体的脉搏,NAS PulseTabLite能够实时“感知”NAS系统的“心跳”——其运行状态与性能波动。这种对性能的实时监测与动态感知,确保用户能够及时了解NAS系统的健康状况,并快速响应潜在问题。

  • Tab

在NAS PulseTabLite的界面中,用户可以通过简单的“Tab”切换,轻松浏览不同功能模块和监测指标。无论是I/0性能、网络带宽还是磁盘占用,一切尽在掌握。这种直观的设计使用户能够迅速定位问题,提高运维效率。

  • Lite

在追求功能全面性的同时,NAS PulseTabLite更注重轻盈与简洁。其简洁的界面设计和便捷的操作流程,使用户无需繁琐的设置和复杂的步骤,即可轻松上手并快速掌握产品使用方法。这种轻量化的设计理念,为用户带来更为流畅、高效的使用体验。

  • NAS脉络轻绘

这个名称既体现了产品的核心技术特点(即对NAS系统性能的全面监测和深入理解),又传达了一种简洁直观、易用的产品体验,同时还带有一种诗意的美感。

脉络 ——在中文中,““脉络”通常用来形容事物内部的联系和条理,就像人体的血脉一样,连接着身体的各个部分。在这里,“脉络”被用来比喻NAS系统内部的数据流、性能变化以及各个组件之间的联系。它暗示着这款产品能够深入洞察NAS系统的“血脉”,为用户提供清晰、准确的性能监测和状态展示。

轻绘——这个词则表达了产品的界面设计和操作体验。“轻”代表简洁、轻便,而“绘”则暗示着用户可以在这个界面上轻松地进行各种操作,就像绘画一样自由、流畅。因此,“轻绘”传达了一种简洁、直观、易用的产品体验,使用户能够轻松地掌控NAS系统的性能和状态。

1.3.2 品牌包装

主形象LOGO设计如下:

GUI-01.png

LOGO1-jif.gif


二、硬件实现

本项目硬件实现其实并不复杂,主要包含屏幕和触摸电路、外围传感电路,除此之外附属了供电电路、串口通信电路和esp32外围电路。

该硬件除支持本项目之外,还可借助esp32芯片的巨大通信功能,通过不同的软件开发实现不同物联网功能,包括但不限于智能家居控制、信息播报、网络通信支持。

2.1 原理图说明

2.1.1 显示屏及触摸电路

采用EYA 4寸LCD电容触摸屏,自带40pinFPC 显示接口,支持SPI和并口通讯协议;8pin触摸接口支持I2C通讯协议。

image.png
image.png

  • 显示屏电路要点解读
  1. 依据屏幕开发手册,板载8个LED灯珠且背光电源总电流不应大于120mA,因此在LED_A接口串联10欧限流电阻;
  2. 背光控制电路应使用三极管并将G极接入带有PWN功能的引脚;
  3. 显示屏接口根据通信协议选择M0-M2的高低压电平。

image.png

  • 电容触摸电路要点解读
  1. 本人选择的C2856797编号的8pin FPC座子接口与屏幕接口线序是相反的,注意上电前进行正反接检查;
  2. RST可以与LCD的RST引脚相连。
2.1.2 ESP32相关电路

本项目为考虑扩展性,采用ESP32-S3 WROOM N16 R8 模组。芯片电路的设计应注意以下要求(总结自芯片设计手册):

  • 注意设计手册对WROOM封装的最小电路要求
    image.png

  • 带有SPIRAM时IO35/IO36/IO37不可使用;
    image.png

  • 部分支持ADC功能的GPIO在持续WIFI联网的情况下无法使用(下图黄色部分);
    image.png

  • 串口自动烧录电路接入GPIO0-BOOT和GPIO2-EN引脚,使用2个三极管实现
    image.png

  • SPI设计应避开SPI0/SPI1,同时应尽量使用SPI默认引脚
    image.png

其他电路不再赘述,均为基本的电源、烧录、按键及传感器电路。

2.2 Layout说明

2.2.1 屏幕FPC座子
  • 注意LCD使用说明中的FPC排线方向,在Layout以及上电前都要注意是否反接,防止烧坏电路。
    image.png
    image.png

  • FPC区域不应有元器件布局;同时适当在板内开孔穿线。
    image.png

2.2.2 AHT20 温湿度传感器

因本项目屏幕尺寸较大,屏幕及芯片发热会使AHT20温度超出正常值,因此在设计时要注意指导手册的布局要求。尽可能远离发热区,减少热传导,增加散热通风。

image.png
image.png
image.png

2.2.3 环境光传感器

该传感设置在机器正面,是唯一布局在PCB反面的原件。焊接时注意将其余回流焊后最后手动焊接。
image.png


三、软件实现

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

3.1 功能框图

image.png

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

  • 后端任务分为:启动程序、设备驱动程序、电容触摸启动及界面启动程序、日期天气服务程序、NAS信息服务程序;
  • 前端任务分为:天气UI更新、时钟日期UI更新、NAS信息面板UI更新。

3.2 电容触摸及LVGL配置

使用ArdiunoTFT_espiLVGL库实现显示屏驱动,使用bb_captouch库实现触摸驱动。

  • TFT_espi配置要点
  1. 配置LCD引脚及时钟频率;
  2. 实现LCD屏幕ST7796驱动、配置屏幕尺寸。
  • LVGL配置要点(该部分尚需进一步优化)
  1. 配置色彩模式为16位RGB565;
  2. 使用自定义内存,配置屏幕刷新频率,配置时钟频率;
  3. 配置屏幕缓冲区buffer_size = screenWidth * screenHeight / 30
  • bb_captouch配置要点
  1. 配置触摸驱动为GT911通讯方式为I2C;
  2. 配置触摸驱动引脚;
  3. 配置触摸参数,该驱动最大可支持5点触控。

3.3 外设驱动配置

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

  • AHT20温湿度传感器配置要点
  1. 该传感器使用I2C通讯协议。查阅设备开发手册,因电容触摸已使用I2C配置,故此处使用Wire库中TwoWire Wire1 = TwoWire(1);参数进行配置 Wire1.begin(aht20_sda, aht20_scl); // Join I2C bus
  • 环境光传感器配置要点
  1. 该传感器需要使用esp32的数模转换ADC功能。查阅开发手册,因本项目需要持续的无线连接,故硬件设计层面有部分ADC引脚限制,此处再次强调。
  2. 配置引脚模式为pinMode(LIGHTPIN, INPUT);,读取数据使用analogRead(LIGHTPIN)

按钮配置较为简单,此处不再赘述。

3.4 时间天气功能实现

  • 时间功能要点
  1. 使用阿里云NTP服务器授时,服务器设置为3个,如ntp1.aliyun.com
  2. 时区偏移量,北京是GMT+8,按秒计为gmtOffset_sec = 8 * 3600;;夏令时不使用,配置为0;
  3. 因时钟配置到获取并更新时间存在5s至10几秒不等的延时,经过排查调用库函数发现getLocalTime(&timeinfo)函数中存在配置时间延迟等待的语句,这造成了开机时获取时间滞后的问题,暂时未进行优化(有大佬可以指导指导)。
  • 天气功能要点
  1. 经测试多个服务提供商,最终选取了"http://t.weather.sojson.com/api/weather/city/101190801"的服务提供商。该网站稳定、免费、无需注册、获取数据周期短。具体参考https://www.lanol.cn/post/33.html;
  2. 数据解析使用ArduinoJson库。

3.5 NAS信息通讯

NAS通讯基于SNMP服务。选取该通讯协议的原因为IstoreOS、OpenWRT、Unraid和DSM系统均基于Linux系统,使用SNMP协议进行通讯具有通用性。

  • SNMP协议通讯要点说明:
  1. 多数基于Linux系统的OID和MIB树都是通用的,可以方便获取系统、网络和硬盘等的占用信息;
  2. 请注意在使用SNMP功能时应该在基于Linux系统的NAS设备中安装服务端snmpd
  3. DSM系统在官网上进行了SNMP的MIB二次开发,有关DSM的SNMP使用可以查阅网络有关教程。DSM的SNMP使用手册见https://global.synologydownload.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/chs/Synology_DiskStation_MIB_Guide_chs.pdf
  • SNMP通讯缺点说明:
  1. 因SNMP是基于DUP协议的通讯,故此处通讯是异步的。在进行大量OID尤其是使用WALK进行设备轮询时,单次通讯周期长;同时Linux的snmpd协议有些数据是5秒更新一次, 因此基于SNMP服务的NAS信息通讯做不到每秒更新,对于需要高度同步的信息监控具有局限性。

3.6 GUI前端开发

GUI前端开发使用Figma进行UI设计,然后将有关素材文件导入到SquareLineStudio环境中进行LVGLGUI开发。

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

image.png

  • SquareLine Studio 是一款专为嵌入式和桌面应用程序设计的创新可视化拖放式UI编辑器,最初是LVGL开发的平台,因此对LVGL具有极好的适配性。这款软件极大程度降低了LVGL开发语句的上手难度,通过图形化界面设计,可进行实时交互预览,设计完成即可导出程序文件。
  • 软件试用30天,试用期可以完成界面设计(现在试用期到期了,无法截图预览)。

四、展望

  • 功能完善方面
  1. 本项目参加了ESP32物联网项目,因此开发周期较为紧张、LVGL设计软件需要收费,本着学习和个人应用的角度进行的项目开发具有一定的普适局限性,如未能进行设备配网GUI设计。下一步计划针对设备配网及NAS UI显示界面进行优化。
  2. 本项目前期将Win系统的设备监控同样纳入考虑范围,因此留有Win系统的信息监控有关函数接口,计划下一步进行功能完善。
  • 产品优化方面
  1. 该项目使用SNMP协议通讯,项目开发让我学习到了该通讯协议的原理和应用。但是SNMP协议存在延时高等缺点。下一步计划使用市场主流的AIDA软件进行优化开发,提升实时性。
  2. 因项目开发周期紧张,内存调试和优化占用了约50%时间,因此项目的3D外壳使用嘉立创EDA进行设计,个性化和操控性有待提升。
  3. 本项目将NAS设备接入物联网,实现了个人电子设备的信息接入,展现了AI+ALL in one 的物联网理念。下一步计划在此基础上继续下一步开发,借助乐鑫公司的ESP RainMaker方案和ESP HomeKit SDK等框架进行物联网设备的接入,从而实现手机终端监控、网络自主优化、环境自动调温调光等功能,帮助NAS设备实时处于最佳的运行环境。

设计图

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

BOM

暂无BOM

3D模型

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

附件

序号文件名称下载次数
1
Gerber_PCB1_2_2024-08-30.zip
114
2
SCH_Schematic1_2024-08-25.pdf
100
3
BOM_Board1_PCB1_2024-08-25.xlsx
81
4
3DShell_PCB1_1.zip
101
5
NAS PulseTabLite 产品演示视频.mp4
95
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

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

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

底部导航