ESP8266 常见问题

本页面收集esp8266常见问题

概述

本文档主要介绍开发者在ESP8266开发中常见的一些问题。 这些问题主要包括以下几大类:

  • 基本概念相关
  • ESP8266 相关
  • AiCloud 相关
  • 固件编译调试相关
  • 文档资料相关

以下是各分类的具体问题和解答。

基本概念相关

  • ESP8266是什么?

  ESP8266 是高性能无线 SOC,在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。支持标准的 IEEE802.11 b/g/n 协议,完整的 TCP/IP 协议栈。

  • ESP01, ESP02是什么?

  ESP01~ESP14是由深圳安信可科技研发生产的ESP8266系列模组,在ESP8266芯片的基础上,完善了外围器件布局和优化天线。

  • AiCloud是什么?

  AiCloud 是安信可提供给广大客户的免费服务器,数据全裸,UDP 传输,简单稳定,且含有诸多例程和 PC 端上位机调试工具。

  • 乐鑫与安信可的关系

  乐鑫是ESP8266的芯片厂商,安信可是依据ESP8266生产模组,并提供一系列开发方案的厂家。

  • ESP8266必须要借助服务器才能开发吗?

  这个根据您的需求来定,若您只需要局域网就可以满足产品需求,那么无需服务器,同样可以使用ESP8266进行开发。

  • 如何购买ESP8266模组和测试板?

  安信可官方淘宝店铺:http://shop.ai-thinker.com/

  • 我该选择哪个型号的ESP8266模组?

  模组硬件之间的差异主要是封装区别,以及flash大小的区分,您可以查看ESP8266选型列表,若有疑问,可联系我们的销售人员。

  • 我该选择AT开发还是SDK开发?

    SDK方法:
    优势:让系统成本最少 体积最小 
    劣势:新手需要一个礼拜到半个月的时间去熟悉代码的研读

    AT方法:
    优势:只需要知道几条AT指令即可用外部单片机实现网络通讯!开发速度快。 
    劣势:增加了外置CPU成本

  您可以自已依此评估自己适合哪种方案

  • 我该选择FreeRTOS还是NONOS?

  因为FreeRTOS是后面才开放的,所以一般常用的是NONOS
  若是您之前有开发过FreeRTOS,那么您可以直接使用FreeRTOS方案的SDK,且该方法有利于您之后使用ESP32系列

  • 开发中,遇到问题如何寻求帮助?

  若您是企业用户,我们会专门委派一名工程师负责贵司的对接;
  若您是个人用户,您可以在论坛发帖,或发邮件到support@aithinker.com,我们也会有专门的工程师去处理。

ESP8266 相关

* 为什么透传会丢包?

因为没有设置硬件流控。如果需要避免丢包,请设置硬件流控。透传功能使用的是TCP协议,每包数据是1460(取决于协议栈),只要网络良好,buffer空间没有被消耗完,就可以不停地传输数据。对于透传。串口接收的数据间隔超过20ms,就会认为 接受结束,将已经接受的数据传输至网络。如果网络不好,就可能会丢失一些数据,因此,为了避免这种情况,可以将串口设置为流控模式。

* ESP8266可以同时使用AP+STA吗?

ESP8266 可以同时使用AP+STA模式(但不能做WiFi放大器)。

* ESP8266可以进行低功耗吗?

ESP8266可以进行低功耗。AT指令进行低功耗说明:

 设置睡眠模式,sleep只在单STA模式下生效,默认工作在modem-sleep模式。
AT+SLEEP=0 0为禁止休眠模式
1为light-sleep模式 功耗0.9mA
2为modem-sleep模式 功耗15mA

* 将建立的TCP Server 连接通过AT 指令保存到flash?

* 如何让ESP8266上电后快速连接AP?

外设

*SDIO 是否支持 SD 卡?

  ESP8266 是 SDIO Slave ,不支持 SD 卡。

*ESP8266 有几个 UART?

  ESP8266 有两个 UART,其中 UARTO 有 TX、RX,可做数据传输;UART1 由于 RX 脚被 SPI-Flash 占用,只能使用 TX,可以做串口调试信息打印。

*GPIO 可以直接连 5V 吗?

  不可以。GPIO 只能承受 3.6V。需要通过降压电路,否则会造成 GPIO 损坏。

硬件

*ESP8266 电压电流需求?

  ESP8266 的数字部分的电压范围是 1.8V ~ 3.3V,模拟部分的工作电压是 3.0V ~ 3.6V,最低 2.7V。

模拟电源峰值 350 mA,数字电源峰值 200 mA。

注意:选择的 SPI Flash 工作电压也需要与 GPIO 的电压匹配。CHIP_EN 还是工作在 3.0 - 3.6V,使用1.8V GPIO 控制时需要注意电平转换。

*设计 ESP8266 的供电时,需要注意哪些问题?

  请注意如下几点:1.如果是使用 LDO 变压,请确保输入电压和输出电压要足够大。2.电源轨去耦电容器必须接近 ESP8266 摆放,等效电阻要足够低。3.ESP8266 不能直连 5V 电压。4.如果是通过 DC-DC 给 ESP8266 供电,必要时要加上 LC 滤波电路。

*ESP8266 上电时电流很大,是什么原因?

  ESP8266 的 RF 和数字电路具有极高的集成度。上电后,RF 自校准会需要大电流。模拟部分电路最大的极限电路可能达到 500 mA;数字电路部分最大电流 达到 200 mA。一般的操作,平均电流在 100 mA 左右。因此,ESP8266 需要供电能达到 500 mA,能够保证不会有瞬间压降。

*可以使用锂电池或者 2 节 AA 纽扣电池直接给 ESP8266 供电吗?

  2 节 AA 纽扣电池可以给 ESP8266 供电。锂电池放电时压降比较大,不适合直接给 ESP8266 供电。ESP8266 的 RF 电路会受温度及电压浮动影响。不推荐不加任何校准的电源直接给 ESP8266 供电。推荐使用 DC-DC 或者 LDO 给 ESP8266 供电。

*ESP8266 的 RAM 的使用结构是怎么的?

ESP8266 的 RAM 总共 160 KB。

IRAM 空间为 64 KB: 前 32 KB 用作 IRAM,用来存放没有加 ICACHE_FLASH_ATTR 的代码,即 .text 段,会通过 ROM code 或二级 boot 从 SPI Flash 中的 BIN 中加载到 IRAM。 后 32 KB 被映射作为 iCache,放在 SPI Flash 中的,加了 ICACHE_FLASH_ATTR 的代码会被从 SPI Flash 自动动态加载到 iCache。

DRAM 空间为 96 KB: 对于 Non-OS_SDK,前 80 KB 用来存放 .data/.bss/.rodata/heap,heap 区的大小取决于 .data/.bss/.rodata 的大小;还有 16 KB 给 ROM code 使用。 对于 RTOS_SDK,96 KB 用来存放 .data/.bss/.rodata/heap,heap 区的大小取决于 .data/.bss/.rodata 的大小。

WiFi相关

*路由配置是正确的,但是发生找不到路由,连接失败,为什么?

如果 SSID 和密码配置是正确的,可能的原因有 2 个。

1.推荐使用英文字符,不要使用中文。

2.需要注意 bssid_set 的设置,如果不需要指定路由的 MAC 地址,那么需配置 stationConf.bssid_set = 0。

* ESP8266 SoftAP + Station 模式下网络断开或丢包的情况?

虽然 ESP8266 支持 SoftAP + Station 共存模式,但是 ESP8266 实际只有一个硬件信道。因此在 SoftAP + Station 模式时,ESP8266 SoftAP 会动态调整信道值与 ESP8266 Station 一致。这个限制会导致 ESP8266 SoftAP + Station 模式时一些行为上的不便,用户请注意。例如:

情况一 如果 ESP8266 Station 连接到一个路由 (假设路由信道号为 6); 通过接口 wifi_softap_set_config 设置 ESP8266 SoftAP; 若设置值合法有效,该 API 将返回 true ,但信道号仍然会自动调节成与 ESP8266 Station 接口一致,在这个例子里也就是信道号为 6。

情况二 调用接口 wifi_softap_set_config 设置 ESP8266 SoftAP (例如信道号为 5); 其他 Station 连接到 ESP8266 SoftAP; 将 ESP8266 Station 连接到路由( 假设路由信道号为 6) ; ESP8266 SoftAP 将自动调整信道号与 ESP8266 Station 一致(信道 6); 由于信道改变,之前连接到 ESP8266 SoftAP 的 Station 的 Wi-Fi 连接断开。

情况三 其他 Station 与 ESP8266 SoftAP 建立连接; 如果 ESP8266 Station 一直尝试扫描或连接某路由,可能导致 ESP8266 SoftAP 端的连接断开,或者 UDP 丢包,ping 丢包等情况。因为 ESP8266 Station 会遍历各个信道查找目标路由,意味着 ESP8266 其实在不停切换信道,ESP8266 SoftAP 的信道也因此在不停更改。这可能导致 ESP8266 SoftAP 端的原有连接断开,或者 UDP 丢包,ping 丢包等情况。

这种情况,用户可以通过设置定时器,超时后调用 wifi_station_disconnect 停止 ESP8266 Station 不断连接路由的尝试;或者在初始配置时,调用 wifi_station_set_reconnect_policy 和 wifi_station_set_auto_connect 禁止 ESP8266 Station 尝试重连路由。

*Wi-Fi 信道是什么?可以自行选择信道吗?

信道指的是 Wi-Fi 使用的指定频段中特定频率的波段。不同国家地区使用的信道数目是不同的。您可以参考ESP8266 Wi-Fi 信道选择指南

应用

*为什么云端升级需要2个 “bin” 文件?“user1.bin” 和 “user2.bin” 有什么区别?

  user1.bin 和 user2.bin 是 2 个不同的 BIN 文件。生成 user1.bin 和 user2.bin 时,必须使用相同的 Flash 和 boot 设置,以保证 OTA 升级成功。2个 BIN 文件是互补的,运行 user1.bin 的时候,升级是下载 user2.bin;运行 user2.bin 的时候,升级是下载 user1.bin。这样可以保证升级过程中,如果有掉线的情况发生,设备还是可以正常运行。

固件编译调试相关

* 导入工程注意事项

  工程文件的导入的注意不要有空格和中文字符,例如:C:\Users\Administrator\Desktop\sdk\esp_iot_sdk_v1.3.0

* esp8266模组LED灯为什么上电闪一下就灭了?

  a,因为esp8266模组的LED接在GPIO2,而此IO与UART1_TX共用,此时模组上电会输出一下打印信息,所以LED会闪直到打印信息输出完毕,LED就灭了。

  b,若想查看启动信息的内容,请选择串口调试助手74880的波特率,硬件上把rst拉低再拉高,可以查看启动信息。

  c,若想通过串口调试助手发送AT指令,请切换波特率到115200,即可。

* ESP8266启动信息说明?

* 模组发送AT指令无响应?

a,请选择74880的波特率,看下启动日志,把RST复位引脚拉低再拉高,可使用安信可串口调试助手进行查看,aithinker_serial_tool_v1.2.3.7z

b,是否进入flash启动模式,GPIO15下拉,GPIO0,GPIO2上拉?

c,是否烧录了固件?烧录配置flash size大小是否跟WiFi模组的flash一致?

* 如何屏蔽上电打印?

U0TXD默认上电有系统打印,对此敏感应用可通过UART的内部引脚交换功能,在初始化的时候,调用system_uart_swap函数。将 U0TXD、U0RXD 分别于U0RTS(MTDO/GPIO15)、U0CTS (MTCK/GPIO13)交换来屏蔽该上电的系统打印。 交换后,硬件上的下载管脚还是使用U0TXD + U0RXD,通信时需要将MTDO对应接到MCU的RXD,MTCK对应加到MCU的TXD。

* 使用UART1打印日志,如何配置?

UART1只有TX功能,可以在UART0用于通讯时做打印log用。 参考代码如下:

           void ICACHE_FLASH_ATTR uart_init_new(void)
{
// Wait for FIFOs to be emptied
UART_WaitTxFifoEmpty(UART0);
UART_WaitTxFifoEmpty(UART1);
// Configure UART settings
UART_ConfigTypeDef uart_config;
uart_config.baud_rate  = BIT_RATE_74880;
uart_config.data_bits   = UART_WordLength_8b;
uart_config.parity     = USART_Parity_None;
uart_config.stop_bits   = USART_StopBits_1
uart_config.flow_ctrl   = USART_HardwareFlowControl_None;
uart_config.UART_RxFlowThresh = 120;
uart_config.UART_InverseMask = UART_None_Inverse;
UART_ParamConfig(UART0, &uart_config);
UART_IntrConfTypeDef uart_intr;
uart_intr.UART_IntrEnMask = UART_RXFIFO_TOUT_INT_ENA | UART_FRM_ERR_INT_ENA | UART_RXFIFO_FULL_INT_ENA;
uart_intr.UART_RX_FifoFullIntrThresh = 100;
uart_intr.UART_RX_TimeOutIntrThresh = 2;
uart_intr.UART_TX_FifoEmptyIntrThresh = 20;
UART_IntrConfig(UART0, &uart_intr);
// Set UART1 for printing
UART_SetPrintPort(UART1);
// Register interrupt handler
UART_intr_handler_register(uart0_rx_intr_handler);
ETS_UART_INTR_ENABLE();

* 上电为什么输出乱码?

上电输出乱码是正常的,因为外部晶振选择是26M,请选择74880的波特率,按下复位键或把RST引脚拉低再拉高,可以看到启动信息。可使用安信可串口调试助手进行查看,aithinker_serial_tool_v1.2.3.7z

* 为什么编译sdk的时候会发生irom0_0_seg错误?

文档资料相关

ESP8266常见问题汇总——转载自官网的更多相关文章

  1. 史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用

    史上最详细Windows版本搭建安装React Native环境配置   2016/01/29 |  React Native技术文章 |  Sky丶清|  95条评论 |  33530 views ...

  2. 全球各大运营商黑莓ROM官网下载链接汇总

    全球各大运营商黑莓ROM官网下载链接汇总: 先来关于8830的. 4.2.2.196的rom  8830EFS_PBr4.2.2_rel365_PL3.0.0.85_A4.2.2.196_Sprint ...

  3. 各个城市优步uber注册司机官网地址汇总

    uber城市 开通uber城市 开通优步城市 哪些城市开通了uber   哪些城市开通了优步 分类: uber专车资讯 作为专车模式的创立者,Uber公司很早就进入了中国区域.优步在中国市场也是胸怀大 ...

  4. 如何从sun公司官网下载java API文档(转载)

    相信很多同人和我一样,想去官网下载一份纯英文的java API文档,可使sun公司的网站让我实在很头疼,很乱,全是英文!所以就在网上下载了别人提供的下载!可是还是不甘心!其实多去看看这些英文的技术网站 ...

  5. ESP8266 LUA脚本语言开发: 准备工作-官网获取LUA固件

    前言 这节咱去官网上获取lua开发的固件. 官网下载 下面是我以前写的,咱不使用官网下载的固件,咱使用自己编译的固件.. 填写好自己的的邮箱地址,然后选择好自己需要的功能,一会编译好的固件就会发到您的 ...

  6. Nginx 官网文档翻译汇总

    Nginx 官网文档,各个模块的手册在这里. Nginx 中文文档 - 淘宝翻译 改版后的新 Nginx 官网文档 概述 新手指南 控制 Nginx 管理员指南 Admin Guide 安装 基本功能 ...

  7. Jenkins 官网文档翻译汇总

    Jenkins 官网地址 Jenkins 官网文档地址 用户手册 安装 Jenkins 使用 Jenkins 使用凭证 Pipeline 流水线 开始使用 Pipeline 使用 Jenkinsfil ...

  8. Nuxt.js的踩坑指南(常见问题汇总)

    本文会不定期更新在nuxt.js中遇到的问题进行汇总.转发请注明出处,尊重作者,谢谢! 强烈推荐作者文档版踩坑指南,点击跳转踩坑指南 在Nuxt的官方文档中,中文文档和英文文档都存在着不小的差异. 1 ...

  9. SVN集中式版本控制器的安装、使用与常见问题汇总

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统,集中式版本控制器 官方网站:https://www.visualsvn.com/ 下载右边的服务器端,左边的客 ...

随机推荐

  1. sql中级语句

    创建联结 select n_title,n_content,t_name,t_memo from nrc_news,nrc_type where nrc_news.t_id=nrc_type.t_id ...

  2. 使用Docker Maven 插件进行镜像的创建以及上传至私服

    1.在进行服务容器化部署的时候,需要将服务以及其运行的环境整个打包做成一个镜像,打包的过程有两种办法,第一种是首选通过maven打成jar包,然后再编写dockerfile,执行docker buil ...

  3. 「java.util.concurrent并发包」之 CyclicBarrier

    一 描述 CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数.当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续.Cyc ...

  4. 如何利用swoole搭建一個簡易聊天室

    <?php class Chat { const HOST = '0.0.0.0';//ip地址 0.0.0.0代表接受所有ip的访问 const PART = 82;//端口号 private ...

  5. 如何给django admin.py配置超级管理员?注册表格?

    admin.py是django给我们提供的功能非常强大的后台,况且支持拓展,,如果你要是觉得admin的后台不够牛逼你可以自己写一个!如何自己写一个后台,后面我有时间了会给大家更新!一起学习!一起进步 ...

  6. 刨根究底字符编码之十——Unicode字符集的编码方式以及码点、码元

    Unicode字符集的编码方式以及码点.码元 一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大,有些字符的编号(码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须 ...

  7. 进阶Java编程(6)正则表达式

    正则表达式 通过之前一系列的分析可以发现,String是一个非常万能的类型,因为String不仅仅可以支持有各种字符串的处理操作,也支持有向各个数据类型的转换功能,所以在项目的开发之中,只要用户输入的 ...

  8. 解决tomcat端口冲突

    1.根据8080端口号查找占用8080端口的进程 netstat -ano|findstr " 进程id:6352 2.根据进程ID查找进程名字 tasklist|findstr " ...

  9. 反射获取config实体类属性并赋值

    /// <summary> /// 将实体类存入config /// </summary> /// <param name="enity">&l ...

  10. Where is __dso_handle defined?

    Where is __dso_handle defined? 来源  https://stackoverflow.com/questions/34308720/where-is-dso-handle- ...