ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

利用Broadlink红外遥控与Arduino实现Alexa语音控制非智能设备

利用Broadlink红外遥控与Arduino实现Alexa语音控制非智能设备 1. 项目概述用Broadlink红外遥控器打通Alexa与Arduino的任督二脉如果你手头有一些老式的、非智能的电器比如空调、风扇或者一个用Arduino DIY的小玩意儿想让它们也能响应Alexa的语音指令是不是觉得有点无从下手红外遥控是个好办法但让Alexa直接学红外码再通过一个设备发出去这个链路怎么搭今天要聊的这个方案就是用一个非常常见的“桥梁”设备——Broadlink博联红外遥控器来连接云端智能语音助手Alexa和本地的物理世界执行者Arduino。这听起来像是一个“曲线救国”的方案但它巧妙地利用了现有成熟生态避开了复杂的自建服务器和协议转换实现成本低、稳定性高特别适合智能家居爱好者和硬件开发者进行原型验证或小规模部署。简单来说这个项目的核心逻辑是Alexa - Broadlink云端 - Broadlink物理设备发射红外信号 - Arduino接收红外信号并执行动作。Arduino在这里扮演了一个“万能红外学习器”和“本地逻辑控制器”的角色。Broadlink RM系列产品如RM mini 3、RM Pro以其强大的红外学习和发射能力以及完善的云平台对接而闻名。我们通过自定义技能让Alexa可以控制Broadlink设备然后我们让Arduino持续监听红外信号当接收到Broadlink发出的、我们预先学习并定义好的特定红外码时就执行相应的函数比如点亮一个LED、转动一个舵机或者通过继电器控制一盏灯。这样一来任何能被红外遥控的设备理论上都能通过这套组合拳接入Alexa的语音体系。2. 核心思路与方案选型为什么是Broadlink Arduino2.1 方案对比与选型理由让Arduino响应Alexa主流方案无外乎几种直接给Arduino如ESP8266/ESP32烧录开源固件如SinricPro、Fauxmo模拟成Philips Hue或Wemo设备或者让Arduino通过MQTT连接到一个智能中枢如Home Assistant再由中枢对接Alexa。那为什么还要引入Broadlink这个“中间商”呢1. 降低Arduino端的复杂度和成本直接方案要求Arduino必须具备Wi-Fi功能如ESP系列并且需要处理网络连接、OTA、与亚马逊AWS IoT或第三方服务的认证与通信。这对于资源有限的Arduino Uno/Nano来说压力很大即使使用ESP系列固件开发和调试也有一定门槛。而本方案中Arduino只需要一个最基础的红外接收头如VS1838B成本仅几毛钱和一个单片机任何型号的Arduino都行代码也只是简单的红外接收与解码逻辑复杂度骤降。2. 利用Broadlink成熟的生态与稳定性Broadlink官方提供了完善的APP和云服务其红外学习成功率高发射稳定。通过官方或第三方工具如Python的broadlink库可以轻松实现红外码的学习和发射。更重要的是Broadlink早已深度集成到Amazon Alexa和Google Assistant中通过官方技能添加设备后可以直接用语音控制省去了自己开发Alexa技能并通过AWS Lambda进行认证的繁琐过程虽然本项目后期也可以进阶到自定义技能但起步阶段用官方技能就够了。3. 实现物理隔离与灵活性这个方案将“智能决策”和“物理执行”进行了分离。Broadlink作为联网的智能红外发射器可以放在客厅中央确保红外信号能覆盖到多数设备。而Arduino作为执行单元可以放在任何需要的地方比如车库、工作台只通过红外这一种单向无线信号与Broadlink通信。这种松耦合带来了部署的灵活性你可以轻松地通过重新学习红外码来改变Arduino执行的动作而无需修改Arduino的代码或重新配网。4. 绕过网络与协议的兼容性问题有些DIY的Arduino项目可能使用了非常特殊的传感器或执行器其控制逻辑复杂难以抽象成简单的“开/关”或“调亮度”标准接口去对接Alexa。而红外码只是一串十六进制数据我们可以定义任何复杂的“暗号”。Arduino收到A暗号执行序列甲收到B暗号执行序列乙完全自定义。这相当于用红外信号传递了一个“触发指令”把具体的执行逻辑完全黑盒在Arduino内部实现了最大的控制自由度。注意此方案的核心限制是单向通信和非实时性。Arduino只能接收指令不能向Alexa反馈状态如“灯已打开”。同时红外通信易受遮挡且通信距离有限。但对于很多状态反馈不重要的场景如触发一个一次性动作、切换模式这完全够用。2.2 系统架构与数据流详解让我们把上面的逻辑拆解成更清晰的组件和数据流图用户层用户对Alexa设备如Echo Dot说“Alexa, turn on the workbench light.”云端与逻辑层Alexa语音服务识别指令发现“workbench light”对应的是已绑定的Broadlink设备下的一个场景或按键。Alexa云服务通过Broadlink的云API向指定的Broadlink设备如RM mini 3下发“发射指定红外码”的指令。本地执行层家庭Wi-Fi网络中的Broadlink设备收到云端指令从其内置的存储中调出对应的红外码并通过红外发射管发射出去。放置在Arduino上的红外接收头VS1838B捕获到这串红外信号。Arduino通过红外接收库如IRremote解码这串信号得到一串十六进制码。Arduino程序中将这串十六进制码与预设的指令码进行比对。如果匹配到“workbench light on”的码则执行对应的函数例如digitalWrite(relayPin, HIGH)从而打开连接在继电器上的工作台灯。整个过程中Arduino完全不知道Alexa和网络的存在它只关心是否收到了那串正确的“红外密令”。这种架构的清晰度非常高故障排查也容易定位是Alexa没识别是Broadlink没联网还是Arduino没收到红外信号3. 硬件准备与核心器件解析3.1 硬件清单与选购要点要复现这个项目你需要准备以下硬件。我会详细说明每个部件的作用和选购时的注意事项。组件推荐型号/规格数量作用与说明红外遥控中枢Broadlink RM mini 3 (黑色新款)1核心。负责连接Wi-Fi接收云端指令并发射红外信号。建议购买新款对第三方库支持更好。微控制器Arduino Uno R3 或 Arduino Nano1大脑。运行控制程序解析红外码并控制外围设备。Uno更易调试Nano更小巧。红外接收头VS1838B 或 TSOP382381耳朵。接收Broadlink发射的红外信号并转换为电信号给Arduino。注意接收频率需为38kHz这是标准。被控设备示例5V继电器模块、LED、舵机等若干手脚。根据你想控制的对象选择。继电器可控制高电压电器如台灯LED和舵机用于简单演示。连接线杜邦线公对公、公对母1批血管。用于连接各组件。准备若干即可。电源Arduino USB电源适配器或移动电源1心脏。为Arduino供电。如果控制继电器驱动大功率设备需确保电源功率足够。选购与避坑指南Broadlink设备务必确认你购买的型号能被第三方工具控制。RM mini 3新款和RM Pro普遍支持良好。购买后先使用官方“Broadlink”APP完成设备配网和初始设置将其成功接入你的家庭Wi-Fi。这是后续一切操作的基础。红外接收头VS1838B是最常见、最便宜的选择其三个引脚分别为输出(OUT)、电源(VCC)、接地(GND)。连接时务必确认VCC接5VGND接GNDOUT接Arduino的数字引脚如D11。Arduino板对于初学者Arduino Uno是最佳选择资源丰富兼容性无敌。如果项目需要放在狭小空间Nano是完美的替代品但需注意其引脚排列和供电方式。继电器模块选择低电平触发的继电器模块更常见、更安全。模块上通常有VCC、GND、IN三个引脚。IN引脚接Arduino数字引脚当该引脚为LOW低电平时继电器吸合。3.2 电路连接详解与原理图这里我们以一个最经典的场景为例用Arduino通过继电器控制一盏台灯并通过红外信号触发。连接步骤红外接收头连接将VS1838B的VCC引脚连接到Arduino的5V引脚。将GND引脚连接到Arduino的任意GND引脚。将OUT或DAT引脚连接到Arduino的数字引脚11。选择D11是因为它兼容IRremote库的中断功能信号接收更稳定。继电器模块连接将继电器模块的VCC连接到Arduino的5V。将GND连接到Arduino的GND。将IN或SIG连接到Arduino的数字引脚7。被控设备连接警告涉及市电操作务必断电进行注意安全如果你不熟悉强电请仅用LED灯做实验。将台灯的电源线剪断或使用一个单独的灯座和灯泡。将火线L剪断两端分别接到继电器模块的常开NO和公共端COM接线柱上。零线N保持完整不经过继电器。工作原理简述当Arduino的D7引脚输出LOW电平时继电器线圈得电内部机械开关吸合COM端与NO端接通台灯的火线形成回路灯亮。当D7输出HIGH时继电器线圈失电开关断开灯灭。红外接收头则持续监听38kHz的红外信号一旦收到Broadlink发出的信号便将其转换成一系列高低电平脉冲从OUT脚发送给Arduino的D11引脚。实操心得在焊接或连接市电部分时一定要做好绝缘处理可以使用接线端子或电工胶带。首次测试时可以先不接台灯仅听继电器吸合时“咔嗒”的声音来判断Arduino控制是否正常。另外给Arduino供电的USB线最好质量好一些避免因继电器吸合瞬间电流较大导致Arduino重启。4. 软件环境配置与红外码学习4.1 软件工具链搭建工欲善其事必先利其器。我们需要配置好以下软件环境Arduino IDE从Arduino官网下载并安装最新版。安装后需要安装一个关键库。打开Arduino IDE点击工具-管理库...。在库管理器中搜索IRremote选择由Arduino-IRremote或shirriff维护的版本进行安装。这个库将帮助我们轻松解码红外信号。Python环境与Broadlink库用于学习红外码这是关键一步。我们需要在电脑上学习Broadlink发射的红外码。安装Python 3.x。打开命令行CMD或终端使用pip安装必要的库pip install broadlink pip install --upgrade pycryptodomebroadlink库是用于与Broadlink设备通信的第三方Python库pycryptodome是其依赖的加密库。4.2 获取Broadlink设备密钥与学习红外码Broadlink设备与局域网内设备通信需要经过加密认证因此我们需要先获取设备的本地IP和MAC地址并计算出通信密钥。步骤一发现设备并获取信息创建一个Python脚本discover.pyimport broadlink import time print(正在发现局域网内的Broadlink设备...) devices broadlink.discover(timeout5) if devices: for device in devices: print(f发现设备: {device.type} - IP: {device.host[0]} - MAC: {device.mac.hex()}) # 通常第一个就是你的RM设备 d device break # 认证设备 d.auth() print(设备认证成功) else: print(未发现任何Broadlink设备请检查设备是否已联网。)运行此脚本记下输出的IP地址和MAC地址形如78:0f:77:xx:xx:xx。步骤二学习红外码创建一个Python脚本learn_and_send.py替换其中的IP和MAC为你设备的信息import broadlink import time import binascii # 配置你的设备信息 DEVICE_IP 192.168.1.100 # 替换为你的设备IP DEVICE_MAC 780f77a1b2c3 # 替换为你的设备MAC去掉冒号全部小写 DEVICE_MAC_BYTES binascii.unhexlify(DEVICE_MAC) # 创建设备对象 device broadlink.rm4mini((DEVICE_IP, 80), DEVICE_MAC_BYTES, devtype0x5f36) # RM mini 3的devtype device.auth() print(正在进入学习模式请用你的实体遥控器对准Broadlink设备按下按键...) device.enter_learning() time.sleep(5) # 你有5秒时间按下遥控器按键 ir_packet device.check_data() if ir_packet: ir_code binascii.hexlify(ir_packet).decode(utf-8) print(f学习到的红外码为: {ir_code}) # 保存到文件方便后续使用 with open(ir_codes.txt, a) as f: f.write(f灯开关: {ir_code}\n) print(红外码已保存。) # 测试发射 print(现在测试发射该红外码...) device.send_data(ir_packet) else: print(未学习到红外码请重试。)运行这个脚本当提示“正在进入学习模式”时立刻用一个不常用的实体红外遥控器比如一个旧电视、旧空调的遥控器对准Broadlink设备按下一个按键比如“电源”键。脚本会捕获这个红外码并打印出来同时保存到ir_codes.txt文件。为什么这么做我们并不是用Broadlink去控制原来的电器而是把它当作一个“红外信号录音机”。我们录下任意遥控器的一个按键信号这个信号就成为了我们和Arduino之间的“秘密暗号”。之后我们让Alexa命令Broadlink发射这个暗号Arduino收到后就知道该做什么了。注意事项学习红外码时环境光线不宜过强避免其他红外源干扰如太阳光、白炽灯。同一个遥控器的不同按键会生成完全不同的红外码。建议为每个你想在Arduino上执行的不同动作开灯、关灯、切换模式等学习并记录不同的红外码。5. Arduino端代码解析与烧录5.1 核心代码逻辑与编写现在我们需要让Arduino能够监听并识别我们刚刚学习到的那个“红外暗号”。打开Arduino IDE新建一个项目。首先包含必要的库并定义引脚和变量#include IRremote.h // 引入红外接收库 // 定义红外接收引脚 const int RECV_PIN 11; // 定义继电器控制引脚 const int RELAY_PIN 7; // 创建红外接收对象 IRrecv irrecv(RECV_PIN); decode_results results; // 用于存储解码结果 // 重要替换为你学习到的红外码十六进制格式 // 例如你学习到的码是 “2600580000012895111311141113...”通常取前8位作为识别码即可 // 但IRremote库通常比较完整的raw data或特定的编码类型。这里以NEC编码为例它是一个32位的值。 const unsigned long IR_CODE_POWER 0xFFA25D; // 示例这是一个常见的NEC编码开关码你需要替换成你的 void setup() { Serial.begin(115200); // 开启串口调试便于观察 irrecv.enableIRIn(); // 启动红外接收 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, HIGH); // 初始化继电器为断开状态假设低电平触发 Serial.println(Arduino红外监听器已启动等待Broadlink信号...); } void loop() { // 检查是否收到红外信号 if (irrecv.decode(results)) { // 打印接收到的原始值用于首次调试 Serial.print(收到红外信号解码值: 0x); Serial.println(results.value, HEX); // 判断是否是我们预设的码 if (results.value IR_CODE_POWER) { Serial.println(识别到‘开关’指令切换继电器状态...); digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN)); // 翻转继电器状态 delay(200); // 防抖延时 } else { Serial.println(收到未知红外码已忽略。); } irrecv.resume(); // 接收下一个信号 } // 这里可以添加其他非阻塞的任务 }5.2 代码烧录与首次调试替换红外码代码中的IR_CODE_POWER是一个示例值。你需要用自己学习到的码来替换。但这里有个关键点IRremote库解码出的results.value可能不是你用Python脚本获取的完整十六进制字符串。最可靠的方法是先将上述代码中的判断语句注释掉if (results.value IR_CODE_POWER)整段。烧录代码到Arduino。打开串口监视器工具-串口监视器波特率设为115200。用之前写好的Python脚本learn_and_send.py中测试发射的部分让Broadlink发射你学习到的红外码。观察串口监视器输出的“解码值”。这个值形如0xFFA25D才是Arduino实际识别到的、需要用于比对的码。将这个值替换到IR_CODE_POWER常量中。烧录与连接用USB线将Arduino连接到电脑在IDE中选择正确的板型如Arduino Uno和端口点击上传。功能测试烧录完成后打开串口监视器。再次运行Python脚本发射红外码或者直接在Broadlink官方APP里对你学习到的那个按键命令进行测试发射。你应该能在串口看到识别成功的消息并听到继电器“咔嗒”的吸合/释放声。如果灯已接好灯应该随之亮灭。实操心得红外接收对环境光敏感初次调试建议在室内光线稳定的环境下进行。如果串口一直收到乱码或重复的未知信号可能是环境干扰。可以尝试用纸筒套在接收头上使其只对准Broadlink的方向。另外IRremote库支持多种红外编码协议NEC, Sony, RC5等如果你的遥控器编码特殊可能需要调整库的解码设置。但Broadlink学习并发射的码兼容性通常很好。6. 连接Alexa实现语音控制闭环6.1 使用官方技能实现基础控制快速入门这是最简单的方法利用Broadlink官方已对接好的Alexa技能。在Broadlink APP中创建场景打开Broadlink APP进入你的RM设备。找到“场景”或“智能”功能不同APP版本位置可能不同。创建一个新的场景例如命名为“打开工作台灯”。为该场景添加一个动作“红外遥控” - 选择你之前学习到的那个红外码在APP的学习记录里。保存场景。你可以创建另一个“关闭工作台灯”的场景但在这个项目里我们用一个码做“翻转”开关更简单。连接Alexa技能在手机上的Amazon Alexa APP中点击右下角“更多”-“技能与游戏”。搜索“Broadlink”技能并启用它。根据提示登录你的Broadlink账户授权Alexa访问你的Broadlink设备。技能会同步你在Broadlink APP中创建的场景。语音控制测试同步完成后在Alexa APP的设备列表里你应该能看到一个名为“打开工作台灯”的场景设备。现在你可以对Alexa说“Alexa, turn on 打开工作台灯”。Alexa会调用该场景Broadlink设备发射红外信号Arduino接收后控制继电器动作。为了让指令更自然你可以在Alexa APP中为该场景设备创建一个分组或者使用例行程序将“打开工作台灯”这个生硬的名称映射到更自然的语音指令上例如“打开我的灯”。6.2 进阶使用第三方桥接实现更灵活的控制官方技能虽然方便但控制粒度较粗且依赖于Broadlink的云服务。如果你想实现更复杂的逻辑、本地化控制或更好的集成可以使用Home Assistant这类开源家庭自动化平台作为桥接。安装Home Assistant在树莓派、旧电脑或NAS上安装Home Assistant。集成Broadlink在Home Assistant的配置文件中添加Broadlink集成填入设备的IP和MAC地址。Home Assistant可以本地控制Broadlink设备无需经过云。集成Alexa通过Home Assistant Cloud付费或自建emulated_hue组件将Home Assistant中的实体例如一个代表“工作台灯”的开关暴露给Alexa。创建自动化在Home Assistant中创建一个自动化当“工作台灯”开关被Alexa打开时触发一个动作——调用broadlink.send服务发射指定的红外码。这种方法将逻辑控制放在了本地的Home Assistant中响应更快功能更强大可以结合传感器、时间等条件且断网后本地基础功能仍可运行。但搭建和维护Home Assistant需要一定的技术基础。7. 项目优化与扩展思路基础功能实现后我们可以从以下几个方面优化和扩展这个项目让它更实用、更强大。7.1 稳定性与抗干扰优化红外通信的天然缺陷是易受干扰和方向性限制。多码冗余与容错在Arduino代码中不要只比对一种精确的红外码。可以定义一个数组存放同一指令可能对应的多个相似码有时信号受干扰解码会有细微差异使用循环遍历比对增加识别成功率。const unsigned long VALID_CODES[] {0xFFA25D, 0xFE01AB, 0xFFFFFFFF}; // 示例0xFFFFFFFF有时代表长按重复码 bool codeMatched false; for (int i 0; i sizeof(VALID_CODES)/sizeof(VALID_CODES[0]); i) { if (results.value VALID_CODES[i]) { codeMatched true; break; } } if (codeMatched) { // 执行动作 }增加硬件反馈为了确认Arduino已执行动作可以加一个蜂鸣器或LED指示灯。当收到正确红外码时让指示灯闪烁一下或蜂鸣器短响一声提供视觉或听觉反馈。改善接收环境将红外接收头用热缩管或黑色胶带包裹只留前端接收窗可以有效减少环境光干扰。确保Broadlink发射端和接收头之间无明显遮挡角度合适。7.2 功能扩展从单指令到多设备控制一个Broadlink设备可以学习存储成千上万个红外码。我们可以利用这一点实现一个Arduino控制多个设备或执行复杂序列。多指令控制学习多个不同的红外码分别定义为“模式A”、“模式B”、“增加”、“减少”等。在Arduino代码中为每个码编写不同的处理函数。if (results.value IR_CODE_MODE_A) { enterModeA(); // 切换到模式A打开A灯关闭B灯 } else if (results.value IR_CODE_MODE_B) { enterModeB(); // 切换到模式B打开B灯调节舵机角度 } else if (results.value IR_CODE_INC) { increaseBrightness(); // 增加PWM输出调光 }宏命令序列在Broadlink APP或Home Assistant中可以设置一个场景连续发射多个红外码。Arduino端可以设计一个简单的状态机按顺序接收并执行一系列动作实现复杂的自动化流程。例如发出“启动”指令后Arduino依次打开电源、启动电机、打开照明。7.3 超越红外探索其他触发方式本项目的核心思想是“用Broadlink作为无线触发器”。红外只是Broadlink支持的一种方式很多Broadlink设备如RM Pro还支持射频RF和Wi-Fi直连。射频RF控制对于需要穿墙控制或者红外无法到达的地方如另一个房间的窗帘电机可以使用Broadlink学习并发射315MHz或433MHz的射频信号。你需要将Arduino上的红外接收头换成对应的超外差射频接收模块并使用像RCSwitch这样的库来解码。逻辑完全一样只是通信载体从红外光变成了无线电波穿透性更强。网络触发高级如果你熟悉网络编程甚至可以让ArduinoESP8266/ESP32直接连接Wi-Fi然后运行一个简单的Web服务器。在Broadlink的自动化场景中可以设置为执行一个“网络请求”Webhook直接调用Arduino的Web API来触发动作。这实现了双向通信的可能并且完全摆脱了红外的距离和方向限制但需要更复杂的设置。8. 常见问题与故障排查实录在实际搭建过程中你可能会遇到以下问题。这里是我踩过坑后总结的排查清单。问题现象可能原因排查步骤与解决方案Arduino串口无任何输出1. 电源未接通或USB线不良。2. 串口选择错误。3. 代码未成功上传。1. 检查Arduino电源指示灯是否亮起更换USB线或电源。2. 在IDE中确认选择的端口是否正确拔插USB线看端口变化。3. 重新编译上传观察IDE下方输出栏有无错误信息。串口有输出但显示“未知红外码”1. 红外接收头引脚接错。2. 红外接收头损坏或型号不对非38kHz。3. 比对的红外码不正确。4. 环境光干扰太强。1. 确认VCC接5VGND接GNDOUT接D11。2. 更换一个接收头试试。3.关键步骤注释掉比对代码让串口打印所有收到的原始值。用Broadlink发射信号看打印出的值是否稳定。用这个值更新代码中的常量。4. 遮蔽接收头或在较暗环境下测试。Broadlink Python脚本无法发现设备1. 设备未在同一局域网。2. 防火墙或杀毒软件阻止。3. 设备型号太新/太旧Python库不支持。1. 确认电脑和Broadlink连接的是同一个Wi-Fi。2. 暂时关闭防火墙/杀毒软件试试。3. 查看broadlink库的官方文档或GitHub issues确认设备类型devtype是否正确。对于RM mini 3尝试0x5f36或0x2737。Alexa无法发现Broadlink场景1. Broadlink技能未正确授权或登录。2. 场景未在Broadlink APP中创建成功。3. Alexa云同步延迟。1. 在Alexa APP中禁用Broadlink技能重新启用并登录。2. 确认Broadlink APP中场景已保存且包含有效的红外动作。3. 在Alexa APP中手动触发“发现设备”或等待几分钟。Alexa能触发场景但Arduino无反应1. Broadlink发射方向不对或距离太远。2. Arduino供电不足继电器动作时重启。3. 继电器模块触发逻辑搞反。1. 将Broadlink和Arduino的接收头尽量靠近确保无遮挡。用手机摄像头普通模式对准Broadlink发射管发射时能看到紫色光点证明其在工作。2. 尝试用外部电源如9V电池桶为Arduino供电或使用更粗的USB线。3. 确认继电器是低电平触发。尝试将代码中digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN))改为直接digitalWrite(RELAY_PIN, LOW)看是否吸合。控制有延迟1. Alexa云服务到Broadlink云的延迟。2. 家庭Wi-Fi网络拥堵。1. 这是云方案固有延迟通常1-3秒属正常。追求极速响应需用本地方案如Home Assistant。2. 确保Broadlink设备所在位置Wi-Fi信号良好。这个项目最迷人的地方在于它用非常廉价的硬件和取巧的思路打破了不同生态间的壁垒。你不需要去研究复杂的AWS IoT SDK也不需要给每个Arduino项目都配上Wi-Fi模块更不用头疼如何让非标设备符合Alexa的智能家居规范。一个几十块钱的Broadlink红外遥控器就成了连接智能语音世界和实体创作世界的万能胶水。我在工作室里用这个方法控制3D打印机开关、调节摄影补光灯的亮度、甚至启动一个自动浇花的水泵稳定运行了半年多。它可能不是最“优雅”或最“强大”的方案但绝对是性价比最高、最易上手且足够可靠的方案之一。当你对着音箱说一句话就能让角落里自己亲手做的那个小装置动起来时那种成就感正是DIY的乐趣所在。
返回列表