单片机学习(四)——ESP8266(最全教程和说明)

2023-05-16

 

文章目录

  • 前言
  • 一、ESP8266可以干什么?
  • 二、ESP8266作为传输数据的开发
    • 1.电路连接图
    • 2.ESP8266直接烧录
    • 3.通过Arduino对ESP8266进行烧录
  • 三、ESP8266作为开发板的开发
  • 四、可能会存在的问题
  • 总结

前言

ESP8266 Wi-Fi模块作为可以进行WiFi传输的模块集成了业内领先的Tensilica L106超低功耗32位微型MCU,带有16位精简模式,主频可达160MHz。同时支持RTOS(Real Time Operating System)集成Wi-Fi MAC/BB/RF/PA/LNA和 IEEE802.11 b/g/n 协议,支持完整的TCP/IP协议栈,也支持STA(Station),AP(Access Point),ATA+AP三种模式。


一、ESP8266可以干什么?

  • ESP8266可以作为辅助的模块进行数据的传输:可以在Arduino IDE的主程序内创建函数进行编写,将Arduino开发板连接的检测模块的数据通过ESP8266传输到服务器等
  • ESP8266也可以直接作为开发板通过Arduino IDE进行编译

二、ESP8266作为传输数据的开发

1.电路连接图

  • ESP8266具有两种烧录的模式,使用者需要根据自己的需要进行不同电路的连接:

(一)通过AT指令进行烧录,在此烧录模式下需要将ESP8266与USB转TTL连接通过电脑的烧录软件进行烧录,具体的连接图如图1所示:

(二)通过Arduino进行代码烧录,在此模式下需要将ESP8266与Arduino进行连接,通过Arduino IDE编写代码对Arduino板子进行烧录,具体连接如图2所示:

2.ESP8266直接烧录

  • 按照图1连接电路,将USB口插入电脑端,在我的电脑管理内查询端口号,第一次使用可能会出现无法显示的问题可以安装CH340驱动(一般window10系统会自动安装驱动/CH340驱动模块以及后面说的工具我会在后面给大家链接)识别出端口号后要记住,在烧录的时候会使用。
  • 打开SSCOM串口调试工具或者其他串口调试工具(本文以SSCOM作为例子),根据你在管理看到的串口号选择自己的串口(一定要在USB插上电脑后在打开,否则可能会找不到自己的串口号),波特率选择115200(ESP8266默认出厂频率为115200,想要更改可以通过AT固件重刷,不过我没有用到过,有需要的可以自行百度),打开串口。

  • 进行AT指令的发送,AT指令集如下所示(这些指令集是几年前当的,现在那篇博客没有了,如果博客大大看到的话,感谢博客大大提供这么全的资料!):

1. AT+CWMODE 选择 wifi 应用模式

STA模式(1):Station,类似无线网终端,接收无线的接入。

AP模式(2):ACCESS POINT 提供无线网服务,允许其他无线设备接入。

AP+STA模式(3)

2. AT+CWJAP 加入 AP

3. AT+CWLAP 列出可用AP

4. AT+CWQAP 退出与AP连接

5. AT+CWSAP 设置AP模式下的参数

6. AT+CWLIF 查看已经连接的IP

TCP/IP指令集

1. AT+CIPSTATUS 查看连接状态

2. AT+CIPSTART 建立TCP连接或者注册 UDP端口号

3. AT+CIPEND 发送数据

4. AT+CIPCLOSE 关闭TCP UDP连接

5. AT+CIFSR 获取本地IP地址

6. AT+CIPMUX 启用多连接

7. AT+CIPSERVER 配置服务器

  • 如果你不太清楚自己需要什么的话一般都使用STA模式,连接自己的热点,访问服务器,可以按照下图去发送:

  • 如果你选择的模式是STA,可以打开网络调试助手选择TCP Sever,输入自己本地的IP地址测试是否通讯成功,如果成功会在数据接收部分显示通过ESP8266传输的数据。

3.通过Arduino对ESP8266进行烧录

  • 方法一:通过Arduino对ESP8266烧录需要先打开Arduino IDE编译器,新建一个工程,将下面代码copy过去,选择你要烧录的Arduino的板子和串口进行烧录,通过串口监视器(选择115200波特率的)发送你要配置的AT指令进行手动烧录
/***************************************************
 * 
 * 名称:ESP8266 01S AT指令手动联网
 * 接线:
 * Arduino nano       ESP8266 01S
 * D2(RX)   ———   TX
 * D3(TX)   ———   RX
 * VCC(3.3) ———   VCC(&EN)
 * GND      ———   GND
 * 
 ****************************************************/
 
 
#include<SoftwareSerial.h>
SoftwareSerial mySerial(2,3);//RX ,TX   wifiSerial
 
 
void setup() {
  Serial.begin(115200);
  while (!Serial)
  {
    ;
    }
   Serial.println("ok");
   
   mySerial.begin(115200);
   mySerial.println("ready");

}
 
void loop() {
  if(mySerial.available())
  Serial.write(mySerial.read());
  
  if(Serial.available())
  mySerial.write(Serial.read());
 
}
  •  方法二:自己写一个函数,写上自己需要发送的指令,在初始化过程中调用此函数,在主函数中使用Serial.println(****);(****为你要传输的数据)将数据发送出去,核心代码如下所示:
void setup() {
  Serial1.begin(115200);
  wifibegin(); 
}

void wifibegin()
{
  delay(8000); 
  Serial1.println("AT");delay(2000);
  Serial1.println("AT+RST");delay(2000);
  Serial1.println("AT+CWMODE=1");delay(2000);
  Serial1.println("AT+CIPMODE=1"); delay(4000);
  Serial1.println("AT+CIPSTART=\"TCP\",\"IP地址\",端口号"); delay(4000);
  Serial1.println("AT+CIPSEND"); delay(4000); 
}


三、ESP8266作为开发板的开发

  • ESP8266作为开发板需要先配置好环境,打开Arduino,选择文件首选项,将下面的地址修改成:http://wechat.doit.am/package_esp8266com_index.json

  • 再选择工具管理库,就会看到正在加载库,搜索ESP8266,下载ESP8266的库

  • 以下代码可以直接烧录到ESP8266的板子上,可用于测试,ESP8266还有更多自身的开发,可以去百度找相关资料
#include <ESP8266WiFi.h>
#define led 2 //发光二极管连接在8266的GPIO2上
const char *ssid     = "kiki";//这里写入网络的ssid
const char *password = "1234567890k";//wifi密码
const char *host = "192.168.174.1";//修改为Server服务端的IP,即你电脑的IP,确保在同一网络之下。
WiFiClient client;//声明一个客户端对象,用于与服务器进行连接
const int tcpPort = 8266;//修改为你建立的Server服务端的端口号,此端口号是创建服务器时指定的。
static String comdata = "";
static String val = "";
void setup()
{
    Serial.begin(115200);    
    pinMode(led,OUTPUT);
    delay(10);
    Serial.println();
    Serial.print("Connecting to ");//会通过usb转tll模块发送到电脑,通过ide集成的串口监视器可以获取数据。
    Serial.println(ssid);
    WiFi.begin(ssid, password);//启动
     //在这里检测是否成功连接到目标网络,未连接则阻塞。
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
    }
 //几句提示
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}
void loop()
{
/******************串口接受数据************************/
  while (Serial.available() > 0) // 串口收到字符数大于零。
  {   
  comdata += char(Serial.read());
  }
 /******************串口打印数据************************/ 
  if(comdata!="")//如果接受到数据
  {
    client.print(comdata);//向服务器发送数据 
   }
   comdata="";//清空数据
  if (client.connected()) //尝试访问目标地址,如果没连接上LED灯灭
   Serial.println("connect client fail");
    //digitalWrite(led, LOW);
  else
  Serial.println("connect client ok");
    //digitalWrite(led, HIGH);

  while (!client.connected())//若未连接到服务端,则客户端进行连接。
  {
    if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true
    {
       Serial.println("连接中....");
       delay(500);
    }    
  }
  while (client.available())//available()表示是否可以获取到数据
  {
//    char val = client.read();//read()表示从网络中读取数据。
     while (client.available() > 0) // 串口收到字符数大于零。
    {   
    val += char(client.read());
    }
    client.print("text:"+val); 
    val="";//清空数据
   }
  delay(1);
}
  • 编译的时候一定要选择对开发板,根据你的ESP8266型号选择

四、可能会存在的问题

  • 串口号找不到可能是因为没有驱动,或者先打开了串口调试助手,或者是因为USB转TTL出现了问题,可以从这些进行尝试判断
  • AT发送失败,可能是电路连接问题(我的VCC一直连接的是3.3V,有看到资料说不能连接5V可以注意一下),可能是ESP8266模块坏掉了(可以多买几个备用着),还有可能是因为之前烧录过,这个时候需要对ESP8266模块进行固件初始化,具体步骤如下:

1.连接方式参考图1,这里比图一多了一个GPIO0要接GND其他一样

2.打开一键烧写的软件,选择配置选项卡,点击小齿轮图标 - 加载固件地址

3.只选择第二个选项(固件地址),最后的地址为默认的0x00000,其他不更改

4.返回操作选项卡,选择正确COM端口,点击一键下载

5.等待下载完成,Finish


总结

这个模块的研究不是一帆风顺,会有很多小问题,希望大家能通过此文有所收获,能帮助大家解决一些小问题,最后给大家放上工具的连接地址,可以免费下载

地址:https://download.csdn.net/download/sunshineQY/16661852

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机学习(四)——ESP8266(最全教程和说明) 的相关文章

  • PX4-做飞控二次开发需要知道的事情-Cxm

    前言 废话 来了 之前一直在做APM飞控的开发 发现除了企业用APM 在比赛方面还是PX4居多一点 加上最近也有这个需求所以又重拾了PX4 这两个飞控最大的区别应该就是系统了吧 PX4学习起来还是比较简单的 比较系统和模块化 在重拾PX4之
  • 指针函数和函数指针的区别

    1 指针函数 xff1a 带指针的函数 xff0c 其本质是一个函数 xff0c 函数返回是某一类型的指针 例如 xff1a int f x xff0c y 其结构为 类型标识符 函数名 参数 首先你要从心里承认这是一个函数 xff0c 只
  • 什么是中断?

    中断嘛 xff0c 对于很多新手来讲 xff0c 有点难以理解 xff0c 举个容易的现实的例子吧 如果还不懂 xff0c 骚年 xff0c 考虑换行吧 xff0c 或许这不是你的方向呢 xff0c 诗和远方在前面岔路左拐 比如小明和老丈人
  • 什么是看门狗?

    一样采用简单明了的例子来解释 条件 xff1a 你家有条狗 事件 xff1a 让他看门 xff0c 报警 结果 xff1a 1到点不给吃饭 xff0c 会叫 xff0c 2到点喂他吃东西 xff0c 等待下次开饭 影响 xff1a 叫了 x
  • BUG的烦恼

    在我们这个行业的学习和工作中 xff0c bug是个逃不掉的话题 最近两天 xff0c 在调试一个程序 xff0c 程序本来是完整的 xff0c 只是我需要把它移植到另一个平台上 框架是没有动的 xff0c 连平台的架构都很像 xff0c
  • 什么是Handler

    1 什么是Handler xff1f Handler就是将消息放入队列的机制 我们在哪个线程中创新handler xff0c handler就将消息放入所在的线程 xff0c 除非在创建handler对象时是指定具体的线程 通常handle
  • 905协议第四部分简单说明

    905协议以5b开头5d结尾 转成ascii就是 这两个符号 905是用中括号括起来的消息 消息构成 61 43 消息头 43 消息体 43 crc 43 业务逻辑是消息头与消息体两部分组成 消息头 61 数据长度 43 消息序列号 43
  • git命令创建分支|合并分支|删除分支

    一 创建test分支提交步骤 1 列出所有分支 xff1a git branch a 2 创建test分支 xff1a git branch test 3 切换到test分支 xff1a git checkout test 4 添加add修
  • JS版SM2国密算法的签名验证

    前段时间因工作需要 xff0c 了解到在Github上已经有人实现了用JavaScript来写签名和验签 xff0c 支持RSA ECC DSA等算法 xff0c 还能解析X 509证书 xff0c 一时觉得JavaScript是无比强大
  • 配置VNC连接阿里云服务器

    1 安装vncserver2 安装Linux gnome界面3 修改 vnc xstartup4 使用vnc工具连接 使用VNC Viewer使用Remmina Remote Desktop Client 1 安装vncserver 阿里云
  • SCI论文状态

    自己留好投稿时的文件号 xff0c 然后登录网站查询 一般有以下几种情况 xff1a 1 Submitted to Journal 刚提交的状态 2 Manuscript received by Editorial Office 就是你的文
  • STM32控制直流电机笔记(一)——电源转换和电机驱动电路设计及注意事项

    STM32控制直流电机笔记 xff08 一 xff09 电源转换和电机驱动电路设计及注意事项 电压转换电路15V 转 12V 12V 转 5V 所用芯片LM2575 05 LM2575 12 12v直流电机驱动电路 所以芯片TB6612 注
  • CMake Error: The following variables are used in this project, but they are set to NOTFOUND解决办法

    在配置px4 Firmware时 xff0c 编译make时报错 xff1a CMake Error The following variables are used in this project but they are set to
  • PX4 avoidance ROS仿真之——使用自定义的飞机模型

    运行自己的飞机模型主要需解决的问题 飞机模型的stereo相机话题 当你的飞机模型中包含了双目相机时 xff0c 需要运行一个ROS的node xff0c 将下面内容添加到posix sitl launch文件中 xff1a lt span
  • RealSense T265相机及IMU标定,运行VINS

    转自 https www jianshu com p 194d6c9ef9a4 不确定该文章有没有对IMU和相机的时间做同步 xff01 1 使用imu utils工具包标定IMU 这里有个坑 xff0c imu utils依赖code u
  • 编译px4 Firmware 执行make报错的问题解决办法

    ccache error Failed to create temporary file for home xxx ccache tmp tmp cpp stderr Permission denied 一般这个报错下面还会接另一个报错 x
  • 在Ubuntu中安装Docker,添加Docker官方GPG key失败,解决方案

    1 添加Docker官方GPG key xff1a curl fsSL https download docker com linux ubuntu gpg sudo apt key add 2 问题来了 xff0c 有的人会遇到如下的Bu
  • git中push或者clone时报错the remote end hung up unexpectedly

    使用git提交或者克隆时出现the remote end hung up unexpectedly的异常 xff0c 原因应该是网络原因引起的而且文件可能比较大的情况下 解决办法是 xff1a 配置git的最低速度和最低速度时间 xff0c
  • raspberrypi连接神经计算棒人脸识别

    Raspberrypi连接神经计算棒人脸识别 树莓派3B上部署英特尔神经网络计算棒Intel NCS2进行最普通的人脸识别 参考 英特尔官方文档 博文树莓派上部署英特尔神经网络计算棒Intel NCS2 硬件 xff1a 树莓派3B树莓派3
  • STM32F4 NANO + RT-Thread Studio 测试工程搭建流程

    STM32F4 NANO 43 RT Thread Studio 测试工程搭建流程 硬件 xff1a 正点原子 NANO开发板 MCU STM32F411RCT6 开发平台 xff1a RT Thread Studio 1 新建工程 新建R

随机推荐

  • 多态语法

    多态基础语法 xff1a 向上转型 xff1a 子类型 gt 父类型 xff08 类似于自动类型转换 xff09 向下转型 xff1a 子类型 lt 父类型 xff08 类似于强制类型转换 xff09 如果想调用子类中特有的方法 xff0c
  • python 内部作用域修改外部作用域的变量

    1 xff0c 当内部作用域想修改外部作用域的变量时 xff0c 就需要用到global和nonlocal关键字 2 xff0c 方法嵌套
  • GPS & Lidar & IMU 融合定位与建图_理论学习1

    Localization amp Mapping 参考 xff1a 博文 xff1a Lidar 数据处理 ADS GPS 定位 定位技术分类 xff1a GPS绝对定位 xff0c 相对定位 xff0c 融合定位 问题 xff1a 传统的
  • Aruco检测

    来自 xff1a https blog dgut top 2020 07 15 python aruco 检测ID span class token keyword import span numpy span class token ke
  • uio驱动编写 实例2 //增加了中断部分

    http blog csdn net ganggexiongqi article details 6794215 AUTHOR xff1a Joseph Yang 杨红刚 lt ganggexiongqi 64 gmail com gt C
  • ROS主从机配置方法及rviz显示从机雷达扫描信息

    ROS主从机配置方法及rviz显示从机雷达扫描信息 一 ros节点设置 1 IP查询 通过命令 ifconfig 分别查询主机从机ip 2 修改 bashrc文件 sudo gedit bashrc 主机中添加 xff1a export R
  • ROS创建自定义msg类型功能包

    ROS创建自定义msg类型功能包 一 创建msg消息 首先创建一个空的package单独存放msg类型 xff08 当然也可以在任意的package中自定义msg类型 xff09 为便于说明 xff0c 建立一个名为base sks msg
  • ROS中geometry_msgs消息类型、nav_msg消息

    ROS中geometry msgs消息类型 nav msg消息 参考 xff1a 链接 https blog csdn net ganbaoni9yang article details 50060343 官方文档 xff1a http d
  • 2011年总结

    又是一年年终时 亦是一年总结时 想想自己从去年写年终总结到现在 已经很久没有写过字了 时间过得真快 又是一年过去了 这一年也是我出来工作的第二年 这一年总体来说自己无论在技术还是心态方面有了很大的进步 记得刚出学校那会 啥都不知道 对于工作
  • 性能监测工具-node-export

    1 前言 无论是做性能测试或是运维等都会用到对服务的监测 xff0c 最基本的监测是就是对服务器的基本指标监测 xff0c 比如 xff1a cpu 内存 I O 网络等 这些其实一般系统自带的都有工具 xff0c 很方便 xff0c 比如
  • VSCode(Visual Studio Code)整合Git

    一 xff1a 初始化git插件 在拓展商店中搜索 git xff0c 在下发出现的列表中 xff0c 选择 Git History xff0c 在右边出现的界面 xff0c 点击 安装 即可 本人已经安装 xff0c 安装按钮已无 xff
  • Ubuntu 当前系统资源查看命令Top详解

    top xff1a 主要参数 d xff1a 指定更新的间隔 xff0c 以秒计算 q xff1a 没有任何延迟的更新 如果使用者有超级用户 xff0c 则top命令将会以最高的优先序执行 c xff1a 显示进程完整的路径与名称 S xf
  • ToString的用法

    ToString的用法 string y 61 x ToString 我才明白把一个类型转换为string类型是啥意思 比如当定义一个int类型后 xff0c 利用toString xff08 xff09 方法就能把int转化为string
  • STM32F4-KeyFIFO

    STM32按键FIFO 主要思想就是 xff1a 1 先配置按键的初始计数值为滤波值 如 xff0c 滤波为40ms xff0c 则配置该值为固定初始值 xff0c 如10 假如扫描周期为10ms xff0c 每间隔一定时间 上面说的10m
  • pid的后2位是无效的 在查询pspcidtable的时候 ExpLookupHandleTableEntry 函数会自动把pid的后两位置成0(Handle.TagBits = 0;就是这句!!)

    PHANDLE TABLE ENTRY ExpLookupHandleTableEntry IN PHANDLE TABLE HandleTable IN EXHANDLE tHandle 43 43 Routine Description
  • 代码分析——基于误差状态卡尔曼滤波器(ESKF)实例分析

    imu gps localization代码分析 最近在学习ESKF相关知识 xff0c 偶然发现知乎大佬 Dongsheng Yang基于 Quaterniond kinematics for the error state Kalman
  • 在ros环境下的amcl配置笔记

    这段时间导师让研究一下amcl xff0c 在这之前只有一点ros基础 xff0c 根本不知道amcl是什么东东 xff0c 于是开始查资料找教程 xff0c 但是真心没有找到面向小白的配置教程 xff0c 在这几天的摸索中 xff0c 终
  • ROS 发布和订阅自定义消息数组

    今天学习使用ros发布和订阅自定义的消息以及消息数组 xff0c 记录 xff0c 备忘 xff01 说明 xff1a 以ubuntu14 04 xff0c indigo版本为例 ros工作空间位置 xff1a workspace catk
  • Ubuntu USB串口数据 读取及显示

    显示串口接受的数据命令 1 1 在终端输入 lsusb 显示所有连接的usb设备 1 2 在终端输入 ls dev ttyA 显示所有连接的虚拟USB设备端口号 1 3 在终端输入 ls dev ttyU 显示所有连接的USB设备端口号 1
  • 单片机学习(四)——ESP8266(最全教程和说明)

    文章目录 前言一 ESP8266可以干什么 xff1f 二 ESP8266作为传输数据的开发 1 电路连接图2 ESP8266直接烧录3 通过Arduino对ESP8266进行烧录三 ESP8266作为开发板的开发四 可能会存在的问题总结