Arduino IDE for ESP8266教程

By | 2015年12月26日

ESP8266是现在性价比不错的Wifi模块,用了一块ESP8266-01之后感觉还行,用在数据采集器上表现还是不错的,后来看到官方出了SDK,可以用SDK修改模块的相关功能,还可以控制IO脚,在尝试了官方SDK后感觉上手略困难,没有文字教学(只有视频教学,习惯看文字教学的很苦恼,毕竟文字教学可以先大致浏览一下有什么API,相关测试代码,自己选择喜欢的功能把玩一遍之后再决定要不要入坑等等),源码没注释,烧写程序设置指示不清楚(一直没搞清楚那些hex文件对应的地址该怎么选择),基本没法快速入门。

之后找到了NodeMcu,NodeMcu是基于ESP8266-12E的一款硬件,编程语言使用lua脚本,不得不说这个比官方SDK好很多了,官网上有在线API手册以及示例源码,固件的烧写也很傻瓜,而且烧写完成之后,后续的编程完全不需要再进行烧写,全部都是在线将脚本写入并运行。在尝试了一些例程之后打算入坑,接着找了个DHT22的例程放进去,之后就傻眼了,读取数据基本就是得头几个是正确的,之后就直接错乱了,在测试了几个github上的程序都无解之后就放弃了……

最后以外的发现了Arduino IDE for ESP8266(Github:https://github.com/esp8266/Arduino),这个是基于Arduino的ESP8266的Broad库,对我来说至少能不通过太大的学习成本使用ESP8266也是件好事。

在它的Github项目页上有安装教程,利用了Arduino 1.6.5的新特性进行在线安装(1.6.4也有,但感觉不如1.6.5好用,github上是使用1.6.5进行配置的)。

1、打开Arduino,选择“首选项”,在“附加开发板管理器网址”中填入http://arduino.esp8266.com/stable/package_esp8266com_index.json,然后点击确定保存这个地址。

2、打开工具->开发板->开发板管理器

3、等待开发板管理器启动完成后,移动到开发板管理器的最下方,可以看到一个esp8266 by esp8266 Community,右下角有个选择版本,选好2.0.0之后点击安装,因为是连接到github上下载(国内可能会被墙,这是下载好的文件http://pan.baidu.com/s/1sjRFe6h,覆盖掉首选项里边那个配置文件的文件夹即可,比如我的路径是C:\Users\Administrator\AppData\Local\Arduino15\preferences.txt,那需要解压出来覆盖掉C:\Users\Administrator\AppData\Local\Arduino15这个文件夹,覆盖之后可能需要重新设定arduino库的地址,因为preferences.txt里边包含有项目的地址)。(新版ESP8266 for Arduino IDE v2.3.0下载地址:http://pan.baidu.com/s/1mh50myG  建议配合Arduino IDE 1.8.3使用)

安装Board支持包

安装Board支持包,安装完成后的样子,会显示2.0.0 INSTALLED

 

首选项设置,红线中的是Arduino15存放的地点

首选项设置,在开发板管理器中(Addtional Boards Manager URLs)填入ESP8266的配置地址,红线中的是Arduino15存放的地点

4、下载完成之后可以在开发板选项中看到ESP8266 Module,一般开发就是用Generic ESP8266 Module就行了其它的设置默认。有的板的Flash大小会有差别,具体可以查找板上的Flash芯片型号确定。如果找不到芯片型号可以用例程中的ESP8266->CheckFlashConfig来确定

选择开发板

选择Generic ESP8266 Module就行了,有的板的Flash大小会有差别,具体可以查找板上的Flash芯片型号确定。如果找不到芯片型号可以用例程中的ESP8266->CheckFlashConfig来确定,选择Flash大小小于板上Flash的大小就行,不确定可以先选择512k。

这样子就算是配置完成了,由于本身就是直接烧写8266的Flash,所以并不需要烧写bootloader。

然后就可以测试示例代码了。

可以试试ESP8266WebServer下的AdvancedWebServer,这是一个Web服务器,可以显示由MCU构建的SVG图像,需要修改ssid和password变量为自家的wifi的参数,烧写方式和ESP8266普通的烧写方式是一样的,GPIO0拉低进入烧写模式,给板子复位过后选择下载程序,等下载完毕之后就可以运行了,其实这里有个bug,下载完成之后可以不用拉高GPIO0就会直接运行刚刚下载的程序了。

运行程序之后会打印8266的IP。

查看获得的IP

查看获得的IP

我们只需要用浏览器打开这个IP就可以看到8266输出的内容了。

ESP8266例程输出

ESP8266例程输出

之后会继续写关于ESP8266相关库的教程。敬请期待。

预计接下来会挖的坑有:ESP8266 HTTP路由、FS文件系统

Arduino IDE for ESP8266系列教程:

Arduino IDE for ESP8266教程(二)软AP以及一些网络相关的设置

Arduino IDE for ESP8266教程(三)HTTP客户端

Arduino IDE for ESP8266教程(四)路由系统

Arduino IDE for ESP8266教程(五)文件系统

本文链接地址:http://blog.windworkshop.net/?p=758 »文章允许转载 ,转载请注明出处,谢谢。

Arduino IDE for ESP8266教程” 的评论

  1. iovejrj

    请问,esp8266的模块是怎么连接到电脑上的,USB转TTL的模块吗?

    回复
    1. 当风过时 文章作者

      嗯,USB转TTL,最好用5v转3.3v降压模块供电,不少的USB转TTL的3.3v供电不足,我手头上的CH340的模块都用不了,只有CP2102的勉强能用。

      回复
      1. iovejrj

        你好,我的arduinoIDE的编程器选项里没有esptool,我贸然使用AVRISP mkII进行写入,虽然上传成功了,结果串口里显示的都是Fatal exception ,请问这是因为编程器的问题吗?以及可以把你的programmers.txt文件给我分享一下吗

        回复
        1. 当风过时 文章作者

          不需要选择编程器,因为给8266编程的是串口,出错的问题可以先给8266烧写NodeMCU最新的固件,烧写成功之后在用Arduino IDE烧写自己的程序,新买的板子确实有的没法直接用Arduino IDE进行烧写,如果烧写不成功的话就去除排除一下GPIO0有没有拉低,复位的时候在串口管理器里边有没有输出一行乱码。programmers.txt我没有动过……因为和给8266烧写程序没有什么关系

          回复
          1. iovejrj

            我的是烧写上了,运行时串口里返回的都是fatal exception 和错误地址,用的都是示例里的程序也不行,不管烧写运行哪个程序结果都是一样的

          2. iovejrj

            不好意思,试了好久还是没有搞成,串口里显示的是,
            Fatal exception (0):
            epc1=0x40218d6c, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
            始终重复,一直往下刷新,请问这是什么意思呢?

          3. 当风过时 文章作者

            我遇到过这种情况就是在使用SmartConfig的时候撞见的,当时解决的办法是在工具中更改一下Flash Size为512K(no SPIFFS),烧写一次示例中的程序,烧写完成之后再修改为512K(64K SPIFFS)再烧写一次就解决了,如果烧写回之前的程序继续出现那个错误的话就只能说那个程序没法使用。我测试SmartConfig几次都失败就放弃了。

          4. 九天揽月

            请教楼主,你说的先给8266烧写NodeMCU的最新固件,是怎么烧录,在arduinoIDE中烧录么,还是其他的,有没有具体点儿的?

          5. 当风过时 文章作者

            烧写NodeMCU固件是在某些硬件上没法通过ArduinoIDE直接烧写的情况下才使用的,详细烧写办法可以参考网上的相关的NodeMCU的固件烧写教程,比如http://blog.csdn.net/tianzhong123/article/details/50754872;很多时候买来的新的ESP8266模块直接通过ArduinoIDE编程就行了

  2. 小石头

    请教博主,有没有研究过for 8266 arduino IDE下加看门狗?如果8266死机了怎么恢复

    回复
    1. 当风过时 文章作者

      有一个叫Ticker(TickerScheduler)的组件可用,但是只是软件层面的计时器而已,检测到变量不对的时候软件重启就行,需要硬件看门狗的话还是使用外部的看门狗吧。

      回复
  3. cyj

    求教怎么接线烧写。求图片!!!!!大家都用过esp8266机智云那个板子吗?

    回复
  4. 朱德宽

    你好,我的esp8266烧录后,显示 AdvancedWebServer.cpp.bin to flash at 0x00000000
    ……………………………………………………………………………………………………………………………………………………………………………………………………………………………..,串口里打印的也一直是……….
    请问为什么一直连不上WiFi?

    回复
  5. 李仁龙

    请问下http://arduino.esp8266.com/stable/package_esp8266com_index.json这个网址下载报错什么原因啊。

    回复
  6. 小冯

    我想让ESP8266作为一个服务器,手机连接到这个服务器,然后打开这个服务器地址的网页,在网上控制一些十六进制数组通过串口输出,不知道可行吗?本人只会点单片机,不知道这个怎么实现的?

    回复
    1. 当风过时 文章作者

      最大的问题就是在是否有公网ip了,如果只是在家中使用的话直接浏览器打开8266的ip即可,如果打算走外网访问会家中就需要家里的网络能获取得到外网ip,然后路由器设置端口转发。打算弄的话最好再学习一下html知识,方便做出称心的网页来。

      回复
      1. 小冯

        首先谢谢您的回复。再说下我的想法,我是想做一个WIFI串口工具,就是通过WIFI发送十六进制到8266,通过8266的串口输出到DB9接口,不知道有没有这方面的资料?

        回复
        1. 当风过时 文章作者

          这个大致上是可以实现的,但是要做完一整套功能需要额外学习不少只是,关键还是要熟练使用html和相关组件,这个比较一言难尽只能靠你自己去学习了,硬件部分懂单片机的话从8266上开个软串口接到转接DB9的转换器上就可以了。

          回复
          1. 小冯

            嗯,是需要学习html知识才好办,以前都没有接触过网页编程,现在需要就只能一点一点学习了。谢谢回复!!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据