首页 > 其他分享 >ESP8266 wifi模块+CH340烧录板安装使用运行教程

ESP8266 wifi模块+CH340烧录板安装使用运行教程

时间:2025-01-08 09:03:22浏览次数:6  
标签:烧录 wifi LED ESP8266 WiFi USE WebSocket SERIAL

硬件准备

  • ESP8266-01S 模块
  • USB转TTL烧录板(CH340)
  • LED灯(建议使用3.3V LED)
  • 220Ω电阻(LED限流)
  • 面包板和跳线若干
  •  我的是这样的不用接线,其他的参考

    ESP8266-01S引脚定义:
       VCC  --- 3.3V
       GND  --- GND
       TX   --- USB转TTL的RX
       RX   --- USB转TTL的TX
       CH_PD(EN) --- 3.3V
       GPIO0 --- LED正极(通过220Ω电阻)
       GPIO2 --- 悬空
       RST   --- 悬空(烧录时可能需要手动接地复位)

安装CH340驱动

链接:https://pan.baidu.com/s/1PLZ5LIf-Mh-MDAF-YnlurQ?pwd=8888
提取码:8888

插上CH340板子

 

下载 Arduino IDE1.8

链接https://www.arduino.cc/en/software 右下角对应系统下载。选择JUST DOWNLOAD

 

 安装 ESP8266 核心库

  • 打开 Arduino IDE
  • 进入 文件 > 首选项
  • 在"附加开发板管理器网址"中添加以下URL:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
如果是中国地区,可能需要使用以下镜像地址来替代官方地址:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
http://arduino.esp8266.com/stable/package_esp8266com_index.json

 

安装开发板和库

1.进入 工具 > 开发板 > 开发板管理器
搜索"ESP8266"
安装"ESP8266 by ESP8266 Community"
2. 安装 WebSockets 库
在Arduino IDE中,进入 工具 > 管理库
搜索"WebSockets"
找到"WebSockets by Markus Sattler"并安装

报错可本地安装,官方教程:https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries/

本地8266下载链接:https://github.com/esp8266/Arduino/releases/download/3.1.2/esp8266-3.1.2.zip
将下载的zip解压到:
C:\Users\[你的用户名]\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\

本地WebSockets下载链接:https://github.com/Links2004/arduinoWebSockets/archive/refs/heads/master.zip
解压下载的ZIP文件将解压出来的文件夹重命名为"WebSockets"
将这个文件夹复制到Arduino的libraries目录中:Windows: 文档\Arduino\libraries\

 

选择开发板

不完全一样,需要问厂家

 

测试代码

#include <ESP8266WiFi.h>          // WiFi功能
#include <ESP8266WiFiMulti.h>     // WiFi多连接
#include <WebSocketsServer.h>     // WebSocket服务器
#include <Hash.h>                 // WebSocket需要
#include <ESP8266WebServer.h>     // Web服务器
#include <ESP8266mDNS.h>         // mDNS服务

/* 
 * ESP8266 WebSocket LED控制示例
 * 
 * 使用说明:
 * 1. 连接WiFi热点: tunc5555   
 * 2. WiFi密码: 123456789
 * 3. 浏览器访问: http://192.168.4.1/
 * 4. 点击网页按钮控制LED
 */

#define USE_SERIAL Serial  // 定义串口对象

// WiFi配置参数
static const char ssid[] = "tunc5555";      // WiFi名称
static const char password[] = "123456789";  // WiFi密码
MDNSResponder mdns;                         // MDNS响应器对象

static void writeLED(bool);                 // LED控制函数声明

ESP8266WiFiMulti WiFiMulti;                 // WiFi多连接对象

// 创建服务器实例
ESP8266WebServer server(80);                // HTTP服务器(端口80)
WebSocketsServer webSocket = WebSocketsServer(81);  // WebSocket服务器(端口81)

// HTML页面内容 - 这是网页界面的代码
static const char PROGMEM INDEX_HTML[] = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<meta name = "viewport" content = "width = device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=0">
<title>ESP8266 WebSocket Demo</title>
<style>
"body { background-color: #808080; font-family: Arial, Helvetica, Sans-Serif; Color: #000000; }"
</style>
<script>
var websock;
function start() {
  websock = new WebSocket('ws://' + window.location.hostname + ':81/');
  websock.onopen = function(evt) { console.log('websock open'); };
  websock.onclose = function(evt) { console.log('websock close'); };
  websock.onerror = function(evt) { console.log(evt); };
  websock.onmessage = function(evt) {
    console.log(evt);
    var e = document.getElementById('ledstatus');
    if (evt.data === 'ledon') {
      e.style.color = 'red';
    }
    else if (evt.data === 'ledoff') {
      e.style.color = 'black';
    }
    else {
      console.log('unknown event');
    }
  };
}
function buttonclick(e) {
  websock.send(e.id);
}
</script>
</head>
<body onl oad="javascript:start();">
<h1>ESP8266 WebSocket Demo</h1>
<div id="ledstatus"><b>LED</b></div>
<button id="ledon"  type="button" onclick="buttonclick(this);">On</button> 
<button id="ledoff" type="button" onclick="buttonclick(this);">Off</button>
</body>
</html>
)rawliteral";

// LED相关定义
const int LEDPIN = 0;    // LED引脚定义,使用GPIO0
bool LEDStatus;          // LED当前状态

// WebSocket控制命令
const char LEDON[] = "ledon";    // 开灯命令
const char LEDOFF[] = "ledoff";  // 关灯命令

void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length)
{
    USE_SERIAL.printf("WebSocket事件(%d, %d, ...)\r\n", num, type);
    switch (type) {
    case WStype_DISCONNECTED:  // 客户端断开连接
        USE_SERIAL.printf("[%u] 连接断开!\r\n", num);
        break;
    case WStype_CONNECTED:     // 客户端连接成功
    {
        IPAddress ip = webSocket.remoteIP(num);
        USE_SERIAL.printf("[%u] 客户端连接成功 IP: %d.%d.%d.%d URL: %s\r\n", 
                         num, ip[0], ip[1], ip[2], ip[3], payload);
        // 发送当前LED状态给新连接的客户端
        if (LEDStatus) {
            webSocket.sendTXT(num, LEDON, strlen(LEDON));
        }
        else {
            webSocket.sendTXT(num, LEDOFF, strlen(LEDOFF));
        }
    }
        break;
    case WStype_TEXT:          // 收到文本消息
        USE_SERIAL.printf("[%u] 收到消息: %s\r\n", num, payload);

        // 处理LED控制命令
        if (strcmp(LEDON, (const char *)payload) == 0) {
            writeLED(true);    // 开灯
        }
        else if (strcmp(LEDOFF, (const char *)payload) == 0) {
            writeLED(false);   // 关灯
        }
        else {
            USE_SERIAL.println("未知命令");
        }
        // 广播消息给所有客户端
        webSocket.broadcastTXT(payload, length);
        break;
    case WStype_BIN:           // 收到二进制消息
        USE_SERIAL.printf("[%u] 收到二进制数据,长度: %u\r\n", num, length);
        hexdump(payload, length);
        // 回显数据到浏览器
        webSocket.sendBIN(num, payload, length);
        break;
    default:
        USE_SERIAL.printf("无效的WebSocket类型 [%d]\r\n", type);
        break;
    }
}

// 处理根路径请求
void handleRoot()
{
  server.send_P(200, "text/html", INDEX_HTML);
}

// 处理404错误
void handleNotFound()
{
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i<server.args(); i++){
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
}

// LED控制函数
static void writeLED(bool LEDon)
{
  LEDStatus = LEDon;
  // 注意:HUZZAH板的LED逻辑是反转的
  digitalWrite(LEDPIN, LEDon ? 0 : 1);
}

void setup()
{
    // 初始化LED引脚
    pinMode(LEDPIN, OUTPUT);
    writeLED(false);

    // 初始化串口通信
    USE_SERIAL.begin(115200);

    // 启动延时倒计时
    for(uint8_t t = 4; t > 0; t--) {
        USE_SERIAL.printf("[启动] 等待 %d 秒...\r\n", t);
        USE_SERIAL.flush();
        delay(1000);
    }

    // 配置WiFi接入点模式
    WiFi.softAP(ssid, password);
    IPAddress myIP = WiFi.softAPIP();
    USE_SERIAL.print("接入点IP地址: ");
    USE_SERIAL.println(myIP);

    // 启动MDNS服务
    if (mdns.begin("espWebSock", WiFi.localIP())) {
        USE_SERIAL.println("MDNS服务启动成功");
        mdns.addService("http", "tcp", 80);
        mdns.addService("ws", "tcp", 81);
    }
    else {
        USE_SERIAL.println("MDNS服务启动失败");
    }
    
    // 配置Web服务器路由
    server.on("/", handleRoot);
    server.onNotFound(handleNotFound);
    server.begin();

    // 启动WebSocket服务器
    webSocket.begin();
    webSocket.onEvent(webSocketEvent);
}

void loop()
{
    webSocket.loop();         // 处理WebSocket事件
    server.handleClient();    // 处理HTTP请求
}
View Code

 

编译

 上传

 测试

硬件连接
将LED连接到ESP8266-01S的GPIO0引脚(注意要串联一个合适的限流电阻)
确保ESP8266-01S正确供电(3.3V)
上传程序后的测试流程:
a. 连接WiFi
用手机或电脑搜索WiFi网络
找到名为"tunc5555"的WiFi热点
使用密码"123456789"连接
b. 访问Web界面
打开浏览器
输入地址:http://192.168.4.1
应该能看到一个简单的网页界面,包含:
一个显示"LED"的文本
"On"和"Off"两个按钮
c. 测试LED控制
点击"On"按钮,LED应该会亮起
点击"Off"按钮,LED应该会熄灭
网页上的"LED"文字颜色也会相应变化(开启时为红色,关闭时为黑色)
调试方法:
打开Arduino IDE的串口监视器(波特率设置为115200)
可以看到以下调试信息:
启动倒计时信息
WiFi接入点IP地址
WebSocket连接状态
LED控制命令接收情况

常见问题解决

无法上传程序:
检查COM口是否正确选择
确认已进入烧录模式
尝试按RST按钮重置
找不到WiFi:
检查供电是否正常
查看串口监视器输出信息
尝试重启模块
LED不响应:
检查LED连接极性
确认GPIO0连接正确
查看串口调试信息

 

标签:烧录,wifi,LED,ESP8266,WiFi,USE,WebSocket,SERIAL
From: https://www.cnblogs.com/hiit/p/18657670

相关文章

  • 【WiFi】QCA6174A根据GPIO加载不同bdwlan文件修改实现
    QCA6174ADesignedtodeliveracost-effectiveWi-Fi/Bluetoothcombosolution,theQualcomm®QCA6174ASoC(System-on-Chip)isanintegrated,single-chipsolutioninasmallformfactorformobileandconsumerelectronicsapplications.QCA6174Asupp......
  • 如何把Android手机变成一个WIFI下载热点? — 报文转发及DNS报文拦截6
    随着WiFi的普及,移动运营商的热点也越来越多了,如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等,一般来说,连上此类的热点,打开浏览器上网时都会自动跳转到一个验证页面,最近有个项目也有类似的需求,Android手机自建热点,别的手机wifi连接此热点,打开浏览器,输入任意内容......
  • 如何把Android手机变成一个WIFI下载热点? — 报文转发及DNS报文拦截3
    随着WiFi的普及,移动运营商的热点也越来越多了,如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等,一般来说,连上此类的热点,打开浏览器上网时都会自动跳转到一个验证页面,最近有个项目也有类似的需求,Android手机自建热点,别的手机wifi连接此热点,打开浏览器,输入任意内容......
  • 如何把Android手机变成一个WIFI下载热点? — 报文转发及DNS报文拦截13
    随着WiFi的普及,移动运营商的热点也越来越多了,如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等,一般来说,连上此类的热点,打开浏览器上网时都会自动跳转到一个验证页面,最近有个项目也有类似的需求,Android手机自建热点,别的手机wifi连接此热点,打开浏览器,输入任意内容......
  • C#+ WPF 实现蓝牙转WIFI计步上位机
    前言一个WIFI上位机,接收底层MPU6050数据,途中转蓝牙从机透传,到蓝牙主机直连WIFI,PC端UDP通信,实现三轴加速度数据传送和计步功能。项目介绍本项目基于.NET平台,使用WPF开发了一个应用程序,用于实现MPU6050传感器数据从蓝牙模块传输到主机,并通过WiFi以UDP协议接收这些数据并进行可视......
  • WiFi+4G摄像头拍照图传模块(夜视2K高清1080P)-外部引脚触发拍照http post上传到服务器
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/product/audioCamera.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1......
  • WiFi+4G摄像头拍照图传模块(夜视2K高清1080P)-定时拍照http post上传到服务器,然后低
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/product/audioCamera.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 提示!1,......
  • CH32V203F6P6-TSSOP20测试之03---三种烧录方式
      CH32V203F6P6-TSSOP20支持三种下载方式:USB下载、串口下载(用串口2即8脚PA2为TX2接下载的RX,9脚PA3为RX2接下载的TX)和SWD两线下载。  CH32V203F6P6-TSSOP20的BOOT1内置接GND,而BOOT0外露,用户可以选择两种启动模式,因而支持USB下载和串口下载。接法可以选择下面两种方法的其......
  • H7-TOOL固件2.27发布,新增加40多款芯片脱机烧录,含多款车轨芯片,发布LUA API手册,CAN助手
    H7-TOOL详细介绍(含操作手册):http://www.armbbs.cn/forum.php?mod=viewthread&tid=89934【PC软件】V2.271.脱机烧录功能更新:  -prog_lib.c1拖16时部分成功时,修改start_prog_0()为返回ERROR  -高级脚本范例中新增1拖16使用VOUT输出结果状态  -修正GD32H7xx_1M和......
  • 飞猫M20随身WiFi网络不稳定?试试这些解决方法
    随身WiFi相关(程序+源码+工具+调试部署+开发环境)总共500多GB以上,文章末尾可获取,在最后面了。M20偶尔断网,手机WiFi都会断掉,然后会重新连接,可能是由多种原因导致的。以下是一些可能的原因:温度过高:如果设备在高负载运行时(如玩游戏、使用高性能软件等),CPU和GPU的温度可能会升高......