ESP32入门到入土 1
开一个坑来记录一下我玩esp32的路。
我电脑的环境如下
系统:Manjrao19
Python版本:3.8.1
Shell:fish
这一篇来说一下刷固件什么的以及我踩的坑。
我基于MicroPython开发的,ArdoinoC要去学C短期玩玩开发板去重新学一门语言好累,加上C那玩意搞得我头皮发麻就没这个想法了,后来发现Python也可以写,那不何乐而不为?
我们刷MicoPython的工具叫esptool
。为了方便管理吧,我就为esp32单独开了一个venv。其实是esptool和我的一个包冲突。话不多说我么先来配置一下virtualenv的环境。
1 2 3 4 $ virtualenv esp32 $ chmod 755 esp32/bin/activate$ ./acrivate (esp32)$ pip install esptool
我来稍微解释一下以上命令的意思
第一行是说在当前目录下建立一个esp32的虚拟环境。
第二行是把启动虚拟环境的文件给予可执行权限。
第三行是启动虚拟环境,若启动成功了终端会加一个(环境名)
的前缀,就像第四行前一样。
第四行是在虚拟环境中安装esptool。
擦除Flash 如果你的ESP32刚到手上应该先去吧他的Flash擦除一下,这样才能刷如MicroPython。擦除过程非常简单,但是我搞了半天踩了坑,淦。
首先我们先去看看我们esp32用了那个串口
1 2 $ ls /dev/ttyUSB*crw-rw---- 1 root uucp 188, 0 3月 5 10:07 /dev/ttyUSB0
输出就只有一个所以很明显我的板子用的是ttyUSB0这个串口。
有了串口我们就可以真正的去擦Flash了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (esp32)$ sudo esptool.py --port /dev/ttyUSB0 erase_flash esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting..... Detecting chip type... ESP32 Chip is ESP32D0WDQ6 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None WARNING: Detected crystal freq 41.01MHz is quite different to normalized freq 40MHz. Unsupported crystal in use? Crystal is 40MHz MAC: 24:6f:28:b6:14:04 Uploading stub... Running stub... Stub running... Erasing flash (this may take a while)... Chip erase completed successfully in 9.2s Hard resetting via RTS pin...
记得命令跑起来的时候按一下板子上的boot键,我当时就没按导致一直报错。如果你的输出和我差不多那估计就擦好了。
固件刷入 固件我们首先去MicroPyhton官网 去下,我不记得在那看到有个大佬说固件貌似v1.10及以上的版本刷不进去。不知道是不是真的,我为了尽量不浪费时间就下了v1.9.4 。要是各位愿意可以去试试,要是可以记得评论和我说一下,谢谢了。
下载好我们去看看固件的存放路径,我的是~/Download/esp32-idf3-20180511-v1.9.4.bin
。
记住以后就可以开始刷了,记住把我的串口号和固件路径换成你的,烧录的时候也要按一下boot键。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 (esp32)$ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 ~/Download/esp32-idf3-20180511-v1.9.4.bin esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting........_____... Detecting chip type... ESP32 Chip is ESP32D0WDQ6 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz MAC: 24:6f:28:b6:14:04 Uploading stub... Running stub... Stub running... Changing baud rate to 460800 Changed. Configuring flash size... Auto-detected Flash size: 4MB Compressed 982832 bytes to 609724... Wrote 982832 bytes (609724 compressed) at 0x00000000 in 13.9 seconds (effective 565.0 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...
要是输出和我一样证明你固件就刷进去了。
串口交互 我使用的是picocom,这玩意是真的小小到吓到我了,就0.05MiB。我当时看到都懵逼了。
废话不多说我们先开始下载,manjaro的话pacman一下就能下,其他平台我没搞所以动动小手去百度一下就行。安装完成的话我们就可以开始与板子连接交互了!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 $ picocom /dev/ttyUSB0 -b 115200 picocom v3.1 port is : /dev/ttyUSB0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 stopbits are : 1 escape is : C-a local echo is : no noinit is : no noreset is : no hangup is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv -E imap is : omap is : emap is : crcrlf,delbs, logfile is : none initstring : none exit_after is : not set exit is : no Type [C-a] [C-h] to see available commands Terminal ready
这样输出说明恭喜你按一下Enter你就可以开始交互了!
你可以输入print(‘hello world’)来实验一下。
要是想退出的话你去按Ctrl +C
的话木大木大木大,picocom退出要按Ctrl+A
然后再按Ctrl+Q
。
问题记录
在刷入和清楚的时候记得在命令执行后按boot键(boot键是esp32的下载键)
按boot键的时机。经过我踩坑时的那么多次尝试,如果你执行命令之后不去按boot键会跑进度条,在进度条时按也是没事的,要是进度条跑慢就会报这样的错。(进度条就是Connecting那行)
1 2 3 4 5 esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting........_____....._____....._____....._____....._____....._____....._____ A fatal error occurred: Failed to connect to Espressif device: Invalid head of packet (0x55)
我感觉第二条是屁话hhh。