ESP8266 tutorials--连接http服务器并获取实时时间

Words
630
Reading
3 min
Listen
Play
9y

What Will I Learn?

  • 让esp8266连接本地http服务器

  • 获取实时时间制作时钟

GIF.gif

Requirements

  • ESP8266 -12F

    图片.png

  • Arduino IDE (版本要大于1.6.7)

    图片.png

  • ESP8266 library

  • phpstudy

    图片.png

  • php获取时间脚本

Difficulty

  • Basic

    ​

Tutorial Contents

针对预先功能编写程序

  1. 引入esp8266的wifi库文件
#include 
#include 
#include 
  • ESP8266WiFi.h:用于esp8266连接wifi并实现wifi操作功能的有关库文件
  • WiFiClientSecure.h:用于esp8266连接服务器进行安全访问的库文件
  • ESP8266HTTPClient.h:使esp8266支持连接http服务器

  1. 设置需要连接的wifi的账号密码
const char* ssid = "steemit";
const char* password = "cha0s0000";
  • ssid:设置要连接的wif的账号
  • password:设置要连接的wif的密码
  • const char* ssid = "steemit";:在这里,两个变量都要用c字符串指针形式

  1. 设置http服务器的地址与端口

    图片.png

const char* host = "192.168.0.101";
const int port = 80;
  • host:服务器的IP或者域名地址
  • port:服务器开放的用于连接的端口,这里可以使443或者80,WiFiClientSecure.h库文件支持https链接方式,但是这里我们搭建了本地的服务器采用80端口就OK

  1. 初始化串口并打印相关配置至串口,方便用于调试
 Serial.begin(115200);
 Serial.print("connecting to ");
 Serial.println(ssid);

  1. 让esp8266连接wifi
WiFi.begin(ssid, password);

  1. 判断是否连接wifi成功,若不成功,一直等待
 while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  1. 初始化esp8266的客户端配置
HTTPClient http;
  • client:调用ESP8266HTTPClient.h库文件进行连接服务器

  1. 配置访问的url
 String url = "/time.php";
  • url:获取实时时间的php脚本所在位置

    图片.png


  1. 编写获取实时时间的php脚本
<?php
  date_default_timezone_set("Asia/Shanghai");
  echo date("h:i:sa");
?>
  • date_default_timezone_set:设置时区为”亚洲/上海“
  • date:按照"h:i:sa"格式获取时间
  • 文件名保存为time.php,并放置于服务器根目录

  1. 让esp8266连接上http服务器
http.begin(host, port, url);

  1. 获取http请求的返回码,用于确定请求状态
int httpCode = http.GET();
  • GET():GET请求,截取字符串并获取请求码

  1. 判断是否请求成功并获取实时时间
if(httpCode == 200) {
      String payload = http.getString();
      Serial.println(payload);
  }
  • httpCode:返回码为200,则证明get请求成功
  • getString():获取请求成功之后,服务器返回的数据

  1. 整合程序
#include 
#include 

const char* ssid = "god";
const char* password = "zhangliuchen";
const char* host = "192.168.0.101";
const int port = 80;

HTTPClient http;
void setup() {
  Serial.begin(115200);
  Serial.print("connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  
  
}

void loop() {
  String url = "/time.php";
  http.begin(host, port, url);
  int httpCode = http.GET();
  if(httpCode == 200) {
      String payload = http.getString();
      Serial.println(payload);
  }
  delay(1000);
}



烧写上传到ESP8266模块

1.打开Arduino IDE

图片.png


2.选择对应的开发板,此步骤可以参照:**你的wifi我作主----DIY一个wifi杀手 **

图片.png


3.上传程序

​ 注意:上传程序的时候,需要按一下esp8266-12f模块的RST键

图片.png

GIF.gif

图片.png


4.测试效果:

  • 先访问本地浏览器测试本地服务器是否搭建成功

    图片.png

  • 测试esp8266模式

    GIF.gif



Posted on Utopian.io - Rewarding Open Source Contributors

ESP8266 tutorials--连接http服务器并获取实时时间 | Ecency