Arduino开发环境配置

系统:Windows 11 Arduino:1.8.19

在线配置[1]

  1. 添加IDE中的json链接
  • 配置URL网址到Arduino IDE
  • 打开Arduino IDE,点击File->Preferences,如下图所示:

image.png

  • 在新打开的界面中,点击如下图红色圆圈中的按钮

image.png

image.png

  • 点击【OK】→更新板卡
  1. 下载主控的核心
  • 打开Tools->Board:->Boards Manager…,如下图所示:

image.png

  • Boards Manager会自动更新板卡,如下图所示:

image.png

  • 更新完成后,您可以在上方输入esp32,出现如下情况时选择esp32点击安装即可(当前安装为2.0.0版本):

image.png

  • 等待如下进度条结束:

image.png

  • 安装完成后,列表会显示已经安装esp32主板,如下图所示:

image.png

  1. 选择开发板以及串口
  • 点击Tools->Board:,选择ESP32C3 Dev Module(通常在列表第一个)

image.png

  • 在开始前您还需要配置如下设置(当您选择 Disabled 时,串口为RX(20)、TX(21),如果您需要通过USB在Arduino监视器上打印,您需要选择Enable)

image.png

  • 点击Port选择对应的串口(如果串口不停的出现,然后消失,请将引脚9连接GND,重新上电;后续程序下载成功后,需要将引脚9和GND断开,否则程序不运行)

image.png

  1. 拼人品的时候到了,你可能会发现下载十分慢,且很大概率下载到一半就失败。而且甚至连开发板的json文件都获取失败,在开发板管理器中,无法搜索到esp32。那么这时候我们就需要离线下载

    离线配置

  2. 先下载好esp32开发板json文件。步骤和【在线配置】相同,注意将json链接换成[2]:https://www.arduino.cn/package_esp32_index.json

image.png

  1. 然后下载各个ESP32开发板包,开发板工具包。下载完成后将json文件移动至【C:\Users\你的用户名\AppData\Local\Arduino15】;

image.png
将esp32开发板包和开发板工具包移动至【C:\Users\你的用户名\AppData\Local\Arduino15\staging\packages】,没有这一个文件夹请自行新建。
image.png

  • package_esp32_index.json;esp32-版本号.zip;esptool-版本号-操作系统.文件格式三个文件在 Arduino core for the ESP32 项目地址可下载到;项目地址:https://github.com/espressif/arduino-esp32

Beetle ESP32-C3 - 图15

  • mkspiffs-版本号-arduino-esp32-操作系统.文件格式;xtensa-esp32-elf-操作系统-版本号.文件格式可以从package_esp32_index.json 文件中获得,注意对应的操作系统和版本号,下载最新的;

Beetle ESP32-C3 - 图16

  1. 最后开始安装开发板数据包【Arduino IDE→开发板→开发板管理器→ESP32→安装】

Beetle ESP32-C3 - 图17

Blink with Wi-Fi (CircuitPython)

ESP32 是一款出色且非常流行的处理器,用于许多应用上都在使用。
对于支持Wi-Fi的板,如 ESP32,Web 工作流程允许使用 Web 浏览器通过本地网络连接到运行 CircuitPython 的开发板。现在很容易使用 REPL 或使用浏览器上传/下载文件!
本文介绍了如何在Beetle ESP32-C3上启动和运行 CircuitPython Web 工作流程。

安装CircuitPython

  1. 下载固件

从CircuitPython网站上查找对应的固件链接[4]

  1. 固件安装

一般CircuitPython固件安装可以直接将.UF2文件拖到文件夹里,可以直接加载程序.bin文件(比如Raspberry Pico)。不过有些开发板没有拖放到文件夹选项。这时候Web Serial ESPTool就是个不错的工具。

  1. 启动Web Serial

必须使用基于Chrome或Chromium的浏览器)才能正常工作。例如,Edge 和 Opera 是 Chromium。不支持 Safari 和 Firefox 等——它们还没有实现 Web Serial功能
启用Serial API非常简单。 在 Chrome 中访问chrome://flags。查找并启用实验性网络平台功能,重启 Chrome。
image.png

  1. 在使用该工具之前,您需要将开发板置于引导加载程序模式并进行连接。

image.png

  • 对于Beetle ESP32-C3开发板来说,将Beetle ESP32-C3的引脚9连接GND,然后通过USB线连接电脑。
  • 按网络浏览器右上角的连接按钮。您将得到一个弹出窗口,要求您选择 COM 或串行端口。查找名称中带有 ESP32、JTAG Loader、SLAB 或 FTDI 的内容。

请记住,您应该移除所有其他 USB 设备,以便仅连接目标板,这样就不会混淆多个端口!
在某些系统(例如 MacOS)上,列表中可能会显示其他系统端口。
image.png

  • Javascript 代码现在将尝试连接到 ROM 引导加载程序。它可能会超时一段时间,直到它成功。成功后,您将看到它已连接,并将打印出一个唯一的 MAC 地址,用于标识该板以及检测到的其他信息。

Beetle ESP32-C3 - 图21

  • 成功连接后,将出现命令工具栏。

image.png

  1. 擦除功能
  • 如果您想擦除整个闪存区域以便可以从头开始,您可以使用擦除功能。如果您遇到问题,我们建议您这样做。
  • 要擦除内容,请单击擦除按钮。系统将提示您是否要继续。单击“确定”继续,或者如果您改变主意,只需单击“取消”。

image.png

  • 您将看到“正在擦除闪存。请稍候…”这最终将显示“已完成”。以及擦除所需的时间。
  • 不要断开连接!立即继续对 ESP 微控制器进行编程。image.png
  1. 固件下载
  • 单击【Choose a file…】。它只会尝试使用文件和唯一位置对按钮进行编程。然后选择 .bin 文件 - 而不是 UF2 文件!
  • 确定您使用的文件位置旁边的Offset框是否为0x0。

image.png

  • 选择文件后,然后选择【Program】按钮下载固件。

image.png

  • 将出现一个进度条,一两分钟后,您将成功写入固件。

image.png

Wi-Fi点灯

  1. 使用Thonny创建.env文件

首先需要安装Thonny软件,一款Python的轻量IDE。

  1. 在Thonny中,打开【工具】 ->【 选项】对话框并选择【解释器】选项卡,根据需要将解释器设置为 CircuitPython(通用) COM 端口

image.png

  1. 新建文件并输入
    1. CIRCUITPY_WIFI_SSID= 'wifissid'
    2. CIRCUITPY_WIFI_PASSWORD= 'wifipassword'
    3. CIRCUITPY_WEB_API_PASSWORD= 'webpassword'
  • wifissid - 替换为本地 wifi 网络名称
  • wifipassword - 替换为本地 wifi 网络密码
  • webpassword - 通过网络浏览器连接到开发板时使用的密码,根据自己的喜好随便设置

image.png
点击保存到【CircuitPython Device】,保存文件名为【.env】。现在 .env文件显示在 CircuitPython上。
image.png

  1. 在网页端编辑代码

image.png
输入在 .env 文件中设置的CIRCUITPY_WEB_API_PASSWORD密码,将用户名留空。

  • 在【Welcome!】页面,单击serial terminal链接以访问串行输出以及用于输入命令的 REPL。可以在底部的输入字段中输入命令。 结果将显示在上方并向上滚动。

image.png

  • 在【Welcome!】页面,单击file browser链接以访问文件和文件夹。

image.png

  • 在将code.py的内容替换以下代码: ```python import time import board from digitalio import DigitalInOut, Direction

led = DigitalInOut(board.D10) led.direction = Direction.OUTPUT

while True: led.value = True time.sleep(1) led.value = False time.sleep(1)

  1. 确保没有缩进错误等。然后单击“Save”按钮。此时代码应该正在运行并且Beetle板开始闪烁啦。 在实际运行之前点击“保存”按钮后可能会有一小段延迟。(注意哦是修改code.py程序)
  2. <a name="yBfuD"></a>
  3. # Measure with Encoder (MicroPython)
  4. 旋转编码器是一种特殊类型的开关,它将开关的运动(顺时针或逆时针)转换为输出信号,可用于确定旋钮旋转的方向。与仅能旋转约3/4 圈的电位器相比,旋转编码器能够连续旋转 !<br />旋转编码器最适合使用位置变化而不是精确位置的情况。应用广泛,例如**手动音量**控制或汽车音响调节等。<br />本文中使用**机械电刷式增量旋转编码器**。它有三个引脚:**A**、**C **和** B**。**C **是 **A** **B** 的公共地。**A** **B** 是信号引脚。当您旋转旋钮时,A B 会与公共接地引脚接触,具体顺序取决于您旋转旋钮的方向。当每个引脚与公共地接触时,它们会产生一个信号。当一个引脚在另一个引脚之前连接时,这些信号彼此异相(正交编码)。我们需要检测这些引脚及其脉冲方式,从而确定方向和步数。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/32469417/1662607690521-a2099014-355e-471e-af12-c649926a1215.png#clientId=uf1af53a7-8e0a-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ua1546cae&margin=%5Bobject%20Object%5D&name=image.png&originHeight=465&originWidth=648&originalType=url&ratio=1&rotation=0&showTitle=true&size=29652&status=done&style=none&taskId=ud8dc1f94-d04c-4cda-abde-3688a8b26ab&title=%E6%AD%A3%E4%BA%A4%E8%BE%93%E5%87%BA%E8%A1%A8 "正交输出表")<br />顺时针旋转时,首先连接 A 引脚,然后连接 B 引脚。逆时针旋转时,B 引脚先连接,然后 A 引脚连接。通过跟踪每个引脚何时连接和断开接地,我们可以使用信号变化来确定旋钮旋转的方向。它们更改的顺序取决于旋钮的旋转方向。从而我们将旋转编码器跟踪信号变化作为增量输入。(编码器详细介绍可以参见下面这篇文档)<br />[旋转编码器原理、选型及编码](https://www.yuque.com/docs/share/e8b2ecb5-50f4-41ad-b4f3-3f1ef630bb41?view=doc_embed)
  5. <a name="j9Kgr"></a>
  6. ## 硬件
  7. - 一个**旋转编码器**。(本文使用带有按钮开关的 24 脉冲机械增量式旋转编码器。它可以安装在面包板上,以便轻松连接到微控制器板。[DF商城链接:360度编码器开关](https://www.dfrobot.com.cn/goods-1421.html))
  8. - Beetle ESP32-C3**开发板**。(或其他具有 MicroPython 功能的板。[DF商城链接:Beetle ESP32-C3 (RISC-V芯片) ](https://www.dfrobot.com.cn/goods-3494.html))
  9. - USB Micro/A**数据线**。(需要一条已知良好的 USB 数据线,有时候电路板不工作,请尝试使用不同的线,因为有许多仅用于充电的 USB 电缆。[DF商城链接:高品质 micro USB数据线](https://www.dfrobot.com.cn/goods-838.html))
  10. - **面包板**和**线**。(需要这些来连接旋转编码器和开发板。[DF商城链接:面包板](https://www.dfrobot.com.cn/search.php?keywords=%E9%9D%A2%E5%8C%85%E6%9D%BF))。
  11. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/32469417/1662626622912-6796a86e-0806-4095-b76e-7b59f4c221f8.png#clientId=ue9b16c3b-b250-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u95b06344&margin=%5Bobject%20Object%5D&name=image.png&originHeight=560&originWidth=514&originalType=url&ratio=1&rotation=0&showTitle=false&size=75851&status=done&style=none&taskId=u8f922243-5f50-4efb-9975-e861e0e2379&title=)
  12. <a name="UBPvH"></a>
  13. ## 软件
  14. <a name="mSFRe"></a>
  15. ### 环境搭建
  16. 如果是在C语言中,可以用Arduino编写代码来手动跟踪这些信号变化,并确定旋转方向和增量变化。对于本文,我们可以通过MicroPython较简便地编写程序[1]。
  17. - micropython.org 下载页面下载最新版本。
  18. - 固件下载
  19. 点击下载烧录工具<br />运行【flash_download_tool_3.9.3.exe】,选择【ESP32-C3】主控,然后将Beetle ESP32-C3的引脚9连接GND,然后通过USB线连接电脑。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/32469417/1662686976342-61758c11-0c6f-4cee-8da2-3c6025d35ce8.png#clientId=uf87edc9f-ca38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ua4522f0b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=220&originWidth=235&originalType=url&ratio=1&rotation=0&showTitle=false&size=7526&status=done&style=none&taskId=uf03b00f8-d12b-4ceb-8955-ae37f5198cd&title=)<br />选择下载的固件,擦除flash后烧录固件<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/32469417/1662686994219-d5a7bd11-b8ac-4b6a-bcbe-e61aecec7216.png#clientId=uf87edc9f-ca38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ua4ef1677&margin=%5Bobject%20Object%5D&name=image.png&originHeight=685&originWidth=440&originalType=url&ratio=1&rotation=0&showTitle=false&size=38419&status=done&style=none&taskId=uff864c77-9c1b-40be-b2f3-85569a127a3&title=)
  20. - 要访问 REPL/串行控制台,我们使用的是Thonny编辑器,它既是一个出色的 Python 编辑器。
  21. 进入软件,对解释器进行设置【Run->Configure interpreter...】<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/32469417/1662687136592-5b7e121f-0fef-4cf9-8ebb-1f5c86a246bf.png#clientId=uf87edc9f-ca38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=uf3a0101b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=512&originWidth=665&originalType=url&ratio=1&rotation=0&showTitle=false&size=32560&status=done&style=none&taskId=ubce20b25-500f-48f1-9a38-abe9c07fd8d&title=)<br />至此环境搭建完毕。
  22. <a name="Be6Lf"></a>
  23. ### 代码
  24. 首先我们导入我们需要的库machinemachine。这些都内置在MicroPython 中,不需要任何外部库文件。<br />接下来,我们创建要在我们的代码中驱动编码器。首先要定义已引脚并将其初始化。我使用的是引脚0、引脚1 引脚4
  25. ```python
  26. right = Pin(4, Pin.IN)
  27. left = Pin(1, Pin.IN)
  28. down = Pin(0, Pin.IN)

然后设置旋转标志位right_assist来识别旋转编码器何时移动,以及计旋转数变量count。
以及设置识别引脚电平状态下降沿的中断函数,其中4号引脚的下降沿作为旋转方向的判断标准,将旋转标志位right_assist置1,0号引脚的下降沿用来将计数count清零:

  1. def right_handler(pin):
  2. global right_assist
  3. right.irq(handler=None)
  4. right_assist = 1
  5. def down_handler(pin):
  6. down.irq(handler=None)
  7. count = 0
  8. print("down",count)
  9. down.irq(trigger = Pin.IRQ_FALLING, handler=down_handler)
  10. right.irq(trigger = Pin.IRQ_FALLING, handler=right_handler)
  11. down.irq(trigger = Pin.IRQ_FALLING, handler=down_handler)

最后进入循环中,不停判断旋转标志位right_assist的值,并将计数count的值输出到终端里。

  1. from machine import Pin,ADC
  2. import utime
  3. #Define pins and their initialization
  4. right = Pin(4, Pin.IN)
  5. left = Pin(1, Pin.IN)
  6. down = Pin(0, Pin.IN)
  7. right_assist = 0
  8. count = 0 #Rotate the value of the encoder
  9. def right_handler(pin):
  10. global right_assist
  11. right.irq(handler=None)
  12. right_assist = 1
  13. def down_handler(pin):
  14. global count
  15. down.irq(handler=None)
  16. count = 0
  17. print("down",count)
  18. down.irq(trigger = Pin.IRQ_FALLING, handler=down_handler)
  19. right.irq(trigger = Pin.IRQ_FALLING, handler=right_handler)
  20. down.irq(trigger = Pin.IRQ_FALLING, handler=down_handler)
  21. while True :
  22. if (right_assist == 1 ):
  23. if (left.value() == 1 ):
  24. count = count - 1
  25. print("left", count)
  26. elif (left.value() == 0 ):
  27. count = count + 1
  28. print("right", count)
  29. while (left.value() == 0 ) | (right.value() == 0):
  30. utime.sleep_ms(1)
  31. right_assist = 0
  32. right.irq(trigger= Pin.IRQ_FALLING, handler=right_handler)

参考

  1. DFROBOT:Beetle ESP32 C3简介
  2. Arduino IDE 离线添加开发板
  3. Arduino core for the ESP32 安装失败问题处理方法
  4. CircuitPython on ESP32 Quick Start
  5. DF论坛:用小小的滚轮,丈量你周围的“天下”
  6. Adafruit:Rotary Encoder in CircuitPython Overview
  7. [活动]【免费试用】Beetle ESP32-C3试用
  8. FIREBEETLE BOARD-ESP32用户使用手册V0.1
  9. MicroPython 玩转硬件:串口小实验
  10. 基于ESP32-S2模块的物联网/音频信号处理平台
  11. 启明云端分享:esp32c3阿里云连接测试步骤