这篇快速指南是为 MicroPython 和 PYB Nano 的初学者写的,经过这个文档,能够快速掌握 MicroPython 和 PYB Nano 的基本使用方法。php
PYB Nano开发板是目前体积最小、成本最低的MicroPython开发板python
PYB Nano很是适合做为MicroPython的入门开发板,它支持绝大部分MicroPython的功能和函数,成本却只有官方 PyBoard 的几分之一,是学习MicroPython的首选开发板之一,也是从Arduino进阶到其它应用的最好选择。git
在开始使用 PYB Nano 前,须要作一点准备工做:github
由于Windows的用户最多,因此下面的介绍也以Windwos为主,但其它操做系统下的用法也是相似的,甚至更简单。编程
另外,为了顺利使用 MicroPython,你们还须要对 Python 语言有基本了解,由于MicroPython 是基于 python3 的。安全
在Windows系统中,第一次链接开发板时,会出现一个PYBFLASH磁盘,同时提示须要安装新的设备。这个新的设备就是虚拟串口,它的驱动程序就在新出现的PYBFLASH磁盘上,浏览到这个磁盘安装驱动,安装后就可使用。函数
在大部分的Linux、MacOS下无需安装任何驱动程序。oop
在调试时,一般都使用串口终端软件。在使用前,须要对终端软件的串口参数进行设置。性能
先用数据线链接开发板,而后运行任一串口终端软件,并设置串口为 PYB Nano 对应的虚拟串口,在将串口参数设置以下:学习
波特率 |
115200 |
数据位 |
8 |
奇偶校验 |
无 |
中止位 |
1 |
流量控制 |
无 |
个别软件还须要设置字符集才能正常显示。
一般调试程序时,都是在 MicroPython 的 REPL (read–eval–print loop,循环交互解释器)环境下运行。在REPL下能够直接输入命令,有内置的解释器执行。若是命令输入正常就会执行,命令错误会有提示。
MicroPython支持几个经常使用的快捷键,若是你熟悉串口终端,会发现它们的习惯是同样的。
除了Ctrl-C,其它快捷键须要在空命令行下(没有输入任何字符)才能生效。此外,还可使用上下左右光标键
不管在哪一个开发板中,LED都是最经常使用的的例程,咱们也从这里开始。
PYB Nano上有4个LED,分别是红、绿、黄、蓝色。咱们能够经过 pyb.LED(n) [n = 1-4]去使用它们。如:
pyb.LED(1).on() # LED1亮 pyb.LED(2).off() # LED2灭 pyb.LED(3).toggle() #翻转LED3 pyb.LED(4).intensity(20) # 设置LED4亮度20 [范围是0-255] |
呼吸灯,下面程序将LED3设置为呼吸灯
from pyb import Timer ia = 1 da = 1 def fa(t): global ia, da if (ia==0)or(ia==255): da=256-da ia=(ia+da)%256 pyb.LED(3).intensity(ia) tm=Timer(1, freq=200, callback=fa) |
在其它MicroPython开发板上,LED的数量多是1-4个,但用法是同样的。此外不是每种 MicroPyhon 开发板的 LED 都支持亮度调整功能(intensity())。
在MicroPython的Pyboard中,预约义了按键开关对象,它的使用方法以下:
sw = pyb.Switch() sw() |
若是按键按下,返回True,不然返回False。
使用GPIO,须要导入pyb库的Pin对象。
from pyb import Pin p_out = Pin('X1', Pin.OUT_PP) # 定义 X1 引脚为输出 p_out.high() # 输出高电平 p_out.low() # 输出低电平 p_out.value(1) # 等同于 p_out.high() p_in = Pin('X2', Pin.IN, Pin.PULL_UP) # 定义 X2 为输入 p_in.value() # get value, 0 or 1 |
下面代码将按键(PC13)定义为外中断输入,上升沿触发模式。每当按下一次按键,LED1就会翻转一次。
from pyb import Pin, ExtInt callback = lambda e: pyb.LED(1).toggle() ext = ExtInt(Pin('C13'), ExtInt.IRQ_RISING, Pin.PULL_UP, callback) |
定时器须要使用到pyb库的Timer对象。下面程序中,先设置定时器1的频率为1000Hz,而后读取计数器的值,再设置定时器的频率为0.5Hz,并在定时器回调函数(中断)里翻转LED2。
from pyb import Timer tim = Timer(1, freq=1000) tim.counter() # get counter value tim.freq(0.5) # 0.5 Hz tim.callback(lambda t: pyb.LED(2).toggle()) |
PWM是定时器模块的一个子功能,能够将定时器的某一通道设置为PWM输出。下面代码将 PA3 设置为定时器2的CH4输出,最后设置占空比是10%。注意占空比参数能够是浮点数。
from pyb import Pin, Timer p = Pin('A3') # X1 has TIM2, CH4 tim = Timer(2, freq=1000) ch = tim.channel(4, Timer.PWM, pin=p) ch.pulse_width_percent(10) |
PYB Nano带有10路12位ADC输入,能够很是容易读取ADC的参数。下面的代码读取引脚 X8 (PB0)的输入
from pyb import Pin, ADC adc = ADC(Pin('X8')) adc.read() # read value, 0-4095 |
另一种读取ADC的方法是
from pyb import Pin, ADC a=pyb.ADCAll(12) # 设置ADC为12位模式 a.read_channel(8) # 读取ADC8 a.read_core_temp() # 读取内部温度传感器 |
from pyb import UART uart = UART(1, 9600) uart.write('hello') uart.read(5) # read up to 5 bytes |
from pyb import SPI spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0) spi.send('hello') spi.recv(5) # receive 5 bytes on the bus spi.send_recv('hello') # send a receive 5 bytes |
from pyb import I2C i2c = I2C(1, I2C.MASTER, baudrate=100000) i2c.scan() # returns list of slave addresses i2c.send('hello', 0x42) # send 5 bytes to slave with address 0x42 i2c.recv(5, 0x42) # receive 5 bytes from slave i2c.mem_read(2, 0x42, 0x10) # read 2 bytes from slave 0x42, slave memory 0x10 i2c.mem_write('xy', 0x42, 0x10) # write 2 bytes to slave 0x42, slave memory 0x10 |
PYB Nano内置了加速度传感器MMA7660,能够直接读取传感器的参数(数值范围是[-32..32])。
acc = pyb.Accel() while True: print(acc.x(), acc.y(), acc.z()) pyb.delay(500) |
pyb.delay(500) # 延时500ms pyb.udelay(20) # 延时20us pyb.unique_id() # 读取芯片的惟一序列号 pyb.millis() # 复位后的运行时间(ms) pyb.hard_reset() # 复位,和按下复位键的效果相同 pyb.bootloader() # 直接进入 bootloader 模式升级 pyb.disable_irq() # 禁止中断 pyb.enable_irq() # 恢复中断 pyb.freq() # 读取系统时钟 pyb.wfi() # 等待内部或外部中断 pyb.stop() # 休眠模式,须要外部中断或者实时时钟唤醒 |
在启动后,MicroPython会先运行 boot.py 文件,加载用户驱动,而后在运行main.py,执行用户程序。能够将用户程序放在main.py中,也能够在main.py中再加载其它的文件。
在使用过程当中,咱们须要注意下面问题,避免形成文件系统破坏、数据丢失。
使用时间长了,由于各类缘由可能会出现故障,形成没法正常启动,不能进入REPL,文件系统破坏等现象,这时就须要经过出厂模式进行恢复。
进入出厂模式的方法是,
恢复出厂设置后,PYBFLASH中的内容会丢失,变为默认文件。
MicroPython的更新速度很快,每次更新都会带来一些新的功能,修正错误。因此掌握 MicroPython 的固件升级方法是有必要的。
PYB Nano支持下面几种升级方法:
使用DFU模式,须要安装ST的DfuSe_demo软件(Windows)或者dfu-util(Linux)。使用SWD须要将开发板的SWD接口(PA13/PA14)链接到编程器,经过编程软件(如STM32 ST-LINK Utility)下载。
以上是 MicroPython 和 PYB Nano 的最基础知识,掌握后你们就能够逐步深刻了。下面是一些MicroPython相关的参考网站和论坛,供你们参考。