WebServer应用示例2:Siri语音识别读取传感器数据 | ESP32轻松学(Arduino版)

本系列历史文章目录:

本期给大家带来的是掌控板 Siri 语音识别的第 2 篇:如何通过 Siri 语音识别获取传感器数据

在这里插入图片描述

掌控板 Siri 语音识别的第 1 篇跳转:Siri 语音识别控制 LED 灯

国际惯例,先来看一下演示效果吧。点击下方链接跳转 B 站观看演示视频:

https://www.bilibili.com/video/av98141978/

项目概述

在上一篇中,我向大家详细展示了如何利用 Siri 控制掌控板和 LED 灯,这一篇是上一篇的进阶,我将继续教大家如何用 Siri 去读取各种传感器的数据。

没看过上一篇的朋友,建议先去看一下第 1 篇的内容。

跳转链接:掌控板 Siri 语音识别的第 1 篇:LED 灯控制

这次主控板选择的仍然是掌控板,当然正如我前面篇章所说的,你也可以选择其他 ESP32 或者 ESP8266 系列开发板,实现的方法和效果是类似的。读取的传感器数据包括掌控板自带的声音传感器、光线传感器、以及外接的 DHT11 温湿度传感器,学习了本篇章之后,希望你可以学会修改相应代码,换成其他传感器。

在这个项目中,我们同样将掌控板 ESP32 设置为一个 Web 服务器,当用户在网页上访问这个服务器的域名地址(或 IP 地址)的时候,就会跳转到如下界面。最终实现的效果是,不仅可以用 Siri 语音识别去获取传感器数据,也可以直接在网页端查看传感器数据。

webpage

我们可以通过点击 LED 的切换开关来控制掌控板上的 RGB LED 的亮灭,也可以访问这个切换开关的对应域名地址,来控制 LED 灯的亮灭。

针对传感器,我们可以直接在网页上一次性读取所有传感器的数据,也可以单独访问每个传感器对应的域名地址来读取相应的数据。这样就完成了基本的通过 Web 页面控制掌控板以及读取数据的功能。

web控制框架

在这基础之后,我们可以通过设置一些语音助手,比如 Siri、天猫语音精灵等,通过语音命令访问对应的域名地址,从而实现语音识别开关灯、读取传感器数据的功能。

siri控制框架

电路连接

本项目中,我们需要外接一个 DHT11 温湿度传感器,通过扩展板将它接在掌控板 P0 引脚,如下图所示。声音数据和光线数据,直接通过掌控板账面自带的两个传感器读取即可。

电路接线

库文件安装

这个项目需要用到 4 个 Arduino 库:除了上一篇章用到的 Adafruit_NeoPixelESPAsyncWebServerAsyncTCP 之外,我们还加入了 DHT 函数库,它的功能主要是读取 DHT11 温湿度传感器的数值。。

Arduino 库安装的教程不是本篇的重点,这里不再赘述,只给出 4 个库的网址,大家可以自行百度查找 Arduino 怎么安装库。

  • Adafruit_NeoPixel:https://github.com/adafruit/Adafruit_NeoPixel
  • ESPAsyncWebServer:https://github.com/me-no-dev/ESPAsyncWebServer
  • AsyncTCP:https://github.com/me-no-dev/AsyncTCP
  • DHT:https://github.com/adafruit/DHT-sensor-library

Arduino 代码

这一篇章的代码是在上一篇章的基础之上进行修改的,所以基础部分不再赘述,只讲解不同与添加部分。

头文件及初始化定义

在程序的开头,我们首先引入了需要用到的库函数:

#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include "Adafruit_NeoPixel.h"
#include "Adafruit_Sensor.h"
#include "DHT.h"

然后设置网络的账号和密码:

const char *ssid = "wifi_name";
const char *password = "wifi_password";

接着定义一些传感器与执行器引脚,并对他们进行一些初始化设置:

#define SOUNDPIN 36   // P10
#define LIGHTPIN 39   // P4
#define LEDPIN 17   // P7

#define DHTPIN 33   // P0

接着定义了 DHT 对象、NeoPixel 对象(RGB LED 灯)和 WebServer 对象:

#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

Adafruit_NeoPixel pixels(3, LEDPIN, NEO_GRB + NEO_KHZ800);
AsyncWebServer server(80);

Web 页面设计

然后是掌控板 Web 服务器的界面设计,界面设计使用的是 HTML 语言,这里先放一个最基础的界面设计。HTML 相关的代码存储在 index_html 变量中。

const char index_html[] PROGMEM = R"rawliteral(
    // HTML code here
)rawliteral";

基础的 HTML 页面设计代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style>
      html {
    
        font-family
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值