如何在Raspbian OS中执行micropython程序?

How to execute a micropython program in Raspbian OS?

提问人:Vilius Žalėnas 提问时间:11/9/2023 最后编辑:journpyVilius Žalėnas 更新时间:11/11/2023 访问量:56

问:

我对微控制器和嵌入式系统有大致的了解,但我对 Raspberry pi 完全陌生。我有一个任务需要相当快的GPIO操作,所以从我所做的研究来看,Micropython可以带来比普通Python更多的好处。

我用 micropython 编写了一个 sub-10 行 led 眨眼程序,用于学习和实验(给它加上一个 .mpy 扩展名),但我面临着一个问题,下一步该做什么,如何执行它?

import machine
led = machine.Pin(21,machine.Pin.OUT)
while True:
    led.high()
    led.low()

据我所知,您不能像常规 Python 脚本那样在 Raspberry Pi 终端中编写“python3 ledblink.py”。我试图在谷歌上搜索它很长一段时间,但我找到的所有内容要么是 ESP 的,要么是 Pico 的 micropython 教程。我需要一份从文本文件到执行的详细指南,了解如何在 Raspberry pi 终端上运行 micropython 文件(我正在运行 3B+ 模型)。我已经按照本指南安装了我的 micropython:https://snapcraft.io/install/micropython/raspbian

Python 树莓派 Raspbian MicroPython

评论

0赞 AKX 11/9/2023
如果您需要紧凑的计时和快速的GPIO操作,那么Raspberry Pi(运行Linux的真实计算机,非实时操作系统)可能不是您想要的。
0赞 AKX 11/9/2023
(另外,我不认为 Micropython 的 UNIX 端口会具有开箱即用的 GPIO 功能......
0赞 Vilius Žalėnas 11/9/2023
不要被我的项目的想法分心,关于 micropython 的主要话题仍然存在
1赞 AKX 11/9/2023
AttributeError: 'module' object has no attribute 'Pin'– 是的,正如我在第二条评论中假设的那样,Micropython 的 UNIX 端口不知道 Pins(因为没有通用的 UNIX 机器有“pins”,而且它不是 Raspberry Pi 端口)。
1赞 Sam Mason 11/9/2023
正如@AKX所说,带有 Raspbian 的 Raspberry PI 不是微控制器。它有一个完整的(基于Linux的)操作系统。micropython 用于嵌入式设备(如微控制器),它有效地充当设备的“操作系统”。您尝试使用错误的工具进行作业,只需使用操作系统中包含的普通 Python 和适当的包即可

答:

2赞 AKX 11/9/2023 #1

正如评论中所讨论的:MicroPython 适用于微控制器,而不是真正的 Linux 机器,例如 Raspberry Pi 3+。它确实有一个 UNIX 端口(您已经安装了),这对于尝试一些东西很有用,但至关重要的是,它不支持 GPIO 引脚,因为它只是一个通用的 UNIX 端口(并非所有通用 UNIX 机器都有 GPIO 引脚)。

但是,您的 Raspbian 附带了常规 Python 和 RPi.GPIO 库。

这应该大致等同于您的 MicroPython 代码:

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.OUT)
try:
    while True:
        GPIO.output(21, GPIO.HIGH)
        GPIO.output(21, GPIO.LOW)
finally:
    GPIO.cleanup()

您可以将其放在一个文件中并使用 .python3 something.py

如前所述,如果您的目标是测试 GPIO 速度,那么您可以使用例如 pigpio 和 C 代码。