arduino智能开关

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 AI智能 正文

下面我将为你提供一个从零到一的完整指南,包括原理、所需硬件、接线步骤、代码编写、手机App控制以及扩展功能

arduino智能开关
(图片来源网络,侵删)

项目原理

整个系统的核心思想是:

  1. 感知: Arduino通过Wi-Fi模块(如ESP8266或ESP32)连接到你的家庭网络。
  2. 控制: Arduino通过一个继电器模块来控制外部电器(如灯泡、风扇)的电源通断,继电器相当于一个“电子开关”,用Arduino的微弱电流去控制220V强电的通断。
  3. 通信: 手机App(或网页)通过局域网向Arduino发送指令(“打开开关”)。
  4. 执行: Arduino接收到指令后,控制继电器吸合或断开,从而控制电器的开关状态。

核心组件关系图:

[手机App] <--(Wi-Fi)--> [Arduino + Wi-Fi模块] <--(控制信号)--> [继电器模块] <--(220V交流电)--> [电器]

所需硬件清单

核心部分:

  1. 主控板:

    • 推荐: ESP8266 (如 NodeMCU, Wemos D1 Mini) 或 ESP32,这两种板子自带Wi-Fi和足够的GPIO引脚,是做物联网项目的首选,比传统Arduino Uno更合适。
    • 为什么不用Arduino Uno? 因为Uno本身不带Wi-Fi,需要额外连接一个Wi-Fi模块(如ESP-01),接线更复杂,ESP8266/ESP32是“一站式”解决方案。
  2. 继电器模块:

    arduino智能开关
    (图片来源网络,侵删)
    • 推荐: 1路或2路5V继电器模块,它已经包含了驱动电路,可以直接用Arduino的3.3V或5V信号控制,非常安全方便。
  3. 连接线: 杜邦线若干。

电源部分(非常重要!):

  1. 电源适配器:
    • 给Arduino供电: 一个5V的USB电源适配器(给手机充电那种即可)。
    • 给被控电器供电: 你墙上的插座。

被控电器:

  1. 你想控制的电器: 例如一盏台灯、一个小风扇等。注意:确保电器的功率在继电器模块的额定范围内(通常为250V AC, 10A)。

接线步骤

⚠️ 安全警告:在操作220V交流电时,务必小心!如果不确定,请寻求专业人士帮助,我们只操作继电器的低压控制端,220V接线最好在断电状态下进行。

Arduino/ESP8266 与 继电器模块接线

继电器模块上通常有3个接线柱:VCC, IN, GND

继电器模块引脚 ESP8266 / ESP32 引脚 功能说明
VCC 3V35V 为继电器模块供电
GND GND 共地
IN D1 (GPIO5) 控制信号输入,高电平触发继电器
  • 注意: 大部分继电器模块是高电平触发(即给高电平,继电器吸合),购买时请确认,模块上通常会有一个 JD-VCCVCC 的跳线帽,我们直接使用 VCC 供电即可。

继电器模块与220V电器接线

继电器上有3个接线端子,通常用螺丝固定,上面会标有:

  • COM: Common (公共端)
  • NO: Normally Open (常开端)
  • NC: Normally Closed (常闭端)

对于开关功能,我们使用 COMNO

接线逻辑:

  • NO: 连接到你的电器的一端。
  • COM: 连接到墙上的火线
  • 电器的另一端: 连接到墙上的零线

示意图:

      [墙上的插座]
           |
           |----------- (火线 L) ---> [继电器的 COM 端子]
           |
           |----------- (零线 N) ---> [电器的另一端]
                             |
                             [电器的火线端] ---> [继电器的 NO 端子]
  • 工作状态: 当继电器未触发时,COM和NO是断开的,电器不通电。
  • 工作状态: 当继电器触发时,COM和NO接通,电流形成回路,电器开始工作。

代码编写 (使用Arduino IDE)

我们将使用一个非常流行的库 Blynk 来快速实现手机App控制,它极大地简化了Wi-Fi通信和App界面开发的复杂度。

安装Blynk库

打开Arduino IDE,进入 工具 -> 管理库...,搜索 Blynk 并安装最新版本。

获取Blynk Auth Token

  1. 在手机应用商店下载并安装 Blynk App。
  2. 注册一个账号并登录。
  3. 点击右上角的“+”号,创建一个新项目。
  4. 选择你的设备(如 ESP8266),给你的项目起个名字(如 "My Smart Switch")。
  5. 在选择连接方式时,选择 Wi-Fi
  6. 创建项目后,Blynk会给你一个 Auth Token (一串长字母数字)。请立即复制并保存好,它相当于你设备的身份证。

上传代码到Arduino/ESP8266

将下面的代码复制到Arduino IDE中,并修改其中的 ssid, password, 和 auth

#define BLYNK_PRINT Serial // 开启串口打印,方便调试
// 引入库
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// 你家里的Wi-Fi名称和密码
char ssid[] = "你的Wi-Fi名称";
char pass[] = "你的Wi-Fi密码";
// Blynk Auth Token
char auth[] = "你刚刚复制的Auth_Token";
// 定义继电器连接的引脚
#define RELAY_PIN D1 // 我们之前把继电器IN引脚接到了D1
// Blynk应用中的虚拟引脚号
#define VIRTUAL_PIN V1
// 当App上的按钮被按下时,Blynk会调用这个函数
BLYNK_WRITE(VIRTUAL_PIN) {
  int pinValue = param.asInt(); // 获取按钮的状态 (1 或 0)
  digitalWrite(RELAY_PIN, pinValue); // 将状态写入继电器引脚
  // 我们可以通过串口监视器查看状态变化
  Serial.print("App命令: ");
  Serial.println(pinValue);
}
void setup() {
  // 初始化串口,波特率设为115200
  Serial.begin(115200);
  // 设置继电器引脚为输出模式
  pinMode(RELAY_PIN, OUTPUT);
  // 初始状态:继电器关闭(给低电平)
  digitalWrite(RELAY_PIN, LOW);
  // 连接到Blynk服务器
  Blynk.config(auth);
  Blynk.connectWiFi(ssid, pass);
  Serial.println("正在连接Blynk服务器...");
  while (Blynk.connect() == false) {
    // 等待连接成功
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nBlynk服务器连接成功!");
}
void loop() {
  // Blynk.run() 必须在loop()中循环调用,以处理App发来的指令
  Blynk.run();
}

上传代码

  1. 在Arduino IDE中,选择正确的开发板(如 NodeMCU 1.0 (ESP-12E Module))和端口。
  2. 点击“上传”按钮。

手机App配置

  1. 打开Blynk App,你刚刚创建的项目应该已经存在了。
  2. 点击进入项目,点击屏幕上的“+”号,添加一个新组件。
  3. 选择 Button (按钮)。
  4. 在组件设置中:
    • Pin: 选择 V1 (必须和代码中定义的虚拟引脚号一致)。
    • Output: 开启。
    • Mode: 选择 Switch (开关模式)。
  5. 保存设置并退出。

将你的Arduino插上电并连接到Wi-Fi,几秒钟后,Blynk App上的按钮应该就能正常工作了!点击按钮,你应该能听到继电器“咔哒”一声,同时连接的电器也相应地开关了。


进阶与扩展功能

当你完成了基础的开关控制后,可以尝试以下功能,让你的项目更“智能”:

定时开关

  • 方法: 在Blynk App中添加一个 Time Input (时间输入) 组件。
  • 实现: 设置一个特定时间(如每天晚上10点),当时间到达时,Blynk会向你的Arduino发送一个特定指令(例如写入V2引脚为1),你在代码中监听V2引脚,收到指令后就控制继电器动作。

物理按钮控制

  • 方法: 在Arduino上再接一个普通的物理按钮。
  • 实现: 将按钮一端接地,另一端连接到另一个GPIO引脚(如D2),并启用该引脚的上拉电阻,当按钮按下时,触发中断,在代码中切换继电器的状态,这样即使没有手机,也可以手动开关。

状态同步

  • 问题: 如果直接断电再上电,App上的按钮状态可能和继电器实际状态不一致。
  • 解决: 在setup()函数中,你可以读取一次继电器的当前状态(digitalRead(RELAY_PIN)),然后通过 Blynk.virtualWrite(VIRTUAL_PIN, state) 将这个状态同步到App上,让App的按钮显示正确。

语音控制

  • 方法: 使用支持语音助手的平台,如 Home AssistantTasmotaMQTT 协议。
  • 实现:
    1. 将你的Arduino连接到家庭局域网的MQTT服务器(例如在树莓派上运行的Mosquitto)。
    2. Arduino订阅一个主题(如 home/office/light/set)。
    3. 在Home Assistant中,将这个设备添加为MQTT设备。
    4. 配置完成后,你就可以通过天猫精灵、小爱同学、Google Home等语音助手控制你的开关了。

数据记录与可视化

  • 方法: 在Blynk App中添加 Value Display (数值显示) 或 Graph (图表) 组件。
  • 实现: 你可以添加一个传感器(如光照传感器、温湿度传感器),将数据定期通过Blynk发送到App,实现远程环境监控。

希望这份详细的指南能帮助你成功制作出自己的Arduino智能开关!祝你玩得开心!

-- 展开阅读全文 --
头像
ThinkPad E565怎么拆机?详细图文教程一看就会
« 上一篇 02-01
thinkpade455拆机图解
下一篇 » 02-01

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]