折腾MicroPython过程中记录的笔记。涉及资源、工具、文档等。
MicroPython是Python3(Python 3.4)的精简高效实现,包括Python标准库的一小部分(此外,MicroPython还包括访问硬件的"machine"等模块),可在微控制器和受限环境中运行。
MicroPython包括了REPL,列表解析,生成器,异常处理等高级功能,适合运行在只有256k的代码空间和16k的RAM的芯片上。
MicroPython尽可能与普通Python(CPython)兼容,方便你轻松将代码从桌面环境移植到微控制器或嵌入式系统。
MicroPython最初由澳大利亚程序员兼物理学家Damien George 在2013年Kickstarter众筹活动之后创建. 最初的的Kickstart活动通过pyboard微控制器发布了MicroPython.

但MicroPython支持许多基于ARM的体系结构的芯片。MicroPython已经可以运行在Arduino,ESP8266,ESP32…(具体参考MicroPython downloads )。2016年,MicroPython的一个分支运行在的BBC microbit上。
MicroPython使用C99(C语言的官方标准第二版)编写,源码在这儿,MicroPython内核非常开放,采用 MIT 协议.
可以自由使用和或者修改MicroPython: 个人使用、教育和商业产品…
pyboard的的硬件部分开放在这里:micropython/pyboard。

我目前手中的这块板子是 PYBv1.1
引脚图如下:

此外值得一提的特性:
_thread支持多线程按以下步骤进行(我在mac下进行,linux下基本一致,windows用户参考On Windows - Using STM DfuSe):

sudo dfu-util -lsudo dfu-util --alt 0 --upload pyboard-original.dat -s:524288sudo dfu-util --alt 0 -D pybv11-thread-20171220-v1.9.3-207-ga1d85d61.dfu你也可以使用pydfu.py来进行烧录
有多种方式可以在pyboard中运行代码,分别是:
下边分别论述:
我们在pyboard上运行硬件的hello world:点亮led灯
|
|
更多的教材参考:MicroPython tutorial for the pyboard
PYBFLASH目录下有个boot.py文件,该文件是启动引导脚本,默认加载main.py
通过修改该文件,你还可以选择pyboard的挂载模式,诸如将其挂载为鼠标,有兴趣的同学可以点开这个文件,里边有相应注释。更多细节可以参考:Making the pyboard act as a USB mouse。当你想把pyboard从鼠标模式改回来时,需要使用安全模式:boot-modes
下边我们来做些邪恶的事情,不知道badusb是什么的同学,请绕路不要学坏
修改boot.py为
|
|
修改main.py为
下边这个例子中,我们使用体感来控制鼠标
|
|
下边这个例子中,按下USR按钮,输入hello
修改boot.py为
|
|
修改main.py为
|
|
这样一来你可以干任何事:)
REPL(Read Evaluate Print Loop)提供了绝佳的学习和探索环境。Python用户对此应该深有感触
在Mac/Linux下我偏好使用串口调试工具picocom来连接硬件(更多的工具参考:Getting a MicroPython REPL prompt)
通过/dev/tty.usb*识别出你的pyboard(通过观察pyboard插入前后的变化,多出的设备即为pyboard),我的pyboard地址为/dev/tty.usbmodem1412
执行: picocom /dev/tty.usbmodem1412 -b115200 即可进入REPL

注: picocom使用的是emacs的快捷键,退出为:Ctrl-a Ctrl-x
以上两种方式在开发过程都有些缺陷。以main.py脚本运行的方式,每次需要编辑文件、弹出设备、点击重置。步骤太多
而在REPL中运行,又不放便保存代码,也不好写多行脚本(函数、类、循环),这一点上ptpython做的很好,可惜目前不能用于MicroPython。下边介绍一些方便调试的工具
ampy是Adafruit出品的一个工具,通过串口连接与MicroPython交互,提供许多实用的工具。允许你在命令行里操控MicroPython。诸如运行本机脚本,往MicroPython板子上传下载文件
安装:pip install adafruit-ampy
帮助: ampy --help
调试脚本(假设设备为/dev/tty.usbmodem1412): ampy --port /dev/tty.usbmodem1412 run /tmp/a.py
使用jupyter来交互式地编程
参考:Distribution packages, package management, and deploying applications
和python一样,你也可以方便地安装第三方模块包:micropython-lib
如果你的板子可以联网(8266的板子可以,pyboard也有networking版本),你可以直接使用upip来安装、管理第三方包。
如果你的板子不能联网(目前的pyboard默认不能联网),你可以使用交叉安装包(Cross-installing packages):现在本地安装包,然后挪到板子里(import路径下即可)。具体而言你会用到这条命令:micropython -m upip install -p install_dir micropython-pystone_lowmem, 之后你把install_dir拖到板子里即可
在mac下你可以通过brew install micropython安装micropython
以超声波模块为例:micropython-hcsr04
在PYBFLASH目录下,拖入hcsr04.py,之后在便可使用它: import hcsr04
如果你想在pyboard中实现事件机制,可以使用硬件中断: The Switch, callbacks and interrupts
中断回调的函数,需要注意内存
|
|
如果你要用多线程(诸如模拟事件),你需要先烧录threading版本的固件,之后你就可以食用_thread模块
|
|
a cross-compiler and frozen bytecode, to have pre-compiled scripts that don’t take any RAM (except for any dynamic objects they create)
折腾MicroPython过程中记录的笔记。涉及资源、工具、文档等。
MicroPython是Python3(Python 3.4)的精简高效实现,包括Python标准库的一小部分(此外,MicroPython还包括访问硬件的"machine"等模块),可在微控制器和受限环境中运行。
MicroPython包括了REPL,列表解析,生成器,异常处理等高级功能,适合运行在只有256k的代码空间和16k的RAM的芯片上。
MicroPython尽可能与普通Python(CPython)兼容,方便你轻松将代码从桌面环境移植到微控制器或嵌入式系统。
MicroPython最初由澳大利亚程序员兼物理学家Damien George 在2013年Kickstarter众筹活动之后创建. 最初的的Kickstart活动通过pyboard微控制器发布了MicroPython.

但MicroPython支持许多基于ARM的体系结构的芯片。MicroPython已经可以运行在Arduino,ESP8266,ESP32…(具体参考MicroPython downloads )。2016年,MicroPython的一个分支运行在的BBC microbit上。
MicroPython使用C99(C语言的官方标准第二版)编写,源码在这儿,MicroPython内核非常开放,采用 MIT 协议.
可以自由使用和或者修改MicroPython: 个人使用、教育和商业产品…
pyboard的的硬件部分开放在这里:micropython/pyboard。

我目前手中的这块板子是 PYBv1.1
引脚图如下:

此外值得一提的特性:
_thread支持多线程按以下步骤进行(我在mac下进行,linux下基本一致,windows用户参考On Windows - Using STM DfuSe):

sudo dfu-util -lsudo dfu-util --alt 0 --upload pyboard-original.dat -s:524288sudo dfu-util --alt 0 -D pybv11-thread-20171220-v1.9.3-207-ga1d85d61.dfu你也可以使用pydfu.py来进行烧录
有多种方式可以在pyboard中运行代码,分别是:
下边分别论述:
我们在pyboard上运行硬件的hello world:点亮led灯
|
|
更多的教材参考:MicroPython tutorial for the pyboard
PYBFLASH目录下有个boot.py文件,该文件是启动引导脚本,默认加载main.py
通过修改该文件,你还可以选择pyboard的挂载模式,诸如将其挂载为鼠标,有兴趣的同学可以点开这个文件,里边有相应注释。更多细节可以参考:Making the pyboard act as a USB mouse。当你想把pyboard从鼠标模式改回来时,需要使用安全模式:boot-modes
下边我们来做些邪恶的事情,不知道badusb是什么的同学,请绕路不要学坏
修改boot.py为
|
|
修改main.py为
下边这个例子中,我们使用体感来控制鼠标
|
|
下边这个例子中,按下USR按钮,输入hello
修改boot.py为
|
|
修改main.py为
|
|
这样一来你可以干任何事:)
REPL(Read Evaluate Print Loop)提供了绝佳的学习和探索环境。Python用户对此应该深有感触
在Mac/Linux下我偏好使用串口调试工具picocom来连接硬件(更多的工具参考:Getting a MicroPython REPL prompt)
通过/dev/tty.usb*识别出你的pyboard(通过观察pyboard插入前后的变化,多出的设备即为pyboard),我的pyboard地址为/dev/tty.usbmodem1412
执行: picocom /dev/tty.usbmodem1412 -b115200 即可进入REPL

注: picocom使用的是emacs的快捷键,退出为:Ctrl-a Ctrl-x
以上两种方式在开发过程都有些缺陷。以main.py脚本运行的方式,每次需要编辑文件、弹出设备、点击重置。步骤太多
而在REPL中运行,又不放便保存代码,也不好写多行脚本(函数、类、循环),这一点上ptpython做的很好,可惜目前不能用于MicroPython。下边介绍一些方便调试的工具
ampy是Adafruit出品的一个工具,通过串口连接与MicroPython交互,提供许多实用的工具。允许你在命令行里操控MicroPython。诸如运行本机脚本,往MicroPython板子上传下载文件
安装:pip install adafruit-ampy
帮助: ampy --help
调试脚本(假设设备为/dev/tty.usbmodem1412): ampy --port /dev/tty.usbmodem1412 run /tmp/a.py
使用jupyter来交互式地编程
参考:Distribution packages, package management, and deploying applications
和python一样,你也可以方便地安装第三方模块包:micropython-lib
如果你的板子可以联网(8266的板子可以,pyboard也有networking版本),你可以直接使用upip来安装、管理第三方包。
如果你的板子不能联网(目前的pyboard默认不能联网),你可以使用交叉安装包(Cross-installing packages):现在本地安装包,然后挪到板子里(import路径下即可)。具体而言你会用到这条命令:micropython -m upip install -p install_dir micropython-pystone_lowmem, 之后你把install_dir拖到板子里即可
在mac下你可以通过brew install micropython安装micropython
以超声波模块为例:micropython-hcsr04
在PYBFLASH目录下,拖入hcsr04.py,之后在便可使用它: import hcsr04
如果你想在pyboard中实现事件机制,可以使用硬件中断: The Switch, callbacks and interrupts
中断回调的函数,需要注意内存
|
|
如果你要用多线程(诸如模拟事件),你需要先烧录threading版本的固件,之后你就可以食用_thread模块
|
|
a cross-compiler and frozen bytecode, to have pre-compiled scripts that don’t take any RAM (except for any dynamic objects they create)