WAVEGO-WEB

来自Waveshare Wiki
跳转至: 导航搜索

WEB端的简单控制

简介

  • WAVEGO驱动板ESP32上带有WiF模块,通过调用库<WiFi.h>即可打开驱动板的WiFi,ESP32的WiFi有两种模式,AP模式和STA模式。AP模式为创建一个无线网络的模式;STA模式为连接到已有WiFi的模式。
  • webserver为网页服务器,是发送和接受信息,处理信息并存储信息的地方,服务器通过超文本传输协议(HTTP)的协议与用户通信。调用库<webserver.h>可以创建远程控制WAVEGO的网页控制端。
  • 本章主要介绍如何在ESP32上开启WiFi并创建连接web控制端远程控制WAVEGO。

代码

#include "WiFi.h"
#include "WebServer.h"
#include "index.h"            //引入依赖库

const char* ssid = "Waveshare-Robot";
const char* password = "12345678";             //机器狗开启热点

IPAddress IP_ADDRESS;                         //引入变量IP地址

const int buzzerPin = 21;                     //定义IO引脚

WebServer server(80);                //定义对象server

void handleRoot(){
  server.send(200, "text/html", INDEX_HTML);        //将写好的HTML页面发送到端口80
}

void setAP(){
  WiFi.softAP(ssid, password);                //创建热点
  IPAddress myIP = WiFi.softAPIP();            //读取IP地址
  IP_ADDRESS = myIP;
  Serial.print("AP IP address: ");
  Serial.println(myIP);                        //打印IP地址                        
}

void buzzerON(){
  digitalWrite(buzzerPin,LOW);               //拉低蜂鸣器电平,蜂鸣器响起
  server.send(200, "text/html", INDEX_HTML); 
}

void buzzerOFF(){
  digitalWrite(buzzerPin,HIGH);               //拉高蜂鸣器电平,蜂鸣器关闭
  server.send(200, "text/html", INDEX_HTML);
}
 
void setup(){
  digitalWrite(buzzerPin,HIGH);                //将蜂鸣器初始状态设置为关闭
  Serial.begin(115200);                        //打开串口,传输波特率为115200
  pinMode(buzzerPin, OUTPUT);                   //设置蜂鸣器引脚为输出模式
  setAP();                                     //开启热点并在串口打印IP
  server.on("/", handleRoot);                 //创建网页
  server.on("/on",buzzerON);                  //检测到/on时蜂鸣器响起
  server.on("/off",buzzerOFF);               //检测到/off时蜂鸣器关闭
  server.begin();                            //启动服务器
}
 
void loop(){
  server.handleClient();                    //检查是否有设备向服务器发出请求
  delay(10);
}

代码解析

  • const char* ssid = "Waveshare-Robot";
    const char* password = "12345678";
    设置WiFi名称和密码,const表示恒不变量,ssid和password为指针变量。
  • WebServer server(80);
    从WebServer类中定义了一个名为server的对象,使用server对象,就可以在端口80上创建网页了。
  • server.send(200, "text/html", INDEX_HTML);

    发送写好的INDEX_HTML到端口80上创建网页,send函数的三个参数分别是响应状态码,

    ;响应内容类型,此处类型为html的文本;响应内容。
  • WiFi.softAP(ssid,password);
    创建AP模式的WiFi。
  • WiFi.softAPIP();
    创建WiFi后,调用这个函数就能够获得WiFi的IP地址。
  • digitalWrite(buzzerPin,LOW);
    digitalWrite(buzzerPin,HIGH);
    控制蜂鸣器的IO口的电平高低达到控制蜂鸣器的效果。
  • server.on("/",handleRoot);
    server.on("/on",buzzerON);
    server.on("/off",buzzerOFF);

    server.on(uri,uri_handler);

    其中uri为标识符,http识别到标识符后,调用另一个参数回调函数,从而达到网页按键控制WAVEGO的效果。
  • server.begin();
    开启网页服务器。
  • server.handleClient();
    检查有没有设备通过网络向ESP32网络服务器发送请求,每一次调用这个函数,网络服务器都会检查一下是否有设备发送HTTP请求,因此此函数最好放在loop函数里。
  • 总结

    通过本章的学习,你可以学会如何运用WiFi库以及webserver库建立一个网页控制端。