此次通过手机端的快捷指令绑定siri以及对http获取url内容从而调用函数通过远程语音控制伺服电机的运作。
实验中所用到的有ESP8266,伺服电机(对工作臂改装进行加长处理),手机端。 具体实验步骤:建立网络服务器对象,WIFI连接,启动网站服务并调用请求函数。同时在请求函数中设置伺服电机的旋转角度。
伺服电机及控制部分代码:
#include<Servo.h>//ARDUION库里就有
Servo Servo1;
void setup(){
Servo1.attach(D0);
}
void loop(){
Servo1.write(70);
delay(500);
Servo1.write(-70);
delay(500);
}
这里的旋转角度需要根据自己的需求进行更改
连接网络发送IP地址部分代码:
Serial.print("Connected to 123");
Serial.println(WiFi.SSID()); // 通过串口监视器输出连接的WiFi名称
Serial.print("IP address:\t");
Serial.println(WiFi.localIP()); // 通过串口监视器输出ESP8266-NodeMCU的IP
通过串口监视器可以得到IP
启动网站服务并调用相关的请求函数
esp8266_server.begin();
esp8266_server.on("/", HTTP_GET, handleRoot); // 设置服务器根目录即'/'的函数'handleRoot'
esp8266_server.on("/open1", HTTP_GET, handle1); // 设置处理电机控制请求的函数'handle1'
esp8266_server.on("/close1",HTTP_GET,close1);
esp8266_server.onNotFound(handleNotFound); // 设置处理404情况的函数'handleNotFound'
Serial.println("HTTP esp8266_server started");// 告知用户ESP8266网络服务功能已经启动
部分请求函数中代码(顺时针转动工作臂请求函数)
void handle1() {
Servo1.write(70);
esp8266_server.sendHeader("Location","/"); // 跳转回页面根目录
esp8266_server.send(303); // 发送Http相应代码303 跳转
}
对代码进行烧录等待连接成功。
手机端远程语音控制(以IOS15系统siri语音助手为例)
首先打开手机的快捷指令,并且新建指令,新建文本-在文本中输入需要访问的http地址;接着下一步获取url内容来获取文本当中http的内容。
如图建立快捷指令,并进行运行,发现伺服电机收到了控制。同样通过siri也可以唤起此指令来控制伺服电机,简单的语音控制就完成了。
依据此实验可推广到其他的应用当中,通过http网络连接,可进行其他更多的操作,如远程开关灯等等。今后也会做更多的实验应用到物联网当中。