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

基于ESP32的AIS转WiFi转换器:实现NMEA 0183数据无线传输

1. 项目概述从VHF-AIS接收器到iPad的无线桥梁作为一名经常在海上折腾电子设备的航海爱好者我最近遇到了一个挺实际的需求我的主力导航设备是iPad上的iSailor应用它功能强大、界面友好但有个“硬伤”——它需要通过WiFi信号来接收AIS自动识别系统数据。而我船上的标准设备是一台VHF-AIS接收机它老老实实地通过NMEA 0183串口线输出数据和iPad的WiFi世界完全是两个次元。总不能为了这个每次开船都拖根长长的数据线还得搞个串口转换器吧这太不“航海”了。于是动手打造一个“AIS转WiFi转换器”的想法就自然诞生了。这个项目的核心目标非常明确构建一个硬件接口它能从VHF-AIS接收器的NMEA 0183串口读取数据然后将这些关键的船舶动态信息位置、航向、航速等通过WiFi网络广播出去让我的iSailor App能够无缝接入。更进一步我还希望它能同时转发GPS数据通常来自另一台设备并为未来添加一个本地数据显示屏预留空间。这本质上是一个典型的嵌入式物联网IoT项目涉及硬件接口、数据协议转换和网络服务搭建非常适合喜欢动手解决实际问题的技术爱好者。2. 核心需求与方案设计解析2.1 需求拆解与技术选型首先我们需要把用户模糊的描述转化为清晰的技术规格。根据原始描述我们可以提炼出以下几个核心需求点数据输入至少两个独立的NMEA 0183串行数据输入通道。通道A (AIS)波特率38400 bps。这是AIS数据的标准速率数据量相对较大因为包含了周围多艘船舶的信息。通道B (GPS)波特率4800 bps。这是传统GPS设备的常见速率数据相对简单主要是本船的位置、时间和速度。数据处理与协议转换设备需要同时监听两个串口读取原始的NMEA 0183语句例如AIS数据主要是!AIVDM/!AIVDO语句GPS数据是$GPGGA、$GPRMC等。它不需要理解语句的具体内容但需要可靠地接收它们并准备进行转发。网络输出建立一个WiFi接入点AP或者连接到一个现有WiFi网络STA模式并创建一个TCP服务器或UDP广播服务。iSailor这类应用通常支持通过TCP连接指定IP和端口来接收NMEA数据流。因此转换器需要将两个串口汇聚来的NMEA数据流通过一个网络端口例如TCP 10110端口是常见选择发送出去。未来扩展预留一个字符型LCD4行x40列的显示接口以及两个按钮的输入接口用于未来实现本地数据查看与界面切换功能。基于以上需求硬件方案的选择就呼之欲出了。使用高性能的微控制器MCU是必然因为它需要管理多个外设串口、WiFi、GPIO。ESP32系列芯片成为了几乎是最优解。原因如下首先它集成了双核处理器和WiFi/蓝牙功能原生解决了网络连接问题其次它通常具备多个硬件UART串口正好满足我们双通道输入的需求最后其社区生态极其丰富有完善的Arduino核心和库支持开发效率极高。相比于使用树莓派等单板计算机ESP32在功耗、体积、成本和实时性方面对这类专用设备更具优势。2.2 系统架构设计整个系统的软件架构可以设计如下硬件抽象层初始化两个硬件UARTUART1和UART2分别设置为38400和4800波特率。初始化WiFi模块并将其配置为接入点模式例如SSID为“Boat_AIS_Converter”密码自定这样iPad可以直接连接它。初始化用于LCD和按钮的GPIO引脚。数据接收与缓冲为每个UART设置中断服务程序ISR或使用非阻塞式读取循环。当串口收到数据时立即将其存入对应的环形缓冲区Ring Buffer。使用缓冲区是为了避免数据丢失特别是在WiFi传输偶尔有延迟时。网络服务层在主循环中创建一个TCP服务器监听特定端口如10110。当有客户端iSailor App连接时将其连接句柄保存起来。数据汇聚与转发引擎这是核心逻辑。在主循环中持续检查两个串口的环形缓冲区。如果有数据就将其读出。这里有一个关键决策点如何混合两个速率不同的数据流简单的做法是“来者不拒先到先发”——从缓冲区读取数据后直接写入当前活跃的TCP客户端连接。但需要注意NMEA语句是以换行符(\r\n)结尾的完整句子必须保证发送时语句的完整性不能将一个句子拆开到两个网络数据包里。更稳健的做法是在缓冲区中按行提取完整的NMEA语句然后再发送。扩展功能线程/任务如果使用ESP32的Arduino框架可以利用FreeRTOS创建独立的任务。例如一个任务专门处理网络连接和数据转发另一个任务负责扫描按钮状态并更新LCD显示屏。这样能保证网络响应的实时性不被显示刷新等操作阻塞。3. 硬件搭建与核心电路详解3.1 元器件清单与选型考量主控芯片ESP32开发板如ESP32 DevKit C V4、NodeMCU-32S。建议选择引脚引出较多的型号方便连接LCD。电平转换模块关键NMEA 0183标准有多种电平常见的是RS-422差分信号用于长距离或简单的0-5V单端信号。大多数消费级VHF-AIS接收器输出的是单端信号。ESP32的GPIO引脚是3.3V电平且不耐5V电压。因此如果AIS/GPS设备输出5V信号必须使用电平转换器。推荐使用双向逻辑电平转换模块如TXB0104或者用分压电阻电路例如1kΩ和2kΩ电阻串联分压将5V降至约3.3V。如果设备输出是RS-422则需要MAX485之类的芯片进行转换。LCD显示屏4x40字符型LCD通常基于HD44780控制器或兼容芯片。这种屏幕使用并行接口需要较多GPIO至少7个RS, EN, D4, D5, D6, D7加上背光控制。也可以选择I2C接口的版本只需要2根线SCL, SDA大大节省引脚是更推荐的选择。按钮与电阻两个轻触开关以及两个10kΩ的上拉电阻。电源ESP32开发板通常通过Micro-USB供电5V。在船上你需要一个稳定的5V电源可以从船电系统通过DC-DC降压模块获得。务必考虑电源的防浪涌和隔离船电环境比较恶劣。注意电平转换是硬件成功的第一步也是最多人栽跟头的地方。直接连接5V信号到ESP32引脚极有可能瞬间烧毁芯片。在接通任何外部设备前务必用万用表测量其输出信号电压范围。3.2 电路连接示意图文字描述由于不能使用图表我将详细描述连接关系AIS数据线连接假设你的AIS接收器NMEA输出线是两根AIS_TX(信号) 和GND。将AIS_TX接入电平转换模块的5V侧高压侧。将电平转换模块3.3V侧低压侧的输出连接到ESP32的某个RX引脚例如GPIO16(RX2)。将AIS接收器的GND与ESP32的GND连接。GPS数据线连接与AIS连接类似。GPS设备的TX信号线通过电平转换后连接到ESP32的另一个RX引脚例如GPIO4可以配置为UART的RX。LCD连接以I2C为例LCD I2C模块的SCL- ESP32的GPIO22(默认I2C SCL)。LCD I2C模块的SDA- ESP32的GPIO21(默认I2C SDA)。VCC- ESP32的3.3V或5V视模块支持电压而定。GND-GND。按钮连接按钮1一端接GND另一端接GPIO32并在GPIO32与3.3V之间连接一个10kΩ上拉电阻。按钮2同理连接至GPIO33。电源确保所有设备的GND最终都连接到一起。为ESP32提供稳定的5V USB供电。4. 软件实现与核心代码剖析4.1 开发环境与库准备我们使用Arduino IDE进行开发因为它对ESP32支持友好库管理方便。安装ESP32开发板支持在Arduino IDE的“开发板管理器”中添加ESP32的板支持网址并安装。安装必要库WiFiESP32 Arduino核心自带。LCD如果使用I2C LCD安装LiquidCrystal_I2C库。串口缓冲区管理可以使用CircularBuffer库或者自己实现简单的字符数组缓冲区。4.2 核心代码结构解析以下是程序骨架的关键部分省略了细节初始化和错误处理以突出重点。#include WiFi.h #include WiFiClient.h #include WebServer.h #include Wire.h #include LiquidCrystal_I2C.h // 硬件引脚定义 #define AIS_RX_PIN 16 // UART2 RX #define GPS_RX_PIN 4 // 可配置为软串口或硬件UART1的RX #define BUTTON1_PIN 32 #define BUTTON2_PIN 33 // 网络设置 const char* ssid Boat_AIS_Converter; const char* password your_password; WiFiServer tcpServer(10110); // 创建TCP服务器端口10110 WiFiClient client; // 用于保存连接的客户端 // LCD对象 (假设I2C地址为0x27) LiquidCrystal_I2C lcd(0x27, 40, 4); // 串口缓冲区 HardwareSerial SerialAIS(2); // 使用UART2 HardwareSerial SerialGPS(1); // 使用UART1 String aisBuffer ; String gpsBuffer ; void setup() { Serial.begin(115200); // 用于调试 // 1. 初始化串口 SerialAIS.begin(38400, SERIAL_8N1, AIS_RX_PIN, -1); // 只接收不发送 SerialGPS.begin(4800, SERIAL_8N1, GPS_RX_PIN, -1); // 2. 初始化WiFi为AP模式 WiFi.softAP(ssid, password); Serial.print(AP IP address: ); Serial.println(WiFi.softAPIP()); // 3. 启动TCP服务器 tcpServer.begin(); Serial.println(TCP Server started on port 10110); // 4. 初始化LCD lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print(AIS-WiFi Conv Ready); // 5. 初始化按钮引脚为上拉输入模式 pinMode(BUTTON1_PIN, INPUT_PULLUP); pinMode(BUTTON2_PIN, INPUT_PULLUP); } void loop() { // 检查是否有新的网络客户端连接 if (!client || !client.connected()) { client tcpServer.available(); if (client) { Serial.println(New client connected!); lcd.setCursor(0,1); lcd.print(Client Connected ); } } // 处理AIS串口数据 while (SerialAIS.available()) { char c SerialAIS.read(); if (c \n) { // NMEA语句以换行符结束 if (client client.connected()) { client.print(aisBuffer); // 发送完整语句 client.print(\r\n); // 补上终止符 } // 可选更新LCD显示AIS相关摘要信息 updateLCDWithAIS(aisBuffer); aisBuffer ; // 清空缓冲区 } else if (c ! \r) { // 忽略回车符 aisBuffer c; } } // 处理GPS串口数据 (逻辑与AIS相同) while (SerialGPS.available()) { char c SerialGPS.read(); if (c \n) { if (client client.connected()) { client.print(gpsBuffer); client.print(\r\n); } updateLCDWithGPS(gpsBuffer); gpsBuffer ; } else if (c ! \r) { gpsBuffer c; } } // 检查按钮状态用于切换LCD显示模式 static int displayMode 0; if (digitalRead(BUTTON1_PIN) LOW) { // 按钮按下为低电平 delay(50); // 简单消抖 if (digitalRead(BUTTON1_PIN) LOW) { displayMode (displayMode 1) % 3; // 假设有3种显示模式 changeDisplayMode(displayMode); while(digitalRead(BUTTON1_PIN) LOW); // 等待释放 } } // 类似处理BUTTON2_PIN... } // 辅助函数从AIS NMEA语句中解析并更新LCD简化版 void updateLCDWithAIS(String data) { if (data.startsWith(!AIVDM)) { // 这里应放置复杂的AIVDM报文解析代码 // 简化为显示最近一条消息的时间或MMSI船舶识别码后几位 lcd.setCursor(0, 2); lcd.print(AIS: ); lcd.print(data.substring(data.length()-10, data.length()-5)); // 示例显示 } } void updateLCDWithGPS(String data) { if (data.startsWith($GPRMC)) { // 解析GPRMC语句获取时间、经纬度、速度 // 简化为显示时间 lcd.setCursor(0, 3); lcd.print(GPS: ); lcd.print(data.substring(7, 13)); // 显示UTC时间 } } void changeDisplayMode(int mode) { lcd.clear(); switch(mode) { case 0: lcd.print(Mode0: AIS Msg); break; case 1: lcd.print(Mode1: GPS Info); break; case 2: lcd.print(Mode2: Sys Stat); break; } }这段代码提供了一个最基础的框架。它创建了一个WiFi热点将两个串口接收到的完整NMEA语句转发给连接的TCP客户端并初步实现了LCD显示和按钮切换功能。5. 调试、优化与功能增强5.1 上电调试与数据验证分步调试不要一次性连接所有设备。首先只给ESP32上电通过串口监视器查看它能否正确启动AP并打印出IP地址。网络测试用手机或电脑连接“Boat_AIS_Converter”这个WiFi尝试用网络调试工具如TCP Client功能连接ESP32的IP地址和10110端口。此时因为串口没数据工具应该只是保持连接。串口数据注入暂时不接AIS/GPS设备。可以用一个USB转TTL模块设置为3.3V模拟发送NMEA数据到ESP32的GPIO16。发送一条$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A\r\n。观察网络调试工具是否收到了完全相同的数据同时观察LCD显示是否更新。连接真实设备在确认模拟数据能正确转发后断开模拟器连接真实的AIS接收器和GPS。观察数据流是否稳定。特别注意电平转换模块是否发热ESP32是否工作正常。5.2 性能优化与稳定性提升基础版本能工作但在真实船舶环境中可能面临挑战需要进行优化双缓冲区与流控当前使用String对象在中断环境Serial.available()循环中拼接数据在高速数据流下可能导致内存碎片或响应不及时。更专业的做法是使用环形缓冲区Ring Buffer。为每个串口设置一个字符环形缓冲区串口中断只负责将数据填入缓冲区。主循环loop()中定期检查并处理缓冲区中的数据按行提取和发送。这能有效应对数据突发。WiFi稳定性与重连机制当前代码是AP模式。如果希望设备连接船上的现有WiFi路由器STA模式必须增加WiFi断开重连的逻辑。可以使用WiFi.setAutoReconnect(true)和WiFi.onEvent来监听WiFi事件实现稳健的重连。多客户端与数据广播当前代码只支持一个TCP客户端。iSailor连接后其他设备如另一部手机就无法获取数据了。可以修改为维护一个客户端链表实现多客户端支持。或者更简单高效的方式是使用UDP广播。将NMEA数据以UDP报文形式发送到广播地址如255.255.255.255:10110局域网内所有设备都能接收。这避免了连接管理的麻烦但需要确认iSailor是否支持UDP模式。NMEA语句过滤与校验可以增加对NMEA语句的校验和验证丢弃无效数据。还可以根据需求过滤语句例如只转发!AIVDM和$GPRMC忽略其他不必要的数据减轻网络负担。LCD显示信息优化当前的updateLCDWithAIS函数只是简单截取字符串。真正的价值在于解析AIVDM报文。你可以集成一个轻量级的AIS解码库如libais的C移植简化版在LCD上显示附近最近一艘船的距离、方位和CPA最近会遇点/TCPA最近会遇时间等关键安全信息。5.3 常见问题与排查实录在实际制作和测试中我遇到了以下几个典型问题及解决方法问题ESP32接收到的数据全是乱码。排查首先检查波特率是否设置正确38400和4800。最常见的是电平问题。用万用表测量AIS接收器输出引脚在空闲和发送时的电压。如果是5V必须加电平转换。如果是RS-422差分信号则需要MAX485芯片。解决确认使用正确的电平转换电路并确保所有设备的GND共地。问题iSailor App连接上WiFi后显示“正在接收数据”但看不到任何船舶。排查使用网络调试工具如“TCP Client Server”工具连接转换器的10110端口查看是否有原始NMEA数据流出来。如果没有回到上一步检查串口。如果有数据检查数据是否包含有效的!AIVDM语句。可能是AIS接收器天线问题或所在位置无AIS信号。解决确保网络调试工具能收到!AIVDM开头的句子。在iSailor的设置中确认输入源是“TCP”或“WiFi”并正确输入了ESP32的IP地址和端口10110。问题数据转发有延迟或者偶尔丢包。排查可能是主循环处理太慢或者String操作导致内存分配延迟。同时检查WiFi信号强度。解决实施环形缓冲区优化。将LCD刷新和按钮扫描等非实时任务放入低优先级循环或使用FreeRTOS任务管理。确保ESP32放置在信号良好的位置。问题同时连接AIS和GPS时系统有时会重启。排查很可能是电源问题。ESP32在射频WiFi工作时峰值电流可能达到500mA如果电源尤其是USB线供电不足会导致电压跌落而重启。解决使用高质量的USB线和5V/2A以上的电源适配器。在船上应用时最好使用专业的5V稳压模块为ESP32供电并增加大容量滤波电容如1000uF以应对发动机启动等引起的电压波动。这个项目从构思到实现是一个典型的硬件集成、嵌入式编程和网络应用相结合的过程。它完美地解决了特定场景下的设备互联问题。完成后的转换器体积小巧可以封装在防水盒内固定在驾驶台附近。通过这个自制设备我不仅让iPad上的导航软件发挥了全部潜力更重要的是在整个过程中对串口通信、网络协议和嵌入式系统有了更深入的理解。这种“创造工具来解决自己问题”的成就感是单纯购买成品设备无法比拟的。如果你也面临类似的设备数据孤岛问题不妨以这个项目为参考动手搭建属于你自己的数据桥梁。

相关文章:

基于ESP32的AIS转WiFi转换器:实现NMEA 0183数据无线传输

1. 项目概述:从VHF-AIS接收器到iPad的无线桥梁作为一名经常在海上折腾电子设备的航海爱好者,我最近遇到了一个挺实际的需求:我的主力导航设备是iPad上的iSailor应用,它功能强大、界面友好,但有个“硬伤”——它需要通过…...

写论文的神助攻!好用的AI写作辅助软件,逻辑清晰质量高

作为一名刚完成毕业论文的过来人,我太懂写论文的痛苦了 —— 选题迷茫、文献浩如烟海、框架混乱、逻辑不清、反复修改、查重降重反复折腾... 直到我发现了这套 AI 写作工具组合,简直是论文写作的 "开挂神器",效率直接拉满&#xff…...

终极免费方案:WandEnhancer完整解锁WeMod Pro功能快速指南

终极免费方案:WandEnhancer完整解锁WeMod Pro功能快速指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否渴望享受WeMod Pro会员的所…...

机器学习与SHAP在教育公平研究中的应用:精准定位学业困境根源

1. 项目概述:当机器学习遇见教育公平,我们如何精准定位学业困境的根源?在拉丁美洲的教育研究领域,一个长期困扰政策制定者和研究者的核心问题是:究竟是什么因素,在复杂的社会经济背景下,系统性地…...

学术写作创新突破!2026全流程AI论文工具精选指南

2026 年 AI 论文写作工具已进入全流程闭环 学术合规时代,千笔 AI(综合评分 99 分)中文学术场景标杆;Grammarly Academic与Elicit为英文论文写作首选;按需求匹配度 - 数据可信度 - 成本承受力三维模型选型,…...

‌2026智慧校园规划必读:如何在预算吃紧下选到高性价比方案‌

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...

告别鼠标手!5分钟上手开源鼠标连点器MouseClick,轻松实现自动化点击

告别鼠标手!5分钟上手开源鼠标连点器MouseClick,轻松实现自动化点击 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软…...

VMware ESXi 9.1.0.0集成NVME+网卡驱动版发布|新特性+驱动集成+部署升级+FAQ全指南

一、ESXi 9.1.0.0 正式版核心新特性 VMware ESXi 9.1.0.0(2026 年 5 月发布)是 vSphere 9.1 核心组件,聚焦硬件兼容扩展、性能跃升、安全加固、运维简化四大方向,重点强化 NVMe 存储与网卡生态适配,以下为关键更新&am…...

FeHelper前端助手:30+开发工具集,让你的浏览器变身效率神器

FeHelper前端助手:30开发工具集,让你的浏览器变身效率神器 【免费下载链接】FeHelper 😍FeHelper--Web前端助手(Awesome!Chrome & Firefox & MS-Edge Extension, All in one Toolbox!) 项目地址:…...

为什么软件开发偏爱 Linux?深度剖析 Linux 相较于 Windows 的核心优势

引言 在软件开发的世界里,一个有趣的现象是:无论是大型互联网公司的服务器集群,还是资深程序员的个人开发机,Linux 操作系统的身影无处不在。与之形成鲜明对比的是,尽管 Windows 在个人消费市场占据绝对主导地位&…...

钱钟书《围城》第1-5章阅读笔记:一场关于人生困境的提前预演

前言 钱钟书先生的《围城》被誉为"新儒林外史",是中国现代文学史上风格独特的讽刺经典。这部创作于20世纪40年代的长篇小说,以抗战初期为背景,通过主人公方鸿渐的人生轨迹,深刻揭示了知识分子群体的精神困境与人性弱点。…...

从CTF题看RSA安全:为什么你的密钥不能‘共享素数’?

从CTF实战看RSA密钥安全:那些年我们踩过的坑 在网络安全竞赛和实际渗透测试中,RSA算法的错误实现方式往往成为突破的关键点。本文将通过典型CTF赛题案例,揭示五种常见RSA实现漏洞背后的数学原理和安全启示,帮助开发者在实际项目中…...

如何让Rhino 3D模型在Blender中保持完整数据:import_3dm插件深度解析

如何让Rhino 3D模型在Blender中保持完整数据:import_3dm插件深度解析 【免费下载链接】import_3dm Blender importer script for Rhinoceros 3D files 项目地址: https://gitcode.com/gh_mirrors/im/import_3dm 当建筑师需要在Blender中渲染Rhino设计的建筑模…...

《我看见的世界:李飞飞自传》第1-6章阅读笔记:从移民少女到AI教母的“看见“之旅

前言 当我们谈论人工智能时,我们谈论的是算法、数据、算力,是那些冰冷的代码和复杂的模型。但在《我看见的世界:李飞飞自传》中,李飞飞用她独特的视角告诉我们:AI的本质,是人类对"看见"世界的渴望…...

搞定这 5 个全栈电商项目,面试别再用 Todo-List 凑数了

找独立开发练手项目或者写简历项目时,最忌讳两件事:一是太简单(纯前端 Mock 数据,点两下就没了),二是太假(一上来就硬套微服务、消息队列、高并发,结果自己根本Hold不住)…...

Taotoken平台快速获取APIKey并开始你的第一个Python调用示例

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken平台快速获取APIKey并开始你的第一个Python调用示例 1. 准备工作:注册与登录 要开始使用Taotoken&#xff0c…...

智能体所有权与版权:AI Agent Harness Engineering 创造的作品归谁所有?

1. 标题选项 《AI Agent创作版权迷局破解:从Harness工程原理到所有权划分的完整指南》 《智能体作品归谁?AI Agent Harness Engineering场景下的版权规则深度拆解》 《告别权属纠纷:一文搞懂AI Agent生成内容的所有权、版权与收益分配规则》 《Harness工程视角下的AI创作权:…...

PCB虚焊/走线断裂/焊盘脱落工程师易漏判

PCB 故障中,30% 并非元件损坏,而是 PCB 本身的隐性故障—— 虚焊、走线断裂、焊盘脱落、过孔开路。这类故障外观隐蔽、时好时坏、排查难度大,很多工程师反复更换元件仍无法解决,最终误判为 “板报废”。​一、PCB 隐性故障核心成因…...

半导体元件(二极管/三极管/MOS管/IC)损坏诊断全解

半导体元件(二极管、三极管、MOS 管、集成电路)是 PCB 的核心功能单元,对过压、过流、ESD、高温极度敏感,损坏后直接导致电路功能失效、短路烧板。很多工程师维修时盲目更换芯片,不仅成本高,还易误判。​一…...

电容损坏深度诊断,从外观到 ESR精准区分容衰与漏电

在 PCB 故障中,电容损坏占比超 40%,是当之无愧的 “头号杀手”。很多工程师仅靠 “鼓包漏液” 判断电容好坏,殊不知80% 的电容损坏是隐性的—— 外观平整但容值衰减、ESR 升高、轻微漏电,导致供电不稳、系统重启、噪声增大&#x…...

Gofile批量下载自动化工具:5步实现高效文件管理解决方案

Gofile批量下载自动化工具:5步实现高效文件管理解决方案 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 在当今数字化工作环境中,技术团队经常需要从…...

3步解锁网易云音乐NCM加密:让音乐真正属于你

3步解锁网易云音乐NCM加密:让音乐真正属于你 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为下载的网易云音乐只能在特定客户端播放而烦恼吗?当你精心收藏的歌曲被NCM格式"锁"在单一平台时&a…...

Sangfor文件夹可以删除吗?【图文讲解】深信服文件夹残留清理?如何彻底删除深信服?Sangfor文件夹是什么?

(1)问题背景打开C盘,突然冒出个Sangfor 文件夹,占用好几个 GB 空间,想删又不敢删,怕删坏系统、断网崩溃;上网一查,说法五花八门,有人说是病毒,有人说是办公软…...

内存占用3KB!极致瘦身释放MCU无限可能

极致小体积,给工业领域带来了无限的可能:更低硬件成本,更小芯片体积,更低功耗,更高可靠性,让每一颗小MCU都拥有大系统的完整能力。 https://www.bilibili.com/video/BV1eZLi6PEjc/?spm_id_from333.1387.ho…...

0.2毫秒快速启动的操作系统

在工业控制以及航空航天等核心场景,极速启动就是高可靠系统的生命线。0.2毫秒超快启动搭配硬件看门狗,让设备在掉电重启、异常恢复时瞬时归位,关键任务永不延误! https://www.bilibili.com/video/BV11mLY6VERt/?spm_id_from333.1…...

使用TaotokenCLI工具一键配置开发环境中的API密钥

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken CLI工具一键配置开发环境中的API密钥 在团队协作或个人开发中,为每个项目或成员手动配置大模型API密钥和…...

基于可解释机器学习的城市人口流动空间降尺度分析实践

1. 项目概述:从宏观到微观,解码城市脉搏在城市的肌理中,人口的流动如同血液的循环,承载着经济活力、社会互动与空间结构的全部信息。无论是城市规划师优化公交线路,还是商业分析师评估店铺选址,亦或是公共卫…...

CentOS服务器上VNC连接失败?手把手教你排查并修复个人端口问题(附重启命令)

CentOS服务器VNC连接故障深度排查指南:从原理到实战当你在深夜赶项目时,突然发现VNC连接不上服务器,那种焦虑感我深有体会。去年参与半导体器件仿真项目时,我也曾被这个问题困扰整整两天。本文将分享一套经过实战检验的排查方法论…...

开发转兼职DBA(二):执行计划教我做事

开发转兼职DBA(二):执行计划教我做事 查询慢了不知道为什么,加了索引还是慢,复合索引怎么建,执行计划怎么看——这些不是DBA的专利,是每个写SQL的开发者迟早要面对的事。 文章目录 开发转兼职DB…...

双系统Ubuntu磁盘告急?别重装!用GParted无损扩容保姆级教程(附U盘启动盘制作)

双系统Ubuntu磁盘告急?别重装!用GParted无损扩容保姆级教程(附U盘启动盘制作)当你在Windows和Ubuntu双系统环境下工作时,是否遇到过这样的窘境:当初安装时给Ubuntu分配的空间捉襟见肘,而Windows…...