当前位置: 首页 > article >正文

别再只盯着数据了!用Arduino+GP2Y1014AU传感器,手把手教你做个能“看见”空气的PM2.5监测仪

用Arduino打造智能PM2.5监测仪从硬件连接到可视化交互在空气质量日益受到关注的今天拥有一个实时监测PM2.5浓度的设备不仅能提升生活品质还能为健康保驾护航。不同于市面上千篇一律的商用监测仪自己动手打造一个兼具实用性和科技感的PM2.5监测设备不仅能满足个性化需求更能深入理解传感器技术背后的原理。本文将带你从零开始使用Arduino和GP2Y1014AU传感器制作一个能看见空气质量的智能监测系统。这个项目特别适合喜欢DIY的创客、物联网初学者以及对家庭健康监测感兴趣的极客群体。我们将突破传统的数据监测模式通过LED灯带、OLED屏幕等可视化方式让无形的空气质量变得触手可及。整个项目包含硬件连接、代码编写、数据处理和可视化呈现四个核心环节最终你将获得一个可以摆放在桌面或挂在墙上的空气质量状态显示器。1. 硬件准备与连接1.1 所需材料清单在开始项目前我们需要准备以下硬件组件主控板Arduino UNO或Nano推荐UNO接口更丰富PM2.5传感器GP2Y1014AU光学灰尘传感器显示模块二选一0.96寸OLED显示屏I2C接口WS2812B RGB LED灯带至少8颗灯珠其他组件150Ω电阻220μF电容面包板及杜邦线若干USB数据线为Arduino供电提示如果希望设备更加便携可以选择Arduino Nano配合小型面包板若追求稳定性则建议使用UNO配合扩展板。1.2 传感器工作原理深度解析GP2Y1014AU是一款基于光散射原理的PM2.5传感器其核心工作机制可分为三个步骤发射阶段传感器内部的红外LED发射光束照射空气中的悬浮颗粒物散射阶段颗粒物使光线发生散射散射光强与颗粒物浓度成正比接收阶段光电二极管检测散射光强度转换为模拟电压信号输出传感器输出电压范围通常在0.5V-3.5V之间对应不同的颗粒物浓度。需要注意的是传感器对1μm左右的颗粒物最为敏感这正是PM2.5的主要尺寸范围。1.3 电路连接详解正确的电路连接是项目成功的基础。以下是GP2Y1014AU与Arduino的具体连接方式传感器引脚连接目标备注VCCArduino 5V电源正极GNDArduino GND电源负极LEDArduino D2通过150Ω电阻连接OUTArduino A0模拟信号输入S-GNDArduino GND信号地L-GND电容负极220μF电容特别需要注意的是在VCC和GND之间必须并联一个220μF的电容这能有效减少电源噪声对传感器读数的影响。LED引脚需要通过150Ω限流电阻连接到Arduino的数字引脚我们使用D2。对于OLED显示屏I2C接口连接更为简单VCC → 5VGND → GNDSCL → A5SDA → A4如果选择LED灯带作为显示方式只需将灯带的DI引脚连接到Arduino的D6引脚或其他支持PWM的引脚VCC和GND分别对应电源正负极。2. 软件环境配置与基础代码2.1 开发环境准备在开始编程前需要完成以下准备工作下载安装最新版Arduino IDE建议1.8.x或更高版本安装必要的库文件对于OLED显示Adafruit_SSD1306和Adafruit_GFX库对于LED灯带FastLED库在IDE中选择正确的板卡类型和端口注意不同型号的OLED屏可能需要不同的驱动库购买时请确认屏幕型号并查阅对应的库文件。2.2 传感器数据采集基础代码以下是读取GP2Y1014AU传感器的基本代码框架#define LED_PIN 2 #define SENSOR_PIN A0 void setup() { pinMode(LED_PIN, OUTPUT); Serial.begin(9600); } void loop() { // 触发传感器采样 digitalWrite(LED_PIN, LOW); delayMicroseconds(280); float vo analogRead(SENSOR_PIN) * (5.0 / 1023.0); digitalWrite(LED_PIN, HIGH); delayMicroseconds(9680); // 输出原始电压值 Serial.print(Raw Voltage: ); Serial.print(vo); Serial.println( V); delay(1000); }这段代码完成了传感器的基础数据采集主要包括三个关键步骤激活传感器的LED拉低LED引脚等待280μs后读取模拟值这是传感器的最佳采样时间关闭LED并等待完成一个10ms的采样周期2.3 电压值到PM2.5浓度的转换传感器输出的电压值需要转换为更有意义的PM2.5浓度μg/m³。根据厂商资料和实验数据我们可以使用以下公式PM2.5(μg/m³) (vo - 0.6) / 0.005其中vo是传感器输出的电压值单位V。这个公式适用于大多数室内环境但在极端条件下可能需要调整系数。在代码中实现这个转换float convertToPM25(float voltage) { if(voltage 0.6) return 0; // 低于0.6V视为无污染 return (voltage - 0.6) * 200; // 1/0.005200 }在实际应用中为了提高数据稳定性建议采用滑动平均滤波#define SAMPLE_SIZE 10 float samples[SAMPLE_SIZE]; int sampleIndex 0; float getAveragePM25() { float sum 0; for(int i0; iSAMPLE_SIZE; i) { sum samples[i]; } return sum / SAMPLE_SIZE; } void loop() { // ...之前的采样代码... float pm25 convertToPM25(vo); samples[sampleIndex] pm25; sampleIndex (sampleIndex 1) % SAMPLE_SIZE; float avgPM25 getAveragePM25(); Serial.print(PM2.5: ); Serial.print(avgPM25); Serial.println( μg/m³); }3. 数据可视化实现3.1 OLED屏幕显示方案OLED屏幕能够显示丰富的文字和图形信息是PM2.5监测仪的理想显示设备。以下是配置OLED显示的关键代码#include Wire.h #include Adafruit_GFX.h #include Adafruit_SSD1306.h #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, Wire, -1); void setup() { // 初始化OLED if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(OLED分配失败); for(;;); } display.display(); delay(2000); display.clearDisplay(); } void displayPM25(float pm25) { display.clearDisplay(); // 绘制标题 display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println(空气质量监测); // 绘制PM2.5数值 display.setTextSize(2); display.setCursor(0,20); display.print(PM2.5: ); display.print(pm25); display.println( μg/m³); // 绘制空气质量等级 display.setTextSize(1); display.setCursor(0,45); display.print(等级: ); if(pm25 35) { display.println(优); } else if(pm25 75) { display.println(良); } else { display.println(污染); } display.display(); }在loop函数中只需调用displayPM25(avgPM25)即可更新屏幕显示。为了提升用户体验还可以添加历史曲线图显示功能#define GRAPH_HEIGHT 30 #define GRAPH_WIDTH 100 int graphData[GRAPH_WIDTH]; int graphIndex 0; void updateGraph(float pm25) { graphData[graphIndex] map(constrain(pm25, 0, 200), 0, 200, 0, GRAPH_HEIGHT); graphIndex (graphIndex 1) % GRAPH_WIDTH; // 绘制曲线图 display.drawRect(0, 64-GRAPH_HEIGHT-2, GRAPH_WIDTH, GRAPH_HEIGHT, WHITE); for(int i0; iGRAPH_WIDTH; i) { int x i; int y 64 - graphData[(graphIndex i) % GRAPH_WIDTH] - 2; display.drawPixel(x, y, WHITE); } }3.2 LED灯带可视化方案对于喜欢炫酷视觉效果的用户RGB LED灯带是更好的选择。我们可以根据PM2.5浓度改变灯带颜色实现空气质量的可视化#include FastLED.h #define LED_PIN 6 #define NUM_LEDS 8 CRGB leds[NUM_LEDS]; void setup() { FastLED.addLedsWS2812B, LED_PIN, GRB(leds, NUM_LEDS); FastLED.setBrightness(50); } void setLEDsByPM25(float pm25) { // 定义空气质量颜色映射 CRGB color; if(pm25 35) { color CRGB::Green; // 优-绿色 } else if(pm25 75) { color CRGB::Yellow; // 良-黄色 } else { color CRGB::Red; // 污染-红色 } // 设置所有LED颜色 for(int i0; iNUM_LEDS; i) { leds[i] color; } // 根据污染程度点亮不同数量的LED int ledsOn map(constrain(pm25, 0, 200), 0, 200, 1, NUM_LEDS); for(int iledsOn; iNUM_LEDS; i) { leds[i] CRGB::Black; // 关闭多余的LED } FastLED.show(); }更高级的显示效果可以实现呼吸灯模式让LED根据实时数据动态变化void breathingLED(float pm25) { static uint8_t hue 0; CRGB color; // 根据PM2.5值选择色相 if(pm25 35) { hue 96; // 绿色系 } else if(pm25 75) { hue 64; // 黄色系 } else { hue 0; // 红色系 } // 计算呼吸效果亮度 uint8_t brightness beatsin8(10, 50, 255, 0, 0); // 设置LED颜色 fill_solid(leds, NUM_LEDS, CHSV(hue, 255, brightness)); FastLED.show(); }4. 项目优化与高级功能4.1 传感器校准与数据修正GP2Y1014AU传感器在使用前需要进行校准特别是在不同环境下其输出特性可能有所变化。我们可以采用以下校准方法零点校准在清洁空气环境中可使用空气净化器处理过的空间记录传感器输出电压作为基准值跨度校准使用已知浓度的测试环境如点燃香烟产生的烟雾调整转换系数温湿度补偿由于温湿度会影响传感器读数可添加DHT11/DHT22传感器进行补偿实现温湿度补偿的代码示例#include DHT.h #define DHTPIN 3 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); } float getCompensatedPM25(float rawPM25) { float humidity dht.readHumidity(); float temperature dht.readTemperature(); if(isnan(humidity) || isnan(temperature)) { return rawPM25; // 读取失败时返回原始值 } // 简化的补偿公式 float compensation 1 (humidity - 45) * 0.0025; return rawPM25 * compensation; }4.2 数据记录与远程监控为了让监测数据更有价值我们可以添加数据记录和远程查看功能SD卡数据记录方案#include SPI.h #include SD.h #define SD_CS 4 void setup() { if(!SD.begin(SD_CS)) { Serial.println(SD卡初始化失败); return; } } void logData(float pm25) { File dataFile SD.open(datalog.txt, FILE_WRITE); if(dataFile) { dataFile.print(millis()); dataFile.print(,); dataFile.println(pm25); dataFile.close(); } }WiFi远程监控方案使用ESP8266#include ESP8266WiFi.h const char* ssid yourSSID; const char* password yourPASSWORD; void setup() { WiFi.begin(ssid, password); while(WiFi.status() ! WL_CONNECTED) { delay(500); } } void sendToServer(float pm25) { WiFiClient client; if(client.connect(yourserver.com, 80)) { String url /api/pm25?value String(pm25); client.print(String(GET ) url HTTP/1.1\r\n Host: yourserver.com\r\n Connection: close\r\n\r\n); delay(10); client.stop(); } }4.3 外壳设计与电源优化一个完整的项目离不开精心的外壳设计和稳定的电源方案3D打印外壳设计建议为传感器设计独立风道确保空气流通预留屏幕或LED灯带的观察窗口考虑散热孔和安装固定点电源方案选择室内使用5V/2A USB电源适配器便携使用18650锂电池配合升压模块太阳能供电小型太阳能板锂电池管理模块低功耗优化代码void enterLowPowerMode() { // 设置传感器采样间隔为30秒 set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); // 唤醒后继续执行 sleep_disable(); }5. 常见问题排查与性能优化在实际制作过程中可能会遇到各种技术问题。以下是几个常见问题的解决方案5.1 传感器读数不稳定现象PM2.5数值跳动过大缺乏稳定性解决方案检查电源滤波电容是否安装正确220μF电解电容确保传感器LED引脚串联了150Ω电阻在代码中增加更复杂的滤波算法如卡尔曼滤波// 简易卡尔曼滤波实现 float kalmanFilter(float measurement) { static float estimate 0; static float error 1; const float processNoise 0.01; const float measurementNoise 1; // 预测 error error processNoise; // 更新 float gain error / (error measurementNoise); estimate estimate gain * (measurement - estimate); error (1 - gain) * error; return estimate; }5.2 显示设备工作异常OLED屏幕不显示检查I2C地址是否正确通常为0x3C或0x3D确认SDA和SCL引脚连接无误尝试调整屏幕对比度display.ssd1306_command(SSD1306_SETCONTRAST); display.ssd1306_command(0xFF); // 最大对比度LED灯带部分不亮检查数据线方向是否正确箭头方向应指向远离Arduino的一端确保电源充足必要时单独供电降低刷新速率FastLED.setMaxRefreshRate(50); // 50Hz5.3 提高系统响应速度对于需要快速响应的应用可以优化代码结构使用中断代替delay()void setup() { // 设置1秒定时器中断 Timer1.initialize(1000000); Timer1.attachInterrupt(timerISR); } void timerISR() { static bool state false; digitalWrite(LED_PIN, state); state !state; if(!state) { float vo analogRead(SENSOR_PIN) * (5.0 / 1023.0); float pm25 convertToPM25(vo); displayPM25(pm25); } } void loop() { // 主循环可以处理其他任务 }采用非阻塞式编程模式unsigned long previousMillis 0; const long interval 1000; // 1秒间隔 void loop() { unsigned long currentMillis millis(); if(currentMillis - previousMillis interval) { previousMillis currentMillis; // 执行定期任务 float vo analogRead(SENSOR_PIN) * (5.0 / 1023.0); float pm25 convertToPM25(vo); displayPM25(pm25); } // 其他任务可以在这里执行 }5.4 延长传感器寿命GP2Y1014AU传感器的LED有一定的使用寿命长期连续工作可能影响性能。可以通过以下方式延长使用寿命降低采样频率如每分钟采样一次减少LED点亮时间void readSensor() { digitalWrite(LED_PIN, LOW); delayMicroseconds(200); // 原为280μs适当减少 float vo analogRead(SENSOR_PIN) * (5.0 / 1023.0); digitalWrite(LED_PIN, HIGH); return vo; }添加传感器休眠模式void sleepSensor() { digitalWrite(LED_PIN, HIGH); // 可以完全断电通过MOS管控制VCC }

相关文章:

别再只盯着数据了!用Arduino+GP2Y1014AU传感器,手把手教你做个能“看见”空气的PM2.5监测仪

用Arduino打造智能PM2.5监测仪:从硬件连接到可视化交互 在空气质量日益受到关注的今天,拥有一个实时监测PM2.5浓度的设备不仅能提升生活品质,还能为健康保驾护航。不同于市面上千篇一律的商用监测仪,自己动手打造一个兼具实用性和…...

AI集成开发工程师的技术实践与转型之路

第一章:技术架构演进与AI融合趋势 1.1 传统开发范式的演进 现代软件开发正经历从单一业务系统向智能化业务系统的转型。传统的.NET技术栈作为企业级应用开发的基石,其技术架构也在不断演进: // 典型的三层架构示例 public class BusinessLogic {private readonly IDataAc…...

Snes9x音频系统深度探索:Blargg SPC库如何实现高保真声音模拟

Snes9x音频系统深度探索:Blargg SPC库如何实现高保真声音模拟 【免费下载链接】snes9x Snes9x - Portable Super Nintendo Entertainment System (TM) emulator 项目地址: https://gitcode.com/gh_mirrors/sn/snes9x Snes9x作为一款经典的Super Nintendo Ent…...

GLM-4v-9b效果展示:直播带货截图→话术分析+转化点提炼

GLM-4v-9b效果展示:直播带货截图→话术分析转化点提炼 1. 模型能力概览 GLM-4v-9b是智谱AI在2024年开源的多模态视觉-语言模型,拥有90亿参数。这个模型最大的特点是能够同时理解图片和文字,支持中英文多轮对话,在11201120高分辨…...

从 Python 和 Node.js 的流行看 Java 的真实位置

很多 Java 程序员都会有一个感觉:Python 很火,Node.js 也很火,Java 是不是没落了? 先说结论:Java 没有没落,只是位置变了。一、为什么 Python 和 Node.js 看起来更火 1. Python 火,是因为 AI 太…...

cool-admin(midway版)前端表单验证:AsyncValidator与异步校验完整指南

cool-admin(midway版)前端表单验证:AsyncValidator与异步校验完整指南 【免费下载链接】cool-admin-midway 🔥 cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midwa…...

renren-fast-vue系统配置中心使用指南:灵活配置与动态切换

renren-fast-vue系统配置中心使用指南:灵活配置与动态切换 【免费下载链接】renren-fast-vue renren-fast-vue基于vue、element-ui构建开发,实现renren-fast后台管理前端功能,提供一套更优的前端解决方案。 项目地址: https://gitcode.com/…...

快马ai一键生成:windows 11自动化部署openclaw环境原型脚本

最近在折腾Windows 11的开发环境配置,发现每次换新机器都要重复安装一堆工具链特别麻烦。正好发现了OpenClaw这个开源工具,它号称能自动化搞定开发环境部署。不过手动安装配置还是有点繁琐,于是我用InsCode(快马)平台快速生成了一个自动化安装…...

Python数据库操作终极指南:5分钟快速上手dataset轻松管理数据

Python数据库操作终极指南:5分钟快速上手dataset轻松管理数据 【免费下载链接】dataset Easy-to-use data handling for SQL data stores with support for implicit table creation, bulk loading, and transactions. 项目地址: https://gitcode.com/gh_mirrors/…...

表贴式PMSM超前角弱磁控制策略:弱磁id=0控制速度提升研究,从2000rpm到4000rp...

该模型实现表贴式PMSM的超前角弱磁控制策略 不打开弱磁id0控制速度只能达到2000rpm,打开能够弱磁到4000rpm在调试表贴式永磁同步电机(PMSM)时,发现一个有趣的现象:当保持id0的传统控制策略时,电机转速死活卡…...

YOLOv12镜像应用案例:如何快速构建自动驾驶感知原型系统

YOLOv12镜像应用案例:如何快速构建自动驾驶感知原型系统 1. 自动驾驶感知系统的技术挑战 自动驾驶技术正在重塑交通出行的未来,而感知系统作为"车辆的眼睛",其性能直接影响整个系统的安全性和可靠性。传统方案面临三大核心挑战&a…...

Flutter Documentation Website的布局系统:理解Flutter的约束模型

Flutter Documentation Website的布局系统:理解Flutter的约束模型 【免费下载链接】website Flutter documentation web site 项目地址: https://gitcode.com/gh_mirrors/websi/website Flutter Documentation Website的布局系统基于独特的约束模型&#xff…...

如何在React Native应用中实现Material Design动画效果:Ripple波纹与状态切换完整指南

如何在React Native应用中实现Material Design动画效果:Ripple波纹与状态切换完整指南 【免费下载链接】react-native-material-kit xinthink/react-native-material-kit: 该库为React Native提供了一套Material Design风格的UI组件,帮助开发者轻松构建遵…...

KOReader 2025.04:重新定义电子墨水屏阅读

KOReader 2025.04:重新定义电子墨水屏阅读 【免费下载链接】koreader An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices 项目地址: https://gitcode.co…...

ESLint-Plugin-Unicorn规则优先级设置终极指南:如何平衡代码质量和开发效率

ESLint-Plugin-Unicorn规则优先级设置终极指南:如何平衡代码质量和开发效率 【免费下载链接】eslint-plugin-unicorn More than 100 powerful ESLint rules 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-unicorn ESLint-Plugin-Unicorn是一个…...

告别电量焦虑:能源之星X如何让Windows笔记本续航轻松翻倍

告别电量焦虑:能源之星X如何让Windows笔记本续航轻松翻倍 【免费下载链接】EnergyStarX 🔋 Improve your Windows 11 devices battery life. A WinUI 3 GUI for https://github.com/imbushuo/EnergyStar. 项目地址: https://gitcode.com/gh_mirrors/en…...

4大场景:如何用ReplaceItems脚本实现Illustrator批量设计元素智能替换

4大场景:如何用ReplaceItems脚本实现Illustrator批量设计元素智能替换 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在UI设计和品牌视觉开发过程中,设计师…...

终极Übersicht小部件调试指南:10个实用工具和高效方法

终极bersicht小部件调试指南:10个实用工具和高效方法 【免费下载链接】uebersicht ˈyːbɐˌzɪt 项目地址: https://gitcode.com/gh_mirrors/ue/uebersicht bersicht是一款强大的macOS桌面小部件工具,让开发者能够在桌面上创建和运行自定义小部…...

Evolutionary Architecture by Example:如何避免过度工程化陷阱

Evolutionary Architecture by Example:如何避免过度工程化陷阱 【免费下载链接】evolutionary-architecture-by-example Navigate the complex landscape of .NET software architecture with our step-by-step, story-like guide. Unpack the interplay between m…...

Qwen3-14B部署后效果追踪:30天使用数据与关键指标增长分析

Qwen3-14B部署后效果追踪:30天使用数据与关键指标增长分析 1. 部署效果概览 在RTX 4090D 24GB显存环境下部署Qwen3-14B镜像后,我们对系统进行了为期30天的持续监测。数据显示,这套优化配置展现出令人印象深刻的稳定性和性能表现&#xff1a…...

koanf自定义Provider开发:扩展你的配置源终极指南

koanf自定义Provider开发:扩展你的配置源终极指南 【免费下载链接】koanf Simple, extremely lightweight, extensible, configuration management library for Go. Supports JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper. 项目地址…...

HunyuanVideo-Foley 企业级架构设计:基于Agent的分布式音效生成调度系统

HunyuanVideo-Foley 企业级架构设计:基于Agent的分布式音效生成调度系统 1. 引言:音效生成的企业级挑战 想象一下这样的场景:一家大型视频平台每天需要为上万条视频自动生成匹配的音效。传统单机方案面临三大难题:生成速度跟不上…...

FastAPI日志配置终极指南:10个简单步骤实现生产级日志管理

FastAPI日志配置终极指南:10个简单步骤实现生产级日志管理 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI作为现代…...

理解usearch的动态内存调整:实现高效向量搜索的终极指南

理解usearch的动态内存调整:实现高效向量搜索的终极指南 【免费下载链接】usearch Fast Open-Source Search & Clustering engine for Vectors & Arbitrary Objects in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolfr…...

超导电路阵列实验方案 V1.0桌面量子引力实验(自指动力学与类时空关联涌现)

超导电路阵列实验方案 V1.0 桌面量子引力实验(自指动力学与类时空关联涌现) 方案编号:SR-EXP-QG-001 版本:V1.0 一、核心科学目标 1. 科学目标 在一维/二维超导量子比特阵列中,引入全局量子态测量 实时反馈构建强自指…...

UI设计入门指南——Figma新手必备操作全解析

1. Figma入门:从零到第一个设计稿 第一次打开Figma时,很多人会被满屏的英文界面和复杂工具栏吓到。其实我刚接触时也一样,但现在回头看,掌握基础操作只需要30分钟。Figma作为目前最流行的UI设计工具,最大的优势就是零门…...

WPF进阶:Canvas动态图形绘制与交互实现

1. Canvas动态图形绘制基础 WPF中的Canvas就像一块无限延伸的画布,我们可以在这块画布上自由地绘制各种图形元素。与静态绘制不同,动态绘制的魅力在于图形能够根据用户操作实时变化。我刚开始接触Canvas时,最让我兴奋的就是看到鼠标移动时能实…...

Bambu Studio 3D打印切片实战指南:从技术原理到场景应用

Bambu Studio 3D打印切片实战指南:从技术原理到场景应用 【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio Bambu Studio作为一款专为3D打印优化的开源切片软件&…...

cool-admin(midway版)数据权限缓存:基于用户角色的权限数据预加载

cool-admin(midway版)数据权限缓存:基于用户角色的权限数据预加载 【免费下载链接】cool-admin-midway 🔥 cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midway.js…...

运维自动化新思路:使用Pixel Script Temple生成系统监控拓扑像素图

运维自动化新思路:使用Pixel Script Temple生成系统监控拓扑像素图 1. 引言:运维可视化的痛点与创新方案 每天早晨,运维工程师小李都要花1-2小时手动整理服务器状态报告。他需要从多个监控系统导出数据,在PPT中绘制网络拓扑图&a…...