esp8266通过http与手机通信控制板载led灯

这里esp8266当作tcp client。手机端当作tcp server。

esp作为station模式接入手机热点,需要设置热点的ssid和password。

端口号等。手机端的话,需要调为tcp server模式。设置tcp server的ip地址,tcp通信端口并追加换行符等。

然后就可以发送字符串“hello”来打开esp8266开发板上面的led灯,发送任意字符串关闭led灯。

代码修改自太极创客官方网站例程。

1.代码

/**********************************************************************
项目名称/Project          : 零基础入门学用物联网
程序名称/Program name     : TCP_Client_print
团队/Team                : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
作者/Author              : Dapenson
日期/Date(YYYYMMDD)     : 20200317
程序目的/Purpose          : 
此程序用于演示如何使用esp8266作为互联网客户端向www.example.com网站服务器发送http请求。
在发送HTTP请求时使用了print函数,从而演示该函数的使用方法。
-----------------------------------------------------------------------
修订历史/Revision History  
日期/Date    作者/Author      参考号/Ref    修订说明/Revision Description
20200410      CYNO朔           001        将服务器响应信息输出过程使用stream类函数实现
-----------------------------------------------------------------------
本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。
该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/
***********************************************************************/
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
 
ESP8266WiFiMulti wifiMulti;           // 建立ESP8266WiFiMulti对象
 
const char* host = "192.168.43.1"; // 网络服务器地址
const int httpPort = 8080;              // http端口80
 
// WiFi连接信息
const char*  WiFi_SSID = "Zhitong";
const char*  WiFi_Password = "95359897";
 
void setup(){
  Serial.begin(115200);          
  Serial.println("");
  
  wifiMulti.addAP(WiFi_SSID, WiFi_Password); 
  Serial.println("Connecting ..."); 
 
  // 尝试进行wifi连接。
  int i = 0;  
  while (wifiMulti.run() != WL_CONNECTED) { 
    delay(1000);
    Serial.print(i++); Serial.print(' ');
  }
  
  // WiFi连接成功后将通过串口监视器输出连接成功信息 
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // WiFi名称
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // IP
  pinMode(2,OUTPUT);
  digitalWrite(2,HIGH);
}
 
void loop(){
  // 发送HTTP请求
  httpRequest();    
  
  delay(10000);
}
 
// 向服务器发送HTTP请求
void httpRequest(){
  // 建立WiFi客户端对象,对象名称client
  WiFiClient client;    
 
  // 建立字符串,用于HTTP请求
  String httpRequest =  String("GET /") + " HTTP/1.1\r\n" +
                        "Host: " + host + "\r\n" +
                        "Connection: close\r\n" +
                        "\r\n";
  
  // 通过串口输出连接服务器名称以便查阅连接服务器的网址                      
  Serial.print("Connecting to "); 
  Serial.print(host); 
 
  // 连接网络服务器,以下段落中的示例程序为本程序重点1
  // 请参考太极创客网站中关于本程序的讲解页面获取详细说明信息。网址:
  // http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/
  if (client.connect(host, httpPort)){ 
    Serial.println(" Success!");        // 连接成功后串口输出“Success”信息
    
    client.print(httpRequest);          // 向服务器发送合同请求
    Serial.println("Sending request: ");// 通过串口输出HTTP请求信息内容以便查阅
    Serial.println(httpRequest);     
    
    // 通过串口输出网络服务器响应信息, 以下段落中的示例程序为本程序重点2
    // 请参考太极创客网站中关于本程序的讲解页面获取详细说明信息。网址:
    // http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/
    Serial.println("Web Server Response:");        
    while (client.connected() || client.available()){ 
      if (client.available()){
        String line = client.readStringUntil('\n');
        if(!line.compareTo("hello"))
          digitalWrite(2,LOW);
        else
          digitalWrite(2,HIGH);
        Serial.println(line);
      }
    }
    
    client.stop();                      // 断开与服务器的连接
    Serial.print("Disconnected from "); // 并且通过串口输出断开连接信息
    Serial.print(host);
    
  } else{    // 如果连接不成功则通过串口输出“连接失败”信息
    Serial.println(" connection failed!");
    client.stop();
  }  
}

2.手机端测试

参考链接:

1.ESP8266 – WiFiClient库 – print – 太极创客 

2.3-4-1 ESP8266网络客户端基本操作 – 太极创客

3.ESP8266-Arduino库 开发参考资料 – 太极创客

4.C++ string字符串比较方法详解

5.C++中的string类用法简介_liitdar的博客-CSDN博客_c++ string

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen953

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值