2025年3月24日 星期一 甲辰(龙)年 月廿三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

MicroPython之搭建开发环境

时间:03-29来源:作者:点击数:58

MicroPython是Python的一个精简版本,它是为了运行在单片机这样的性能有限的微控制器上,最小体积仅256K,运行时仅需16K内存。

MicroPython是基于Python 3.4的语法标准。因为要适应嵌入式微控制器,所以裁剪了大部分标准库,仅保留部分模块如mathsys的部分函数和类。此外,很多标准模块如jsonre等在MicroPython中变成了以u开头的ujsonure,表示针对MicroPython开发的标准库。

目前,MicroPython除了可以运行在最初开发的pyboard微控制器上外,还可以运行在大量基于ARM的嵌入式系统,如Arduino,这样我们就可以通过Python来非常方便地开发自动控制、机器人这样的应用。

本章我们介绍如何使用MicroPython开发简单的机器人应用程序。

使用MicroPython开发机器人,我们首先要搭建一个开发环境。和运行在桌面或服务器的纯软件环境不同的是,我们得有一个硬件开发环境。可以选择树莓派+Arduino控制板,但是搭建机器人需要的零件比较复杂。作为教程,我们选择乐高EV3机器人作为开发环境,因为乐高机器人搭建非常容易,并且乐高的EV3控制器是一个完整的ARM系统。

那么问题来了:如果你没有乐高EV3怎么办?

戳这里:淘宝

乐高官方提供了一个完整的EV3运行时镜像,该镜像内置了MicroPython,可以非常方便地运行Python程序。需要从乐高官网下载镜像到本地,然后写入到MicroSD卡。Windows和Mac系统可以使用Etcher写入镜像到MicroSD卡,也可以使用dd命令写入。

插入SD卡后启动EV3控制器,等待1~2分钟,启动成功后,即可选择“Wireless and Networks”连接电脑:

ev3startup

使用无线网连接需要额外的USB无线网卡,强烈推荐选择蓝牙连接,因为EV3内置了蓝牙模块。配对并连接成功后,可以在电脑上看到已连接的蓝牙设备EV3。

可以直接使用SSH登录EV3,因为这个自带MicroPython的EV3镜像是一个裁剪后的Debian Linux系统。我们用命令ssh robot@ev3dev.local登录,密码是maker

  • $ ssh robot@ev3dev.local
  • Password: *****
  • Linux ev3dev 4.14.96-ev3dev-2.3.2-ev3 #1 PREEMPT Sun Jan 27 21:27:35 CST 2019 armv5tejl
  • _____ _
  • _____ _|___ / __| | _____ __
  • / _ \ \ / / |_ \ / _` |/ _ \ \ / /
  • | __/\ V / ___) | (_| | __/\ V /
  • \___| \_/ |____/ \__,_|\___| \_/
  • Debian stretch on LEGO MINDSTORMS EV3!
  • Last login: Mon Mar 4 18:05:04 2019 from f81e::a7:c54d:4e0b:3af7%bnep0
  • robot@ev3dev:~$ ls /usr/lib/micropython/
  • README fcntl.mpy mailbox.mpy reprlib.mpy trace.mpy
  • README.rst ffilib.mpy mailcap.mpy runpy.mpy traceback.mpy
  • __future__.mpy fnmatch.mpy mimetypes.mpy sched.mpy tty.mpy
  • _libc.mpy formatter.mpy multiprocessing.mpy sdist_upip.mpy types.mpy
  • _markupbase.mpy fractions.mpy nntplib.mpy select.mpy typing.mpy
  • abc.mpy ftplib.mpy numbers.mpy selectors.mpy uaiohttpclient.mpy
  • argparse.mpy functools.mpy operator.mpy shelve.mpy uasyncio
  • base64.mpy getopt.mpy optparse.mpy shlex.mpy uasyncio.mpy
  • binascii.mpy getpass.mpy os shutil.mpy ucontextlib.mpy
  • binhex.mpy gettext.mpy pathlib.mpy signal.mpy ucurses
  • bisect.mpy glob.mpy pdb.mpy smtplib.mpy udnspkt.mpy
  • calendar.mpy gzip.mpy pickle.mpy socket.mpy umqtt
  • cgi.mpy hashlib pickletools.mpy socketserver.mpy unicodedata.mpy
  • cmd.mpy heapq.mpy pkg_resources.mpy sqlite3.mpy unittest.mpy
  • code.mpy hmac.mpy pkgutil.mpy ssl.mpy upip.mpy
  • codecs.mpy html platform.mpy stat.mpy upip_utarfile.mpy
  • codeop.mpy http poplib.mpy statistics.mpy upysh.mpy
  • collections imaplib.mpy posixpath.mpy string.mpy urequests.mpy
  • concurrent imp.mpy pprint.mpy stringprep.mpy urllib
  • contextlib.mpy importlib.mpy profile.mpy struct.mpy urllib.mpy
  • copy.mpy inspect.mpy pty.mpy subprocess.mpy utarfile.mpy
  • csv.mpy io.mpy pwd.mpy sys.mpy uu.mpy
  • curses ipaddress.mpy pyb.mpy tarfile.mpy uuid.mpy
  • datetime.mpy itertools.mpy pystone.mpy telnetlib.mpy venv.mpy
  • dbm.mpy json pystone_lowmem.mpy tempfile.mpy warnings.mpy
  • decimal.mpy keyword.mpy queue.mpy test weakref.mpy
  • difflib.mpy linecache.mpy quopri.mpy textwrap.mpy xmltok.mpy
  • email locale.mpy random.mpy threading.mpy zipfile.mpy
  • errno.mpy logging.mpy re.mpy time.mpy zlib.mpy
  • ev3dev2 machine readline.mpy timeit.mpy

/usr/lib/micropython/目录下可以看到系统自带的Python库。MicroPython并不直接运行.py文件,而是运行.mpy这个紧凑的二进制文件。

要开发EV3机器人程序,我们还需要搭建一个开发环境。Visual Studio Code是强烈推荐的开发环境,并且,乐高官方推出了一个VSCode扩展,可以方便地开发并远程调试应用程序。在VS Code的扩展中搜索lego并安装LEGO® MINDSTORMS® EV3 MicroPython扩展:

vscode-ev3

安装扩展后,我们就可以开始开发运行在EV3上的Python程序。在VS Code左侧面板选择Lego图标,选择“Create a new project”:

vscode-ev3-new-project

我们创建一个hellorobot的工程,EV3插件自动为我们创建了一个包含样板代码的main.py

  • #!/usr/bin/env pybricks-micropython
  • from pybricks import ev3brick as brick
  • from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, InfraredSensor, UltrasonicSensor, GyroSensor)
  • from pybricks.parameters import (Port, Stop, Direction, Button, Color, SoundFile, ImageFile, Align)
  • from pybricks.tools import print, wait, StopWatch
  • from pybricks.robotics import DriveBase
  • # Write your program here
  • brick.sound.beep()

首行的注释表示运行环境是MicroPython,然后自动导入了EV3所需的所有控制API。brick.sound.beep()用于控制EV3的扬声器发出一声“哔”的声音。

我们可以编写任意的Python源码文件,但执行时注意程序入口永远是main.py

在VS Code中,找到EV3DEV DEVICE BROWSER,点击ev3dev,连接后图标显示为绿色:

ev3-dev-manager

接下来,我们就可以直接切换到Run面板,点击RUN运行,在OUTPUT面板中看到输出结果:

ev3-run

注意到VS Code是一个开发环境,我们在电脑上并没有安装MicroPython,整个程序是通过蓝牙网络先传输到EV3主机,再执行,最后取回输出结果显示在VS Code中,因此,这是一个远程执行并允许调试的功能。print()函数可以输出到VS Code,主要作为调试使用,brick.display.text()则是输出到EV3的主机屏幕上。

这样,我们就把连接EV3的整个MicroPython开发环境搭建好了。

参考源码

hellorobot

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门