ESPDuino作为Web Server,实现远程控制硬件


前言

在超视距的环境下,人们总想对远程的硬件进行控制并传输应用数据。将一个硬件设置为服务器,通过浏览器对远程硬件的控制和数据推送。满足需求的话设定URI协议进行标识,将ESPDuino作为一个Web Server,来响应远程的控制指令,推送数据。


一、开发板加电,上传固件代码,串口监视显示联网成功,WEB服务器启动 在浏览器中输入ip

在这里插入图片描述

在这里插入图片描述

二、在浏览器中填写HTTP地址

GPIO是嵌入式中最常用的资源,是各种控制指令/响应的硬件接口,通过高低电平实现具体控制。/如图一/gpio/1表示把GPIO接口设置为高电平,这时将可以可以观察到,led灯灭了
将GPIO接口设置为低电平此时led灯常亮
在这里插入图片描述

1.源码分析

代码如下:

#define PIN_LED 16
#define KEY_FLASH 0
#include<ESP8266WiFi.h>
const char*ssid ="nfc";
const char*password="123456789";
WiFiServer server(80);
void setup(){
  Serial.begin(115200);
  delay(10);
  pinMode(PIN_LED,OUTPUT);
  digitalWrite(PIN_LED,LOW);
  Serial.println();
  Serial.println();
  Serial.print("Connecting to");
  Serial.println(ssid);
  WiFi.begin(ssid,password);
  while(WiFi.status()!=WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  //Start the server
  server.begin();
  Serial.println("Serial started");
  //print the address
  Serial.println(WiFi.localIP());
}
void loop(){
  WiFiClient client=server.available();
  if(!client){
    return;
  }
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  String req=client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  int val;
  if(req.indexOf("/gpio/0")!=-1)
  val=1;
  else if(req.indexOf("/gpio/1")!=1)
  val=1;
  else{
    Serial.println("invalid requst");
    client.stop();
    return;
  }
  digitalWrite(PIN_LED,val);
  client.flush();
  String s="HTTP/1.1 200 OK\r\n Content-Type:text/html\r\n\r\n<! DOCTYPE HTML>\r\n<html>\r\n CPIO is now";
  s +=(val)? "high":"low";
  s +="</html>\n";
  client.print(s);
  delay(1);
  Serial.println("Client disconnected");
  
  }


总结

通过浏览器来实现对远程硬件的控制和数据推送,作为连接人和硬件的桥梁,大大加深了更多远程服务实现的可能性,也为远程控制的人工智能实现了向前的一步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值