这里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网络客户端基本操作 – 太极创客