热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ESP826601SWeb服务器成功启动:详细解决方案与实践指南

本文详细介绍了一种利用ESP826601S模块构建Web服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了Web服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。

之前买的模块中, 突然想到有这个模块。 一直未使用,索性在疫情期间 研究使用一下。

现在代码如下

        

/*This sketch demonstrates how to set up a simple HTTP-like server.The server will set a GPIO pin depending on the requesthttp://server_ip/gpio/0 will set the GPIO2 low,http://server_ip/gpio/1 will set the GPIO2 highserver_ip is the IP address of the ESP8266 module, will beprinted to Serial when the module is connected.
*/#include const char* ssid = "************"; // wifi 2.4 名称
const char* password = "***********"; // wifi 2.4 密码// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);void setup() {// 初始化串口,只是显示一些打印的状态消息Serial.begin(115200);delay(10);// prepare GPIO2// 控制片上led灯的引脚pinMode(2, OUTPUT);digitalWrite(2, 0);// Connect to WiFi networkSerial.println();Serial.println();Serial.print("Connecting to ");Serial.println(ssid);// 1.设置wifi模式为终端WiFi.mode(WIFI_STA);// 2.连接wifiWiFi.begin(ssid, password);
// WiFi.softAP(ssid, password); // 开AP热点// 显示连接状态while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");// Start the server// 3.启动服务server.begin();Serial.println("Server started");// Print the IP addressSerial.println(WiFi.localIP());
}void loop() {// Check if a client has connected// 4.循环获取连接到此服务的客户端(就是其它设备的连接对象)WiFiClient client = server.available();if (!client) {return;}// Wait until the client sends some dataSerial.println("new client");while (!client.available()) {delay(1);}// Read the first line of the request// 5.读取请求的地址数据String req = client.readStringUntil('\r');Serial.println(req);client.flush(); // 清空客户端数据// Match the request// 6.在此对不同的请求地址做不同的处理(不同页面地址请求,做出不同的处理)int val;if (req.indexOf("/gpio/0") != -1) { // 硬件控制val = 0;} else if (req.indexOf("/gpio/1") != -1) { // 硬件控制val = 1;}// 7.控制页面,在此显示一个UI界面页面,点击不同的按键,用一个执行一个页面跳转激活上面的相应地址,实现页面请求,控制硬件 else if(req.indexOf("/") != -1){ // 控制页面String IPAdress = WiFi.localIP().toString();String html = " ";html += "";html += "";html += "";html += "";html += ">";// 8.返回html页面给客户端显示client.print(html);}else {Serial.println("invalid request");client.stop(); // 请求完后,可以停止return;}// Set GPIO2 according to the request// 根据val值(上面不同页面请求设置),控制小灯digitalWrite(2, val);// 清空客户端数据client.flush();// Prepare the response// 通过页面显示灯的状态
// String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n\r\nGPIO is now ";
// s += (val) ? "high" : "low";
// s += "\n";// Send the response to the client
// client.print(s);delay(1);Serial.println("Client disonnected");// The client will actually be disconnected// when the function returns and 'client' object is detroyed
}


推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • C++: 实现基于类的四面体体积计算
    本文介绍如何使用C++编程语言,通过定义类和方法来计算由四个三维坐标点构成的四面体体积。文中详细解释了四面体体积的数学公式,并提供了两种不同的实现方式。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
author-avatar
BLUE1352_126
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有