初试Arduino IDE for ESP32

By | 2017年5月8日

最早接触到ESP32这个玩意是在去年准备发布硬件消息的时候,当时在官方群里边看到配置引起了不小的反响,双核,240MHz的CPU,520k RAM, 16M Flash,支持wifi和蓝牙,可以说性能提升非常多,当时群里边有人让去给乐鑫投票,说投票第一批就免费寄一片ESP32,当时就心动了,投票截屏并把地址发给统计的人之后到现在量产了,出相关的开发板了,但是当年说的那片ESP32却一点消息都没有……

既然现在量产了,价格也还在接受范围内,于是就直接淘宝入了对应的开发,来试试传说中的ESP32。

这次的Arduino IDE for ESP32是由乐鑫官方出品,而不像之前是由第三方移植完成。老样子,按照惯例先搭建环境。

首先要注意的是建议使用最新的Arduino IDE,我一直用着的1.6.5已经不支持新版的安装方式了,于是装了最新的1.8.5。

这次不是通过之前的板管理来进行安装,而是通过官方封装的Python工具进行安装,还好官方教程还算做得比较全面,各个系统都有对应的安装方式,我这里就以Windows为准来配置环境。

首先是clone官方的git项目,我懒得用git clone了,直接Download ZIP了之。下载之后将文件解压到默认的Arduino路径下,位置通常为:C:/Users/[用户名]/Documents/Arduino/hardware/espressif/esp32,大致上路径如图:QQ截图20170508225102

 

在这个目录下进入tools文件夹,双击get.exe然后就等着下载完成,建议通过命令提示符来打开,因为可以清楚的知道到底有没有安装成功,双机的话不管成功还是失败窗口都会消失,由于在这里似乎很容易卡着,并且卡住了就只能删除整个目录重新将zip解压好,我这里按照惯例提供配置好的度盘的下载地址:http://pan.baidu.com/s/1kU6jlbh。配置好之后tools文件夹应该是长这样:(多了一个xtensa-esp32-elf文件夹,官方的教程是多了这个,但是我的不知道为什么多了点别的东西,不管了,反正能用)

QQ截图20170508225041

准备好环境之后启动Arduino IDE就可以看到ESP32 Arduino了,这里随便选择一个ESP32 Dev Module,剩下的配置全默认,编译一个空的工程,可以看到编译的信息:

QQ截图20170508224159

RAM预留有280k比8266要多得多了。

然后来看看例程

未标题-2

大体上是提供了基本的wifi和蓝牙功能,还有Arduino Ethernet形式的简易服务端及客户端功能。总的来说可以满足一些常见的需求,但是和已经成熟的8266比起来还有一段很长的路子要走。

然后就来随便测试几个看看吧。首先把硬件连上,我入手的是和NodeMcu差不多外观的Goouuu ESP32,需要安装CP2102的驱动,已经安装过的打开串口监视器就可以看到返回的信息了:

init-esp32

这是官方自带固件的自检输出,好像哪里不对,SPI Flash Size:4MB 喵喵喵???说好的16M呢,估计应该是最大支持16M吧……

姑且先随手编译上传一下看看吧。不过这看着有点可怕啊,毕竟选择开发板里边可没有给我选择Flash Size的地方,还是等官方改进吧,目前至少还能烧写。

烧写的方式和ESP8266相似,板子上的BOOT键就是GPIO0,烧写前按住BOOT,再按一次RST就可以进入烧写模式了,这时可以松开BOOT等待烧写进去了,这个是我的做法,官方的方法是一只按住BOOT键直到烧写完成(官方不使用RST估计是因为板载的CP2102已经提供的RST信号)。不过不管哪种方法,一直都有烧写失败的可能性,估计是默认的961200写入波特率太高导致写入的校验失败。

随手烧写例程中的WiFiScan,能正常搜索到附近的WiFi:

测试ESP32搜索wifi功能

然后烧写个WiFiClient,打算试试看连接wifi的功能是否正常,结果不知道是什么原因,不停的出错,尝试多次未果,遂放弃,自己单独拿连接wifi的代码出来,能成功烧写进去并且正确运行连接到了wifi上,而且连接速度比起8266要快不少:

测试ESP32连接wifi的功能

#include <WiFi.h>
 
const char* ssid     = "";
const char* password = "";
void setup()
{
    Serial.begin(115200);
    delay(10);
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}
void loop() {
 
}

最后尝试了一下蓝牙功能,烧写了SimpleBleDevice的例程,但是手机没有搜索到设定的蓝牙设备,所以没法验证这个功能。

从项目的创立到现在已经有9个月有余,不过个人对官方的一直进度和效率表示担忧,毕竟还要好多bug需要修正,最后只能期待官方能早日赶上ESP8266的进度吧。

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

发表评论

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

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