ESP32用Arduino开发环境搭建

要开发ESP32用Arduino,目前官网颇为安静,包括上一代的ESP8266

而再国外已经打得火热,在国内一搜,都还是用超级复杂的办法搭建,用git搬运库复制到ArduinoIDE的方法。

太麻烦了,于是乎上github找esp32

找到这个链接存放最新的东西

https://github.com/espressif/arduino-esp32/releases/tag/1.0.1

接着看到有json文件(https://github.com/espressif/arduino-esp32/releases/download/1.0.1/package_esp32_dev_index.json),是的,用来供IDE下载的

于是复制链接到首选项填写,接着在开发板选项中就可以搜索到ESP32了

有一个dev版本和一个普通版本,我猜应该是预览版跟稳定版的意思

然后等待自动安装…(这个过程应该得科学上网)

然后成功!

 

Arduino遇到的各种坑

因为工作的原因2018年开始接触 Arduino 这个平台。我对这个平台亦褒亦贬,褒的是简单、开源、形成生态,快速开发、敏捷开发在不少行业将会是绝对的优势。这几年整个电子行业有往这个方向发展得趋势。贬的是为了极度的照顾新手,做了太复杂的封装,造成部分实际的问题没有解决,硬件细节上往往面对新的硬件容易碰壁。生态做大了容易累赘,大量重复的库出现。但总之是个不错的平台,在嵌入式从业几年的我以极快的速度入手。

下文准备以累积添加的形式不停的补充 Arduino 中的各种坑,望后人留步。:)

 

  • Atmel Mega 328 或者 168 新芯片的问题,估计作为普通 Arduino 用户遇到不多,但是如果你用 Arduino 来做产品,那么你肯定会遇到:就是关于新芯片烧熔丝的问题。新手可能会从上古的教科书读到烧熔丝是不可逆的,其实我目前对于328/168 还是存在疑惑,为什么他的烧熔丝是可逆的?只是挂名烧熔丝?作为嵌入式软件工程师出身的我,不是很想太深入这个问题,我们解决问题就好。

首先,我是从以下这两篇文章学习的:

https://www.arduino.cn/forum.php?mod=viewthread&tid=77400&highlight=%E7%86%94%E4%B8%9D

这是一个牛逼的专门说AVR熔丝的网站:

http://www.engbedded.com/fusecalc

然后,还需要的是烧写软件:

链接:https://pan.baidu.com/s/1yO7gsiCYzLC_n1B4–Mmcg
提取码:9l23

然后烧写熔丝其实每一个选项都有特定的功能。

我们如果要烧写成日常使用的nano:

那些可以不用一个一个慢慢勾选,直接填入  FF DA FD 即可,入下图:

 

  • 之前在 Mega2560 的中断部分代码,移过来 ProMini 居然不能用。搜了一圈才发现,Mega 下面 attachInterrupt 函数,其中的 Pin (第一个参数)得给赋予引脚图上的编号( IDE 编号),而 ProMini 应该给的是中断编号,比如 0 和 1(它只有两个中断,不是写 2 和 3)

 

  • ESP8266是一个优秀的 wifi+mcu 模组。核心是乐鑫公司制作的,模组主流的有安可信公司制作。国内好像不温不火,可是在远洋火的不可开交。刚拿到手还以为只是一个普通的 wifi + mcu,由安信可提供一个以 Eclipse 为 IDE 的高度内部定制的模组。渐渐做功课才发现错了,这个可以用 lua 脚本语言之间运行。最让人兴奋的是还有 Arduino 平台。

因为产品使用到也是很流行的传感器 CCS811 TVOC&CO2 检测传感器,同样也是国内很少看到有人使用。亦或者搭配其他 mcu 平台使用,Arduino 也有但就是没有到运行不到 5 分钟就出现奔溃段错误的情况。因此差点想为此换了平台,最后发现只是 ESP8266 的开发板库不太健全。主要原因是 I2C 的延迟内到库内部去调整,如下:

Windows 的话是在这个位置(Mac & Linux 类同,随着版本更新可能改变部分路径):

C:\Users\Jangel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\cores\esp8266\core_esp8266_i2s.c

大概在74行,修改 twi_setClockStretchLimit(230) 为twi_setClockStretchLimit(460),然后解决问题。