PYB Nano 开发板快速指南

PYB Nano 开发板快速指南

这篇快速指南是为 MicroPython 和 PYB Nano 的初学者写的,通过这个文档,可以快速掌握 MicroPython 和 PYB Nano 的基本使用方法。

 

PYB Nano开发板简介

PYB Nano开发板是目前体积最小、成本最低的MicroPython开发板

PYB Nano的主要特点

  • STM32F401CEU6微控制器
  • 16M主时钟
  • 支持 macroUSB
  • 2路UART
  • 3路I2C
  • 3路SPI
  • 10路12位ADC
  • 支持RTC
  • 支持后备电池输入
  • 支持USB供电和VIN输入(最高12V)
  • 一个用户按键和一个复位键
  • 带有 4个支持亮度调节功能的 LED
  • 带有加速度传感器(MMA7660)
  • 支持USB升级功能
  • 低成本、高性能
  • 开源

应用范围

  • 教育、学习
  • 电子竞赛
  • 机器人
  • 智能硬件
  • 物联网开发
  • 快速原型设计
  • 创客、DIYer

PYB Nano非常适合作为MicroPython的入门开发板,它支持绝大部分MicroPython的功能和函数,成本却只有官方 PyBoard 的几分之一,是学习MicroPython的首选开发板之一,也是从Arduino进阶到其它应用的最好选择。

 

系统需求

在开始使用 PYB Nano 前,需要做一点准备工作:

  • 一台计算机,安装了不低于Win7,或者Linux、MacOS操作系统,32位/64位都可以
  • 串口终端软件,如超级终端、putty、MobaXterm、SecureCRT等
  • macroUSB数据线(可以使用安卓手机的数据线)

因为Windows的用户最多,所以下面的介绍也以Windwos为主,但其它操作系统下的用法也是类似的,甚至更简单。

另外,为了顺利使用 MicroPython,大家还需要对 Python 语言有基本了解,因为MicroPython 是基于 python3 的。

 

安装驱动

在Windows系统中,第一次连接开发板时,会出现一个PYBFLASH磁盘,同时提示需要安装新的设备。这个新的设备就是虚拟串口,它的驱动程序就在新出现的PYBFLASH磁盘上,浏览到这个磁盘安装驱动,安装后就可以使用。

在大部分的Linux、MacOS下无需安装任何驱动程序。

 

终端软件设置

在调试时,通常都使用串口终端软件。在使用前,需要对终端软件的串口参数进行设置。

先用数据线连接开发板,然后运行任一串口终端软件,并设置串口为 PYB Nano 对应的虚拟串口,在将串口参数设置如下:

波特率

115200

数据位

8

奇偶校验

停止位

1

流量控制

个别软件还需要设置字符集才能正常显示。

 

REPL 的用法

通常调试程序时,都是在 MicroPython 的 REPL (read–eval–print loop,循环交互解释器)环境下运行。在REPL下可以直接输入命令,有内置的解释器执行。如果命令输入正常就会执行,命令错误会有提示。

MicroPython支持几个常用的快捷键,如果你熟悉串口终端,会发现它们的习惯是一样的。

  • Ctrl-C,停止正在的程序或终止当前的命令行
  • Ctrl-D,软复位(soft reset)
  • Ctrl-B,显示系统提示
  • Ctrl-E,进入粘贴模式。可以按下Ctrl-C退出粘贴模式,Ctrl-D完成粘贴
  • Tab,键盘上的Tab键,可以补全命令

除了Ctrl-C,其它快捷键需要在空命令行下(没有输入任何字符)才能生效。此外,还可以使用上下左右光标键

  • 上下键,调出以前输入的命令。MicroPython可以保存最后输入的6条命令
  • 左右键,在当前命令行中移动,编辑命令

 

基本用法

LED

无论在哪个开发板中,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

使用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是定时器模块的一个子功能,可以将定时器的某一通道设置为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)

 

ADC

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()  # 读取内部温度传感器

 

UART

from pyb import UART

uart = UART(1, 9600)
uart.write('hello')
uart.read(5) # read up to 5 bytes

 

SPI

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

 

I2C

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()        # 休眠模式,需要外部中断或者实时时钟唤醒

 

MocroPython的启动模式

在启动后,MicroPython会先运行 boot.py 文件,加载用户驱动,然后在运行main.py,执行用户程序。可以将用户程序放在main.py中,也可以在main.py中再加载其它的文件。

 

常见故障

在使用过程中,我们需要注意下面问题,避免造成文件系统破坏、数据丢失。

  • 取下数据线前,需要先U盘那样安全删除硬件,弹出PYBFLASH磁盘,否则可能会造成文件系统破坏,特别在修改了文件或复制新文件到PYBFLASH磁盘后。
  • 不要轻易按复位键,这样会造成当前的USB通讯中断。一般的问题,可以通过按下Ctrl-D软复位接近。

 

出厂模式

使用时间长了,因为各种原因可能会出现故障,造成无法正常启动,不能进入REPL,文件系统破坏等现象,这时就需要通过出厂模式进行恢复。

进入出厂模式的方法是,

  • 按下复位键(RESET)的同时,按住用户按键SW。
  • 然后保持用户按键不放,释放复位键。
  • 这时LED将循环显示:绿-》黄-》绿+黄-》灭
  • 等黄绿灯同时亮时,松开用户键,这时黄绿灯会同时快速闪4次
  • 然后红灯亮起(这时红绿黄三个灯同时亮)
  • 红灯灭,开始进行恢复到出厂状态
  • 所有灯都灭,恢复出厂设置完成。

恢复出厂设置后,PYBFLASH中的内容会丢失,变为默认文件。

 

升级固件

MicroPython的更新速度很快,每次更新都会带来一些新的功能,修正错误。所以掌握 MicroPython 的固件升级方法是有必要的。

PYB Nano支持下面几种升级方法:

  • 通过DFU模式升级
  • 通过SWD方式升级

使用DFU模式,需要安装ST的DfuSe_demo软件(Windows)或者dfu-util(Linux)。使用SWD需要将开发板的SWD接口(PA13/PA14)连接到编程器,通过编程软件(如STM32 ST-LINK Utility)下载。

 

参考资源

以上是 MicroPython 和 PYB Nano 的最基础知识,掌握后大家就可以逐步深入了。下面是一些MicroPython相关的参考网站和论坛,供大家参考。

 

 

转载于:https://my.oschina.net/shaoziyang/blog/778419

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值