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

基于Arduino与步进电机的自动喂食机DIY:从原理到实践

1. 项目概述与核心思路

养宠物的人都知道,定时喂食是个挺麻烦的事儿。出差几天,或者偶尔加班晚归,家里的“毛孩子”就得饿肚子。市面上的自动喂食机选择不少,但要么价格不菲,要么功能固定,想自己定制一下喂食时间和分量基本没戏。作为一个喜欢动手折腾的电子爱好者,我琢磨着能不能自己做一个。核心需求很简单:要能定时、定量地出粮,结构可靠不卡粮,成本还得尽量低。最终,我选择了用Arduino UNO搭配经典的28BYJ-48步进电机来实现这个想法。

为什么是步进电机,而不是普通的直流电机或者舵机呢?这得从喂食这个动作的特性说起。我们需要的是一个能精确控制旋转角度的机构,比如每次转动固定的角度,带动一个料杯旋转固定的格数,从而实现定量出粮。直流电机虽然转速快、扭矩大,但如果不加编码器等反馈装置,我们很难知道它到底转了多少。舵机虽然能控制角度,但通常旋转范围有限(比如180度),且连续旋转的舵机(360度舵机)其角度控制本质上是调速,精度和保持力矩也未必能满足持续带载旋转的需求。而步进电机,顾名思义,它的转动是“一步一步”来的,每接收到一个脉冲信号,就转动一个固定的角度(步距角)。通过控制脉冲的数量,就能精确控制总旋转角度;通过控制脉冲的频率,就能控制转速。这种开环控制下的高精度,正是我们做定量喂食所需要的。

28BYJ-48是一款非常常见且廉价的5线4相永磁式减速步进电机。它内部集成了一个减速齿轮箱,将电机本身较高的步距角(比如5.625度)通过约1:64的减速比,最终输出轴的步距角变得很小(约5.625/64 = 0.0879度),这意味着它转动更平滑,输出扭矩更大,非常适合驱动需要一定力量但又要求精确位置控制的机构,比如我们这个喂食机的旋转料盘。当然,Arduino的IO口驱动电流有限,无法直接驱动电机,所以我们需要一个电机驱动模块,比如常用的ULN2003驱动板,它就像是一个电流放大器,接收Arduino微弱的控制信号,输出足以带动电机线圈的大电流。

整个项目的思路也就清晰了:用Arduino作为大脑,负责计时和发出控制脉冲;用ULN2003驱动板作为肌肉,驱动28BYJ-48步进电机;电机带动一个我们自己制作的、带有分格料仓的旋转圆盘。当设定的喂食时间到达时,Arduino控制电机旋转固定的步数,使一个料仓对准出料口,粮食依靠重力落下,完成一次喂食。接下来,我就从材料准备、电路连接、机械制作到程序编写,把整个实现过程掰开揉碎了讲清楚。

2. 核心器件选型与电路连接解析

2.1 主控与动力核心:Arduino UNO与28BYJ-48步进电机

Arduino UNO是这个项目的大脑,选择它原因很简单:普及度高、资料丰富、编程环境友好。对于这样一个逻辑相对简单的定时控制任务,UNO的ATmega328P微控制器性能绰绰有余,它有14个数字IO口和6个模拟输入口,我们只需要用到其中4个数字输出口来控制电机驱动,其余引脚可以预留,方便未来扩展,比如增加按键设置、显示屏或者无线模块。供电方面,UNO可以通过USB口供电(5V),也可以通过板上的直流电源插座输入7-12V电压。在喂食机最终成品中,我们可以用一个5V/2A的电源适配器通过USB口供电,这样比较整洁安全。

28BYJ-48步进电机是我们的执行机构。拿到这个电机,你会看到它引出一排5根线(通常是红、蓝、粉、黄、橙)。其中,红色是公共端(COM),通常接驱动板的正极(+5V或+Vcc)。另外四根线分别对应内部的四个线圈。它的工作电压是5V。关键参数是它的步进模式:它通常工作在4相8拍(half-stepping)或4相4拍(full-stepping)模式。4相8拍模式步距角更小,运行更平稳,但速度相对慢;4相4拍模式步距角大一倍,扭矩稍大,速度可以更快。在我们的喂食应用中,对平稳性要求高于速度,所以我推荐使用4相8拍模式。电机尾部的减速箱使得其输出轴转速很慢,但扭矩足够带动一个轻载的料盘。

注意:28BYJ-48电机有5线和4线两种版本,驱动方式略有不同。市面上最常见的配套ULN2003驱动板的都是5线版本。如果你买到的是4线版本,那可能是两相步进电机,驱动时序和接线方式会完全不同,购买和接线时务必确认清楚。

2.2 驱动桥梁:ULN2003驱动模块

Arduino的IO口输出电流最大约40mA,而步进电机单个线圈的工作电流可能在100mA以上,直接连接会烧毁Arduino芯片。ULN2003是一个包含7路达林顿晶体管阵列的芯片,每路都可以看作一个电流放大开关,最大能承受500mA的电流和50V的电压,完美胜任驱动小型步进电机的任务。市面上常见的蓝色或绿色小模块,就是将ULN2003芯片、必要的滤波电容和接口排针做在了一起,还带了四个LED来指示线圈通电状态,非常直观。

模块上通常有6个输入引脚(IN1-IN4, 以及+5V和GND),和5个输出引脚(对应电机的4相线圈和公共端)。接线逻辑是:Arduino的控制信号从IN1-IN4输入,经过ULN2003放大后,从对应的输出端输出到电机的线圈。电机线圈的另一端(公共端)则接到驱动板的公共端(通常标记为COM),并连接到电源正极。这样,当Arduino给某个IN引脚高电平时,ULN2003内部对应的达林顿管导通,将对应的电机线圈另一端接地,形成回路,线圈通电。

2.3 电路连接实战与注意事项

接线是硬件项目的基础,务必仔细。以下是详细的接线步骤和原理说明:

  1. 为Arduino和驱动板供电:首先,将ULN2003驱动模块的GND+5V引脚,分别用杜邦线连接到Arduino UNO的GND5V引脚。这一步是为驱动板本身提供工作电源。注意,这里只是驱动板的逻辑电源,电机的大电流电源后续再接。

  2. 连接控制信号线:将Arduino的数字引脚8, 9, 10, 11分别用杜邦线连接到ULN2003驱动模块的IN1, IN2, IN3, IN4。这四根线传递的是控制脉冲序列,决定了电机如何转动。

  3. 连接步进电机:将28BYJ-48电机的5Pin接口(注意方向,通常有防呆卡扣)插入ULN2003驱动板对应的5Pin插座。如果没有防呆设计,请参照颜色:通常电机红线(公共端)对应驱动板标有COM的排针,其余四根线顺序插入。如果顺序错了,电机可能不转或抖动,调整顺序即可。

  4. 连接电机动力电源(关键步骤):这是最容易出错的一步。28BYJ-48电机工作时的电流可能超过500mA,如果仅靠Arduino的5V引脚供电,可能会因为电流不足导致Arduino重启或电机无力。正确的做法是使用一个外部的5V/2A电源适配器。将这个外部电源的正极(+5V)同时连接到ULN2003驱动板的COM引脚(也就是电机的公共端)Arduino的VIN引脚(如果通过电源插座供电)或5V引脚(需谨慎)。更稳妥的独立供电方案是:外部5V电源正极接驱动板COM,负极接驱动板GND,同时这个负极也需要与Arduino的GND相连,以确保两者共地,信号参考电位一致。而Arduino则通过USB口或另一个电源单独供电。

实操心得:供电方案选择方案A(简易但有限):只用USB线给Arduino供电,驱动板的+5VCOM都接Arduino的5V。这只适合测试空载或极轻负载,正式使用不推荐。 方案B(推荐):一个5V/2A以上的电源适配器,正极接驱动板COM,负极接驱动板GND,同时用一根线将驱动板的GND与Arduino的GND相连。Arduino通过另一条USB线或该电源适配器(如果电压在7-12V)接DC口供电。这是最稳定可靠的方案。 方案C(一体供电):找一个输出为7-12V的电源适配器,接入Arduino的DC电源插座。Arduino板载的稳压芯片会将其降为5V。然后,从Arduino的5V引脚引线到驱动板的COM+5V。这种方法要求你的电源适配器能提供足够的电流(建议1A以上),且长时间运行下Arduino的稳压芯片可能会发热。

连接完成后,硬件部分就准备好了。你可以先上传一个简单的测试程序,看看电机是否能正常正反转。

3. 机械结构设计与制作要点

电路是神经,机械结构才是骨骼和肌肉。一个可靠的送料机构是自动喂食机成功的关键。我们的目标是制作一个由步进电机驱动的旋转式料盘。

3.1 料盘设计与材料选择

最初的设计可以用硬纸板(卡纸)来快速验证原型。你需要准备美工刀、尺子、圆规(或一个圆形盖子)、热熔胶枪。

  1. 制作底盘:切割一块直径约20-25厘米的圆形硬纸板作为底座。在圆心处精确地开一个孔,孔径要略大于电机输出轴的直径(通常约6mm),确保电机轴能穿过并可以紧固。

  2. 制作旋转料盘:切割另一块直径略小于底盘的圆形硬纸板(例如18-22厘米)。这是我们的旋转盘。沿着它的圆周,均匀地划分出6-8个扇形区域。每个扇形区域就是一个“料仓”。用长条形的硬纸板作为隔板,用热熔胶垂直粘在旋转盘上,形成这些料仓的墙壁。料仓的大小决定了单次出粮的量,你可以根据宠物粮食的大小(如猫粮、狗粮、仓鼠粮)来调整扇形角度和隔板高度。

  3. 制作出料漏斗与支架:在底盘上,选择一个固定的位置(不要放在圆心),开一个大小合适的出料口。这个口子应该比一粒粮食大,但比一个料仓的开口小。然后,用硬纸板制作一个漏斗,粘在底盘下方,对准出料口,引导粮食落入食盆。同时,你需要用硬纸板搭建一个支架,将Arduino和驱动板固定在底盘下方或侧面,保持整体整洁。

  4. 连接电机与料盘:这是传动关键。28BYJ-48的输出轴是光轴,我们需要将它和旋转料盘紧固连接。一个简单有效的方法是使用联轴器。你可以购买一个内径与电机轴匹配的联轴器(通常是5mm或6mm),另一端连接一根同样直径的金属杆或坚固的塑料杆作为延长轴。然后将旋转料盘的中心牢固地粘在这根延长轴上。如果没有联轴器,也可以尝试用热熔胶直接将料盘粘在电机轴上,但这种连接强度低,容易打滑或脱落,仅作临时测试。

注意事项:重心与平衡旋转料盘上的各个料仓在装满粮食后重量可能不同,如果重心偏离旋转中心太远,会给小小的步进电机带来很大的阻力矩,可能导致失步(电机该转的步数没转到)。因此,在设计和装粮时,尽量保证料盘的整体平衡。可以在空料盘上先进行旋转测试,确保转动顺畅无卡顿。

3.2 从原型到耐用成品

纸板原型验证功能可行后,可以考虑升级材料以获得更耐用、卫生的成品。

  • 材料升级:使用亚克力板、激光切割木板或者3D打印部件来替换纸板。亚克力板透明美观,易于清洁;木板结实耐用;3D打印则可以设计出非常复杂和精准的结构,比如自带卡扣和轴承座。你可以在Thingiverse等开源模型网站上搜索“pet feeder”或“stepper feeder”,找到很多现成的3D打印设计进行修改。
  • 传动优化:如果料盘较大较重,可以考虑增加一级传动。例如,在电机轴上装一个小齿轮,在料盘中心轴上装一个大齿轮,实现减速增扭,让电机驱动更轻松。
  • 密封与防潮:粮食需要保持干燥。可以在储粮桶(旋转料盘的上方可以加一个固定的圆柱形围栏作为大粮仓)和料盘之间增加硅胶密封条,减少空气流通。出料口也可以设计成活动挡板,非喂食时间关闭,进一步防潮防虫。

4. 控制程序编写与逻辑剖析

硬件和结构就位后,就需要用程序赋予它灵魂。Arduino程序的核心逻辑是:等待设定的喂食时间间隔,时间到则驱动电机旋转固定角度(即固定步数),然后循环。

4.1 步进电机驱动基础:时序与步进模式

驱动28BYJ-48的关键在于按正确的顺序给它的四个线圈(我们称之为A, B, C, D)通电。对于4相8拍模式,一个完整的周期有8个步骤,每个步骤只有两个线圈同时通电,这样运行更平稳,扭矩也更均匀。

下面是一个典型的4相8拍正转时序表(1代表线圈通电,0代表断电):

步骤线圈A线圈B线圈C线圈D说明
11100A、B相通电
20100仅B相通电
30110B、C相通电
40010仅C相通电
50011C、D相通电
60001仅D相通电
71001D、A相通电
81000仅A相通电

反转就是将这个步骤序列倒序执行。在代码中,我们可以用一个二维数组来存储这8个步骤的状态。

4.2 完整喂食机程序实现与注释

下面是一个功能完整的示例程序,包含了步进电机驱动函数和简单的定时喂食逻辑。程序中使用了millis()函数进行非阻塞延时,这样在等待喂食间隔时,Arduino还可以处理其他任务(未来扩展按键、显示等)。

// 定义步进电机连接的引脚 #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 // 定义4相8拍步进序列 (A, B, C, D 对应 IN1, IN2, IN3, IN4) const byte stepSequence[8][4] = { {1, 1, 0, 0}, // 步骤1: AB {0, 1, 0, 0}, // 步骤2: B {0, 1, 1, 0}, // 步骤3: BC {0, 0, 1, 0}, // 步骤4: C {0, 0, 1, 1}, // 步骤5: CD {0, 0, 0, 1}, // 步骤6: D {1, 0, 0, 1}, // 步骤7: DA {1, 0, 0, 0} // 步骤8: A }; // 喂食间隔时间(毫秒),例如 12小时 = 12 * 60 * 60 * 1000 = 43200000L const unsigned long FEED_INTERVAL = 43200000L; // 12小时 // 电机旋转一次喂食所需的步数(需要根据你的料仓数量实测调整) const int STEPS_PER_FEED = 512; // 示例值,对应旋转约90度(如果料仓是8个,则旋转45度) // 定时相关变量 unsigned long previousFeedTime = 0; // 记录上次喂食的时间 void setup() { // 设置电机控制引脚为输出模式 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); // 初始化串口,用于调试(可选) Serial.begin(9600); Serial.println("Auto Feeder Initialized."); // 初始上电时,确保电机线圈全部断电,防止过热 digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); } void loop() { // 获取当前时间 unsigned long currentTime = millis(); // 检查是否到达喂食时间(非阻塞方式) if (currentTime - previousFeedTime >= FEED_INTERVAL) { Serial.println("Feeding Time!"); feed(); // 执行一次喂食动作 previousFeedTime = currentTime; // 更新上次喂食时间 Serial.println("Feeding Done. Next feed in 12 hours."); } // 这里可以添加其他非阻塞任务,如检测按键、更新显示等 // ... } // 执行一次喂食动作:电机旋转指定步数 void feed() { rotateStepper(STEPS_PER_FEED, 3); // 正转,步进延迟3ms(控制速度) // 旋转完成后,可以加一个短暂停顿,确保粮食落下 delay(500); } // 步进电机旋转函数 // steps: 要旋转的步数(正数为正转,负数为反转) // stepDelay: 每一步之间的延迟(毫秒),决定转速,值越小越快 void rotateStepper(int steps, int stepDelay) { int direction = (steps > 0) ? 1 : -1; // 确定方向 steps = abs(steps); // 取步数绝对值 static int currentStep = 0; // 静态变量,记录当前在步进序列中的位置 for (int i = 0; i < steps; i++) { // 根据方向更新步进序列索引 currentStep += direction; if (currentStep >= 8) currentStep = 0; // 循环 if (currentStep < 0) currentStep = 7; // 根据当前步骤,设置四个引脚的电平 digitalWrite(IN1, stepSequence[currentStep][0]); digitalWrite(IN2, stepSequence[currentStep][1]); digitalWrite(IN3, stepSequence[currentStep][2]); digitalWrite(IN4, stepSequence[currentStep][3]); // 延迟,控制步进速度 delay(stepDelay); } // 旋转结束后,关闭所有线圈以省电和防止电机发热 digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); }

程序关键点解析:

  1. FEED_INTERVAL: 这是喂食间隔,单位是毫秒。示例中设为12小时(43200000毫秒)。unsigned long类型是为了防止时间值溢出。你可以根据需要修改,比如8小时(28800000)或24小时(86400000)。
  2. STEPS_PER_FEED: 这是最需要实测校准的参数。它代表电机需要转动多少步,才能让旋转料盘恰好转动一个料仓的位置。28BYJ-48在4相8拍模式下,电机轴转一圈需要4096步(64减速比 * 64步/圈?这里需要澄清:实际上,28BYJ-48电机本身的步距角是5.625度,一圈360度需要64步。经过1:64减速后,输出轴转一圈需要64 * 64 = 4096步)。如果你的料盘有8个料仓,那么每次喂食需要转动1/8圈,即4096 / 8 = 512步。这个值(512)就是STEPS_PER_FEED。你需要根据自己制作的料仓数量来计算和微调。
  3. 非阻塞定时: 使用millis()对比时间差,而不是delay()进行长延时,这是Arduino编程的良好实践。它保证了程序主循环始终在运行,为后续增加交互功能留出了空间。
  4. rotateStepper函数: 这是驱动电机的核心。它通过一个循环,依次输出步进序列中的电平状态。stepDelay参数控制每一步的间隔,从而控制转速。延迟太小(速度太快),电机可能因为扭矩不足而失步;延迟太大则太慢。3-5ms是一个比较可靠的起始值。
  5. 电机断电: 在rotateStepper函数最后和setup中,我们都将电机线圈全部置为LOW。这是因为步进电机在保持位置时(即使不动),如果线圈持续通电,也会消耗电能并发热。在等待喂食的长间隔里,让电机断电是非常必要的。

5. 调试、校准与功能扩展

5.1 上电调试与问题排查

将代码上传到Arduino后,首次上电可能会遇到一些问题。下面是一个快速排查指南:

现象可能原因解决方案
电机完全不转,无声音电源未接通或电压不足检查所有电源连接,用万用表测量驱动板COMGND之间电压是否为5V左右。确保Arduino已供电。
电机不转,但有“嗡嗡”声或发热线圈通电但转子被卡住或顺序错误1. 检查机械结构是否卡死。2.重点检查电机线序,尝试交换连接到驱动板的非红色线序。3. 检查代码中引脚定义(IN1-IN4)与实际接线是否一致。
电机抖动但不旋转步进序列错误或速度太快1. 确认代码使用的是正确的4相8拍序列。2. 增大rotateStepper函数中的stepDelay参数(如改为10ms)。
电机旋转方向相反步进序列顺序反了rotateStepper函数调用中的STEPS_PER_FEED改为负数(如-512),或者在函数内部修改方向逻辑。
电机转动角度不准(失步)负载过重或速度过快1. 减小stepDelay,降低转速以增加扭矩。2. 检查机械结构,减轻料盘重量或改善平衡,减少摩擦。3. 确保电源能提供足够电流(推荐2A以上)。
喂食时间不准millis()溢出或计算错误millis()约50天后会溢出归零,但我们的时间比较逻辑(currentTime - previousFeedTime)即使溢出也能正确工作。检查FEED_INTERVAL的值是否正确(注意加L表示长整型)。

校准STEPS_PER_FEED参数:这是保证定量准确的关键。首先,清空料盘。在setup()函数里,直接调用rotateStepper(4096, 5),观察电机是否恰好转动一整圈。如果不是,检查你的步进序列和减速比计算。然后,根据你的料仓数量N,计算理论步数4096 / N。上传一个测试程序,让电机每次转动这个理论步数,观察是否刚好对准下一个料仓。通常需要几次微调,找到一个准确的数值。

5.2 功能扩展与优化思路

基础功能实现后,你可以考虑以下扩展,让喂食机更智能、更易用:

  1. 添加交互界面

    • 按键与显示屏:增加几个按键和一个LCD显示屏(如1602 I2C屏),可以实时显示时间、下次喂食时间,并允许手动按键喂食或调整喂食间隔。
    • 旋转编码器:用旋转编码器替代多个按键,可以更直观地调节时间和参数。
  2. 增加喂食次数与随机化:修改程序,允许设置一天内多个喂食时间点。甚至可以加入小的随机时间偏移,模拟主人喂食的不规律性,增加宠物趣味性。

  3. 无线控制与监控

    • 蓝牙模块(如HC-05):通过手机蓝牙连接,用简单的串口助手APP发送指令控制喂食或设置时间。
    • Wi-Fi模块(如ESP8266/ESP32):这将是质的飞跃。你可以使用NodeMCU(基于ESP8266)直接替代Arduino,或者将ESP8266作为Wi-Fi协处理器与Arduino通信。接入家庭Wi-Fi后,就可以通过手机APP(如Blynk、IoT平台)或者网页远程控制喂食、查看喂食记录、设置复杂定时任务。甚至可以实现“一键加餐”。
  4. 余量检测与提醒:在储粮仓底部安装一个超声波测距模块或红外对管,监测粮食余量。当余量低于阈值时,可以通过Wi-Fi向手机发送通知。

  5. 电源管理:如果放置位置不方便接电源,可以考虑使用大容量锂电池配合充电模块,并加入低功耗睡眠模式。在非喂食时间,让Arduino和电机驱动板进入深度睡眠,可以极大延长电池续航。

5.3 长期运行稳定性保障

一个需要长期无人值守运行的设备,稳定性至关重要。

  • 程序健壮性:在关键操作(如电机转动)前后加入状态检查。可以使用看门狗定时器(Watchdog Timer),防止程序跑飞导致设备死机。
  • 机械防卡死:在料盘旋转路径上增加光洁的衬垫(如特氟龙胶带),减少摩擦。出料口要光滑,尺寸略大于单颗粮食的最大尺寸。
  • 防潮防虫:所有接缝处可以使用食品级硅胶进行密封。储粮容器尽量选用不透明材质,避免阳光直射导致粮食变质。
  • 安全第一:确保所有电路部分都有良好的绝缘,远离水源和宠物能够触及的地方。外露的5V电压虽低,但也要做好防护。

这个基于Arduino和步进电机的自动喂食机项目,从电路原理到机械结构,再到程序逻辑,完整地覆盖了一个典型嵌入式DIY项目的核心环节。它不仅仅是一个喂食工具,更是一个理解和掌握步进电机控制、定时任务管理、硬件交互的绝佳实践平台。你可以从最基本的定时功能开始,逐步添加自己喜欢的扩展功能,在这个过程中获得的动手能力和问题解决能力,远比一个现成的商品更有价值。我在实际制作中发现,最花时间的往往不是代码,而是机械结构的调整和参数的精细校准,这需要耐心和反复测试。当看到机器按照自己的设定,准确无误地转动出粮时,那种成就感就是DIY最大的乐趣。

http://www.zskr.cn/news/1454610.html

相关文章:

  • 大模型也要翻资料:一篇读懂 RAG 检索增强生成
  • 机器人仿真技术解析:Gazebo Sim 开源仿真平台深度剖析
  • 多模态不再是口号:Gemini 3.5 原生多模态能力的落地价值解析
  • 成都护栏网厂家推荐:四川鑫昌盛全品类护栏网定制解决方案 - 速递信息
  • mercadolibre 采集风控分析
  • 智能勋章不再只是“装饰品”:用LLM行为建模重构用户激励逻辑(附AB测试数据包)
  • ICASSP 2018微软语音技术前沿:从鲁棒识别到神经合成的全链条解析
  • 2026 苏州黄金真实行情|5 家正规回收门店实测测评 - 资讯速览
  • Spring Boot自动配置核心原理与启动流程的生命周期装配机制深度分析
  • 【AI数字营销测评】从一次创作到全网触达:CSDN“分发·多平台发布中心”深度实测体验
  • Alphabet计划募集800亿美元为AI基础设施扩张提供资金
  • DXVK终极指南:在Linux/Wine上解决Direct3D应用HDR兼容性问题
  • 亨得利官方名表服务中心|网点地址与电话权威信息公示(2026年6月最新) - 亨得利钟表维修中心
  • 学生党亲测 | Trae / DeepSeek / Claude / Cursor 四大 AI 编程助手真实体验。
  • 终极Windows 11优化指南:Win11Debloat让你的系统焕然一新
  • 6-1到6-2学习记录
  • 2026 年四川民办高中最新排名,哪所学校能脱颖而出? - 博客万
  • Easy Arduino: 两个项目来帮助你开始
  • 核心推荐:2026年西安母婴家庭首选CMA检测机构 - 资讯快报
  • 转载--Hermes Agent 05 | 记忆系统(上):内置记忆的冻结快照模式与 agent-curated 策展
  • 车库蓬包选型攻略:佛山业主实测避坑指南 - 品牌优选官
  • 珠海爱彼皇家橡树表针掉了一根!在表盘里“游走”,会不会划伤表盘?紧急处理方法来了 - 亨得利官方维修中心
  • 手表回收避坑实测:我带绿水鬼亲测4店,合扬最快15分钟办结到账 - 合扬奢侈品交易中心
  • 4.2 决策树与随机森林
  • UVa 372 WhatFix Notation
  • 在高通 Hexagon 上运行 BitNet:自定义 1.58 位内核实践
  • PUBG-Logitech:5步实现基于图像识别的罗技鼠标宏自动压枪系统
  • 2026/6/1
  • SVD图生视频API踩坑记:Fooocus生成的图片如何用OpenCV无损调整到1024x576分辨率?
  • 2026聊城市黄金回收白银回收铂金回收店铺哪家好 靠谱门店全区域top推荐及联系方式 - 余生黄金回收