ESP32 S2 使用CircuitPython的开发步骤-Arduino中文社区 - Powered by Discuz! Archiver

topdog 发表于 2021-2-21 22:41

ESP32 S2 使用CircuitPython的开发步骤

本帖最后由 topdog 于 2021-2-22 19:42 编辑

以ESP32-S2-WROVER 为实例,ESP32-S2-WROVER-I 配置了 4 MB SPI flash 和 2 MB SPI PSRAM。
固件下载的地址:https://circuitpython.org/board/espressif_saola_1_wrover/页面有两个下载链接:.bin是从串口UART0烧录以后连接USB CDC就是USB串行设备模式,而.uf2需要先从串口UART0烧录adafruit的tinyuf2,再把.uf2文件复制到连接USB CDC的挂载盘中,重启后和前者一样。



第一:下载Flash Download Tools、tinyuf2、CircuitPython 库文件和安装esptool
1,到乐鑫官网下载烧录工具Flash Download Tools,下载地址:https://www.espressif.com/sites/default/files/tools/flash_download_tool_v3.8.5.zip

2,tinyuf2的下载地址:https://github.com/adafruit/tinyuf2/releases ,本例是针对WROVER的:https://github.com/adafruit/tinyuf2/releases/download/0.3.0/tinyuf2-espressif_saola_1_wrover-0.3.0.zip

3,CircuitPython 库文件 https://circuitpython.org/libraries ,mpy和py版本的都可以用,前者用于片上加载,后者方便阅读查看。

4,电脑已经安装了python 3.7和pip3,按WIN+R键,输入cmd

5,输入:pip3 install --upgrade esptool

第二:用esptool烧录.bin
1,esptool安装好后的路径是c:\users\xxx\appdata\roaming\python\python37\scripts\,把下载好的文件adafruit-circuitpython-espressif_saola_1_wrover-en_US-6.1.0.bin 复制黏贴到文件夹下。
2,把串口UART0接入电脑,查看一下串口编号,本例是COM6
3,全片擦除,输入:
cd c:\users\xxx\appdata\roaming\python\python37\scripts\

esptool.py --port COM6 erase_flash

4,烧录.bin固件:
esptool.py -p COM6 write_flash 0x0 adafruit-circuitpython-espressif_saola_1_wrover-en_US-6.1.0.bin等烧录结束,把USB CDC接入电脑就可以看到挂载的盘符了。

第三:Flash Download Tool烧录tinyuf2
1,按照步骤2.2和2.3操作。
2,把步骤1.2下载的tinyuf2解压到C盘下,然后按照下图配置Flash Download Tool并且烧录。
4 MB SPI flash版本的地址分配如下:
bootloader.bin      0x1000
partition-table.bin   0x8000
ota_data_initial.bin0xe000
tinyuf2.bin               0x2d0000

其他版本的查看https://github.com/adafruit/tinyuf2/tree/master/ports/esp32s2 里面对应的partitions.csv文件。



5,把.uf2文件复制到连接USB CDC的挂载盘中,重启。


第四:使用Thonny IDE编译程序点亮板载的w2812

1,解压adafruit-circuitpython-bundle-6.x-mpy-20210220和adafruit-circuitpython-bundle-py-20210220。

2,CircuitPython已经支持neopixel,把库文件里面的adafruit-circuitpython-bundle-6.x-mpy-20210220里面的neopixel.mpy,复制黏贴到挂载盘符的lib文件夹里面。

3,然后将盘符里面的code.py修改如下:

# -*- coding: utf-8 -*-

import time
import board
import neopixel

pixel_pin = board.NEOPIXEL
num_pixels = 1

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)


def wheel(pos):
    # Input a value 0 to 255 to get a color value.
    # The colours are a transition r - g - b - back to r.
    if pos < 0 or pos > 255:
      return (0, 0, 0)
    if pos < 85:
      return (255 - pos * 3, pos * 3, 0)
    if pos < 170:
      pos -= 85
      return (0, 255 - pos * 3, pos * 3)
    pos -= 170
    return (pos * 3, 0, 255 - pos * 3)


def color_chase(color, wait):
    for i in range(num_pixels):
      pixels = color
      time.sleep(wait)
      pixels.show()
    time.sleep(0.5)
RED = (255, 0, 0)
YELLOW = (255, 150, 0)
GREEN = (0, 255, 0)
CYAN = (0, 255, 255)
BLUE = (0, 0, 255)
PURPLE = (180, 0, 255)

while True:
    pixels.fill(RED)
    pixels.show()
    # Increase or decrease to change the speed of the solid color change.
    time.sleep(1)
    pixels.fill(GREEN)
    pixels.show()
    time.sleep(1)
    pixels.fill(BLUE)
    pixels.show()
    time.sleep(1)

    color_chase(RED, 0.1)# Increase the number to slow down the color chase
    color_chase(YELLOW, 0.1)
    color_chase(GREEN, 0.1)
    color_chase(CYAN, 0.1)
    color_chase(BLUE, 0.1)
    color_chase(PURPLE, 0.1)
   




页: [1]
查看完整版本: ESP32 S2 使用CircuitPython的开发步骤