49浏览
查看: 49|回复: 5

[项目] 【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯

[复制链接]
【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯图1

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯图2

驴友花雕  中级技神
 楼主|

发表于 前天 18:21

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯图1

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 18:24

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯

本帖最后由 驴友花雕 于 2025-1-16 18:28 编辑

  【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
   实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
   实验项目之十六:ESP8266 使用WiFiClient库实现网络通讯

实验开源代码

  1. /*
  2.   【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
  3.    实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
  4.    实验项目之十六:ESP8266 使用WiFiClient库实现网络通讯
  5. */
  6. #include <ESP8266WiFi.h>  // 包含ESP8266WiFi库,用于WiFi连接
  7. // 网络服务器地址和端口
  8. const char* host = "www.example.com"; // 网络服务器地址
  9. const int httpPort = 80;              // HTTP端口80
  10. // 设置WiFi接入信息(请根据您的WiFi信息进行修改)
  11. const char* ssid = "zhz3";
  12. const char* password = "z156721";
  13. void setup() {
  14.   // 初始化串口设置
  15.   Serial.begin(9600);
  16.   Serial.println("");
  17.   // 设置ESP8266工作模式为无线终端模式
  18.   WiFi.mode(WIFI_STA);
  19.   // 开始连接WiFi
  20.   WiFi.begin(ssid, password);
  21.   // 等待WiFi连接,连接成功后打印IP地址
  22.   while (WiFi.status() != WL_CONNECTED) {
  23.     delay(1000);
  24.     Serial.print(".");
  25.   }
  26.   Serial.println("");
  27.   Serial.println("WiFi Connected!");
  28.   // 发送HTTP请求
  29.   wifiClientRequest();  
  30. }
  31. void loop(){
  32.   // 主循环为空,不执行任何操作
  33. }
  34. // 向服务器发送HTTP请求
  35. void wifiClientRequest(){
  36.   // 建立WiFi客户端对象,对象名称为client
  37.   WiFiClient client;   
  38.   // 建立HTTP请求字符串
  39.   String httpRequest =  String("GET /") + " HTTP/1.1\r\n" +
  40.                         "Host: " + host + "\r\n" +
  41.                         "Connection: close\r\n" +
  42.                         "\r\n";
  43.   
  44.   // 通过串口输出连接服务器名称,以便查阅连接的服务器网址
  45.   Serial.print("Connecting to ");
  46.   Serial.print(host);
  47.   // 连接网络服务器,以下段落中的示例程序为本程序重点1
  48.   if (client.connect(host, httpPort)){
  49.     Serial.println(" Success!");        // 连接成功后串口输出“Success”信息
  50.    
  51.     client.print(httpRequest);          // 向服务器发送HTTP请求
  52.     Serial.println("Sending request: "); // 通过串口输出HTTP请求信息内容,以便查阅
  53.     Serial.println(httpRequest);     
  54.    
  55.     // 通过串口输出网络服务器响应信息,以下段落中的示例程序为本程序重点2
  56.     Serial.println("Web Server Response:");        
  57.     while (client.connected() || client.available()){
  58.       if (client.available()){
  59.         String line = client.readStringUntil('\n');
  60.         Serial.println(line);
  61.       }
  62.     }
  63.    
  64.     client.stop();                      // 断开与服务器的连接
  65.     Serial.print("Disconnected from "); // 并且通过串口输出断开连接信息
  66.     Serial.print(host);
  67.    
  68.   } else {    // 如果连接不成功则通过串口输出“连接失败”信息
  69.     Serial.println(" connection failed!");
  70.     client.stop();
  71.   }  
  72. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 18:28

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯

代码解读
1、包含库:
#include <ESP8266WiFi.h>:包含ESP8266WiFi库,用于处理WiFi连接。

2、常量定义:
const char* host = "www.example.com";:定义要连接的服务器地址。
const int httpPort = 80;:定义HTTP端口,通常为80。
const char* ssid = "zhz3";:定义WiFi网络的SSID。
const char* password = "zy156721";:定义WiFi网络的密码。

3、初始化和连接WiFi:
Serial.begin(9600);:初始化串口通信,波特率为9600。
WiFi.mode(WIFI_STA);:设置ESP8266为无线终端模式。
WiFi.begin(ssid, password);:开始连接到指定的WiFi网络。
while (WiFi.status() != WL_CONNECTED) { ... }:等待WiFi连接成功,连接成功后打印“WiFi Connected!”。

4、发送HTTP请求:
WiFiClient client;:创建一个WiFi客户端对象。
String httpRequest = ...;:构建HTTP GET请求字符串。
Serial.print("Connecting to "); Serial.print(host);:通过串口输出连接的服务器地址。
if (client.connect(host, httpPort)) { ... }:尝试连接到服务器,连接成功后发送HTTP请求。
client.print(httpRequest);:发送HTTP请求。
Serial.println("Sending request: "); Serial.println(httpRequest);:通过串口输出HTTP请求内容。
while (client.connected() || client.available()) { ... }:读取并输出服务器的响应。
client.stop();:断开与服务器的连接。
Serial.print("Disconnected from "); Serial.print(host);:通过串口输出断开连接的信息。

5、连接失败处理:
else { Serial.println(" connection failed!"); client.stop(); }:如果连接失败,通过串口输出“连接失败”信息并断开连接。

6、运行结果
串口输出:
连接WiFi的过程和结果。
连接服务器的过程和结果。
发送的HTTP请求内容。
服务器的响应内容。
断开连接的信息。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 18:31

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯

实验串口返回情况

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 18:33

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯

【花雕学编程】Arduino动手做(246)---ESP8266 实现网络通讯图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail