虚怀若谷 发表于 2024-4-17 11:41:23

使用行空板和NodeMcu的智能家居

## 使用行空板和NodeMcu的智能家居

欢迎来到DIY智能家居的世界!

在这个项目中,我们将利用新的行空板单板计算机 (SBC) 的强大功能来创建智能家居设置。想象一下,只需点击几下即可控制灯光和监控室温 - 这就是我们正在构建的本质。

使用行空板作为我们的大脑,我们将使用 MQTT(一种漂亮的通信协议)连接三个按钮来通过 Nodemcu 控制三个 LED。另外,我们将添加一个 DHT11 传感器来监控室温。

该项目是初学者友好的家庭自动化门户。通过简单的步骤和最少的组件,您将会惊讶于您可以在您的生活空间中创造的魔力。让我们深入研究,让您的家变得更智能!




## 第一步:所需材料

* [行空板单板计算机](https://www.dfrobot.com.cn/goods-3404.html)
* NodeMcu开发板
* (https://www.dfrobot.com.cn/goods-109.html)
* 三个LED灯
* 一块面包板
* 3V电池
* 跳线

## 第二步:设置行空板与VScode

### 必备条件:

在计算机上安装Visual Studio Code。在计算机和行空板上都安装OpenSSH。
### 步骤:

#### 安装远程SSH扩展:

打开Visual Studio Code,点击左侧边栏的方形图标进入扩展视图(或按Ctrl+Shift+X快捷键)。

搜索“Remote - SSH”扩展并安装。


![](https://files.mdnice.com/user/56048/ae14e7e7-76d8-4679-9c29-b23e3bfe89d3.png)


#### 打开远程 SSH 扩展:


![](https://files.mdnice.com/user/56048/6f9859b2-412f-484e-946a-84972b6ba595.png)

在VScode中按下F1或Ctrl+Shift+P打开命令面板。

输入并选择“Remote-SSH: Connect to Host…”命令。

输入行空板的SSH连接字符串:root@10.1.2.3。

按提示配置文件,并指定操作系统类型为Linux,默认密码为dfrobot。

连接成功后,VScode将打开一个新的窗口,通过SSH方式直接访问Unihiker的文件系统和终端。
#### 开始编程:

现在你可以在Visual Studio Code中像直接在设备上操作一样编辑文件、运行命令并进行行空板项目的开发工作。
## 第三步:两端使用的库
### NodeMcu端:

使用PubSubClient.h库实现MQTT协议功能。

使用DHT.h库处理DHT11传感器数据。

通过库管理器搜索DFRobot提供的DHT传感器库和PubSubClient库并安装。

### 行空板端(Python):

使用PyQT5库创建图形用户界面(GUI)。

使用paho.mqtt.client库实现MQTT通信。

其他必需库如pinpong库,用于访问GPIO引脚和板载传感器。例如,本例中用到了板载光线传感器采集环境光强并根据预设指令更新文本显示(这部分仅为测试目的,与主要代码无关,但你可以为其分配特殊任务)。

#### 安装Python库:

在终端输入以下命令安装所需的库:
* `pip install PyQt5`
* `pip install paho-mqtt`
## 第四步:MQTT配置说明
### Python端MQTT配置:

设置MQTT服务器地址(MQTT_ADDRESS)为MQTT代理服务器的IP地址或主机名。

提供MQTT用户名和密码,在MQTT_USER和MQTT_PASSWORD变量中分别填入,并确保这些凭据能安全地访问你的MQTT代理服务器。

配置订阅主题和发布主题,确保它们与ESP设备对应的主题匹配。

### NodeMcu端MQTT配置:

设置MQTT服务器地址(mqtt_server)为要连接的MQTT代理服务器的IP地址或主机名。

配置发布和订阅的主题(one_topic和two_topic),确保它们与Python端对应的主题一致。

填写MQTT的用户名和密码(mqtt_username和mqtt_password),以及唯一客户端ID(clientID),确保它们与MQTT代理服务器中的设置相符。


## 第五步:Python代码概览

![](https://files.mdnice.com/user/56048/56eb95e0-404e-4f63-923a-f55c34860675.png)

Python代码结合了MQTT功能和PyQt5,构建了一个智能家居控制界面,包括:

* 建立MQTT连接,使用凭据连接到MQTT代理服务器并订阅特定主题接收消息。
* 利用PyQt5创建带有标签按钮的窗口,用于控制灯光和风扇,并加载不同状态(ON/OFF)的图片。
* 使用LCD小部件显示温度读数。
* 按钮交互:点击按钮时切换状态,并发送对应的MQTT消息以控制连接到ESP8266的设备(如灯泡、风扇)。
* 光照感应:读取环境光照强度,并更新标签显示“白天”或“夜晚”。
* 一体化:将 MQTT 客户端功能与 PyQt5 的事件处理集成,以实现 MQTT 消息和图形界面之间的无缝交互。

## 第六步:NodeMcu代码概览

![](https://files.mdnice.com/user/56048/8a64c0a0-d1f2-4d89-8e45-a3833e8cb592.png)

NodeMcu基于ESP8266的代码配置使其能通过MQTT代理服务器控制智能家居设备,关键部分包括:

* Wi-Fi设置:使用指定SSID和密码连接NodeMcu至Wi-Fi网络。
* MQTT配置:设置MQTT服务器详情、发布和订阅的主题以及MQTT凭据。
* 传感器和输出处理:集成DHT11温湿度传感器获取读数,并定义GPIO引脚以控制输出(如灯光和风扇)。
* 建立与MQTT代理服务器的连接并订阅特定主题接收消息;周期性发布温度读数到指定主题;响应收到的MQTT消息,根据接收到的具体命令控制输出设备(如灯光和风扇)。
## 第七步:硬件连接

![](https://files.mdnice.com/user/56048/2edfcd98-0afa-4539-9467-770bc2f2061f.png)

### DHT11传感器接线:
将DHT11传感器的VCC引脚连接到NodeMcu的5V引脚,GND引脚连接GND,DATA引脚连接数字引脚D2。

### 输出设备(本例为LED灯):
定义输出引脚,例如int Out1 = D4; int Out2 = D5; int Out3 = D1;。 将LED灯正极(阳极)连接到上述输出引脚(D4、D5、D1),负极(阴极)或风扇连接到NodeMcu的GND引脚。 如果使用3V电池,则将其正极连接到Vin或5V线,负极连接到GND端子。

## 第八步:运行项目

[从GitHub链接下载所有所需文件。](https://github.com/Builtfor-developers/Smart-Home-Using-Unihiker)

编程NodeMcu:打开Arduino代码文件,更改凭证信息,然后上传代码。

对于Unihiker端,将文件复制到根目录,可以通过访问Unihiker本地网页(http://10.1.2.3/pc/file-upload)完成这一操作。

打开Python主文件,修改凭证信息。

修改完成后,可以直接在VScode终端内或通过Unihiker GUI运行Python代码,启动项目。
## 最终效果







#### 原作者:Hackhobby Lab
#### 上传时间:2024年1月8日
#### 原文链接:(https://community.dfrobot.com/makelog-313942.html)


_深蓝_ 发表于 2024-4-28 08:57:00

非常棒,打算复现一下

刘骏森 发表于 2024-5-21 20:24:25

666666厉害,值得学习

刘睿鹏 发表于 2024-6-1 21:34:10

厉害厉害,必须学习
页: [1]
查看完整版本: 使用行空板和NodeMcu的智能家居