ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石。。。
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷
一、你如果想学基于Arduino的ESP8266开发技术
一、基础篇
二、网络篇
- ESP8266开发之旅 网络篇① 认识一下Arduino Core For ESP8266
- ESP8266开发之旅 网络篇② ESP8266 工作模式与ESP8266WiFi库
- ESP8266开发之旅 网络篇③ Soft-AP——ESP8266WiFiAP库的使用
- ESP8266开发之旅 网络篇④ Station——ESP8266WiFiSTA库的使用
- ESP8266开发之旅 网络篇⑤ Scan WiFi——ESP8266WiFiScan库的使用
- ESP8266开发之旅 网络篇⑥ ESP8266WiFiGeneric——基础库
- ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client
- ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网
- ESP8266开发之旅 网络篇⑨ HttpClient——ESP8266HTTPClient库的使用
- ESP8266开发之旅 网络篇⑩ UDP服务
- ESP8266开发之旅 网络篇⑪ WebServer——ESP8266WebServer库的使用
- ESP8266开发之旅 网络篇⑫ 域名服务——ESP8266mDNS库
- ESP8266开发之旅 网络篇⑬ SPIFFS——ESP8266 Flash文件系统
- ESP8266开发之旅 网络篇⑭ web配网
- ESP8266开发之旅 网络篇⑮ 真正的域名服务——DNSServer
- ESP8266开发之旅 网络篇⑯ 无线更新——OTA固件更新
三、应用篇
四、高级篇
俗话说,工欲善其事必先利其器。基于Arduino平台开发ESP8266,我们至少要分别准备好硬件和软件开发环境:
1. 硬件
ESP8266模块,或者ESP8266开发板,笔者建议初学者直接使用开发板;
2. 软件
Arduino IDE开发环境;
1. 硬件
硬件环境主要分为两种:
1. ESP8266开发板 + USB线
笔者建议入门初学者直接入手一块开发板,开发板的一个好处就是板子设计者已经给初学者排查了硬件连接错误,可以使初学者专注于软件开发,加快学习进度。目前比较火的一款ESP8266开发板就是NodeMcu,其核心芯片是ESP8266-12F,如下图所示(图片引用自安信可官网):
不过,笔者本书也使用了另外一款开发板——ESP202测试板,其核心芯片也是ESP8266-12F,如下图所示:
笔者选择它的理由很简单——既有NodeMcu的功能,又可以作为ESP8266-01系列模组的烧写器,这样就不用手动搭建ESP01的烧写环境。
2. ESP8266模块 + USB转TTL线
如果WiFi模块是ESP8266-01系列,首先请看一下以下引脚接口说明:
引脚编号 | 引脚定义 | 引脚描述 |
---|---|---|
1 | TX | 1)UART_TX发送端;2)通用IO口:GPIO1; |
2 | GND | GND |
3 | CH_PD | 1)高电平工作;2)低电平模块供电关掉; |
4 | GPIO2 | 开机上电时必须为高电平,禁止硬件下拉,内部默认已拉高; |
5 | GPIO16 | 外部Reset信号,低电平复位,高电平工作(默认应该是高电平); |
6 | GPIO0 | 接地进入烧录固件模式,悬空为正常运行模式; |
7 | VCC | 3.3V(切记不要供5V!!!) |
8 | RX | 1)UART_RX接收端;2)通用IO口:GPIO3; |
其余引脚悬空即可。 从引脚介绍表可以看出,关键引脚GPIO0决定了模块当前处于什么工作模式。
烧录固件模式
请按照下图连接ESP8266-01和USB转TTL线,进入烧录模式:
如果WiFi模块是ESP8266-12系列,按照下图对应引脚接线:
温馨提示
- 从Arduino IDE角度来看,ESP8266工作模式包括:
1.烧录固件模式
下载代码的时候,需要将GPIO0口接地;
2.正常工作模式
下载完代码,需要将GPIO0口悬空;
有电路经验的读者可以安装拨码开关来切换工作模式。 - 注意ESP8266安全工作电压是3.3V,不要直接连接5v;
- 手动切换工作模式之后,最好重新启动一下ESP8266模块(通断电);
- 有时ESP8266下载失败,有可能是供电问题,可以尝试独立供电,不直接连到TTL Vcc;
- 烧录固件,我们需要了解的是,我们的固件是以下哪一种:AT固件、自己编写的SDK固件(基于ESP8266 SDK开发或者Lua)以及本书基于Arduino平台开发的ESP8266固件(笔者成为 ESP8266 Arduino固件)。
2. 软件开发环境
软件安装需要分成两个步骤:
1.安装Arduino IDE
Arduino IDE开发环境主要用于Arduino Uno/Mini/Mega2560等平台的项目开发。而ESP8266也可以基于该IDE来开发, 所以我们首先需要安装它;
2.配置Arduino Core For ESP8266
Arduino Core For ESP8266可以理解为能在Arduino IDE上开发ESP8266的插件;
2.1 安装Arduino IDE
由于某些原因,Arduino官网网站(https://www.arduino.cc/en/Main/Software) 经常打不开或者下载速度极慢,导致下载IDE非常困难,读者可以通过以下两种方式下载安装:
- 笔者提供了百度网盘链接(https://pan.baidu.com/s/1QGAbBAsP4-VNQfT-bV46aA) 以供大家下载,长期有效,请注意英文大小写。
- 通过Arduino中文社区链接地址(https://www.arduino.cn/thread-5838-1-1.html) 去下载。
如果你下载的是windows安装版(exe后缀),那么直接安装即可,其他则直接解压即可使用,注意路径不要存在中文目录。笔者写本书的时候所用的Arduino IDE版本是1.8.5,启动Arduino,会出现如下图所示界面:
2.2 安装ESP8266开发环境
安装好Arduino IDE环境后,就得在它基础上配置Arduino Core For ESP8266。以window版本为例,读者可以安装以下顺序安装:
- 打开Arduino IDE->菜单项文件->首选项,然后会看到附加开发版管理器网址,填入http://arduino.esp8266.com/stable/package_esp8266com_index.json,重启IDE;
- 重启IDE之后->菜单项工具->开发板->点击开发板管理器->滚动找到ESP8266平台;
- 从下拉选项中选择你想下载的版本,点击安装,需要等待一段时间安装完毕。笔者建议下载最新的版本,笔者写本书的时候最新版本是2.4.2,后续章节都是基于这个版本来讲解。
- 安装成功的话,会可以看到下图所示。
到此,整个软件开发环境搭建完毕。
温馨提示
- 如果安装失败,一般都是因为网络问题,可以尝试多次重新安装;多次安装失败之后,可能需要翻墙;
- Arduino Core For ESP8266库版本之间是有区别,有些版本可能没有某些方法,比如笔者刚开始的时候安装了2.0.0版本,但是编译代码不通过,提示client.peekBytes方法不存在,安装最新版本完美无bug。
- Arduino IDE界面相对比较简单,笔者觉得代码提示功能、自动补全不够友好,推荐使用Visual Studio、Eclipse等更为专业的开发环境进行开发。这些第三方的开发环境都需要下载对应的Arduino插件进行配置,笔者这里就不具体讲解,有兴趣的可以自行查阅资料解决。
3. 烧录ESP8266
实验是检验真理的唯一标准,配置好硬件和软件环境之后,笔者就给读者提供一个实例代码,并且告诉读者如何配置烧录以及提及一些烧录配置注意点。
3.1实例代码
首先,请读者不用在意代码细节问题,请先拷贝如下代码到Arduino IDE,然后点击编译:
/**
* Demo:
* 测试ESP8266 demo
* 打印ESP8266模块信息
* 1.打印Arduino Core For ESP8266 版本,笔者是2.4.2版本
* 2.打印Flash的唯一性芯片id(读者可以思考一下是否可以用来做点什么唯一性参考)
* 3.打印Flash实际大小
* 4.打印IDE配置的使用Flash大小
* 5.打印IDE配置的Flash连接通信的频率
* 6.打印Flash连接模式:QIO QOUT DIO DOUT,可以理解为Flash传输速率
* @author 单片机菜鸟
* @date 2018/10/22
*/
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//使能软件看门狗的触发间隔
ESP.wdtEnable(5000);
}
void loop() {
//喂狗
ESP.wdtFeed();
FlashMode_t ideMode = ESP.getFlashChipMode();
String coreVersion = ESP.getCoreVersion();
Serial.print(F("Arduino Core For ESP8266 Version: "));
Serial.println(coreVersion);
Serial.printf("Flash real id(唯一标识符): %08X\n", ESP.getFlashChipId());
Serial.printf("Flash 实际大小: %u KBytes\n", ESP.getFlashChipRealSize()/1024);
Serial.printf("IDE配置Flash大小: %u KBytes,往往小于实际大小\n", ESP.getFlashChipSize()/1024);
Serial.printf("IDE配置Flash频率 : %u MHz\n", ESP.getFlashChipSpeed()/1000000);
Serial.printf("Flash ide mode: %s\n\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));
delay(1000);
}
代码讲解:
1.setup函数里面,主要设置了串口通信波特率115200(串口调试器的波特率需要设置成一致),同时设置了软件看门狗WatchDog的触发间隔5s(看门狗的作用就是如果不喂狗就会在触发时间到达的时候自动复位,很多);
2.在loop函数中,会不断循环执行,所以需要喂狗,然后就打印ESP8266 Arduino Core的当前版本、芯片id、flash实际大小、Arduino IDE配置Flash大小、通信频率以及flash的连接模式(这些信息都可以称为ESP8266模块的物理信息)。
温馨提示
如果以上代码编译不通过,原因一般是以下两个之一:
1.烧录配置没改成ESP8266(请看下小节讲解),当前可能是Arduino Uno、Mega等平台;
2.Arduino Core For ESP8266软件环境没有配置成功,请重新检查一遍;
3.上面例子的看门狗属于软件看门狗,作用是:如果在规定时间内不进行喂狗操作,那么系统就会在看门狗的作用下复位。默认情况下,软件看门狗是开启的,很多读者的代码运行之所以不稳定或者抛出各种异常,其中一大原因就是没有喂狗。关于这一个,笔者后面的章节会有具体讲解。
3.2 烧录配置
笔者的开发板是ESP202测试板,核心芯片是ESP8266-12F,Flash大小是4MB,Flash芯片是W25Q32,适用下图配置:
烧录代码
ESP8266进入烧录固件模式,点击上传,等待上传结果。
如果显示下图,表示上传成功。
如果显示下图,表示上传失败。
温馨提示
上传失败原因可能有以下几点,请逐一排除:
1.烧录过程还没有显示任何进度就立刻提示失败,原因如下:
- ESP8266的COM端口没选对,请确认ESP8266对应端口;
- ESP8266 Upload Speed选择不对,默认应该是115200;
- ESP8266还没有进入到烧录固件模式,重新进入烧录模式;
Flash Mode没选对,比如有些NodeMcu需要选择为DIO/DOUT,Flash Mode有如下选型:
那么它们之间的区别在哪里呢?
1)QIO , for flash that support quad r/w operation(e.g. W25Q flash芯片)
2)QOUT, for flash that support quad read operation(e.g. W25Q flash芯片)
3)DIO, for flash that support dual r/w operation(e.g. W25Q &W25X flash芯片)
4)DOUT, for flash that support dual read operation(e.g. W25Q &W25X flash芯片)
它们之间的区别可以简单理解为传输速率的区别,quad是四倍传输速率,dual是两倍传输速率。
经测试:
Winbond 25Q32B 可工作于 DIO / DOUT / QIO /QOUT (Noduino Falcon);
BergMicro 25Q32A 只可工作于 DIO / DOUT (NodeMCU V1.0 可能是 ESP-12E 接线的问题);
MXIC 25L80 (小 K mini)只可工作于 DOUT;- Flash Size大于Flash实际大小,最好改成往下兼容Flash实际大小,也就是不能大于Flash实际大小,Flash Size有多种选型,请看下图:
切记:配置时,请查阅ESP8266 选型表(笔者在第1章有讲解过)。
2.烧录过程显示一定进度就提示失败,原因如下: - ESP8266供电不稳定,请尝试独立供电;
ESP8266模块接线接触不良;
3.3 测试结果
烧录完上面测试固件之后,笔者的测试结果如下(正常情况下读者的结果也会跟笔者一样大同小异):
4. 本章总结
在这一章,笔者给读者讲解了硬件环境的配置以及Arduinio IDE环境的配置,并且提供了一个获取ESP8266物理信息的测试例子,同时也讲解了烧录固件的配置工作以及常见问题。可以这么说,这章属于配置环境基础,属于我们成功的第一步。
ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境的更多相关文章
- ESP8266开发之旅 基础篇① 走进ESP8266的世界
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 基础篇④ ESP8266与EEPROM
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 基础篇⑥ Ticker——ESP8266定时库
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 基础篇⑤ ESP8266 SPI通信和I2C通信
设备与设备之间的通信往往都伴随着总线的使用,而用得比较多的就当属于SPI总线和I2C总线,而恰巧NodeMcu也支持这两种总线通信,所以本章的主要内容就是讲解ESP8266 SPI和I2C总线 ...
- ESP8266开发之旅 网络篇⑯ 无线更新——OTA固件更新
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 进阶篇② 闲聊Arduino IDE For ESP8266烧录配置
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
随机推荐
- [Leetcode] 第309题 最佳买卖股票时机含冷冻期
一.题目描述 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 . 设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与 ...
- Android Studio [Toast]
ToastActivity.java package com.xdw.a122; import android.support.v7.app.AppCompatActivity; import and ...
- C# 时间戳的相关操作
一般的 时间戳 格式分为两种 即 10位(秒)时间戳 与 13位(毫秒)时间戳 时间戳 类型也分为两种 即 本地时间戳 与 世界统一(UTC)时间戳 废话不多说,直接上代码: 一.时间戳获取方法 // ...
- 一台机器上搭建多个redis实例的配置文件修改部分
1.单个redis服务搭建请参考:redis服务搭建 2.一台Redis服务器,分成多个节点,每个节点分配一个端口(6380,6381…),默认端口是6379. 每个节点对应一个Redis配置文件,如 ...
- Java中类加载和反射技术实例
我们知道一个对象在运行时有两种类型,一个是编译类型,一个是运行时类型.在程序运行时,往往是需要发现类和对象的真实的信息的.那么如何获的这种信息呢? 其一,如果我们在编译和运行时都知道类型的具体信息,这 ...
- 『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
0 序篇 2015年11月,Google正式发布了Tensorflow的白皮书并开源TensorFlow 0.1 版本. 2017年02月,Tensorflow正式发布了1.0.0版本,同时也标志 ...
- Idea插件之IdeTalk
前言 随着越来越多的公司与Java工程师,逐步从Eclipse过度到Idea,安装相应的插件可能会成倍的增加工作效率. IDETalk是由JetBrains的工程师开发的一款代码级的协同工具,主要是为 ...
- ZK集群的Leader选举源码阅读
前言 ZooKeeper对Zab协议的实现有自己的主备模型,即Leader和learner(Observer + Follower),有如下几种情况需要进行领导者的选举工作 情形1: 集群在启动的过程 ...
- Salesforce学习之路-developer篇(三)利用Visualforce Page实现页面的动态刷新案例学习
Visualforce是一个Web开发框架,允许开发人员构建可以在Lightning平台上本地托管的自定义用户界面.其框架包含:前端的界面设计,使用的类似于HTML的标记语言:以及后端的控制器,使用类 ...
- ping本地局域网
#!/bin/bash for i in `seq 1 254` do ping -c 1 192.168.192.$i > /dev/null if [ $? -eq 0 ];then ech ...