项目分享| 用最简单的代码,远程操控树莓派实现智能家居
-
今天分享的项目是非常实用的远程控制智能家居,通过通过 Web 或手机应用程序APP向 Raspberry Pi远程发出请求,然后Raspberry Pi 通过蓝牙与 Arduino 通信,控制家中的设备运行。
项目用到的硬件有:
-
树莓派 3 B 型
-
Arduino UNO
-
Adafruit RGB 背光 LCD
-
旋转电位器(通用)
-
HC-05 蓝牙模块
-
5V 8通道继电器模块
制作这个项目的灵感背后的原因是有一天忘记在家里关掉电器,结果电器完全烧毁了。那如果有这个远程的智能家居控制器的话,就不会出现电器烧毁的情况了。
整个项目可以分成三个部分(相关设计资料已经打包好,私信“达尔闻说”:远程智能家居,获取资料):
1)Arduino控制部分
Arduino 通过蓝牙(HC-05 蓝牙模块)接受树莓派发过来的请求,经过处理之后,相应地,它会激活 8 通道继电器来打开或关闭相应的设备,并在 LCD 上显示当前实时信息。例如,我只使用了 8 个继电器中的 3 个。
Arduino 、蓝牙 HC-05、LCD 和 8 通道继电器连接示意图如下:
Arduino 蓝牙链接可以参考下面的链接进行配置:
https://www.instructables.com/id/Controlling-Arduino-UNO-Via-Smart-Phone-Using-HC-0/
确保为 LED 闪烁选择引脚 13。将此代码上传到Arduino中即可:
- int ledPin = 13;
- void setup() {
- Serial.begin( 9600 ); // baud rate 9600 for the serial Bluetooth communication
- }
- void loop() {
- // listen for the data from raspberry pi
- if ( Serial.available() > 0 ) {
- // read a numbers from serial port
- int inputVal = Serial.parseInt();
- if (inputVal > 0) {
- Serial.print("Your input is: ");
- Serial.println(String(inputVal));
- // Here blink the LED
- blinkLED(inputVal);
- }
- }
- }
- void blinkLED(int inputVal) {
- for (int i=0; i< inputVal; i++) {
- digitalWrite(ledPin, HIGH);
- delay(500);
- digitalWrite(ledPin, LOW);
- delay(500);
- }
- }
2)树莓派
Raspberry Pi 负责通过 Web 或移动应用程序监听客户端的请求。一个基于 python 的服务器运行,它监听客户端的请求并通过蓝牙将请求转发到 Arduino。对于这个项目,你只需要一个装有最新 raspian OS 的 Raspberry pi 3就可以了。
按照以下步骤在树莓派端实现配置:
第1步:启动并运行 Raspberry Pi
按照此链接获取装有 Raspian OS 的 Raspberry Pi:https ://thepi.io/how-to-install-noobs-on-the-raspberry-pi/
第2步:配置树莓派的内置蓝牙
确保已启用串行端口和串行控制台。转到主菜单-> 首选项-> Raspberry Pi 配置。单击选项卡接口。现在启用串行端口和串行控制台。
如需安装和配置蓝牙,可以在下载的文章中找相关的代码,也可以直接在GitHub下载:
https://github.com/cloud-github/raspberry-pi-arduino-bluetooth-wireless-communication
第3步:安装 Python和必要的许可
打开终端并输入:
sudo apt-get install python3-flask
完成 Python 安装和蓝牙配置后,克隆下面提供的存储库。进入 /python_code 文件夹,现在在这里启动 Python 脚本。 sudo python main.py
如果一切顺利,应该能够看到服务器在端口 0.0.0.0:80 上运行
现在,检查本地 IP。打开终端-> ifconfig。复制该 IP 地址并粘贴到浏览器上,例如:192.168.0.104。我们应该能够看到网页启动并运行。
应用程序用户界面
3)端口转发
让我们了解什么是端口转发以及为什么需要它?端口转发是一种能够从世界任何地方的外部计算机访问本地主机或本地服务器的技术。例如,本地 IP 地址是192.168.0.104 。这是本地专用网络地址。路由器分配给 Raspberry Pi 的地址。只有当连接到该路由器时,才能连接到该网络。
所以,这就是为什么我们需要端口转发的原因。
不同的路由器可能有不同的用户界面来配置端口转发。但主要逻辑保持不变。如果TPLink 路由器,可以按照此链接进行端口转发。
https://www.noip.com/support/knowledgebase/setting-port-forwarding-tp-link-router/
8080 端口被重定向到 192.168.0.104:80
配置成功后,进入路由器默认页面,查看它的WAN IP地址。例如,就我而言,我有:100.66.208.221 。
因此,现在如果浏览100.66.208.221:8080 ,它应该会自动将请求转发到本地 IP 地址,例如 192.168.0.1:80 ,应该能够看到的网页启动并运行。
整个系统的搭建就是这样!相对来说,比较简单,这里提供了相应的设计资料(私信“达尔闻说”:远程智能家居,获取资料),感兴趣的可以一试。
此项目来自hackster.io,制作者是Mahesh Joshi
-
-