TA的每日心情 | 擦汗 2019-10-29 16:05 |
---|
签到天数: 43 天 连续签到: 1 天 [LV.5]常住居民I
|
之前介绍了如何在树莓派里搭建语音控制环境,在树莓派里搭建一个“桥梁”来连接Siri和小家电,现在“桥梁”已经建好了,接下来就是连接控制端的硬件设备。
硬件准备:esp8266开发板一个、5v继电器两个、数据线一条、杜邦线若干、苹果设备一个;
软件准备:arduino软件;
在电脑上安装好arduino后,还要配置一下。
配置arduino软件
打开arduinoide->首选项->“附加开发板管理器网址”输入https://wechat.doit.am/package_esp8266com_index.jso...
然后 重启arduino软件,打开:工具->开发板->开发板管理
稍等一会儿,然后拉到最下面,安装 esp8266 by ESP8266 Community
安装成功后,根据所用的开发板情况,选择合适的开发板,后插入开发板,还要选择你开发板的端口。
我用的是这种esp8266开发板,可以选择D1 mini Pro
至此,软件开发工具准备就绪,接下来先编写个网页控制代码;
将下面代码保存为html格式;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="./pin?light=on"><input type="button" value="&#x5F00;&#x706F;"></a>
<a href="./pin?light=off"><input type="button" value="&#x5173;&#x706F;"></a>
<a href="./pin?fengshan=on"><input type="button" value="&#x5F00;&#x98CE;&#x6247;"></a>
<a href="./pin?fengshan=off"><input type="button" value="&#x5173;&#x98CE;&#x6247;"></a>
</body>
</html>
打开后的效果
说明一下,因为这个简单的网页代码不能识别汉字,所以要将汉字转成UTF-8
除此之外,还得将网页代码压缩一下;
<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>Document</title></head><body><a href=\"./pin?light=on\"><input type=\"button\" value=\"&#x5F00;&#x706F;\"></a><a href=\"./pin?light=off\"><input type=\"button\" value=\"&#x5173;&#x706F;\"></a><a href=\"./pin?fengshan=on\"><input type=\"button\" value=\"&#x5F00;&#x98CE;&#x6247;\"></a><a href=\"./pin?fengshan=off\"><input type=\"button\" value=\"&#x5173;&#x98CE;&#x6247;\"></a></body></html>
这个压缩后的代码要用在arduino上。
接下来就是编写arduino代码,这个代码要烧写进esp8266里
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
const char* ssid = "01";//你的wifi名
const char* password = "123456789";//你的wifi密码
ESP8266WebServer server(80);
String html = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>Document</title></head><body><a href=\"./pin?light=on\"><input type=\"button\" value=\"&#x5F00;&#x706F;\"></a><a href=\"./pin?light=off\"><input type=\"button\" value=\"&#x5173;&#x706F;\"></a><a href=\"./pin?fengshan=on\"><input type=\"button\" value=\"&#x5F00;&#x98CE;&#x6247;\"></a><a href=\"./pin?fengshan=off\"><input type=\"button\" value=\"&#x5173;&#x98CE;&#x6247;\"></a></body></html>";//压缩后的代码
void pin(){
if(server.arg("light")=="on"){
digitalWrite(D4, LOW);
server.send(200, "text/html",html);
} else if(server.arg("light")=="off"){
digitalWrite(D4, HIGH);
server.send(200, "text/html",html);
}
if(server.arg("fengshan")=="on"){
digitalWrite(D5, LOW);
server.send(200, "text/html",html);
} else if(server.arg("fengshan")=="off"){
digitalWrite(D5, HIGH);
server.send(200, "text/html",html);
}
}
const int led = 13;
void handleRoot() {
digitalWrite(led, 1);
server.send(200, "text/html",html);
digitalWrite(led, 0);
}
void handleNotFound(){
digitalWrite(led, 1);
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"OST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++){
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
digitalWrite(led, 0);
}
void setup(void){
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
digitalWrite(led, 0);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin("esp8266")) {
Serial.println("MDNS responder started");
}
server.on("/", handleRoot);
server.on("/pin", HTTP_GET, pin);
server.on("/inline", [](){
server.send(200, "text/plain", "this works as well");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
将开发板连接电脑,选定正确的端口,烧进开发板里就可以了。
按开发板rst键,打开arduino的串口监视器
工具》串口监视器
查看esp8266是否连上无线网
连上了,就可以用网页进行简单的控制,局域网下输入开发板的ip都可以控制
点击开灯,就会有对应的开灯网址,上一篇的控制台灯的网址也就是这个
同理,其他的控件也是如此。
接下来就是将继电器和esp8266连接,我用的是D4和D5引脚,D4控制台灯,D5控制风扇
D4继电器连接台灯,D5继电器连接风扇。我用的是5V低电平触发。
至此,硬件部分完成,打开树莓派,输入homebridge,打开桥梁,用苹果设备的homekit 扫描二维码添加小家电
点击台灯,台灯亮了
点击台灯和风扇,台灯和风扇都打开了
最重要的是你也可以用Siri打开台灯和风扇
https://v.youku.com/v_show/id_XMzk0NTIwNzI2NA==.ht...
也可以将继电器接到220V来控制家里的点灯和风扇,为了安全我就简单的连接小家电,至此,整个Siri语音控制也就完成了。谢谢! |
|