用L298N驱动直流电机:从PWM原理到两轮小车实战
用L298N驱动直流电机从PWM原理到两轮小车实战你是否曾对机器人底盘平稳移动、精准转向背后的秘密感到好奇或者当你亲手组装好一个机器人框架却卡在如何让轮子听话地转起来这一步对于许多创客和硬件爱好者来说从理解理论到实现一个能跑能停、速度可控的移动平台中间往往隔着一道实践的鸿沟。今天我们就来彻底拆解这个经典课题不仅弄懂脉冲宽度调制PWM和H桥的工作原理更要亲手用一块廉价的L298N驱动模块结合Arduino打造一个属于自己的、功能完整的双轮驱动机器人底盘。这不仅仅是连接几根线、上传一段代码那么简单我们将深入每个环节的“为什么”让你在动手之后真正掌握电机控制的精髓。1. 核心原理为什么PWM和H桥是电机控制的基石在直接动手接线之前花点时间理解背后的物理和电子原理至关重要。这能让你在调试时面对电机不转、转向错误或速度异常等问题不再是盲目地猜测而是有根据地分析和解决。1.1 深入理解PWM用数字信号模拟“模拟”电压直流电机的转速从根本上说取决于其两端电压的平均值。给一个额定12V的电机施加12V电压它就以最高速旋转施加6V转速就大致减半。但问题来了我们常用的微控制器如Arduino输出的是数字信号只有0V低电平和5V高电平两种状态如何产生一个可变的“模拟”电压呢这就是脉冲宽度调制PWM大显身手的地方。PWM的精髓在于它通过快速开关电源改变一个周期内高电平所占的时间比例即占空比来等效出一个连续变化的平均电压。想象一下你用手指快速地点动一个水龙头开关。如果你在一秒钟内只打开0.1秒然后关闭0.9秒流出的总水量就很少相当于一个低电压。如果你打开0.9秒关闭0.1秒流出的水量就接近全开状态相当于一个高电压。PWM对电机的控制也是如此。在Arduino中标有“~”符号的引脚如3, 5, 6, 9, 10, 11支持硬件PWM输出。analogWrite(pin, value)函数中的value参数范围是0到255直接对应了0%到100%的占空比。注意PWM频率也是一个关键参数。Arduino Uno的默认PWM频率约为490Hz或980Hz因引脚而异。对于大多数直流电机这个频率是合适的。频率太低电机会产生可闻的啸叫声频率太高可能会超出驱动芯片的响应能力。L298N可以很好地处理这个范围的频率。1.2 H桥电路让电机“倒车”的魔法开关控制速度解决了那如何让电机正转和反转呢这需要改变电机两端的电压极性。实现这一功能的经典电路就是H桥。它的结构如其名像一个大写的“H”电机位于中间一竖四个开关通常是晶体管或MOSFET位于四个桥臂上。通过精确控制这四个开关的闭合与断开我们可以实现四种基本状态开关组合 (S1, S2, S3, S4)电流路径电机状态S1和S4闭合S2和S3断开电流从左流向右正转S2和S3闭合S1和S4断开电流从右流向左反转S1和S3闭合或S2和S4闭合电源被短路危险绝对禁止所有开关断开或同侧开关断开无电流停止自由停止S1和S2同时闭合或S3和S4同时闭合电源被短路危险绝对禁止表格中最后两种危险状态在实际的驱动芯片如L298N内部逻辑中已被设计防止这也是我们使用集成模块而非自己搭建分立元件H桥的一个重要原因——安全性和可靠性大大提升。L298N芯片内部就集成了两套完整的H桥电路可以独立驱动两个直流电机这正是它成为两轮小车驱动核心的硬件基础。2. L298N模块深度解析不只是接线更是理解市面上常见的L298N模块是一个蓝色或绿色的电路板上面有一个带散热片的黑色芯片和一堆接线端子。把它仅仅看作一个“转接板”就太低估它了。理解其每一个引脚和设计细节是避免烧毁模块和电机的关键。2.1 电源系统最易出错的环节L298N模块上有两套甚至三套电源混淆它们是新手最常见的“炸板”原因。电机驱动电源 (VS / VCC / 12V输入)这个电源通过模块侧面的螺丝端子输入用于给电机本身供电。电压范围很宽5V-35V但推荐7V-12V。这个电压直接决定了电机的最终转速和扭矩。你需要根据电机的额定电压来选择例如常见的TT马达额定电压为3-6VN20马达可能是6V或12V。逻辑电路电源 (VSS / 5V / 5V输入)这个电源用于给L298N芯片内部的逻辑控制部分供电确保它能正确理解来自Arduino的5V电平信号。这里有两种供电方式通过一个跳线帽来选择方式A使用板载5V稳压器当电机驱动电源VS的电压不高于12V时可以插上这个跳线帽。此时板载的稳压芯片会从VS取电降压产生一个5V逻辑电源。这个5V还可以从旁边的“5V”端子输出给Arduino或其他传感器供电注意电流限制。方式B外部独立5V供电当电机驱动电源VS的电压高于12V比如你用24V电池组驱动大功率电机时必须拔掉跳线帽否则高压会烧毁板载5V稳压器。此时你需要从“5V”端子单独接入一个稳定的5V电源可以从Arduino的5V引脚引过来为逻辑电路供电。GND地这是整个系统的公共参考点。至关重要的一点是Arduino的GND、L298N模块的GND、以及电机驱动电源的负极必须全部连接在一起形成一个共同的“地”。否则信号无法正确识别系统将无法工作。提示一个快速检查电源连接是否正确的方法是先不接电机给模块上电后测量“5V”端子和GND之间的电压。如果跳线帽插着且VS接电这里应该是5V如果跳线帽拔了这里应该是你外部接入的5V电压。这是逻辑电路正常工作的第一道保障。2.2 控制引脚大脑与肌肉的对话接口控制引脚是Arduino向L298N发送指令的通道分为两类方向控制引脚 (IN1, IN2, IN3, IN4)每组两个引脚IN1/IN2控制电机AIN3/IN4控制电机B共同决定电机的旋转方向。它们接收的是数字信号HIGH/LOW。其真值表是控制逻辑的核心IN1IN2电机A状态LOWLOW刹车/停止低电平快刹HIGHLOW正转LOWHIGH反转HIGHHIGH刹车/停止高电平快刹使能/速度控制引脚 (ENA, ENB)这两个引脚是PWM信号的输入口。当它们为高电平或PWM信号时对应的电机通道才被激活当为低电平时无论方向引脚如何设置电机都会停止相当于切断电源。通过向这两个引脚输入PWM信号我们就能无级调节电机的速度。2.3 压降与散热性能与现实的权衡L298N芯片并非理想开关其内部的晶体管在导通时会产生约1V的压降。由于电流需要流经两个晶体管H桥的上下臂所以总压降约为2V。这意味着如果你用12V电池给VS供电电机实际得到的电压只有10V左右。所以如果你希望电机达到标称的12V全速就需要准备一个14V左右的电源。这个压降的副作用是电能以热量的形式消耗在芯片上这就是为什么L298N需要一个硕大的散热片并且在驱动大电流电机时发热严重。在选择电源时务必把这个“电压损耗”考虑进去。3. 从零搭建两轮小车的硬件系统集成理论准备就绪现在开始实战组装。我们将构建一个典型的差分驱动两轮小车平台这是几乎所有轮式机器人的基础。3.1 物料清单与连接图你需要准备以下部件Arduino Uno 开发板 x1L298N 电机驱动模块 x1直流减速电机TT马达或N20 x2带编码盘的轮子 x2万向轮或牛眼轮 x1用于支撑小车底盘板亚克力或金属 x118650电池盒2节或3节串联或7.4V/11.1V锂电池 x1杜邦线公对公、公对母若干开关 x1连接关系如下图所示文字描述如下[电源系统] 电池正极 - 开关 - L298N的VS端子 电池负极 - L298N的GND端子 L298N的GND端子 - Arduino的GND引脚 (必须连接) [逻辑供电] (假设使用2节18650电池约7.4V 12V) 将L298N模块上的“5V-EN”跳线帽**插上**。 此时L298N的5V端子可输出5V可连接至Arduino的Vin或5V引脚为其供电注意电流但更推荐Arduino独立USB供电以隔离干扰。 [控制信号连接] Arduino D9 (PWM) - L298N ENA Arduino D8 - L298N IN1 Arduino D7 - L298N IN2 Arduino D6 (PWM) - L298N ENB (如果使用否则接5V) Arduino D5 - L298N IN3 Arduino D4 - L298N IN4 [电机连接] 电机A的两根线 - L298N的OUT1和OUT2 电机B的两根线 - L298N的OUT3和OUT4 (如果电机转向与预期相反只需对调这两根线即可无正负之分)3.2 分步搭建与关键技巧机械组装先将电机安装到底盘上再装好轮子和万向轮。确保结构稳固轮子转动顺畅没有卡滞。电源先行先连接电池到L298N的VS和GND。在接通开关前再次检查跳线帽状态7.4V电池应插上、电池极性是否正确。信号后连用杜邦线连接Arduino和L298N的控制引脚。建议使用不同颜色的线区分电源、地和信号。共地共地共地这是最重要的步骤。务必用一根导线将L298N的GND端子与Arduino的任何一个GND引脚可靠连接。没有共地控制信号就是无效的。最后接电机电机线最后连接方便测试时调整转向。一个常见的进阶技巧是为了减少Arduino引脚占用可以将ENA和ENB直接连接到Arduino的5V引脚通过一个1k电阻更安全这样电机就始终使能速度通过改变电源电压或使用更高级的PID算法来控制方向引脚实现调速称为“单极驱动”但这会损失刹车功能。对于初学者建议保留PWM连接以获得最全面的控制能力。4. Arduino编程实战超越基础驱动硬件连接好后我们来编写控制程序。我们将从最基础的测试开始逐步实现一个可遥控的小车控制逻辑。4.1 基础功能测试与封装首先我们定义一个电机控制函数库让主程序更清晰。创建一个新的Arduino草图输入以下代码// motor_control.h - 电机控制头文件在实际项目中可保存为单独文件 #ifndef MOTOR_CONTROL_H #define MOTOR_CONTROL_H // 定义引脚连接 const int ENA 9; const int IN1 8; const int IN2 7; const int ENB 6; // 如果ENB接5V则此引脚定义可忽略函数需调整 const int IN3 5; const int IN4 4; // 电机结构体方便管理 struct DCMotor { int enPin; int in1Pin; int in2Pin; }; // 声明两个电机对象 extern DCMotor motorA; extern DCMotor motorB; // 函数声明 void setupMotors(); void setMotorSpeed(DCMotor motor, int speed); // speed范围-255 到 255负值为反转 void stopMotor(DCMotor motor); void brakeMotor(DCMotor motor); // 刹车与停止略有不同 #endif接着实现对应的.cpp文件功能// motor_control.cpp #include Arduino.h #include motor_control.h DCMotor motorA {ENA, IN1, IN2}; DCMotor motorB {ENB, IN3, IN4}; void setupMotors() { pinMode(motorA.enPin, OUTPUT); pinMode(motorA.in1Pin, OUTPUT); pinMode(motorA.in2Pin, OUTPUT); pinMode(motorB.enPin, OUTPUT); pinMode(motorB.in1Pin, OUTPUT); pinMode(motorB.in2Pin, OUTPUT); // 初始状态停止 stopMotor(motorA); stopMotor(motorB); } void setMotorSpeed(DCMotor motor, int speed) { speed constrain(speed, -255, 255); // 限制速度范围 if (speed 0) { // 正转 digitalWrite(motor.in1Pin, HIGH); digitalWrite(motor.in2Pin, LOW); analogWrite(motor.enPin, speed); } else if (speed 0) { // 反转 digitalWrite(motor.in1Pin, LOW); digitalWrite(motor.in2Pin, HIGH); analogWrite(motor.enPin, -speed); // 取绝对值 } else { // 速度为零停止 stopMotor(motor); } } void stopMotor(DCMotor motor) { // 自由停止使能端置低电机惯性滑行 analogWrite(motor.enPin, 0); // 方向引脚状态可任意通常也置低 digitalWrite(motor.in1Pin, LOW); digitalWrite(motor.in2Pin, LOW); } void brakeMotor(DCMotor motor) { // 刹车将两个输入引脚置为相同电平通常都高或都低电机快速停止 digitalWrite(motor.in1Pin, HIGH); digitalWrite(motor.in2Pin, HIGH); analogWrite(motor.enPin, 255); // 使能端给高确保刹车生效 // 短暂保持后可以调用stopMotor }4.2 实现小车基本运动模式利用封装好的函数我们可以轻松实现小车的各种运动模式。在主程序文件中#include motor_control.h void setup() { Serial.begin(9600); setupMotors(); Serial.println(Motor System Ready.); } void loop() { // 测试1: 前进3秒 Serial.println(Moving Forward); setMotorSpeed(motorA, 200); // 右轮速度 setMotorSpeed(motorB, 200); // 左轮速度 delay(3000); // 测试2: 原地右转2秒 (右轮反转左轮正转) Serial.println(Turning Right (Spin)); setMotorSpeed(motorA, -150); setMotorSpeed(motorB, 150); delay(2000); // 测试3: 刹车测试 Serial.println(Braking); brakeMotor(motorA); brakeMotor(motorB); delay(1000); stopMotor(motorA); stopMotor(motorB); delay(1000); // 测试4: 缓慢加速与减速 Serial.println(Accelerate Decelerate); for (int i 0; i 255; i5) { setMotorSpeed(motorA, i); setMotorSpeed(motorB, i); delay(50); } for (int i 255; i 0; i-5) { setMotorSpeed(motorA, i); setMotorSpeed(motorB, i); delay(50); } stopMotor(motorA); stopMotor(motorB); delay(2000); }上传代码后你的小车应该能依次执行前进、旋转、刹车和加减速动作。如果某个轮子转向相反只需在setMotorSpeed函数调用中给那个电机的速度值加上负号或者在硬件上对调电机接线即可。4.3 融入传感器与进阶控制一个能自主运动的小车离不开传感器。最常见的便是通过红外或超声波传感器实现避障。这里以HC-SR04超声波模块为例展示如何让小车在遇到障碍物时自动转向。接线超声波模块VCC - Arduino 5VGND - Arduino GNDTrig - Arduino D2Echo - Arduino D3在原有代码基础上增加避障逻辑// 添加超声波相关定义和变量 const int trigPin 2; const int echoPin 3; long duration; int distance; const int safeDistance 20; // 安全距离单位厘米 float getDistance() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration pulseIn(echoPin, HIGH); distance duration * 0.034 / 2; // 计算距离 return distance; } void avoidObstacle() { // 后退一点 setMotorSpeed(motorA, -150); setMotorSpeed(motorB, -150); delay(300); // 随机左转或右转 if (random(0, 2) 0) { setMotorSpeed(motorA, -180); // 右转 setMotorSpeed(motorB, 180); } else { setMotorSpeed(motorA, 180); // 左转 setMotorSpeed(motorB, -180); } delay(500); // 转弯时间 stopMotor(motorA); stopMotor(motorB); delay(200); } void setup() { // ... 原有setupMotors等 ... pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); randomSeed(analogRead(0)); // 初始化随机种子 } void loop() { float dist getDistance(); Serial.print(Distance: ); Serial.println(dist); if (dist safeDistance dist 400) { // 400是超声波有效量程 // 前方安全前进 setMotorSpeed(motorA, 180); setMotorSpeed(motorB, 180); } else if (dist safeDistance dist 0) { // 检测到障碍物执行避障 avoidObstacle(); } else { // 无效距离停止 stopMotor(motorA); stopMotor(motorB); } delay(100); // 控制循环频率 }这个简单的避障逻辑让小车具备了最基础的环境交互能力。你可以在此基础上扩展比如增加状态机、更平滑的转向算法或者融合多个传感器数据。5. 性能优化与常见问题排坑指南项目能跑起来只是第一步让它跑得稳、跑得好才是挑战的开始。以下是基于大量实战经验总结的优化点和问题排查清单。5.1 提升系统稳定性的关键措施电源去耦电机启动和换向时会产生很大的瞬时电流引起电源电压波动可能导致Arduino复位。最简单的解决方法是在电机的电源输入端L298N的VS和GND之间并联一个大容量电解电容如470uF - 1000uF耐压高于电源电压以及在Arduino的电源输入附近并联一个0.1uF的陶瓷电容。逻辑与功率地分离虽然最终要共地但连接方式有讲究。理想情况下电池的负极应分别用较粗的导线连接到L298N的功率地端子和Arduino的GND引脚而不是在L298N上简单串联。这可以减少大电流在地线上产生的压降对逻辑电路的干扰。PWM频率调整如果你发现电机在低速时抖动或啸叫严重可以尝试改变Arduino的PWM频率。对于Timer1控制的引脚9, 10可以使用如下代码将频率提高到约31kHz这已超出人耳听觉范围能显著降低噪音// 放在setup()中设置引脚9和10的PWM频率 TCCR1B TCCR1B B11111000 | B00000001; // 设置Timer1分频因子为1频率约31.25kHz散热处理长时间驱动大电流电机L298N的散热片会非常烫。可以加装小型风扇强制散热或者考虑升级到DRV8833、TB6612FNG等更新、效率更高MOSFET架构压降低至0.3V、发热更小的驱动芯片。5.2 常见故障与解决方案速查表现象可能原因排查步骤与解决方案电机完全不转1. 电源未接通或电压不足2. 未共地3. 使能引脚ENA/ENB未激活1. 用万用表测量VS和GND间电压。2. 检查Arduino GND与L298N GND是否连接。3. 检查ENA/ENB是否接PWM引脚或拉高。电机只朝一个方向转方向控制引脚逻辑错误或接线松动1. 检查IN1/IN2或IN3/IN4的接线。2. 用digitalWrite测试方向引脚输出是否正确。3. 对调电机两根线可临时改变转向。电机转速慢无力1. 电源电压不足或压降大2. PWM占空比设置过低3. 电机负载过重1. 测量电机运行时两端的实际电压。2. 检查analogWrite的值是否接近255。3. 检查机械结构是否卡死。电机抖动噪音大1. PWM频率过低2. 电源电流不足3. 机械安装不稳固1. 尝试提高PWM频率见上文。2. 使用容量更大的电池或电源。3. 加固电机和轮子的安装。L298N模块发热严重1. 电机工作电流过大2. 散热不良3. 电源电压过高导致压降损耗大1. 检查电机堵转电流确保未超过2A。2. 加强散热加散热片、风扇。3. 考虑使用效率更高的驱动模块。Arduino无故复位电机干扰导致电源波动1. 在电机电源端并联大电容。2. Arduino使用独立的稳压电源供电。3. 检查所有接线是否牢固。5.3 超越L298N当项目需要更多当你的小车需要更强劲的动力、更高的效率或更复杂的控制如精确的位置控制时L298N可能就显得力不从心了。这时可以考虑以下方向驱动芯片升级如前所述的DRV8833、TB6612FNG它们采用MOSFET导通电阻小效率高发热少体积也更小巧。集成电机驱动板如基于TB6612的驱动板通常集成了逻辑电平转换和保护电路使用起来比L298N模块更简单可靠。闭环控制引入为电机加装编码器可以实时读取转速和位置。结合Arduino使用PID控制算法可以实现精确的速度控制、定点转动或直线行走这是制作平衡车、巡线车等高阶机器人的基础。例如使用Arduino的Encoder库读取编码器脉冲再通过PID库计算输出给L298N的PWM值形成一个闭环反馈系统。通过这个从原理到实战再到优化与拓展的完整流程你不仅学会了如何使用L298N驱动电机更构建了一套应对硬件控制问题的系统性思维方法。下一次无论是驱动更强大的电机还是集成更复杂的传感器你都能从容地将想法转化为转动的轮子。

相关新闻

【matlab】箱线图实战:从数据导入到高级可视化技巧

【matlab】箱线图实战:从数据导入到高级可视化技巧

1. 从零开始:你的第一张MATLAB箱线图 说实话,我第一次用MATLAB画箱线图的时候,也犯过迷糊。看着一堆数据,想看看它们的分布情况,听说箱线图(Box Plot)特别直观,能一眼看出中位数、四…

2026/5/17 12:32:51 阅读更多 →
三极管放大电路设计实战:从静态工作点到失真优化

三极管放大电路设计实战:从静态工作点到失真优化

1. 从零开始:为什么你的三极管放大电路总是不响? 很多刚入门电子设计的朋友,都有过这样的经历:照着电路图,把三极管、电阻、电容一个个焊好,满怀期待地接上电源和信号,结果喇叭一片寂静&#xf…

2026/7/4 16:38:28 阅读更多 →
2026年必用10款项目管理软件|热门工具全测评

2026年必用10款项目管理软件|热门工具全测评

进度猫 • 核心定位:国产轻量甘特图标杆,主打简单高效、进度可视化。 • 核心功能:高性能甘特图引擎(支持1W任务)、多级任务拆分与依赖管理、AI智能创建甘特图、Excel一键导入、多视图切换(甘特/看板/列表&…

2026/7/3 6:57:42 阅读更多 →

最新新闻

只看 inline 关键字,如何准确判别代码属于 C 还是 C++ 语义?

只看 inline 关键字,如何准确判别代码属于 C 还是 C++ 语义?

一、 源码中 inline 关键字的排查 对项目仓库中所有 .c / .h / .cpp / .hpp 文件中的 inline 关键字进行了全面的审计与排查, 1、 核心结论 结论:确认代码库中所有的 inline 均属于标准 C 的 inline 关键字语义,未发现异常或误用的情况。统计…

2026/7/5 14:26:20 阅读更多 →
告别手动对齐!用UvSquares插件3分钟搞定Blender UV网格重塑

告别手动对齐!用UvSquares插件3分钟搞定Blender UV网格重塑

告别手动对齐!用UvSquares插件3分钟搞定Blender UV网格重塑 【免费下载链接】UvSquares Blender addon for reshaping UV quad selection into a grid. 项目地址: https://gitcode.com/gh_mirrors/uv/UvSquares 你是否曾经在Blender的UV编辑器中花费数小时手…

2026/7/5 14:24:20 阅读更多 →
MySQL 8.4.10安装(二进制)

MySQL 8.4.10安装(二进制)

下载地址MySQL :: Download MySQL Community Server 自己使用远程传输工具上传 可以将包传至家目录,也可以直接wget 创建用户组目录 mkdir -p /mysql/app [rootRockymysql ~]# cd /mysql/app/ [rootRockymysql app]# mv ~/mysql-8.4.10-linux-glibc2.28-x86_6…

2026/7/5 14:24:20 阅读更多 →
第45期 Google三年砸$1000亿建AI基建:Capex全景

第45期 Google三年砸$1000亿建AI基建:Capex全景

# 第45期 Google三年砸$1000亿建AI基建:Capex全景> 作者:小Q | 阿水助理小Q---2026年2月,Alphabet在Q4财报电话会上扔出一枚重磅炸弹:2026年资本支出预计达到$1750亿-$1850亿,较2025年的$914.5亿近乎翻倍。到了6月1…

2026/7/5 14:22:19 阅读更多 →
SAP学习笔记 - MM模块04 - 采购流程基础,采购组织和工厂的常见关系,供应商主数据的3个层次,账户组,字段选择-账户组/采购组织/事务代码,合伙伙伴,MK04履历,MK05冻结,MK06删除

SAP学习笔记 - MM模块04 - 采购流程基础,采购组织和工厂的常见关系,供应商主数据的3个层次,账户组,字段选择-账户组/采购组织/事务代码,合伙伙伴,MK04履历,MK05冻结,MK06删除

目录 1,采购流程基础 1-1,采购流程中的组织层次 a,Client,Purchasing Organization/Group概念 b,采购组织和工厂的常见关系 b-1,Plant-Specific Purchasing Organization b-2,Cross-Plant…

2026/7/5 14:22:19 阅读更多 →
数据产业服务分类(31)——数据产业——数字技术与数据技术

数据产业服务分类(31)——数据产业——数字技术与数据技术

数字技术与数据技术是紧密相关且各有侧重的领域,数字技术为数据处理和应用提供支撑,数据技术则专注于数据全生命周期的管理与价值挖掘,二者协同推动数字经济创新发展。数字技术与数据技术的定义数字技术是指利用电子计算机、互联网、大数据、…

2026/7/5 14:20:19 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻