回答

收藏

树莓派3B+测评(三)Siri语音控制

#其他 #其他 4219 人阅读 | 0 人回复 | 2018-12-10

之前介绍了如何在树莓派里搭建语音控制环境,在树莓派里搭建一个“桥梁”来连接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="开灯"></a>
      <a href="./pin?light=off"><input type="button" value="关灯"></a>
      <a href="./pin?fengshan=on"><input type="button" value="开风扇"></a>
      <a href="./pin?fengshan=off"><input type="button" value="关风扇"></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=\"开灯\"></a><a href=\"./pin?light=off\"><input type=\"button\" value=\"关灯\"></a><a href=\"./pin?fengshan=on\"><input type=\"button\" value=\"开风扇\"></a><a href=\"./pin?fengshan=off\"><input type=\"button\" value=\"关风扇\"></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=\"开灯\"></a><a href=\"./pin?light=off\"><input type=\"button\" value=\"关灯\"></a><a href=\"./pin?fengshan=on\"><input type=\"button\" value=\"开风扇\"></a><a href=\"./pin?fengshan=off\"><input type=\"button\" value=\"关风扇\"></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":&quotOST";
  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语音控制也就完成了。谢谢!
关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条