ESP32 初探与编程语言选择

前不久买了 ESP32 的开发板,其实购买的想法早在两年前就有了,不过当时的资料实在太少价格虚高日常缺货就迟迟没有动手。直到这几天想要用 ESP32 做一些小应用的时候才正式拔草,相比较当时,现在的社区环境已经好得多了。
其实顺便也有购买 ESP8266 模块(ESP-01s型:不同型号的介绍)这个玩的人很多,且01s型只有两个 GPIO 没什么好讲的,就不在这里做太多的研究了。

可用的开发语言

在快递到达之前,我已经开始在做 ESP32 的开发准备了;不能不提的是,ESP32 并没有官方的 IDE,也没有类似 MDK 这类大牌 IDE 的支持。想要做相关开发的话,有下面几种方案可以选择,下面的超链接指向官其方的入门安装文档

Native C,官方提供的方案,可以选择裸机或者 FreeRTOS 进行开发;
Arduino,官方支持,使用 Arduino IDE 即可进行开发;
Python 固件,第三方支持,使用 MicroPython 进行开发;
nodemcu 固件,社区支持,使用 Lua 进行开发;
Espruino 固件,社区支持,使用 JavaScript 进行开发;

AT、透传,官方提供,纯粹的浪费之选,why not ESP8266 呢。
机智云、安信可,第三方固件,没什么了解但应该也是用 C语言进行开发的。

还有一些不常见的开发平台可供选择,没有去仔细研究,但应该不会差 : )

https://mongoose-os.com 一个支持 ESP32,ESP8266,STM32 的系统, JavaScript或C开发
https://www.zephyrproject.org 一个类似 Linux 的嵌入式系统

开发语言的选择

在官方的解决方案中,编译会用到的 make 环境也在 Windows 下难以实施,所以想要在 Windows 下做开发的话就一定要有一个 GNU 兼容环境才行。不过官方的文档其实写的并不好,会遇到很多额外的问题(所以我没有成功配置它的开发环境),官方中文, Sphinx 实现,(这里以目前最新的 V3.3 ESP-IDF 为例)
https://docs.espressif.com/projects/esp-idf/zh_CN/v3.3/get-started/index.html
补充:工具链中 msys2 的包管理是 pacman,一些软件包需要自己安装

作为一个事实上的 SoC,ESP32 却总是有种 MCU 的感觉,C 语言可能会更适合一些。但如果不想去了解 FreeRTOS 的函数的话,Python 和 Lua 也绝对不会是差的选择。

ESP-IDF 中也提供了一些类似 WiFi BT 或者 HTTP 这种常用的库和头文件,官方称之为组件。想要用 C 去开发的话建议先去看看这个手册,里面详细介绍了使用 ESP32 开发一个智能插座的过程。 https://docs.espressif.com/projects/esp-jumpstart/zh_CN/latest/introduction.html

使用{undefined}语言进行开发

模块到货了。
接下来,我希望用 ESP32 做一个 网易云音乐播放器;
需要用到 I²S 的 DAC 模块,SPI 的存储卡,也会有各式各样的 HTTP 请求和 MP3解码任务,在模拟登录的时候会遇到一些数据加密的问题。为了减少代码量减少错误率,得找个有大量库可以调用的语言才行。简单看了看,预计会使用 Arduino 或者 MicroPython,目前正在上手研究中。

如果我选择 Arduino

完善的社区,强的没话说,要什么有什么
一篇安装介绍文章:
https://www.arduino.cn/forum.php?mod=viewthread&tid=82589
其他相关的讨论也很多,就不贴了。

如果我选择 MicroPython

关于 MicroPython 开发的一篇快速入门指南:
https://zhuanlan.zhihu.com/p/55366938

uPyCraft (MicroPython IDE)介绍:
https://dfrobot.gitbooks.io/upycraft_cn/content/1.1%20MicroPython%E7%AE%80%E4%BB%8B.html

另外值得一提的是,这个模块在 24M 主频的时候,5V供电下静态电流有0.04A,而一旦有网络访问,立即飙升到0.12A(0.6W)对供电的要求很高,如果想用干电池供电的话,或许会有点麻烦

Posted in 用爱摸鱼, 电子垃圾

发表评论

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