在platformio自动上传esp8266固件

先说结论:

不想每次上传固件的时候手工点按钮,修改这个文件:C:\Users\你的登录名.platformio\platforms\espressif8266\builder\main.py

在319行UPLOADERFLAGS=中间增加2行:

“–before”, “default_reset”,

“–after”, “hard_reset”,

最终实现的效果就是,只要点击PlatformIO:upload 那个小箭头就可以自动上传固件,不再需要手工按按钮。

前言:

最近想研究一下单片机,先是学习51单片机,把江科大自化协的51课程全部看完了。但51简单是简单,就是不太实用,离实际应用有点脱节。然后又看工科男孙老师的视频,他说ESP32是yyds。所以也不用学STM32了,直接就上ESP32。ESP32开发的就没有很好的视频课程了,至少我没有找到。但终于还是对着源代码,把所有的模块基本上都过了一遍,现在就想做一个实际的应用。

第一个项目用ESP8266-01s的原因是它足够简单,只有2个IO口引出,IO0用来输入,IO2用来输出,适合初学者。因为学ESP32的源代码用的是microPython,所以ESP8266这个项目本来也想用的,但是microPython有点上手以后发现,它无法编译固件(或者是我没找到方法,要么方法很麻烦)。这样的话,代码就是用源代码的形式存储在FLASH中的,虽然我本来也是初学者,代码也不值钱。但是总觉得有点不爽。而且microPython的资源也不够丰富。比如想找一个ESP8266的自动配网smartConfig的microPython源码,很不好找。据说是ESP8266本身底层就没有microPython这个库。

所以最终还是要回arduino,用的是arduino 1.8.9,但是这个编辑器用起来很不爽。百度了一番,最终选择了VSCode+PlatformIO,这下写代码终于安逸了。

但是PlatformIO也有点不爽,每次上传固件都要自己手工按键。先关电,再按prog+开关上电,然后松掉prog,再点PlatformIO:upload 那个小箭头。不爽,很不爽。

实现过程:

突然想到之前用arduino的时候,它就可以自动上传不需要我手工按键呀。然后我打开arduino上传了一下,找到命令行:C:\Users\你的登录名\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2/tools/upload.py –chip esp8266 –port COM5 –baud 115200 –before default_reset –after hard_reset write_flash 0x0 C:\Users\你的登录名\AppData\Local\Temp\arduino_build_97171/Blink.ino.bin,其中的关键参数:–before default_reset –after hard_reset

本来想在platformio.ini也写上相应的配置,但是很不幸没找到。所以就只能更改命令行参数了。根据platformio上传提示中的Looking for upload port…,在C:\Users\你的登录名.platformio目录下面查找,找到一个疑似文件:C:\Users\你的登录名.platformio\platforms\espressif8266\builder\main.py,然后在文件中用关键字esp8266查找,找到代码段UPLOADERFLAGS,然后尝试增加关键参数,在platformio上传。

上传一次成功,强迫症舒适,爽了。

END.