ESP32 8266入门到精通_例程版本

参考:太极创客:物联网开发基础

注意事项:

  1. 配置好环境:代码直接copy就可使用
  2. 采用:太极创客ESP8266开发板
  3. WiFi 频段为2.4G

1.1ESP8266:基本网络服务器_入门

实现功能:

  1. 程序上传给NodeMCU以后,请启动NodeMCU并且确保它已经成功连接WiFi。
  2. 请打开浏览器,并且在地址栏中输入NodeMCU的IP地址并按下回车。
  3. 假如将在浏览器中看到“Hello from ESP8266”(如下所示)

在这里插入图片描述

  1. 串口打印调试信息
    在这里插入图片描述

成功的让NodeMCU实现了网络服务功能,因为您所看到的这条文字信息正是来自于NodeMCU。

NodeMCU为您建立了一个超级迷你的小网站。这个网站只有一个网页。这个网页只有一行文字“Hello from ESP8266”。

基于Arduino IDE开发环境

在这里插入图片描述

源码讲解:

#include <ESP8266WiFi.h>        // 本程序使用 ESP8266WiFi库
#include <ESP8266WiFiMulti.h>   //  ESP8266WiFiMulti库
#include <ESP8266WebServer.h>   //  ESP8266WebServer库

ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
 
ESP8266WebServer esp8266_server(80);// 建立ESP8266WebServer对象,对象名称为esp8266_server
                                    // 括号中的数字是网路服务器响应http请求的端口号
                                    // 网络服务器标准http端口号为80,因此这里使用80为端口号
void setup(void){
  Serial.begin(9600);          // 启动串口通讯_9600为串口的波特率 需要和上位机对应
 

  /**
  *此处添加自己的WiFi密码和WiFi名词
  *这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息
  *这里只存储了3个WiFi信息,您可以存储更多的WiFi信息在此处。
  */
  //通过addAp函数存储  WiFi名称       WiFi密码
  wifiMulti.addAP("hello_Sir1", "13572468");  
  wifiMulti.addAP("hello_Sir2", "87654321"); 
  wifiMulti.addAP("hello_Sir", "13572468"); 

  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此处的wifiMulti.run()是重点。通过wifiMulti.run(),NodeMCU将会在当前
    delay(1000);                             // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么NodeMCU
    Serial.print(i++); Serial.print(' ');    // 将会连接信号最强的那一个WiFi信号。
  }                                          // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是
                                             // 此处while循环判断是否跳出循环的条件。
 
  // WiFi连接成功后将通过串口监视器输出连接成功信息 
  Serial.println('\n');                     // WiFi连接成功后
  Serial.print("Connected to ");            // NodeMCU将通过串口监视器输出。
  Serial.println(WiFi.SSID());              // 连接的WiFI名称
  Serial.print("IP address:\t");            // 以及
  Serial.println(WiFi.localIP());           // NodeMCU的IP地址
  
//--------"启动网络服务功能"程序部分开始-------- // 
  esp8266_server.begin();                   //   ESP8266-NodeMCU来启动网络服务功能
  
/**
*esp8266_server.on("/", handleRoot);       
*作用:告诉NodeMCU,当有浏览器请求网站首页时,请执行handlRoot函数来生成网站首页内容然后发送给浏览器
* "/"访问根目录 根目录为网站首页
*/
  esp8266_server.on("/", handleRoot);       



/**
*esp8266_server.onNotFound(handleNotFound);       
*告诉NodeMCU在遇到这种无法满足的http请求时,应该执行handleNotFound函数来生成并发送“错误提示”页面给浏览器    
*/
  esp8266_server.onNotFound(handleNotFound);   

//--------"启动网络服务功能"程序部分结束--------
  Serial.println("HTTP esp8266_server started");//  告知用户ESP8266网络服务功能已经启动
}
  
void loop(void){
  esp8266_server.handleClient();  
  // 处理http服务器访问
  //检查有没有设备通过网络向NodeMCU发送请求
}
                                                                           
void handleRoot() {   //处理网站根目录“/”的访问请求 
  esp8266_server.send(200, "text/plain", "Hello from ESP8266");                      //  NodeMCU将调用此函数。
  //参数200,它同样是一个服务器状态码,含义是“成功接收请求,并已完成整个处理过程”
  //字符串参数“text/plain”。它的作用是说明http响应体的信息类型为文本
}

// 设置处理404情况的函数'handleNotFound'
void handleNotFound(){                                        // 当浏览器请求的网络资源无法在服务器找到时,
  esp8266_server.send(404, "text/plain", "404: Not found");   // NodeMCU将调用此函数。
}

1.2通过网络服务实现NodeMCU开发板基本控制

实现功能:

  1. 程序上传给NodeMCU以后,请启动NodeMCU并且确保它已经成功连接WiFi。
  2. 请打开浏览器,并且在地址栏中输入NodeMCU的IP地址并按下回车。
  3. 假如将在浏览器中看到“Toggle LED”(如下所示)并按下可以控制LED亮灭
    在这里插入图片描述
  4. 串口打印调试信息
    在这里插入图片描述

基于Arduino IDE开发环境

在这里插入图片描述
程序源码:

#include <ESP8266WiFi.h>        // 本程序使用 ESP8266WiFi库
#include <ESP8266WiFiMulti.h>   //  ESP8266WiFiMulti库
#include <ESP8266WebServer.h>   //  ESP8266WebServer库
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是 'wifiMulti'
 
ESP8266WebServer esp8266_server(80);// 建立网络服务器对象,该对象用于响应HTTP请求。监听端口(80)
 
void setup(void){
  Serial.begin(9600);   // 启动串口通讯且波特率为9600
 
  pinMode(LED_BUILTIN, OUTPUT); //设置内置LED引脚为输出模式以便控制LED
  
  wifiMulti.addAP("hello_Sir", "17674011013"); // 将需要连接的一系列WiFi ID和密码输入这里
  wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再启动后会扫描当前网络
  wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 环境查找是否有这里列出的WiFi ID。如果有
  Serial.println("Connecting ...");                            // 则尝试使用此处存储的密码进行连接。
  
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此处的wifiMulti.run()是重点。通过wifiMulti.run(),NodeMCU将会在当前
    delay(1000);                             // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么NodeMCU
    Serial.print(i++); Serial.print(' ');    // 将会连接信号最强的那一个WiFi信号。
  }                                          // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是
                                             // 此处while循环判断是否跳出循环的条件。
  
  // WiFi连接成功后将通过串口监视器输出连接成功信息 
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // 通过串口监视器输出连接的WiFi名称
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // 通过串口监视器输出ESP8266-NodeMCU的IP
 
  esp8266_server.begin();                           // 启动网站服务

  
  esp8266_server.on("/", HTTP_GET, handleRoot);     // 设置服务器根目录即'/'的函数'handleRoot'
  //当有浏览器请求首页且收到GET请求后就会运行handleRoot函数
  //HTTP_GET:当使用浏览器访问首页时:如果按下回车,会往开发板发送GET请求
  
  esp8266_server.on("/LED", HTTP_POST, handleLED);  // 设置处理LED控制请求的函数'handleLED'
  //当有浏览器请求:/LED页面 且收到POST请求后就会运行handleLED函数
  esp8266_server.onNotFound(handleNotFound);        // 设置处理404情况的函数'handleNotFound'
 
  Serial.println("HTTP esp8266_server started");//  告知用户ESP8266网络服务功能已经启动
}
 
void loop(void){
  esp8266_server.handleClient();                     // 检查http服务器访问
}
 
/*设置服务器根目录即'/'的函数'handleRoot'
  该函数的作用是每当有客户端访问NodeMCU服务器根目录时,
  NodeMCU都会向访问设备发送 HTTP 状态 200 (Ok) 这是send函数的第一个参数。
  同时NodeMCU还会向浏览器发送HTML代码,以下示例中send函数中第三个参数,
  也就是双引号中的内容就是NodeMCU发送的HTML代码。该代码可在网页中产生LED控制按钮。 
  当用户按下按钮时,浏览器将会向NodeMCU的/LED页面发送HTTP请求,请求方式为POST。
  NodeMCU接收到此请求后将会执行handleLED函数内容*/
void handleRoot() {       
  esp8266_server.send(200, "text/html", "<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Toggle LED\"></form>");
  //加\的原因是指明哪些是html代码 简单来说 "到哪里结束及 \"表明没有结束 第二次单独出现" 表明结束了
  /*
   * html格式的含义:
   * 
   * "<form action=\"/LED\" method=\"POST\">
   * action="/LED":当用户按下Toggle LED这个按钮时跳转到"/LED"这个页面
   * method="POST"请求方法为POST
   * 
   * <input type="submit" value="Toggle LED">
   * 
   * input type="submit :定义一个按钮 
   * value="Toggle LED":按钮显示的内容为Toggle LED
   * 
   * </form>"
   */
}
 
//处理LED控制请求的函数'handleLED'
void handleLED() {                          
  digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
 //digitalRead:读取当前状态

 //跳转回页面根目录
  esp8266_server.sendHeader("Location","/");        
  esp8266_server.send(303);                           // 发送Http相应代码303 跳转  
}
 
// 设置处理404情况的函数'handleNotFound'
void handleNotFound(){
  esp8266_server.send(404, "text/plain", "404: Not found"); // 发送 HTTP 状态 404 (未找到页面) 并向浏览器发送文字 "404: Not found"
}

void handleRoot

html格式的含义:

void handleRoot() {       
  esp8266_server.send(200, "text/html", "<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Toggle LED\"></form>");
  }
  /*
   * html格式的含义:
   * 
   * "<form action=\"/LED\" method=\"POST\">
   **********************
   * action="/LED":当用户按下Toggle LED这个按钮时跳转到"/LED"这个页面
   * method="POST"请求方法为POST 
   *********************
   * <input type="submit" value="Toggle LED">
   ********************** 
   * input type="submit :定义一个按钮 
   * value="Toggle LED":按钮显示的内容为Toggle LED
   * 
   * </form>"
   */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
玩转ESP8266 SDK编程【实】, 第1集(公开):套件介绍 观看地址:http://v.youku.com/v_show/id_XMTUzNzM3ODg3Mg==.html 操作演示:http://pan.baidu.com/s/1dEGjwVv(视频演示全家福) 第2集(加密):组装WIFI模块,在面包板上搭建实验电路,下载厂家固件并调试 观看地址:http://v.youku.com/v_show/id_XMTUzNzM3NzY1Mg==.html (密码:021295) 操作演示:http://v.youku.com/v_show/id_XMTUzNjkzMDc5Mg==.html 第3集(加密):搭建开发环境,编写第一个程序:串口打印字符 观看地址:http://v.youku.com/v_show/id_XMTUzNzM3NzQ2NA==.html (密码:036370) 第4集(加密):LED闪烁(控制WIFI模块的GPIO口) 观看地址:http://v.youku.com/v_show/id_XMTUzODQ4Mzc4NA==.html (密码:048426) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg2NjQzNg==.html 第5集(加密):按键控制LED(读取GPIO口的状态) 观看地址:http://v.youku.com/v_show/id_XMTUzODQ4Mzc1Mg==.html (密码:054524) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDU0MA==.html 第6集(加密):WIFI连接(把WIFI模块作为服务器,设置为AP模式) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMjUxNg==.html (密码:064663) 第7集(加密):UDP通信(把WIFI模块作为服务器,UDP_Service) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMjE2NA==.html (密码:071725) 第8集(加密):TCP通信(把WIFI模块作为服务器,TCP_Service,并用电脑控制LED) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMTQwNA==.html (密码:082890) 第9集(加密):WIFI连接(把WIFI模块作为客户端,设置为STATION模式) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMTM2OA==.html (密码:097974) 第10集(加密):UDP通信(把WIFI模块作为客户端,UDP_Client) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMTM2NA==.html (密码:103054) 第11集(加密):TCP通信(把WIFI模块作为客户端,TCP_Client,并用手机控制LED) 观看地址:http://v.youku.com/v_show/id_XMTU0NjM3MDUwOA==.html (密码:112997) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDQ4OA==.html 第12集(加密):渐变灯(PWM) 观看地址:http://v.youku.com/v_show/id_XMTU1MTg5Mjg2NA==.html (密码:122826) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDQ2NA==.html 第13集(加密):七彩灯(PWM控制,并用手机控制LED) 观看地址:http://v.youku.com/v_show/id_XMTU1MTg5MjgwNA==.html (密码:133741) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDEwOA==.html 第14集(加密):光控灯(ADC) 观看地址:http://v.youku.com/v_show/id_XMTU1NDE0NTg5Mg==.html (密码:145693) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDAyMA==.html 第15集(加密):串口通讯(UART中断) 观看地址:http://v.youku.com/v_show/id_XMTU1NDE0NTg4MA==.html (密码:156528

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值