PyMagic 参考文档¶
PyMagic 是一款开源的开发板,基于 PyBoard 开发设计。 PyMagic 是使用 STM32F405RG 微控制器运行 Python 语言解释器的硬件平台。与 Arduino 类似,但 PyMagic 更为强大。 整体来说 PyMagic 支持 Python3 语法,具有完成的 Python 语法分析器、解释器、编译器、虚拟机和运行环境。 完全可做到离线运行,并且能够模拟键盘和鼠标,完全可以替代 Teensy 的工作,而且可以写 Python 代码的那种哦。 当然还有些更强大的功能,比如能够通过内置的 socket 进行 TCP/IP 数据的发送,等等。
目录:¶
PyMagic 上手配置¶
当第一次使用 PyMagic 时,只要一根 Macro USB 数据线链接到电脑就够了。 当连接了 Macro USB 线后,在 Windows 中会自动安装移动磁盘驱动和虚拟串口驱动。
移动磁盘的驱动系统自带了,可以自动识别出来,而虚拟串口的驱动可以在这个移动磁盘中找到。 在 Linux 和 Mac 下,无需另外安装驱动。
移动磁盘中默认会有4个文件,它们分别是
main.py // 开机自动运行文件,可以将自己的代码放在里面
boot.py // 开机引到文件,由它加载 main.py
pybcdc.inf // Windows下的虚拟串口驱动文件
README.txt // 简要说明
Windows¶
1、使用 USB 连接到 PyMagic
2、打开设备管理器,安装驱动
3、打开 PuTTY 模拟终端,连接设备
4、打开后默认看到的是 main.py
里的代码,按 Ctrl + C 可终止执行。
5、在 Python Shell
里输入 help()
查看帮助信息。
Linux¶
1、使用 USB 连接到 PyMagic
2、打开终端并运行
sudo screen /dev/ttyACM0
或者
sudo picocom /dev/ttyACM0
或者
sudo minicom -D /dev/ttyACM0
(注视具体情况而定,可能为 /dev/ttyACM*
)
PyMagic 快速参考¶
常用控制¶
import pyb
pyb.delay(50) # 等待50ms
pyb.millis() # 从bootup到当前的ms数
pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
pyb.wfi() # 暂停CPU,等待中断
pyb.freq() # 获取CPU 和 bus 频率
pyb.freq(60000000) # 设置 CPU 频率到 60MHz
pyb.stop() # 停止 CPU, 等待外部中断
LEDs¶
from pyb import LED
led = LED(1) # 红色led
led.toggle()
led.on()
led.off()
Pins and GPIO¶
from pyb import Pin
p_out = Pin('X1', Pin.OUT_PP)
p_out.high()
p_out.low()
p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
p_in.value() # 获得引脚电平值, 0 or 1
舵机控制 (Servo control)¶
from pyb import Servo
s1 = Servo(1) # 舵机在位置 1 (X1, VIN, GND)
s1.angle(45) # 移动到 45 度
s1.angle(-60, 1500) # 在1500ms内移动到 -60 度
s1.speed(50) # 连续旋转舵机
外部中断 (External interrupts)¶
from pyb import Pin, ExtInt
callback = lambda e: print("intr")
ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
定时器(Timers)¶
from pyb import Timer
tim = Timer(1, freq=1000)
tim.counter() # 获得计数值
tim.freq(0.5) # 0.5 Hz
tim.callback(lambda t: pyb.LED(1).toggle())
PWM (脉冲宽度调制)¶
from pyb import Pin, Timer
p = Pin('X1') # X1引脚具有 TIM2, CH1功能
tim = Timer(2, freq=1000)
ch = tim.channel(1, Timer.PWM, pin=p)
ch.pulse_width_percent(50)
ADC (模拟转数字)¶
from pyb import Pin, ADC
adc = ADC(Pin('X19'))
adc.read() # 读数, 0-4095
DAC (数字转模拟)¶
from pyb import Pin, DAC
dac = DAC(Pin('X5'))
dac.write(120) # 输出0 到 255
UART (串行总线)¶
from pyb import UART
uart = UART(1, 9600)
uart.write('hello')
uart.read(5) # 最多读取5个字节
SPI总线 (SPI bus)¶
from pyb import SPI
spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
spi.send('hello')
spi.recv(5) # 在该总线上接收5个字节
spi.send_recv('hello') # 发送并接收5个字节
I2C总线 (I2C bus)¶
from pyb import I2C
i2c = I2C(1, I2C.MASTER, baudrate=100000)
i2c.scan() # 返回从机地址列表
i2c.send('hello', 0x42) # 发送5个字节到地址为0x42的从机
i2c.recv(5, 0x42) # 从从机接收5个字节
i2c.mem_read(2, 0x42, 0x10) # 从地址为0x42的从机 去读内存地址0x10的两个字节
i2c.mem_write('xy', 0x42, 0x10) # 写两个字节到地址为0x42的从机的0x10内存位置
PyMagic 常用信息¶
按键位置¶
PyMagic 上面有三个按键,以 Micro USB 口为下。
左上角的为 usr
按键,进入DFU模式时用到。
右上角的为 reset
按键,进行复位时用到。
右下角的为 user
按键,用来编程和进入不同的启动模式。
本地文件系统和SD卡¶
PyMagic 中具有一个非常小的文件系统(驱动),称为 /flash
,
这个文件系统是存储在微控制器的 Flash 内存中。如果 Micro SD 卡插入了卡槽,
就会生成一个名为 /sd
的文件系统。
当 PyMagic 启动时,需要选择从哪个文件系统启动。 如果没有 SD 卡,默认使用内部
文件系统 /flash
作为启动文件系统, 如果有,则使用SD卡 /sd
.
启动文件系统用于2件事情: 是被查找的 boot.py
和 main.py
所在的文件系统,
是你通过USB线连接到电脑上能看到的文件系统.
该文件系统能够在你的电脑上以移动硬盘的形式出现. 你可以保存文件到这个硬盘,
并可以编辑 boot.py
和 main.py
.
记得在你复位你的pyMagic前一定要弹出该USB设备(在Linux上, 卸载)
启动模式(Boot modes)¶
如果你正常上电启动, 或者按下复位按键(reset button), pyMagic将进入
标准模式(standard mode): boot.py
文件将首先执行, 接着将配置USB设置,
然后再运行 main.py
.
你可以通过在pyMagic上电过程中按住用户按键(user switch)来重写启动顺序. 按住用户按键(user switch)然后按下复位, 当你持续按着用户按键(user switch) 不放开, LED灯会交替闪烁。当LEDs闪烁到你想要进入的模式,放开用户按键(user switch), 然后选定模式的LEDs将快速闪烁,接着pyMagic将启动.
具有的模式:
- 仅绿色LED, 标准启动: 运行
boot.py
然后再运行main.py
. - 仅橙色LED, 安全启动: 启动过程不运行任何脚本文件
- 绿色LED和橙色LED一起亮, 文件系统重置: 复位文件系统到出厂设置, 然后以安全模式进行启动.
如果你的文件系统出现问题,以mode 3的方式启动进行修复. 如果在你电脑上进行文件系统恢复失败,你可以尝试插到USB充电器或者用其它 没有数据链接的USB供电方式重复上述操作进行尝试.
错误: LEDs闪烁¶
目前你可能见到的错误有两种:
- 如果红色和绿色LED交替闪烁, 表示一个python脚本出现问题
(eg,
main.py
), 使用REPL进行调试. - 如果4个LEDs循环h缓慢亮灭, 表示出现了硬件错误,并且这是无法恢复的, 这时你需要pyMagic的客服联系,尝试寄回修复.
更新 DFU 固件¶
下载¶
下载并安装 DfuSe Demo 下载 MicroPython DFU 选择 Suitable for PYBv1.0 boards 版本
安装驱动¶
连接 USB 以 Macro USB 为上,同时按住左上和右上两颗键,系统将自动搜索按住 DFU 驱动,并进入 DFU 模式。