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

Arduino智能免接触洗手液装置:从传感器到伺服电机的完整物联网项目实践

1. 项目概述与核心价值

在嵌入式开发领域,将传感器、控制器和执行器组合起来解决一个具体的实际问题,是检验学习成果和锻炼工程思维的最佳方式。今天分享的这个项目——智能免接触洗手液装置,就是一个非常经典且实用的入门级物联网应用。它的核心逻辑很简单:利用超声波传感器检测手部是否靠近,一旦确认,就通过Arduino控制一个伺服电机,模拟人手按压洗手液泵头的动作,从而实现“伸手即出液”的自动化体验。

这个项目之所以值得一做,是因为它麻雀虽小,五脏俱全。你不仅会接触到Arduino编程、电路搭建、传感器数据读取、执行器控制这些嵌入式开发的基础模块,更重要的是,你需要思考如何让这些模块可靠地协同工作。比如,如何避免传感器误触发?如何确保电机动作精准且不浪费洗手液?如何让整个装置稳定运行而不“抽风”?这些都是在真实项目中才会遇到的工程问题。无论你是刚接触Arduino的新手,想通过一个有趣的项目入门,还是有一定基础的爱好者,希望深化对自动控制逻辑的理解,这个项目都能提供扎实的实践机会。最终,你将收获一个既酷炫又实用的智能小装置,更能深刻理解从“想法”到“可靠产品”的完整实现路径。

2. 核心组件选型与原理剖析

一个项目的成功,始于对每个核心部件的透彻理解。盲目堆砌元件往往事倍功半。下面我们来逐一拆解本装置所需的“四大件”,并解释为什么选它们,以及它们是如何工作的。

2.1 控制核心:为什么是Arduino Uno?

在众多微控制器中,我选择了最经典的Arduino Uno R3作为本项目的大脑。原因有三点:生态成熟、资源适中、性价比高。Uno基于ATmega328P芯片,拥有14个数字I/O口(其中6个可作PWM输出)和6个模拟输入口,对于控制一个传感器和一个电机绰绰有余。其16MHz的主频和32KB的存储空间,足以流畅运行我们所需的检测与控制逻辑。更重要的是,Arduino拥有全球最庞大的开源社区,任何你遇到的问题,几乎都能找到现成的库函数和解决方案,这对于初学者和快速原型开发至关重要。

注意:市面上有大量Uno的兼容板,价格可能更便宜。对于此类简单项目,兼容板通常没问题,但务必选择CH340G等成熟USB转串口芯片的版本,以确保驱动安装顺利。

2.2 “眼睛”的抉择:超声波传感器HC-SR04详解

检测手部靠近,我们选择了HC-SR04超声波传感器,而非红外或激光传感器。这是基于成本、精度和实现难度的综合考量。HC-SR04的工作原理是“回声定位”:其Trig引脚发出一个至少10微秒的高电平脉冲,触发传感器发射一束40kHz的超声波。超声波遇到障碍物(如你的手)后反射回来,被传感器接收。Echo引脚会输出一个高电平脉冲,其持续时间与超声波往返的时间成正比。

计算距离的公式为:距离 = (高电平时间 × 声速) / 2。在空气中,声速受温度影响较大,常温(20°C)下约为343米/秒。因此,代码中常使用一个简化常量0.0343 / 2(即0.01715)厘米/微秒来计算。例如,如果Echo高电平持续了1000微秒,那么距离 ≈ 1000 * 0.01715 ≈ 17.15厘米。

选择它的理由:首先,价格极其低廉(通常不到10元)。其次,它的有效测距范围是2cm到400cm,精度在3mm左右,完全满足我们检测20cm内手部的需求。最后,它的接口和编程非常简单,仅需一个触发信号和一个读取脉冲宽度的操作,Arduino有现成的pulseIn()函数可以轻松实现。

2.3 “手臂”的实现:伺服电机SG90的精准控制

执行按压动作,我们选用SG90微型伺服电机。它是一种位置伺服电机,与普通的直流电机(只能控制转速和方向)有本质区别。SG90内部包含一个小型直流电机、减速齿轮组和一个控制电路。其核心是一个电位器,用于反馈当前轴的位置。

我们通过向它的信号线发送PWM(脉冲宽度调制)信号来控制角度。标准PWM周期为20ms(50Hz),其中高电平的脉冲宽度决定了角度。通常,0.5ms的脉宽对应0度,1.5ms对应90度,2.5ms对应180度。SG90的转动范围通常是0-180度。在本项目中,我们不需要它连续旋转,而是让它在一个小角度范围内(例如30度到60度)快速摆动,这个摆动动作通过一个机械连杆,就能转化为按压泵头的直线运动。

选择SG90的原因是其控制极其简单(一根信号线+电源线),扭矩适中(1.6kg·cm左右),且价格便宜。它内置了驱动和控制电路,我们无需再额外设计电机驱动模块,大大简化了系统复杂度。

2.4 电路搭建基石:面包板与连接线

对于原型验证阶段,面包板是不可或缺的。它允许我们无需焊接,通过杜邦线(跳线)快速搭建和修改电路。面包板内部金属条的结构决定了连接规则:中间凹槽两侧的竖排孔是互通的(通常5个一组),用于连接元件引脚;顶部和底部两排横排的孔是连通的,通常用作电源正极(VCC)和负极(GND)的分布总线。

正确、整洁地使用面包板,是保证电路稳定、便于调试的关键。混乱的接线是导致接触不良、短路等诡异问题的首要元凶。

3. 系统电路设计与连接详解

理解了每个元件,下一步就是让它们正确地“对话”。电路图是工程的蓝图,务必在动手前彻底弄清。

3.1 完整电路连接图与接线表

整个系统的供电和信号流如下图所示(文字描述):Arduino Uno作为控制中心,通过USB线或外部电源供电。超声波传感器的VCC和GND分别连接到Arduino的5V和GND引脚,其Trig和Echo引脚分别连接到数字引脚9和10。伺服电机的红色线(VCC)和棕色/黑色线(GND)同样连接到Arduino的5V和GND,其橙色/黄色信号线连接到数字引脚6。一个LED(配合一个220Ω的限流电阻)的正极连接到数字引脚7,负极连接到GND,用于提供工作状态指示。

为了更清晰,以下是接线对照表:

元件引脚/线色连接到 Arduino Uno 引脚说明
HC-SR04VCC5V提供5V工作电压
GNDGND共地
TrigDigital 9触发测距信号
EchoDigital 10接收回波信号
SG90 伺服电机红色线 (VCC)5V注意:需评估供电能力
棕色/黑色线 (GND)GND共地
橙色/黄色线 (SIG)Digital 6PWM控制信号
LED长脚 (正极)Digital 7通过220Ω电阻连接
短脚 (负极)GND直接连接
220Ω 电阻一端Digital 7与LED正极串联
另一端LED长脚限流保护LED

3.2 供电方案分析与注意事项

供电是嵌入式系统稳定运行的基石,这里有一个关键的坑点需要特别注意:Arduino Uno的5V引脚输出能力有限。USB供电时,其5V引脚最大可提供约500mA电流。而一个SG90电机在堵转(卡住)或启动瞬间,电流可能达到500-800mA。如果传感器、LED和电机都从板载5V取电,极有可能导致Arduino重启或工作不稳定。

解决方案(强烈推荐)

  1. 使用外部电源:将7-12V的直流电源(如9V电池或电源适配器)接入Arduino的DC插孔。此时,板载稳压器会工作,能提供比USB更强的电流。
  2. 电机独立供电:如果必须使用USB供电(如从电脑取电),建议为伺服电机提供独立的5V电源��可以将电机的VCC和GND接到一个外部5V电源(如手机充电宝或专用的5V稳压模块)上,但务必将这个外部电源的GND与Arduino的GND连接在一起,确保它们有共同的参考地,否则信号无法正确传输。

实操心得:在面包板上搭建时,我强烈建议使用两排分别作为5V总线GND总线,然后用跳线从Arduino引到这两排上。所有元件的VCC和GND都就近接入总线,这样电路会清晰很多,也避免了“飞线”混乱。务必在接通电源前,再三检查所有连接,特别是电源正负极不能接反,伺服电机的三根线顺序要正确。

4. 核心程序逻辑与代码逐行解析

电路是躯体,程序是灵魂。下面我们深入代码,看看如何让这个装置“聪明”起来。

4.1 程序整体框架与初始化

我们使用Arduino IDE进行编程。代码的核心逻辑是一个状态机:持续测量距离 -> 判断是否满足触发条件 -> 满足则驱动电机动作 -> 返回等待状态。同时,用LED作为视觉反馈。

// 智能免接触洗手液装置程序 // 引脚定义 const int trigPin = 9; // 超声波触发引脚 const int echoPin = 10; // 超声波回波引脚 const int servoPin = 6; // 伺服电机信号引脚 const int ledPin = 7; // 状态LED引脚 // 参数定义 const int detectionRange = 15; // 检测距离阈值,单位:厘米 const int pumpAngle = 60; // 按压泵头时电机的角度 const int restAngle = 30; // 松开泵头时电机的角度(初始位置) const int actionDelay = 500; // 电机动作后,系统休眠防误触的时间,单位:毫秒 // 引入伺服电机库 #include <Servo.h> Servo myServo; // 创建一个伺服电机对象 void setup() { // 初始化串口通信,用于调试输出数据 Serial.begin(9600); // 配置引脚模式 pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(ledPin, OUTPUT); // 初始化伺服电机,并移动到初始位置 myServo.attach(servoPin); myServo.write(restAngle); delay(500); // 等待电机就位 // 开机提示:LED闪烁两次 for(int i=0; i<2; i++){ digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); delay(200); } Serial.println("系统初始化完成,开始检测..."); } void loop() { // 主循环,持续执行 }

代码解析

  • const用于定义常量,方便后续调整参数。
  • detectionRange是关键阈值,表示手需要进入这个距离(厘米)内才会触发。你可以根据洗手液瓶的摆放位置调整此值。
  • Servo库是Arduino内置的,它简化了生成PWM信号控制电机的过程。
  • setup()函数中的初始化步骤顺序很重要:先配置引脚,再连接伺服电机,最后让它归位。开机LED闪烁是一个很好的用户反馈,告诉你系统已上电。

4.2 超声波测距函数封装与滤波

测距是触发判断的依据,必须稳定可靠。我们将测距功能封装成一个函数,并加入简单的滤波处理。

// 函数:获取超声波测量的距离,单位:厘米 float getDistance() { // 发送一个至少10微秒的高脉冲触发信号 digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // 读取回波引脚的高电平持续时间(单位:微秒) // pulseIn()函数会等待引脚变为HIGH,开始计时,再变为LOW时停止 long duration = pulseIn(echoPin, HIGH); // 计算距离:距离 = (时间 * 声速) / 2 // 声速取 343 m/s = 0.0343 cm/微秒。除以2因为是往返距离。 float distance = duration * 0.01715; return distance; } void loop() { // 调用测距函数 float currentDistance = getDistance(); // 串口打印距离值,用于调试和校准 Serial.print("距离: "); Serial.print(currentDistance); Serial.println(" cm"); // 判断逻辑:如果检测到距离小于阈值,且距离有效(大于0) if (currentDistance > 0 && currentDistance < detectionRange) { Serial.println("检测到手部,触发按压!"); dispenseSanitizer(); // 调用出液函数 } // 短暂延迟,降低循环频率,节省资源并稳定读数 delay(100); }

代码解析与避坑

  • pulseIn(echoPin, HIGH)是核心函数,它等待并测量高电平脉冲宽度。如果超过一定时间(默认1秒)没有回波,它会返回0。这就是为什么我们判断distance > 0,以过滤掉无效测量。
  • delay(100)在主循环中很重要。如果不加延迟,循环会以极快的速度运行,可能导致传感器读数不稳定,甚至干扰伺服电机控制。100ms的间隔对于这个应用来说足够快,也足够稳定。
  • 常见问题:有时读数为0或极大值(如>400)。这通常是传感器没有接收到有效的回波,可能是物体表面吸音(如布料)、角度太偏、或者距离太近(<2cm)超出了最小测距范围。可以在传感器前加一个小纸筒作为“遮光罩”,能略微提升指向性和抗干扰能力。

4.3 伺服电机控制与出液动作优化

驱动电机完成一次按压动作,需要考虑动作的平滑性和防误触。

// 函数:执行一次出液动作 void dispenseSanitizer() { Serial.println("开始出液动作"); digitalWrite(ledPin, HIGH); // LED亮起,指示工作中 // 驱动电机从初始角度运动到按压角度 myServo.write(pumpAngle); delay(300); // 等待电机运动到位并保持按压状态 // 驱动电机返回初始角度,松开泵头 myServo.write(restAngle); delay(300); // 等待电机复位 digitalWrite(ledPin, LOW); // LED熄灭,动作完成 Serial.println("出液动作完成"); // 关键:动作完成后,增加一个“不响应期” delay(actionDelay); } void loop() { float currentDistance = getDistance(); Serial.print("距离: "); Serial.print(currentDistance); Serial.println(" cm"); if (currentDistance > 0 && currentDistance < detectionRange) { Serial.println("检测到手部,触发按压!"); dispenseSanitizer(); } delay(100); }

动作逻辑深度解析

  1. 动作分解:一次完整的出液包含“按压-保持-释放”三个步骤。myServo.write(pumpAngle)指令会让电机转动到指定角度,通过机械结构下压泵头。保持300ms是为了确保洗手液被充分挤出。然后write(restAngle)让电机回位,泵头在弹簧作用下复位,完成一次循环。
  2. 防误触机制actionDelay(这里设为500ms)是至关重要的。在完成一次出液后,系统会“休眠”500ms,在此期间即使手还在传感器前晃动,也不会再次触发。这有效防止了因手部停留而导致的连续喷发,浪费洗手液。这个值可以根据泵头的复位速度和你的使用习惯调整。
  3. 状态反馈:LED在动作期间常亮,为用户提供了清晰的视觉反馈,让人知道装置已经识别并正在工作。

5. 机械结构设计与组装要点

电路和程序是内核,而坚固合理的机械结构是项目从“原型”走向“可用”的关键。这部分往往被初学者忽视,却直接决定了装置的可靠性和用户体验。

5.1 材料准备与固定方案

你需要为电子部分找一个“家”。一个大小合适的塑料盒或小木盒是不错的选择,既能保护电路,也方便固定。关键是如何固定各个部件:

  • 超声波传感器:需要在盒子正面开一个与传感器探头大小匹配的方孔。确保传感器正面与盒子外表面平齐或略微突出,不要有遮挡,否则会影响声波发射和接收。可以用热熔胶从内部将其牢牢固定。
  • 伺服电机:这是受力部件,固定必须牢固。建议使用伺服电机支架(通常随电机附送或可单独购买),先用螺丝将电机锁在支架上,再用螺丝或强力双面胶将支架固定在盒子内壁或底板上。电机的转轴需要伸出盒子,以连接按压机构。
  • Arduino和面包板:可以使用尼龙柱和螺丝固定,也可以用魔术贴(勾毛贴)粘在盒子底部,后者便于后期拆卸修改。
  • 电池:如果使用9V电池,可以购买一个9V电池扣,然后用扎带或电池座将其固定在盒子角落。

5.2 按压传动机构设计

如何将伺服电机有限的旋转运动,转化为对洗手液泵头垂直向下的直线按压,是本项目机械部分的核心。这里有几种经过验证的方案:

方案一:连杆机构(推荐)这是最可靠的方式。找一段硬铁丝、粗铜线或者小号舵臂。将其一端固定在伺服电机的舵盘(舵机附带的圆盘或十字盘)上。调整舵盘的角度,使得在初始位置(restAngle)时,连杆的另一端刚好轻触在洗手液泵头的侧面或顶部。当电机转动到pumpAngle时,连杆会推动泵头向下运动一段距离。你可以通过改变连杆在舵盘上的固定孔位(力臂长度)来微调按压行程。

方案二:凸轮机构在伺服电机舵盘上,非圆心位置固定一颗螺丝或一小块塑料块作为凸点。电机旋转时,这个凸点会周期性地顶起一个“压板”,压板再向下按压泵头。这种方案冲击力较大,需要精心调整凸点位置和压板的复位弹簧。

方案三:直接耦合(适用于特定瓶型)如果伺服电机的位置可以精确对准泵头正上方,可以制作一个简单的“套筒”套在电机转轴上,套筒下端直接接触泵头。电机小角度往复转动,实现按压。这种方式对安装精度要求最高。

实操心得:在最终固定所有东西之前,务必进行多次手动模拟测试。用手转动电机轴,观察按压动作是否顺畅、行程是否足够、是否会卡住。建议在泵头下方垫一点海绵或软布,以缓冲冲击并降低噪音。传动机构的所有连接点(如铁丝与舵盘的连接)最好能用热缩管热熔胶加固,防止长时间使用后松动。

6. 系统调试、校准与优化

所有硬件组装完毕,代码上传后,并不意味着大功告成。调试和校准是让项目从“能动”到“好用”的升华过程。

6.1 上电调试与传感器校准

首先,不安装按压机构,先进行软硬件联调。

  1. 上传代码:用USB线连接Arduino和电脑,上传程序。
  2. 打开串口监视器:在Arduino IDE中打开串口监视器(波特率设为9600)。你应该能看到持续输出的距离数据。用手在传感器前移动,观察数据变化是否灵敏、连续。
  3. 校准检测阈值:将手放在你希望触发出液的典型位置(比如距离传感器10cm处),查看串口输出的距离值。将这个值,加上2-3cm的余量,作为你的detectionRange。例如,实测手在12cm处,可以设detectionRange = 15。这避免了因传感器微小波动而导致的误触发或漏触发。
  4. 测试电机动作:暂时注释掉主循环中的距离检测和触发条件,直接调用dispenseSanitizer()函数,观察电机是否能平滑地转动到指定角度。同时调整pumpAnglerestAngle,找到能完成有效按压且不卡死机械结构的最佳角度。

6.2 功能集成测试与问题排查

将机械部分安装好,进行全系统测试。你可能会遇到以下典型问题:

问题现象可能原因排查与解决方案
手靠近无反应1. 传感器接线错误或接触不良。
2. 检测阈值detectionRange设置过小。
3. 手部不在传感器检测锥形区域内。
1. 检查Trig/Echo引脚是否接反,用万用表测5V和GND电压。
2. 通过串口监视器查看实时距离,调整阈值。
3. 超声波传感器有约15度的检测锥角,确保手部正对。
未伸手就自动触发1. 传感器前方有固定障碍物(如盒壁)。
2. 电源噪声导致传感器读数跳变。
1. 确保传感器前方开阔,清理障碍物。
2. 为Arduino使用稳定的外部电源,并在传感器VCC和GND间并联一个10uF电解电容滤波。
电机不转或抖动1. 供电不足(最常见)。
2. 信号线接触不良。
3. 机械结构卡死,负载过大。
1.立即断开电源!改用外部9V电源或为电机单独供电。
2. 检查信号线连接,尝试更换引脚。
3. 卸下机械负载,空载测试电机是否正常转动。
出液量不稳定1. 电机按压行程不一致。
2. 洗手液泵头本身出液不均。
3. 动作太快,泵头未充分复位。
1. 检查机械连接是否牢固,有无松动。
2. 这是机械泵头的通病,可尝试在dispenseSanitizer函数中增加delay(500)的保持时间。
3. 确保restAngle能让泵头完全弹回,增加actionDelay
系统运行一段时间后死机1. 电源过热或电压下降。
2. 电机堵转导致电流过大,触发保护。
3. 程序逻辑死循环。
1. 检查电池电量,使用稳压电源。
2. 优化机械结构,减少电机阻力,确保其转动顺畅。
3. 检查代码中是否有未正确处理的异常情况,如传感器超时返回0。

6.3 进阶优化建议

当基础功能稳定后,可以考虑以下优化,让你的装置更智能、更可靠:

  • 状态指示灯多样化:除了一个常规模态LED,可以增加一个双色LED(或两个不同颜色的LED)。绿色常亮表示待机,红色闪烁表示正在出液,黄色表示电量低等。
  • 增加模式开关:添加一个拨动开关,连接到Arduino的一个数字输入引脚。通过程序判断开关状态,实现“自动模式”和“手动模式”(按一下按钮出液一次)的切换。
  • 液位检测与提醒:在洗手液瓶侧面安装一个红外对管或激光测距传感器,指向液面。通过监测距离变化来判断剩余液量,当液位过低时,让LED以特定频率闪烁报警。
  • 低功耗优化:如果使用电池供电,可以考虑让Arduino在大部分时间进入“睡眠模式”,仅由超声波传感器(或一个外部中断引脚)来唤醒,从而大幅延长电池寿命。

这个项目从电路连接到代码编写,再到机械组装和系统调试,完整地走完了一个嵌入式产品原型开发的全流程。过程中遇到的每一个问题,从电源噪声到机械公差,都是宝贵的实战经验。它不仅仅是一个自动出液的盒子,更是一个理解如何让硬件、软件和机械结构协同工作的绝佳范例。当你按下开关,看到装置精准地响应你的手势时,那种将想法变为现实的成就感,正是创客精神的精髓所在。

http://www.rkmt.cn/news/1460366.html

相关文章:

  • 精简护肤党淡纹眼霜该如何挑选?实测少添加眼霜,简单护肤改善眼周纹路 - 资讯焦点
  • 贵阳本地生活代运营服务商排行 实力机构盘点 - 奔跑123
  • 2026 AI 数字人直播产品横向实测:源码本地部署赛道优选登登AI|全数据化选型测评
  • 从ECC到数据库:详解SAP PO中4种Communication Channel的配置差异与选型
  • 建筑动画在城市建设项目报批与方案评审中的应用实践
  • Xournal++:跨平台手写笔记与PDF批注的终极解决方案
  • 乌鲁木齐简装出租房,哪家装修公司更值得信赖? - GrowthUME
  • 告别手动输入!用Windchill初始化规则批量搞定文档命名与编号(组织级/站点级配置指南)
  • 基于Arduino与无源蜂鸣器的星战主题音乐盒DIY全攻略
  • 基于树莓派与Home Assistant的DIY泳池自动化系统搭建指南
  • 从Chemex到CAT:一个开源IT运维项目的重构实战与选型思考
  • 2026最新诚信优选 茂名全域金银铂金彩金回收实地甄选优质门店TOP6榜单+联系方式汇总推荐 - 余生黄金回收
  • 重庆市格力空调维修师傅电话|各区金牌师傅,靠谱选欧米到家 - 欧米到家
  • 霞浦 3 天 2 晚网约私家团,一站打卡沙滩灯塔与滨海风光 - 奔跑123
  • 2026 年 6 月丹阳市防水维修甄选指南:卫生间免砸砖、屋顶阳台外墙地下室漏水检修避坑全攻略 - 吉修匠
  • .NET Win32设置只读未对齐,导致NTFS文件系统识别异常
  • 杭州市天加中央空调维修师傅电话|各区金牌师傅,靠谱选欧米到家 - 欧米到家
  • 2026年工业防护包装厂家选购指南:航空箱、铝箱、卡扣箱、出口木箱、航空托盘厂家选择指南,产能、工艺、品控三维度客观解析 - 海棠依旧大
  • 从考试失利到实战通关:手把手教你用Python实现遗传算法中的轮盘赌选择
  • 2026 年 6 月如皋市防水维修甄选指南:卫生间免砸砖、屋顶阳台外墙地下室漏水检修避坑全攻略 - 吉修匠
  • 别再死记硬背了!深入理解X-Forwarded-For和Referer:从CTF题到真实网络代理场景
  • 2026最新诚信优选 茂名粤西片区黄金铂金白银彩金回收合规商家TOP6排行榜+联系方式整理推荐 - 余生黄金回收
  • 如何快速解决Dell G15散热问题:开源温度控制中心TCC-G15完全指南
  • 2026 年 6 月东台市防水维修甄选指南:卫生间免砸砖、屋顶阳台外墙地下室漏水检修避坑全攻略 - 吉修匠
  • 《我的世界》红石TNT轰炸机:从原理到实战的工程建造指南
  • 2026最新诚信优选 日照全市黄金回收白银回收铂金回收彩金回收靠谱门店TOP6排行榜+联系方式推荐 - 余生黄金回收
  • 列表list-常用方法
  • 杭州市特灵中央空调维修师傅电话|各区金牌师傅,靠谱选欧米到家 - 欧米到家
  • TMSpeech:3个步骤解决Windows实时语音转文字的所有痛点
  • 2026 年 6 月武夷山市防水维修甄选指南:卫生间免砸砖、屋顶阳台外墙地下室漏水检修避坑全攻略 - 吉修匠