前言
作为一个 esp8266 开发老司机的我,做过很多 esp8266的项目,比较商业化的有接入 阿里智能生活平台、天猫精灵linkkitapp、苏宁智能平台以及京东微联智能平台,以及做过一些 小项目esp8266 驱动红外线、七彩灯以及一些数码管,个人觉得,对esp8266 开发颇有一番见解。
在学习这款芯片期间,我在CSDN 点击访问 发表了许多文章,一开始是抱着做笔记的态度写的!没想到可以帮助到这么多人入门学习这个物美价廉的芯片!现在访问量也快50w了,感到欣慰!目的在于有气氛地讨论这个芯片以及物联网嵌入式开发的技术,希望大家多多支持我!
这个文档系列是个开发乐鑫esp8266的常见问题汇总,收集本人开发常见的问题以及群里群友最最最常见的问题!我对此的要求是要比乐鑫的官网的文档更详尽!更符合国人的水准!本文档系列建议大家在PC端查阅,有目录点击跳转,效率更佳!
再次感谢大家的支持,让我们共勉开源技术!
某不知名博主:半颗心脏
2019-3-23
福利汇总:
微信小程序连接Mqtt服务器的示范代码,持续更新.......
常见问题汇总
环境搭建以及烧录相关问题
乐鑫官网环境搭建文档在哪?和网上的安信可一体化环境有何差别?客官,乐鑫的全部文档我是找到了传送门 ,但是具体的哪一个文档我就忘了!在优酷视频有一个是 2016年乐鑫官网上传的视频很小!总的来说就是建议 linux环境下开发,但是作为一个老司机,我一直用 window10开发,一直很顺畅没遇到任何环境问题!
esp8266的是cmake编译,在windows需要 cywin 环境,但是我们如果单独去官网装cywin环境的话,那么你不止一两个小时就可以搞掂了!因为安信可的一体化环境就是用的这个 cywin+eclipse来跨平台的工具,所以一直很受大家欢迎!所以,安信可一体化环境是针对windows平台的,但是据我所知,都是很久没有更新了!
因此,我推荐大家用最新版的eclipse+安信可提供的cywin+乐鑫提供的工具编译链 构造我们的环境,这个是最好的跨平台的环境了!
eclipes for c/c++ 2019版本 提取码:fqt7
cywin win7/10 提取码:wmpn
rtos sdk 和 nonos sdk开发有何差别?
- Non-OS SDK 主要使⽤用定时器 和回调函数的⽅方式实现各个功能事件的嵌套,达到特定条件下触发特定功能函数的⽬目的。Non-OS SDK 使⽤用 espconn 接⼝口实现⽹网络操作,⽤用户需要按照 espconn 接⼝口的使⽤用规则进⾏行行软件开发。
- RTOS SDK
- RTOS 版本 SDK 使⽤用 freeRTOS 系统,引⼊入 OS 多任务处理理的机制,⽤用户可以使⽤用 freeRTOS 的标准接⼝实现资源管理理、循环操作、任务内延时、任务间信息传递和同步等⾯面向任务流程的设计⽅方式。具体接⼝口使⽤用⽅方法参考 freeRTOS 官⽅网站的使⽤说明;
- RTOS 版本 SDK 的⽹网络操作接⼝口是标准 lwIP API,同时提供了了 BSD Socket API 接⼝口的封装实现,⽤用户可以直接按照 socket API 的使⽤用⽅方式来开发软件应⽤用,也可以直接编译运⾏行行其他平台的标准 Socket 应⽤用,有效降低平台切换的学习成本。
- RTOS 版本兼容 Non-OS SDK 中的 Wi-Fi 接⼝、SmartConfig 接⼝、Sniffer 相关接口、系统接⼝、定时器 接⼝、FOTA 接⼝和外围驱动接⼝,不支持 AT 实现。
如何下载固件?下载固件的地址如何定义和选择?
- esp8266运行的构成你得明白,它是: 乐鑫esp8266ex芯片 + 一个flash高速芯片 + 晶振 !所以esp8266ex芯片是从flash高速芯片获取代码并且运行的,所以我们就有了烧录时候的每个固件地址的选择!而esp8266ex芯片加载其主程序运行有2种方式,第一种是从固定的地址开始读(我们称为非 OTA 方式),第二种就是从二选一的一个地址读取,我们称之为 ota 方式!
- 针对2.0版本所有自己编译出来的工程,都是有四个文件要烧录的,其中2个是必须烧录的(防止初始化失败),这2个文件分别是 esp_init_data_default.bin 和 blank.bin;
- 针对3.0版本,后面我会补充,他的下载方式是完全不一样的!
编辑器提示找不到头文件或者某些变量咋办?
- 提出这个问题,说明你是新手,对编译过程不懂。 编辑器只是辅导代码开发,提高代码开发速度,提示错误与否与编译没直接关系。只要可以编译通过即可! eclipse看console为主,而 vscode看终端输出即可!
烧录固件应该在硬件设计注意什么?
- 首先供电电压在3.3v,500ma左右,不能太低,否则启动不起来!
- 其次,注意 gpio15 gpio0 和gpio2的电平,烧录模式应该是gpio15拉低 gpio0拉低 和gpio2拉高,但是有些厂商的模块里面的gpio2是拉高的,所以我们在买模块设计电路的时候,也不用自己拉高。但是为了保险起见,我建议电路设计烧录时候上gpio15拉低 gpio0拉低 和gpio2拉高!而正常启动应该是:gpio15拉低 gpio0拉高 和gpio2拉高!
运行的机制相关问题。
- wifi连接以及配网使用问题相关问题。
- smartConfig配网和airkiss配网有啥不一样?如何实现二者同时配网?
这个问题的根源是在于不懂配网的流程是怎么样的才会这样提问,其2者都是空中配网,其实原理是嗅探技术sniff实现的,esp8266来空中抓802.2 SNAP 数据包,然后根据双方的协议剖析数据包得到要连接的路由器账号和密码:具体的技术实现 。
说到这里,如何解决一个程序的配网模式既然支持官网的 smartConfig 又支持 airkiss 呢?只要在 配网开始时候,传进参数为 :SC_TYPE_ESPTOUCH_AIRKISS;在 2.0 的sdk是调用 smartconfig_set_type() 方法 ,而 在 3.0 Rtos 的方法是 esp_smartconfig_set_type() 。
具体请下此方法的参数要求!
基本外设情况使用相关问题。
rots3.0版本的串口打印为什么在友善串口软件等串口调试工具会有部分乱码?
其然,这个 乱码只是在我们的友善串口软件等串口调试工具解析不到而已,它原本是颜色代码的字符,如果你是用乐鑫自带的串口软件,或者我群里提供的 带颜色输出的软件,就没乱码了!
esp8266的串口有多少组?
esp8266一共有2组串口,串口0组是我们最常见的使用的,我们下载固件就是用这组。而串口1组的rxd被flash通讯占用,意味着只能用 txd脚(对应gpio2)功能,所以一般的,我们用串口0通讯
esp8266的2.0版本(包括nonos和rtos)的按键驱动有么?
好的客官,传送门在此 ,还包含红外感应等驱动;
esp8266的3.0 esp-idf 版本的按键驱动有么?
肯定有,私聊我;过几天就给大家了带来一篇文章!
与服务器连接问题。
- NONOS的MQTT例子为什么修改宏定义不起效?
这个问题我在2017年时候开始也是琢磨了好久,之后我反复看说明,其中有一个宏定义是什么加载配置。每次修改这个配置文件,都要必须改一下才起效。具体修改哪个宏定义,自己去我的博客看,文章最下面有这个说明!! 这个宏定义加一或者减一,那么此次修改才生效!切记!!!