用ESP32制作一款智能的Wi-Fi插座,mqtt接入OneNet云平台

本文介绍了如何利用ESP32制作一款智能Wi-Fi插座,通过MQTT协议接入OneNet云平台实现远程控制。硬件部分涉及ESP32、继电器和220V-5V降压模块的组合,软件部分使用MicroPython和uPyCraft IDE编写控制程序。通过连接Wi-Fi并编写相应程序,实现了在局域网和远程环境下对插座的开关控制。
摘要由CSDN通过智能技术生成

1.什么是Wi-Fi插座

  Wi-Fi插座,顾名思义,便是利用家庭中的WiFi网络,让您的智能手机或平板电脑在联网条件下,可以通过App或网页操作打开或者关闭指定的电器。有了此功能,我们出门在外便可以控制插座的开关,家用电器如果做到随用随开,不用就断,那一方面节省了一小部分电费,另一方面也让我们的家变得更安全,更智能。

在这里插入图片描述图片来自网络

2.为什么要做一个Wi-Fi插座

在这里插入图片描述
淘宝某热销智能插座分析:

在这里插入图片描述
制作思路:硬软件选择,及通信协议和接入平台

  硬件设计是方案的物理基础,在此我自行购买了一款工业制造的两插孔插座,并且取下其中的一个插孔单元,用于放置ESP32芯片,继电器,220V-5V降压模块等控制元件,将ESP32芯片+继电器+降压模块与另一个插孔的火线,零线相连,通电发现没有异常,硬件方案设计大体完成。

  软件设计层面,思路如下,将ESP32芯片与家里的局域网绑定起来,并为其固定一个IP地址,需保证该IP地址与自己家的局域网在同一网段,保证自己的手机可以对其访问,从网页端或APP端控制ESP32芯片转换高低电平从而通过控制继电器来控制插座的开关(电源通断),继而实现整个系统的功能控制,主要调用的是ESP32板子的Wi-Fi功能,完成控制任务。硬件部分主要包括:插座主体、220V-5V降压模块,控制芯片(ESP32),继电器部分等。

  另外,如果只在一个局域网内控制插座的开关,便失去了出门在外想远程控制的意义,所以,为了实现远程控制,采用MQTT接入中移物联网平台(OneNET)服务器的方法,远程控制插座的开关是本方案的升级计划。OneNET是比较成熟的IoT解决方案云平台,并且支持出世不久的ESP32芯片。中移物联网平台(OneNET)提供安全快速的设备接入能力,帮助使用者将数据上传至云端,并且云端通过调用API,下发数据给设备,从而实现远程控制设备的目的。同时提供其他丰富的云产品服务,非常好用。

简单工作原理图

在这里插入图片描述

3.各种物联网插座控制方式对比

  智能插座的功能特点在于控制。目前很多技术可以使用,列举以下几种控制方式进行猜想与假设:

1.红外遥控。虽然该技术已经非常成熟,红外线遥控属于光传波,是利用红外线来传播电信号,障碍物会影响信号传播,发射端和接收端之间要保持透明,中间不能有其它东西挡着,实用性略差。

2. GSM技术。全球应用最广泛的移动通信系统,主要原理是由具备GSM功能的通信设备通过向带有GSM通信能的模块发送指令来达到控制目的。优点是可以实现比较稳定的远程通信,但上述设备价格偏高,且在通信过程中会产生一些流量费用,不适合长期家用。

3. Wi-Fi技术。调用

连接 OneNet 云平台MQTT 协议需要以下步骤: 1. 注册 OneNet 账号并创建设备,在设备管理中获取设备 ID 和 API Key。 2. 安装 ESP8266 的 MQTT 库,如 PubSubClient。 3. 在 ESP8266 中连接 Wi-Fi 网络。 4. 在 ESP8266 中连接 MQTT 服务器,并使用设备 ID 和 API Key 鉴权。 5. 订阅需要接收的主题或发布需要发送的消息。 下面是一个简单的 ESP8266 连接 OneNet MQTT 的示例代码: ```c #include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; const char* mqtt_server = "mqtt.heclouds.com"; const char* device_id = "your_DEVICE_ID"; const char* api_key = "your_API_KEY"; WiFiClient espClient; PubSubClient client(espClient); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); client.setServer(mqtt_server, 1883); while (!client.connected()) { Serial.println("Connecting to MQTT server..."); if (client.connect(device_id, api_key, "")) { Serial.println("Connected to MQTT server"); } else { Serial.print("Failed to connect to MQTT server, rc="); Serial.println(client.state()); delay(1000); } } client.subscribe("your_topic"); } void loop() { client.loop(); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Received message: "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } ``` 其中,需要将 `your_SSID` 和 `your_PASSWORD` 替换为实际的 Wi-Fi SSID 和密码,将 `your_DEVICE_ID` 和 `your_API_KEY` 替换为在 OneNet 上创建的设备 ID 和 API Key,将 `your_topic` 替换为需要订阅的主题。在 `callback` 函数中可以处理收到的消息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值