呼叫siri远程语音控制伺服电机工作

302 阅读2分钟

此次通过手机端的快捷指令绑定siri以及对http获取url内容从而调用函数通过远程语音控制伺服电机的运作。

实验中所用到的有ESP8266,伺服电机(对工作臂改装进行加长处理),手机端。 具体实验步骤:建立网络服务器对象,WIFI连接,启动网站服务并调用请求函数。同时在请求函数中设置伺服电机的旋转角度。

伺服电机及控制部分代码

微信图片_20220620012237.jpg

#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

微信图片_20220620010912.png

启动网站服务并调用相关的请求函数

  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的内容。

微信图片_20220620011526.jpg

微信图片_20220620011530.jpg 如图建立快捷指令,并进行运行,发现伺服电机收到了控制。同样通过siri也可以唤起此指令来控制伺服电机,简单的语音控制就完成了。

依据此实验可推广到其他的应用当中,通过http网络连接,可进行其他更多的操作,如远程开关灯等等。今后也会做更多的实验应用到物联网当中。