基于Adafruit Trinket的光控互动玩具:嵌入式系统入门实战

news2026/5/16 7:09:47
1. 项目概述给毛绒玩具注入灵魂几年前我女儿的一个旧毛绒玩具被冷落在角落除了偶尔被当作抱枕几乎失去了“玩具”的活力。这让我萌生了一个想法能不能用一些简单的电子元件让这些静态的玩偶重新“活”起来变得能互动、有反馈这不仅是给孩子的惊喜也是一个绝佳的嵌入式系统入门项目。它不涉及复杂的机器人学或人工智能核心就是最基础的“感知-决策-执行”逻辑闭环。这个项目的核心是基于Adafruit Trinket微控制器构建一个光控互动的玩具动物系统。具体来说我们会在玩具内部嵌入一个光敏电阻光电管当你用手抚摸或遮挡玩具时环境光线的变化会被检测到。Trinket接收到这个信号后会同时驱动两个执行器一个微型伺服电机会让玩具的头部或翅膀做出点头、转动的动作一个压电蜂鸣器则会发出对应的动物叫声比如鸟鸣、猫叫或狗吠。整个系统的逻辑清晰直观非常适合作为学习微控制器编程、传感器应用和机电一体化的第一个实战项目。选择Adafruit Trinket作为大脑主要是看中了它的极简与高效。它比标准的Arduino Uno小得多功耗也低非常适合塞进玩具内部。更重要的是它同时支持传统的Arduino C/C编程和更易上手的CircuitPython为不同背景的开发者提供了灵活的路径。无论你是想深入理解底层寄存器操作还是希望快速实现功能原型都能找到合适的工具。2. 核心硬件选型与电路设计解析一套稳定可靠的硬件是项目成功的基石。这个项目的硬件清单非常精简但每一件都有其不可替代的作用选型和连接上的细节决定了最终效果的成败。2.1 微控制器Adafruit Trinket 家族的选择项目核心是Adafruit Trinket但具体型号有讲究。原文主要基于Trinket 3V 8MHz基于ATtiny85芯片。这是一款经典的5引脚开发板体积仅有拇指指甲盖大小。它的优势是极致紧凑和低成本但需要注意其8位AVR内核性能有限内存Flash 8KB SRAM 512B和引脚仅5个GPIO都非常紧张这直接影响了代码库的选择例如无法使用标准Arduino Servo库。我更推荐使用Trinket M0基于ATSAMD21E18芯片。它是Trinket的升级版虽然体积相近但内核是32位的ARM Cortex-M0主频48MHz内存Flash 256KB SRAM 32KB充裕得多。最关键的是它原生支持CircuitPython意味着你可以像编辑文本文件一样编写和调试代码无需编译上传体验流畅。对于本项目Trinket M0是更省心、更强大的选择。两款板子的引脚排列#0, #1, #2, 3V, GND基本兼容但供电和编程方式不同后续代码需要区分。2.2 感知、发声与执行三大关键外设感知单元光敏电阻与分压电路元件光敏电阻CdS光电管、1kΩ电阻。原理光敏电阻的阻值随光照强度变化。我们将其与一个1kΩ的固定电阻串联接在3V或5V和GND之间。光敏电阻和固定电阻的连接点即中间引脚接到Trinket的模拟输入引脚如A1。这样就构成了一个分压电路。光照越强光敏电阻阻值越小中间点的电压越接近GND低电平光照越弱如被手遮住光敏电阻阻值越大中间点电压越接近VCC高电平。Trinket通过analogRead()读取这个电压值0-1023或0-65535即可判断是否被“触摸”。选型注意光敏电阻的亮阻和暗阻范围差异很大。选择时要确保在预期环境光下其与1kΩ电阻分压后的电压值能在微控制器的模拟输入范围内产生明显变化。必要时可以调整1kΩ电阻的阻值来改变灵敏度。发声单元压电蜂鸣器元件无源压电蜂鸣器。原理压电陶瓷片在施加交变电压时会产生振动发声。我们通过Trinket的数字引脚快速输出高低电平即PWM方波来驱动它。声音的频率由高低电平切换的周期决定音长由持续输出的周期数决定。这是一种非常节省资源的发声方式但音质单一音量较小。重要提示必须使用无源蜂鸣器。有源蜂鸣器内部有振荡电路给电就响无法控制音调。连接时蜂鸣器正极接Trinket数字引脚如#1负极接GND。虽然有些教程会串联一个电阻限流但对于Trinket驱动的小型压电片通常可以直接连接因为其工作电流极小。执行单元微型伺服电机元件9g微型舵机如SG90。原理舵机内部包含电机、控制电路和电位器。它通过接收周期为20ms的PWM信号根据信号中高电平的脉宽通常0.5ms-2.5ms来精确控制输出轴的角度0-180度。对于Trinket 3V必须使用Adafruit_SoftServo这个软件库来模拟PWM信号因为硬件PWM引脚被占用或不足。对于Trinket M0其硬件PWM资源丰富可以使用CircuitPython的simpleio.Servo库它底层可能使用硬件PWM控制更稳定。供电警告伺服电机启动和堵转时电流可能很大高达数百mA远超Trinket板载稳压器的输出能力。切勿直接从Trinket的3V或5V引脚为伺服电机供电必须使用外部电源如锂电池组单独为伺服电机供电并与Trinket共地。2.3 电路连接与供电方案电路图虽然简单但布局和供电是实战中的关键。我强烈建议在将电路塞进玩具前先在面包板上完整测试。核心连接伺服电机信号线橙色/黄色接 Trinket #0电源线红色接外部电池正极地线棕色/黑色接外部电池负极并与Trinket的GND相连。压电蜂鸣器正极接 Trinket #1负极接 GND。光敏电阻分压电路光敏电阻一端接3V另一端接1kΩ电阻同时此连接点接Trinket A1即数字引脚#2的模拟功能。1kΩ电阻另一端接GND。供电方案Trinket 3V最佳选择是一块3.7V的锂电池如1200mAh LiPo通过其板载的JST PH插座供电。电池同时为Trinket和伺服电机供电需共地。如果使用更大的伺服电机务必确认电池的持续放电能力C数足够。Trinket M0同样推荐锂电池。它可以通过USB或电池供电且具有更好的电源管理。关于开关锂电池通常不带开关。你可以在电池正极线上串联一个拨动开关或者利用Trinket M0的board.DOTSTAR_LED引脚通过程序逻辑实现软开关更复杂。注意焊接与绝缘。最终放入玩具前你需要将电路焊接在一块小型万孔板如Adafruit Perma Proto板上。对于光敏电阻和蜂鸣器的引线建议使用柔软的多股导线并确保所有焊点都用热缩管或电工胶布妥善绝缘防止在毛绒玩具内部因挤压导致短路。3. 软件逻辑与代码深度剖析硬件是躯体软件才是灵魂。这个项目的代码清晰地展示了如何将传感器数据转化为执行器动作其中涉及了资源受限环境下的编程技巧。3.1 Arduino环境下的实现针对Trinket 3V对于Trinket 3V我们必须使用Arduino IDE并安装特定的板卡支持包和库。1. 环境配置要点在Arduino IDE的“首选项-附加开发板管理器网址”中添加https://adafruit.github.io/arduino-board-index/package_adafruit_index.json。在“工具-开发板”中选择“Adafruit Trinket 3V 8MHz”。在“工具-编程器”中选择“USBtinyISP”。通过“库管理器”搜索并安装“Adafruit SoftServo”库。切记标准Arduino Servo库在这里无法工作因为ATtiny85没有Servo库所需的特定硬件定时器。2. 代码核心逻辑拆解原代码的精髓在于利用定时器中断来维持伺服电机的信号这是一个在资源受限MCU上的经典技巧。#include Adafruit_SoftServo.h #define SERVO1PIN 0 #define SPEAKER 1 #define PHOTOCELL 1 // Analog Pin 1, 对应数字引脚#2 Adafruit_SoftServo myServo1; int16_t servoPosition 90; void setup() { // 关键设置定时器0的比较匹配中断用于周期性刷新伺服信号 OCR0A 0xAF; TIMSK | _BV(OCIE0A); myServo1.attach(SERVO1PIN); myServo1.write(servoPosition); delay(15); // 等待伺服电机移动到初始位置 pinMode(SPEAKER, OUTPUT); } void loop() { uint16_t light_reading analogRead(PHOTOCELL); if(light_reading 800) { // 灵敏度阈值可根据环境调整 chirp(); // 触发声音 // 切换伺服位置 servoPosition (servoPosition 0) ? 180 : 0; myServo1.write(servoPosition); } delay(1000); // 检测间隔防止过于敏感 } // 定时器0比较匹配A中断服务程序每2ms触发一次 volatile uint8_t counter 0; SIGNAL(TIMER0_COMPA_vect) { counter 2; if (counter 20) { // 每20ms即50Hz刷新一次伺服信号 counter 0; myServo1.refresh(); // 这是SoftServo库保持舵机位置的关键 } }3. 声音生成原理playTone函数是数字发声的核心。它不直接使用频率值而是用一个tonevalue参数控制delayMicroseconds的时长从而间接控制频率。tonevalue越小延迟越短频率越高。chirp()函数通过循环递减tonevalue产生一个频率由高到低的滑音模拟鸟叫声。4. 参数调试经验if(light_reading 800)这里的800是光敏触发的阈值。你需要根据玩具内部的实际亮度考虑布料透光性来调整。在setup()中加入Serial.begin(9600);和Serial.println(light_reading);仅适用于有串口的开发板调试Trinket 3V需通过USB模拟串口较复杂观察用手遮盖前后的读数从而确定一个合适的阈值。delay(1000)这个延时决定了两次检测之间的间隔。太短会导致触发过于频繁动作和声音显得“神经质”太长则响应迟钝。500ms到2000ms都是合理的范围取决于你想要的互动节奏。3.2 CircuitPython环境下的实现针对Trinket M0使用Trinket M0和CircuitPython整个过程会变得异常简单和快捷非常适合快速迭代和教学。1. 环境准备确保Trinket M0已刷入最新版CircuitPython固件。连接USB后电脑会出现一个名为CIRCUITPY的U盘。从Adafruit官网下载最新的“Adafruit CircuitPython Library Bundle”。解压后找到lib文件夹里的simpleio.mpy库文件。在CIRCUITPY磁盘根目录下创建一个名为lib的文件夹如果不存在将simpleio.mpy文件复制进去。2. 代码解析与优势import time import analogio import board import simpleio from digitalio import DigitalInOut, Direction # 硬件初始化 photocell analogio.AnalogIn(board.A1) # 引脚定义更直观 speaker DigitalInOut(board.D1) speaker.direction Direction.OUTPUT servo simpleio.Servo(board.D0) # 使用simpleio库驱动伺服 angle 0 darkness_threshold 30000 # 16位ADC阈值需相应调整 def chirp(): for i in range(200, 180, -1): play_tone(i, 9) def play_tone(tone_value, duration): for _ in range(duration * 100): # 调整循环次数以控制音长 speaker.value True time.sleep(tone_value / 1000000) # 秒单位延时 speaker.value False time.sleep(tone_value / 1000000) while True: if photocell.value darkness_threshold: chirp() # 控制伺服在0度和180度之间切换 if servo.angle 0: servo.angle 180 else: servo.angle 0 time.sleep(0.5) # 给伺服留出转动时间 time.sleep(0.1) # 主循环延迟降低CPU占用CircuitPython的优势无需编译直接编辑CIRCUITPY盘上的code.py文件保存后代码自动重启运行。调试方便可以添加print(photocell.value)语句通过串口终端如Mu编辑器实时查看光敏电阻读数调试阈值非常方便。语法简洁硬件抽象层HAL设计优秀引脚定义board.D1和库调用simpleio.Servo非常直观。实操心得两种方案的取舍。如果你是嵌入式新手或者希望快速看到成果并进行调整毫无犹豫选择Trinket M0 CircuitPython。它的调试体验和开发速度是碾压级的。如果你正在学习更底层的AVR单片机编程或者手头只有Trinket 3V那么Arduino方案是很好的学习材料它能让你理解中断、定时器等底层概念。4. 机械结构与组装实战技巧代码跑通了只是成功了一半。如何将电子部分与玩具实体巧妙结合实现可靠且有趣的动作是更具挑战性的“手工活”。4.1 玩具改造与机构设计选择合适的玩具尺寸内部需要有足够空间容纳电路板、电池和伺服电机。一个中等大小的毛绒玩具高度15-25厘米通常比较合适。结构选择头部或肢体连接处有活动余地的玩具。鸟类可点头、猫狗可摇头是理想选择。避免身体过于紧绷或填充过硬的玩具。开口与缝合优先选择底部有现成缝合线的玩具这样你可以小心地拆开一部分放入元件后再缝回去外观影响最小。制作传动机构材料这是项目的关键。我试过几种材料花卉铁丝太软自行车辐条硬度够但不易加工。最理想的是14-16 AWG约1.6-1.3mm的单芯铜电线剥去绝缘皮后既有足够的刚度推动头部又可以用手轻松弯曲塑形。与伺服连接将铜线一端用尖嘴钳弯成一个小钩或L形。在伺服舵盘通常是塑料件上用合适尺寸的钻头约1.5mm钻一个孔将铜线的弯钩端穿入孔中。千万不要用胶水直接粘死正确的做法是让铜线能在孔中有微小活动余量然后用一小段热熔胶在舵盘背面点一下固定防止脱落。这保证了伺服旋转时力量能有效传递又不会因为安装误差导致机构卡死。与玩具连接将铜线的另一端从玩具身体内部沿着颈部或肢体内部穿到需要活动的部位如头部。对于鸟类可以一直穿到喙部。在头部内部将铜线末端弯成一个更大的钩状或圈状然后用一小团填充棉或热熔胶将其固定在头部内壁。目的是让伺服转动时能拉动或推动头部做出动作。4.2 元件布局与固定光敏电阻的放置这是交互体验的核心。你需要将它固定在玩具表面一个容易被触摸到但又不太显眼的位置比如额头、后背或肚子。在布料上剪一个非常小的孔刚好能让光敏电阻的感光面露出。用一点点纺织胶水或热熔胶在边缘固定。切记胶水不能覆盖感光面。引线部分要用胶带或热缩管做好绝缘并留出足够松弛的长度防止拉扯断裂。蜂鸣器的放置为了获得最佳音效应尽量将蜂鸣器靠近玩具的外表面或者对准玩具已有的开口如嘴巴、鼻孔。可以用一小块双面胶或热熔胶固定在内部织物上。用布料完全包裹会显著降低音量。电路板与电池的安置将焊接好的万孔板用尼龙扎带或针线固定在玩具身体内部较宽敞、不易被挤压的部位如背部或臀部。电池特别是锂电池务必用绝缘胶带包裹好并确保其放置稳固不会在玩具被抱起时翻滚或拉扯导线。可以在电池和电路板之间垫一些填充棉作为缓冲。导线管理所有连接伺服、传感器、扬声器的导线在玩具内部应留有一定的松弛度并用线扣或胶带分段固定防止因玩具形变而扯断焊点。伺服电机本身最好用螺丝或强力的胶水固定在电路板或一个内部的小木片上以提供一个反作用力的支点。5. 调试优化与创意扩展系统组装完成后真正的乐趣——调试与个性化——才刚刚开始。5.1 系统调试与问题排查即使按照教程一步步做第一次也难免遇到问题。下面是一个快速排查清单现象可能原因排查步骤完全无反应1. 电源未接通或电池没电。2. Trinket未正确编程或程序未运行。1. 检查所有电源连接用万用表测量电池电压。2. 对于Trinket M0检查CIRCUITPY盘内的code.py文件是否存在且内容正确。对于Trinket 3V确认Arduino IDE中已选择正确板卡和编程器并成功上传。只有声音伺服不转1. 伺服电机供电不足或未接。2. 伺服信号线接触不良。3. 代码中伺服引脚定义错误或库未正确初始化。1.重点检查伺服电机的红线电源是否接在了外部电池上黑/棕线地是否与Trinket共地单独给伺服电机接上5V电源用手转动舵盘应能感觉到阻力说明电机已上电。2. 用示波器或逻辑分析仪检查信号引脚是否有PWM波形输出。没有仪器的话可以临时将一个LED串联220Ω电阻接到信号引脚和地之间程序运行时LED应微弱闪烁。只有伺服动没有声音1. 蜂鸣器正负极接反。2. 使用了有源蜂鸣器。3. 发声引脚定义错误或未设置为输出。1. 检查蜂鸣器连接。尝试快速切换引脚高低电平应能听到“嗒嗒”声。2. 确认是无源压电蜂鸣器。3. 检查代码中SPEAKER对应的引脚号。光敏控制不灵敏1. 光敏电阻被遮挡或安装不当。2. 代码中的阈值darkness_threshold或800设置不当。3. 分压电阻阻值不匹配。1. 确保光敏电阻感光面朝向正确且无遮挡。2.调试关键添加调试输出。在CircuitPython中用print(photocell.value)在Arduino中可尝试用软串口输出到另一个USB转串口模块。记录正常光照和被遮住时的读数将阈值设在这两个值之间。动作或声音卡顿、不连续1. 电池电量不足导致电压下降。2. 伺服电机堵转耗电过大拉低系统电压。3. 代码中延时或循环处理不当。1. 更换新电池或充电。2. 检查机械结构是否卡死确保伺服能自由转动。可以考虑在伺服电源端并联一个大电容如100-470uF以缓冲电流冲击。3. 检查loop中的delay时间避免过长。确保伺服刷新中断Arduino或主循环CircuitPython能及时运行。5.2 个性化创意与功能扩展基础功能实现后你可以尽情发挥创意更换声音原代码提供了鸟叫、猫叫、狗叫。你可以用playTone函数自己“谱写”声音。例如模仿警车声高低频率交替、科幻音效频率平滑变化或简单的旋律。网上有很多“Arduino 无源蜂鸣器音乐”的代码片段可以借鉴其频率和节拍。增加动作模式让伺服电机不只是0度和180度两点切换。可以编程让它缓慢地左右扫描for循环改变角度或者在被触摸时连续点头多次。使用更多传感器触摸传感器用导电布或铝箔制作一个触摸点连接到Trinket的另一个数字引脚并启用上拉电阻实现更可靠的触摸触发。倾斜开关或振动传感器让玩具在被动或被摇晃时做出反应。红外接近传感器实现“靠近即互动”的效果。驱动更多执行器多个伺服电机Trinket还有空闲引脚#3, #4可以控制第二个伺服电机来摆动尾巴或翅膀。LED眼睛添加两个LED作为眼睛互动时可以闪烁增加生动感。改变载体不一定非是毛绒玩具。你可以用纸模、3D打印的模型甚至是一个旧台灯来作为载体创造独特的互动艺术品。这个项目的魅力在于它用一个非常具体、有趣的实例串起了嵌入式开发从硬件选型、电路设计、编程逻辑到机械组装、调试排错的全流程。当你看到自己改造的玩具因为你的抚摸而发出叫声并动起来时那种将代码和电路赋予物理实体生命的成就感是单纯点亮一个LED无法比拟的。它不仅仅是一个玩具更是一个通往更广阔创客世界的大门。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2617457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…