1155浏览
查看: 1155|回复: 5

[ESP8266/ESP32] Beetle ESP32-C3的CircuitPython入门课

[复制链接]
本帖最后由 忙碌的死龙 于 2023-6-2 12:17 编辑

前言

很高兴有机会参加本次试用活动。这是一个宝贵的机会,我将尽心尽力,准备充分,并以专业和客观的态度完成评测任务,期待在本次评测中做出有益的贡献。


开发板简介

本次试用的Beetle ESP32-C3 是一款基于 ESP32-C3 芯片的微型开发板,支持 Wi-Fi 和蓝牙连接,适用于物联网应用和原型设计。它具有小尺寸、丰富的引脚和多种电源选项,可通过 Arduino IDE、MicroPython 或 CircuitPython 进行编程和开发。它是一个功能强大、易于使用的开发板,适合构建各种连接的物联网设备和项目。
开发板实物照片如下图:
Beetle ESP32-C3的CircuitPython入门课图3


开发语言选择

由于个人时间安排问题,本次项目开发时间有限,我选择使用CircuitPython开发本次项目。
选择CircuitPython有几个原因。首先,它提供了易于使用和学习的编程语言,对于我来说是一个有利的因素。其次,CircuitPython提供了丰富的库和模块,涵盖了各种硬件和外设的驱动,使得与硬件的交互变得更加简单和高效。这对于项目的快速原型设计和开发非常重要。CircuitPython的高效开发和调试环境可以帮助我更快地实现项目的核心功能。同时,CircuitPython社区也提供了丰富的文档和示例代码,可以作为参考和学习的资源。
尽管使用CircuitPython可能在某些方面有一些限制,但考虑到我的时间限制和个人技能,它是我能够快速交付项目的最佳选择。


通过CircuitPython官网快速烧录固件

CircuitPython提供了非常方便的web安装和配置方式,可以让用户轻松完成固件烧录和web开发环境的使用。以下为步骤描述。
   1. 将你的Beetle ESP32-C3连接到电脑(保持短接IO9和GND后再插入USB),IO9接地上电,设备会进入ISP下载模式,否则无法烧录设备。一定要短接IO9和GND后,再插入USB,否则无法进入ISP下载模式。

Beetle ESP32-C3的CircuitPython入门课图18

   2. 打开你的浏览器并访问 Adafruit CircuitPython 的官方网站提供的beetle-esp32-c3固件地址(https://circuitpython.org/board/beetle-esp32-c3/)。

   3. 在该下载页面上,点击带魔法棒图标的 OPEN INSTALLER 的按钮。

Beetle ESP32-C3的CircuitPython入门课图6

  4. 在弹出界面选择第一个蓝色的链接Full CircuitPython 8.1.0 Install,然后在新窗口选择Next按钮(只是提醒该web烧录工具可能不稳定,不需要管)

Beetle ESP32-C3的CircuitPython入门课图11
Beetle ESP32-C3的CircuitPython入门课图14

  5. 在新窗口选择Connect按钮,选择正确的串口,点Next,然后会弹出一个警告,提示你烧录固件会遗失所有数据,不用管,选择Continue按钮继续。

Beetle ESP32-C3的CircuitPython入门课图5
Beetle ESP32-C3的CircuitPython入门课图2

  6. 然后就会自动下载固件,下载完成后就自动烧录到flash了。烧录完毕后会弹出新窗口提示烧录完成,烧录完成点击close按钮即可。

Beetle ESP32-C3的CircuitPython入门课图4

Beetle ESP32-C3的CircuitPython入门课图7

Beetle ESP32-C3的CircuitPython入门课图1

配置wifi信息和登录密码(web编辑器用)

  • 接下来把开发板的USB线拔出,断开电源,然后重新插入USB(不需要短接IO9和GND)。让设备重新上电启动(板子上没带rst按钮,重新插拔简单一些)。重新上电后,开发板上的蓝色LED会短暂亮起两次,这是cpy开机和运行用户代码的led提示灯。
  • 再次点击OPEN INSTALLER 的按钮,这次我们选择第三个蓝色的链接Update WiFi credentials,更新wifi信息和web登陆配置。在信息页面同样选Next,然后在下一个页面选择串口设备后点击Next。



Beetle ESP32-C3的CircuitPython入门课图15
  3. 然后在新的窗口填写2.4G wifi的名称和密码(2.4G,2.4G,2.4G 重要的事情说三遍),最后填写web编辑器的登陆密码,上传代码和库需要用到(重要,必须记住,忘记了可以用同样步骤重新设置一遍wifi信息)。端口保持80端口即可,不需要修改,填完选Next继续。

Beetle ESP32-C3的CircuitPython入门课图17

  4. 然后页面会弹出一个窗口提示等待获取IP,成功获取到IP后,就可以通过CircuitPython.local,或者IP地址/code链接来打开web编辑页面了(建议使用后者,更稳定)。

Beetle ESP32-C3的CircuitPython入门课图13



CircuitPython的web编辑器介绍

  • 通过IP地址/code链接来打开web编辑页面,稍等一会儿(有时快有时慢),在首次登录时需要输入密码(不需要输入用户名!!!),输入密码后就可以开始使用了。如果没有关闭浏览器,重新通过链接打开编辑页面,是可以免登录直接操作的。

Beetle ESP32-C3的CircuitPython入门课图10

  2. 成功连上开发板后,会弹出开发板信息面板,关闭即可。

Beetle ESP32-C3的CircuitPython入门课图9

  3. 然后就可以开始使用web编辑器了,串口输出建议直接用web这边的,重启设备会自动重连。常见功能见下图。

Beetle ESP32-C3的CircuitPython入门课图16

  4. save-as按钮点开后,常见功能见下图

Beetle ESP32-C3的CircuitPython入门课图12



接下来,我们学习一下最简单的点灯程序

使用CircuitPython实现点灯

  • 在web编辑器打开code.py文件,详见下图



Beetle ESP32-C3的CircuitPython入门课图20


  • 然后复制以下代码,替换code.py里的所有内容,并点击save按钮

  1. import time
  2. import board
  3. import digitalio
  4. led = digitalio.DigitalInOut(board.IO10)
  5. led.direction = digitalio.Direction.OUTPUT
  6. while True:
  7.     led.value = True
  8.     print("LED on!")
  9.     time.sleep(0.5)
  10.     led.value = False
  11.     time.sleep(0.3)
  12.     print("LED off!")
复制代码
  • 然后点击Serial按钮,查看输出内容,正常情况下,开发板上的LED就开始闪烁,串口也有内容输出。

Beetle ESP32-C3的CircuitPython入门课图21

  • 代码解析 点灯代码非常简单,使用的都是cpy的内置库,所以不需要上传任何库文件。

  1. import time
  2. import board
  3. import digitalio
复制代码
首先导入time(延时),board(IO定义),digitalio(配置数字输出模式)
  1. led = digitalio.DigitalInOut(board.IO10)
  2. led.direction = digitalio.Direction.OUTPUT
复制代码
创建一个led实例,指定引脚,并配置引脚输入输出模式(目前配置为输出)
  1. while True:
  2.     led.value = True
  3.     print("LED on!")
  4.     time.sleep(0.5)
  5.     led.value = False
  6.     time.sleep(0.3)
  7.     print("LED off!")
复制代码
然后创建一个死循环,在这个循环里,不断重复给led的值赋值1和0,中间有延时和输出。 这样一个简单的点灯和输出信息的程序就写好了。


如何找到程序错误
可以通过web编辑器的串口输出功能找到错误位置,如下图,具体是什么错误需要自行分析,也有比较规范的提示,例如参数数量、参数类型错误,库找不到(需要上传到板子上),内存分配错误等等
Beetle ESP32-C3的CircuitPython入门课图8



接下来,我们学习一下如何使用CircuitPython的官方库,以及上传文件。

使用CircuitPython点屏


首先需要先到CircuitPython官网下载所有的库和案例代码。地址:(https://circuitpython.org/libraries)


打开页面后,下拉到几个长条形紫色按钮处,下载  Bundle for Version 8.x  (版本要和烧录的CircuitPython版本一致,例如烧录8.1版本,则下载8.x库),建议也把源码下载一下(可以使用源码库,也可以使用压缩后的Bundle库)。区别如下图。


Beetle ESP32-C3的CircuitPython入门课图22

解压缩后的Bundle库,重要的是lib和example两个目录,分别是官方库和案例。


Beetle ESP32-C3的CircuitPython入门课图26

然后我们打开web编辑器,按下图步骤操作

Beetle ESP32-C3的CircuitPython入门课图23

Beetle ESP32-C3的CircuitPython入门课图24

完成后的lib目录如图(imageload目录文件多,要等几秒)

Beetle ESP32-C3的CircuitPython入门课图25

然后复制以下代码到code.py,覆盖原有所有代码,并按下图将开发板和屏幕插入面包板即可点亮屏幕(效果如图)。由于C3没有PSRAM,不能加载更大的图片,只放了个小图。

Beetle ESP32-C3的CircuitPython入门课图27

  1. import board
  2. import busio
  3. import digitalio
  4. import displayio
  5. from adafruit_st7789 import ST7789
  6. import adafruit_imageload
  7. import time
  8. import pwmio
  9. displayio.release_displays()
  10. spi = busio.SPI(board.IO0, MOSI=board.IO1, MISO=board.IO10)
  11. tft_cs = board.IO5
  12. tft_dc = board.IO6
  13. pwm = pwmio.PWMOut(board.IO7)
  14. pwm.duty_cycle = 28000
  15. display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs, reset=board.IO4)
  16. display = ST7789(display_bus, width=240, height=280, colstart=0, rowstart=20)
  17. # Load the sprite sheet (bitmap)
  18. image, palette = adafruit_imageload.load("/2.png")
  19. palette.make_transparent(0)
  20. # Create a sprite (tilegrid)
  21. grid = displayio.TileGrid(image, pixel_shader=palette)
  22. # Create a Group to hold the sprite
  23. group = displayio.Group()
  24. # Add the grid to the Group
  25. group.append(grid)
  26. # Add the Group to the Display
  27. display.show(group)
  28. while True:
  29.     pass
复制代码

点亮屏幕后,也可以不显示任何内容,只使用以下代码初始化屏幕,这样CircuitPython可以在屏幕上显示错误信息和print输出内容(不建议输出太快,屏幕跟不上)


  1. import board
  2. import busio
  3. import digitalio
  4. import displayio
  5. from adafruit_st7789 import ST7789
  6. import pwmio
  7. displayio.release_displays()
  8. spi = busio.SPI(board.IO0, MOSI=board.IO1, MISO=board.IO10)
  9. tft_cs = board.IO5
  10. tft_dc = board.IO6
  11. pwm = pwmio.PWMOut(board.IO7)
  12. pwm.duty_cycle = 28000
  13. display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs, reset=board.IO4)
  14. display = ST7789(display_bus, width=240, height=280, colstart=0, rowstart=21)
复制代码



Beetle ESP32-C3的CircuitPython入门课图19



FriJune-202306024698..png
2.png

囧大大王  见习技师

发表于 2023-6-2 13:26:08

CircuitPython得封你个中国推广大使啊 点赞
回复

使用道具 举报

 学徒

发表于 2023-8-15 16:42:54

龙哥,我来了
回复

使用道具 举报

忙碌的死龙  见习技师
 楼主|

发表于 2023-8-17 10:23:20


哈哈哈
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-22 13:51:59

厉害厉害
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-22 13:53:05

赞赞赞赞赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail