既然上一篇咱们已经让 ESP8266 的自带灯亮起来了,那说明开发环境已经通了。今天咱们玩点硬核的:做一个“物理外挂”,远程帮咱按电脑开机键。


ESP 物联网开发入门2:手指机器人

这次的主角依然是性价比之王 ESP8266(NodeMCU),配合一个 2 块 9 包邮的舵机(Servo)

1. 硬件“全家桶”

除了之前的 NodeMCU,你还需要准备:

  • SG90 舵机: 这种蓝色的小舵机就行,力气够大,正好能按动电脑键。
  • 杜邦线: 3 根(公对母)。
  • 双面胶/蓝丁胶: 用来把舵机粘在电脑机箱上。

2. 接线图:别接错,会没力气

舵机有三根线,颜色通常是固定的:

  • 棕色(地线): 接 ESP8266 的 G”>GND

  • 红色(电源): 接 ESP8266 的 VIN 引脚(注意:VIN 输出的是 USB 的 5V 电压,接 3.3V 舵机可能转不动。byd我的vin针脚虚焊没电,不过实测3.3V带的动)。

  • 黄色(信号): 接 ESP8266 的 D1(对应代码里的 GPIO 5)。

    连接如图:
    front

    back


3. 准备“遥控器”:点灯科技(Blinker)

写代码前,先去手机应用商店下个 Blinker(点灯科技) App。

  1. 进入 App,点击添加设备 -> 独立设备 -> 网络接入。
  2. 复制那个 Secret Key(密钥),待会儿要填进代码里。
  3. 在设备界面加一个“按钮”组件,把它的组件键名修改为 btn-abc(你自己起个名,代码里要对得上)。

4. 搞定代码(ESP8266 版)

把下面的代码粘贴进 Arduino IDE。记得把 密钥WiFi名密码 换成你自己的。

#define BLINKER_WIFI
#include <Blinker.h>
#include <Servo.h>

// 1. 修改为你自己的信息
char auth[] = "你的Blinker Secret Key";
char ssid[] = "你的WiFi名字";
char pswd[] = "你的WiFi密码";

Servo myServo;
BlinkerButton Button1("btn-boot"); // 这里的名字要和 App 里的“组件键名”对上

// 2. 舵机动作函数:转下去 -> 等半秒 -> 回位
void servo_callback(const String & state) {
    Serial.println("收到指令,准备开机!");

    myServo.write(60);  // “手指”按下的角度(根据实际情况微调这个数字)
    Blinker.delay(500); // 停顿 0.5 秒,模拟真人按压
    myServo.write(0);   // “手指”收回原位
}

void setup() {
    Serial.begin(115200);

    // 信号线接 D1 (GPIO 5)
    myServo.attach(5); 
    myServo.write(0); // 初始状态:手指收起

    // 初始化 Blinker
    Blinker.begin(auth, ssid, pswd);
    
    // 把按钮和函数绑定
    Button1.attach(servo_callback);
}

void loop() {
    Blinker.run(); // 保持在线
}

5. 灵魂安装:大力胶工程

代码上传成功后,你会发现只要在手机上一按,舵机就转一下。接下来的工作就属于“土木工程”了:

  1. 找个合适的位置,用双面胶把舵机粘在机箱上。
  2. 调整舵机摇臂的角度,确保它“转下去”的时候刚好能压住开机键,“转回来”的时候不挡着按键弹起。
  3. 电源: 随便找个手机充电头给 ESP8266 供电就行。

6. 避坑小贴士

  • 舵机抖动: 如果舵机一直在那“嘶嘶”响或者乱抖,通常是电流不够。换个好点的 5V/2A 充电头。
  • 连不上网: ESP8266 只支持 2.4G WiFi。如果你家路由器的 2.4G 和 5G 合一了,建议分开,否则它可能半天连不上。
  • 掉线: Blinker 免费版偶尔会有延迟,这是正常的。或者说练的是电脑的USB接口,电脑关机也自然就不供电了(除非电脑支持关机usb供电)。