用闲置安卓旧手机和ESP8266-01,DIY一个远程控制台灯的智能家居小玩意
用闲置安卓手机+ESP8266打造智能台灯:极客的零成本改造指南
家里堆着几台淘汰的安卓旧手机?别急着扔,它们可能是开启智能家居世界的最佳钥匙。今天我们要做的,是把一台吃灰多年的旧手机、价值不到20元的ESP8266模块和随处可见的台灯,组合成可通过手机远程控制的智能照明系统。整个过程不需要购买昂贵的智能灯泡,也不需要复杂的编程知识,只需要一点动手的乐趣和三个小时的闲暇时间。
这个项目的魅力在于它的零门槛和高可玩性。你不仅能用它控制台灯,稍加改造就能变成窗帘控制器、风扇开关甚至宠物喂食器。最重要的是,所有材料都是可以"废物利用"的——旧手机、闲置的充电头、五金店几块钱的继电器,再加上一杯奶茶钱的ESP8266模块,这就是全部成本。
1. 硬件准备与安全须知
1.1 材料清单与成本核算
先来看看我们需要哪些材料:
核心控制单元:
- 安卓旧手机(任何能安装APK的机型均可)
- ESP8266-01模块(淘宝价约8元)
- Arduino Uno开发板(兼容版约15元)
电力改造部件:
- 5V继电器模块(带光耦隔离约5元)
- 220V转5V电源模块(旧手机充电器可替代)
- 杜邦线若干(公对公、公对母各10条)
工具准备:
- 电烙铁(或使用免焊面包板)
- 绝缘胶带
- 万用表(非必需但推荐)
安全提示:操作220V电路时务必断电作业,建议在成人监督下进行。继电器模块要选择带有隔离保护的型号,避免高压窜入低压电路。
1.2 电路连接图解
整个系统的连接分为三个部分:
手机与ESP8266通信:
graph LR 安卓手机 -->|WiFi| 路由器 -->|WiFi| ESP8266ESP8266与Arduino联动:
ESP8266-01接线示意图: VCC -- Arduino 3.3V GND -- Arduino GND TX -- Arduino Pin 2 (软串口RX) RX -- Arduino Pin 3 (软串口TX)高压控制部分:
# 伪代码表示继电器控制逻辑 if 收到"on"指令: digitalWrite(relay_pin, HIGH) # 继电器吸合 else: digitalWrite(relay_pin, LOW) # 继电器断开
2. 软件环境搭建
2.1 手机端控制APP制作
使用MIT App Inventor可以免编程创建控制界面:
组件布局:
- 1个Web客户端组件(用于通信)
- 2个按钮(开/关)
- 1个标签显示状态
关键代码块:
[当 开灯按钮 被点击] -> 调用 Web客户端.发送文本 "cmd=1&uid=你的UID&topic=你的主题&msg=on" [当 Web客户端 收到响应] -> 设置 状态标签.文本 为 "控制成功"生成APK:
- 项目 → 导出APK → 保存到手机安装
2.2 Arduino程序烧写
需要安装的库文件:
- SoftwareSerial(内置)
- ESP8266WiFi(需额外安装)
核心配置代码:
// WiFi设置 const char* ssid = "你的WiFi"; const char* password = "密码"; // 巴法云配置 String uid = "你的设备UID"; String topic = "你的主题"; void setup() { pinMode(RELAY_PIN, OUTPUT); Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } }3. 进阶改造与功能扩展
3.1 添加物理开关
在继电器线圈两端并联一个机械开关,实现"本地+远程"双控制:
电路改造方案: 墙壁开关 -- 继电器常开端子 -- 台灯 | -- 新增物理开关3.2 语音控制集成
利用旧手机的语音助手实现声控:
- 在App Inventor中添加语音识别组件
- 设置语音指令映射:
"开灯" → 发送on指令 "关灯" → 发送off指令
3.3 能耗监控功能
通过Arduino的模拟输入引脚测量电流:
float getCurrent() { int sensorValue = analogRead(A0); float voltage = sensorValue * (5.0 / 1023.0); return voltage * 1000 / 185; // 根据电流传感器参数调整 }4. 常见问题排查指南
4.1 WiFi连接失败
检查步骤:
- 确认SSID/密码正确
- 尝试缩短WiFi名称
- 检查路由器是否开启2.4GHz频段
4.2 继电器无响应
诊断流程:
电压检测 → 控制信号检测 → 线圈阻抗测量 ↓ ↓ ↓ 正常(5V) 有高低电平 约120Ω | | | ↓ ↓ ↓ 更换继电器 检查接线 更换控制板4.3 手机APP无法通信
可能原因及解决:
- 防火墙拦截:在路由器设置端口转发
- 主题不匹配:核对UID和topic是否一致
- 服务器问题:ping bemfa.com测试连通性
这个项目最让我惊喜的是旧设备的潜力——那台2015年的红米手机现在成了完美的家居控制终端,而ESP8266的稳定性也远超预期。经过三个月的持续运行,系统从未出现故障,唯一的小问题是WiFi偶尔重连需要约5秒时间。如果想让响应更快,可以考虑改用MQTT协议,但这需要额外的服务器支持。
