在本教程中,我将向您介绍Pico:ed和Smart Cutebot ,并提供一些有关CircuitPython的提示。这些产品由ELECFREAKS制造,ELECFREAKS 是一家生产和销售 STEM 电子套件的公司。我们将使用这两个对象一起使用 CircuitPython 编程语言制作一个用于教育目的的微型机器人。
Pico:ed 是一个小型开发板(他的形状总是让我想起吃豆人幽灵!)(部分)与最著名的Micro:bit兼容,但具有RaspberryPI RP2040作为微控制器单元 ( MCU )。
你会注意到我部分地使用了这个词:你知道我喜欢准确,所以这个词到期了。
起初我已经在 Pico:ed 上写了一个不同的 MCU:RP2040(双核 Cortex-M0+ @133MHz,2MB 闪存可扩展,265kB RAM )而不是 Nordic nRF51822(Cortex-M0 @16MHz,256kB闪存,16kB RAM )所以,从数字上看,Pico:ed 上使用的 MCU 更强大。在 Micro:bit 上使用 Microsoft Makecode:这允许图形化的类似 Scratch 的环境、Python 或 Javascript。在 Pico:ed 上,我们可以使用常见的 RP2040 Python分支(MicroPython或CircuitPython )或C++ 。
CircuitPython 是最佳选择,因为 ELECFREAKS 和 Adafruit 用我们需要的所有库制作了 CircuitPython 固件。到 Micro:bit。这些功能是 IMU(惯性测量单元)和蓝牙无线电。
个人考虑很少:Micro:bit 上的蓝牙是使用的 MCU 的一个功能,因为 Nordic nRF51822 是用嵌入式蓝牙模块构建的。如果您需要这些功能,请考虑始终可以使用外部板添加 IMU 或无线电模块。
另一方面,Pico:ed 拥有 Micro:bit 没有的其他很酷的东西。Micro:bit 上的 LED 矩阵显示器是使用 5x5 (25) 个 LED 制成的,而在 RP2040 兄弟上,我们有一个 7x17 (119) LED 矩阵,使用更小(更密集)的 LED;此外,这些 LED 由 IS31FL3731 IC 驱动,它可以独立地对每个 LED 进行 PWM:这将带来更准确和可读的滚动文本和动画以及灰度图像!最后,在 Pico:ed 上,我们还有一个很酷的蜂鸣器来制作声音和音乐。
底部的边缘连接器采用 Micro:bit 外形,因此该板与大多数 Micro:bit 板兼容。
Smart Cutebot 是一个采用经典配置的微型机器人平台:带有后枢轴点(投球器)的差动驱动。该平台旨在与 Micro:bit 或 Pico:ed 配对,用于制作非常适合儿童和教育目的的小型机器人(或仅用于学习如何在实际应用程序中使用 Python - 实际上你不会需要像孩子一样玩这些东西!)。
Cutebot 的特点是:
Cutebot 已经组装好,您只需将微控制器板插入插槽、超声波传感器和电池座。当我在 Instagram 上发布这个机器人的帖子时,一些人联系我说已经安装好的威廉希尔官方网站 板在组装阶段并没有带来乐趣。是的,这是一个正确的观点,但考虑到整个机器人的重量约为 120 克(包括电池和微控制器板)并且适合一只手。
为了达到这个体积,机器人是使用 SMD 组件制造的,并且不容易在家中或学校组装(还考虑到由于不正确的操作而导致的故障)。最后一个特点:Cutebot 真的很安静!移动时几乎听不到。
首先,您必须在 Pico:ed 板上上传CircuitPython 解释器。拿起 Pico:ed 并按住Bootsel按钮。Bootsel 按钮是板背面微型 USB 连接器左侧的按钮:
在按住该按钮的同时,使用 USB 电缆将威廉希尔官方网站 板连接到计算机:等待几秒钟,必须出现一个名为RPI-RP2的新存储单元。
奖励信息这是所有 Raspberry Pi RP2040 开发板的工作方式。使用 Python 分支和 C++ 对其进行编程的唯一区别在于,对于 Python,您仅在第一次上传 Python 解释器,然后您可以将源代码(其中许多)作为 .py 文件(不在本 RPI-RP2 单元中)上传但另一个 circuitpython 解释器将创建),而在 C++ 中编程时,您将编译代码以获得要在引导加载程序模式下上传的.uf2文件(C/C++ 是一种编译语言)。
现在您必须上传 CircuitPython 解释器。您可以从 CircuitPython 官方网站下载。这是链接。
奖励信息使用这个用于 Pico:ed 的官方 Adafruit Circuitpython 解释器,你不需要上传库来使用一些功能,例如 led 驱动器 IS31FL3731,或者蜂鸣器,例如:包括这个特定板所需的一切。这些功能称为FrozenModules :它们是已嵌入 CircuitPython 解释器的库。包含的模块有:adafruit_is31fl3731、adafruit_motor、adafruit_ticks、asyncio、elecfreaks_music、neopixel、picoed
下载.uf2文件后,您只需将该文件拖放到计算机上的RPI-RPI2存储单元上。等待几秒钟:RPI-RPI2单元将消失,一个名为CIRCUITPY的新单元将出现。
在启动时(我的意思是不按 bootsel 按钮),您在引导加载程序模式下上传的.uf2开始:在这种情况下将是 CircuitPython 解释器,它将使威廉希尔官方网站 板作为 CIRCUITPY 单元可见:在这里您可以上传具有.py扩展名。CircuitPython 解释器启动后,它将搜索一个特定的命名文件(我们稍后会看到)以使其启动,否则它什么都不做。
现在您可以开始用 Circuitpython 语言编写代码并将它们上传到板上。
即使您可以使用简单的文本编辑器(Python 程序是简单的文本文件)执行此操作,然后使用拖放操作上传文件,也开发了更强大的工具来以安全的方式执行此操作,避免损坏文件的内容闪存(记住不安全的存储单元删除会损坏代码)并使用称为REPL (读取评估打印循环)的功能,该功能允许您从命令行进行一些调试和启动程序。
我说过你可以将你的.py文件上传到创建的内存存储单元上,但是文件不会在开机时自动执行。如果你想让程序在给威廉希尔官方网站 板供电时自动启动,你必须将其命名为code.txt或code.py或main.py或main.txt - 这是确切的优先顺序。如果您放置一个名为code.py的文件和另一个名为main.py的文件,则只有code.py会自动启动。如果您将文件命名为与此不同,您可以使用 REPL 功能启动它(我们很快就会看到),因此这个平台对于在同一块板上存储许多软件实验和调试非常有用。
我喜欢使用Thonny IDE :它可能是最常用于 Python / Python 分支的,我喜欢它的工作方式(另一个类似的编辑器是Mu。Mu是 Adafruit 的建议)。
下载Thonny(我在上面放的链接是Github Release page——在那里你可以下载一个不需要安装的便携版本,无论如何你也可以去Thonny官方页面),安装/启动它;现在我们将进行一些快速设置以使其与我们的 Pico:ed 一起使用。
单击工具/选项:
单击Interpreter并从下面的列表中选择CircuitPython (generic) ,然后按 OK:
现在使文件和外壳窗口可见,因为这些功能对于向开发板上传/下载文件以及与 REPL 交互非常有用。单击“查看”菜单,然后选择“文件”和“外壳”:
棘手的设置都完成了!
为确保 Pico:ed 已连接到 Thonny,shell 窗口中必须出现与此类似的文字(连接威廉希尔官方网站 板并按下Thonny 上的停止按钮):
如果显示一些错误,请转到本教程中的故障排除段落。
shell中的那3个>>>是REPL的提示符,等待命令或者准备写东西
出色地。即使我们上传的 CircuitPython 解释器是为使用所有 Pico:ed 功能而制作的,现在我们必须上传使用 Cutebot 功能所需的库(用于驱动电机、使用超声波传感器等)。
我说过我们已经有一些FrozenModules,是的:这对特定的板有效。Smart Cutebot 是连接到 Pico:ed 的附件板,因此没有冻结的模块,因此我们必须手动添加它们。
从此链接下载 cutebot 库(它是一个名为cutebot.py 的文件)。
该链接将从所在的 Github 存储库以 zip 格式下载库,并且始终是最新上传的。该库的 Github 存储库位于此链接。
如果我们也想使用红外遥控功能(注意:包装中不包含红外遥控),我们还可以从此链接下载 Adafruit Circuitpython红外遥控库。
让我们解压缩文件,我们从下载中需要的唯一文件称为cutebot.py和adafruit_irremote.py:将它们复制到计算机或外部驱动器上的文件夹中,以便您可以在接下来的段落中快速找到它们。
我们必须将这 2 个文件上传到 Pico:ed 上一个名为lib的特殊文件夹中,我们的代码中将在该文件夹中导入库。
从 Thonny 右键单击 circuitpythondevice窗口并选择NewDirectory
在下一个窗口中写入lib ,然后按OK 。现在双击lib文件夹,这样您现在就位于 Pico:ed 上的该文件夹中。
从上面显示计算机内容的窗口(文件)中,搜索放置cutebot.py和adafruit_irremote.py的文件夹,选择它们并单击鼠标右键。选择上传到/lib
等待几秒钟以允许上传。现在您将在CircuitPython 设备窗口中看到这些库。现在您可以退出设备上的lib文件夹以返回根目录,以便您可以在此处保存您的程序:只需单击CircuitPython 设备写入。
我们上传的这两个库是单个文件库。会发生其他库由文件夹中的更多文件组成的情况:在这种情况下,您将上传整个文件夹,因此/lib文件夹中会有子文件夹。
出色地。一切就绪。让我们编写一个简单的程序上传到 Pico:ed,看看是否一切正常。
在 Thonny 上单击文件,然后单击新建。将出现一个空的编辑器窗口。复制并粘贴此代码:
from picoed import display
while True:
display.scroll("HACKSTER.IO")
按播放按钮:
由于这个文件是新的,没有保存,Thonny 会要求您保存它,因此会出现一个窗口询问保存位置:如果在计算机上或在 CircuitPython 设备上,我们将按 che CircuitPythonDevice按钮。
然后你必须输入一个名字:write scroll.py然后ok
该程序将开始在 LED 矩阵上显示HACKSTER.IO 的文字。
很简单,不是吗?
我们可以在不启动文件的情况下按“保存”按钮来保存文件。让我们指出一些事情: - 一个非常常见的错误是没有将.py扩展名放在文件的末尾:即使按下播放按钮文件无论如何都会被执行,编辑器中的语法突出显示将不起作用。 -如果你想让文件在开机时自动启动,你必须像我上面说的那样调用它:例如code.py或main.py,在所有其他情况下你可以让程序在你编写后按下 Thonny 的播放按钮开始或者在编辑器中加载(双击.py文件)
出色地。现在是组装 Cutebot 的时候了。
这里有几件事要做:
插入超声波传感器。前面有一个 4x2 母接头(机器人的前面是两个 RGB LED 所在的位置。超声波传感器接头必须插入最前面的孔中:
将自粘胶带贴在电池座背面
将电池座连接器连接到机器人中心的插座中,在电机之间穿过电缆,然后将电池座粘在电机外壳上,注意与 Pico:ed 插槽保持间隙:最好对齐电池座的中心如图所示带轮轴:
确保 ON/OFF 开关处于最右边的位置 (OFF),然后将 3 节 AAA 电池(不包含在供货范围内)放入电池座中。
将 Pico:ed 插入其面向前面 LED 矩阵的插槽中
组装完成!让我们编写第一个程序来测试 linefollower
在 ELECFREAKS wiki 上,有一个将 Smart Cutebot 与 Pico:ed 结合使用的分步教程。每节课都教如何每次使用一个元素。我建议您先按照他们的教程进行操作,然后尝试下面的 Line Follower 示例。
我编写了自己的巡线器程序,试图将 Pico:ed 和 Cutebot 的大部分功能放入其中:我在前面使用了蜂鸣器、点阵显示器和 RGB LED。
这个巡线程序以这种方式工作:
您可以在我的 Cutebot Github 存储库中下载我的示例,请点击此处。
以下是一些注意事项和提示:
有时您会注意到 Thonny IDE 卡住了,找不到显示错误消息的开发板。在这种情况下,您必须尝试(从第一件事到最后):
在其他情况下,您会看到 main.py 不会执行:当代码中存在错误导致 python 解释器卡住导致无限循环时,就会发生这种情况。在这种情况下,将威廉希尔官方网站 板连接到计算机,打开 thonny,加载程序并按播放按钮执行程序,以便您可以在终端窗口中读取错误。
在其他情况下,您只是将文件命名为与main.py或code.py不同的名称,但无论如何您都希望它在开机时自启动:它不能!
非常常见的编程错误:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !