[原创] PYB Nano 开发板快速指南

dcexpert   2016-10-31 11:44 楼主
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进阶到其它应用的最好选择。 01.jpg 系统需求 在开始使用 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]去使用它们。如:
  1. pyb.LED(1).on() # LED1亮
  2. pyb.LED(2).off() # LED2灭
  3. pyb.LED(3).toggle() #翻转LED3
  4. pyb.LED(4).intensity(20) # 设置LED4亮度20 [范围是0-255]
呼吸灯,下面程序将LED3设置为呼吸灯
  1. from pyb import Timer
  2. ia = 1
  3. da = 1
  4. def fa(t):
  5. global ia, da
  6. if (ia==0)or(ia==255):
  7. da=256-da
  8. ia=(ia+da)%256
  9. pyb.LED(3).intensity(ia)
  10. tm=Timer(1, freq=200, callback=fa)
在其它MicroPython开发板上,LED的数量可能是1-4个,但用法是一样的。此外不是每种 MicroPyhon 开发板的 LED 都支持亮度调整功能(intensity())。 按键 在MicroPython的Pyboard中,预定义了按键开关对象,它的使用方法如下:
  1. sw = pyb.Switch()
  2. sw()
如果按键按下,返回True,否则返回False。 GPIO 使用GPIO,需要导入pyb库的Pin对象。
  1. from pyb import Pin
  2. p_out = Pin('X1', Pin.OUT_PP) # 定义 X1 引脚为输出
  3. p_out.high() # 输出高电平
  4. p_out.low() # 输出低电平
  5. p_out.value(1) # 等同于 p_out.high()
  6. p_in = Pin('X2', Pin.IN, Pin.PULL_UP) # 定义 X2 为输入
  7. p_in.value() # get value, 0 or 1
外中断 下面代码将按键(PC13)定义为外中断输入,上升沿触发模式。每当按下一次按键,LED1就会翻转一次。
  1. from pyb import Pin, ExtInt
  2. callback = lambda e: pyb.LED(1).toggle()
  3. ext = ExtInt(Pin('C13'), ExtInt.IRQ_RISING, Pin.PULL_UP, callback)
定时器 定时器需要使用到pyb库的Timer对象。下面程序中,先设置定时器1的频率为1000Hz,然后读取计数器的值,再设置定时器的频率为0.5Hz,并在定时器回调函数(中断)里翻转LED2。
  1. from pyb import Timer
  2. tim = Timer(1, freq=1000)
  3. tim.counter() # get counter value
  4. tim.freq(0.5) # 0.5 Hz
  5. tim.callback(lambda t: pyb.LED(2).toggle())
PWM PWM是定时器模块的一个子功能,可以将定时器的某一通道设置为PWM输出。下面代码将 PA3 设置为定时器2的CH4输出,最后设置占空比是10%。注意占空比参数可以是浮点数。
  1. from pyb import Pin, Timer
  2. p = Pin('A3') # X1 has TIM2, CH4
  3. tim = Timer(2, freq=1000)
  4. ch = tim.channel(4, Timer.PWM, pin=p)
  5. ch.pulse_width_percent(10)
ADC PYB Nano带有10路12位ADC输入,可以非常容易读取ADC的参数。下面的代码读取引脚 X8 (PB0)的输入
  1. from pyb import Pin, ADC
  2. adc = ADC(Pin('X8'))
  3. adc.read() # read value, 0-4095
另外一种读取ADC的方法是
  1. from pyb import Pin, ADC
  2. a=pyb.ADCAll(12) # 设置ADC为12位模式
  3. a.read_channel(8) # 读取ADC8
  4. a.read_core_temp() # 读取内部温度传感器
UART
  1. from pyb import UART
  2. uart = UART(1, 9600)
  3. uart.write('hello')
  4. uart.read(5) # read up to 5 bytes
I2C
  1. from pyb import I2C
  2. i2c = I2C(1, I2C.MASTER, baudrate=100000)
  3. i2c.scan() # returns list of slave addresses
  4. i2c.send('hello', 0x42) # send 5 bytes to slave with address 0x42
  5. i2c.recv(5, 0x42) # receive 5 bytes from slave
  6. i2c.mem_read(2, 0x42, 0x10) # read 2 bytes from slave 0x42, slave memory 0x10
  7. i2c.mem_write('xy', 0x42, 0x10) # write 2 bytes to slave 0x42, slave memory 0x10
SPI
  1. from pyb import SPI
  2. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
  3. spi.send('hello')
  4. spi.recv(5) # receive 5 bytes on the bus
  5. spi.send_recv('hello') # send a receive 5 bytes
加速度传感器 PYB Nano内置了加速度传感器MMA7660,可以直接读取传感器的参数(数值范围是[-32..32])。
  1. acc = pyb.Accel()
  2. while True:
  3. print(acc.x(), acc.y(), acc.z())
  4. pyb.delay(500)
其它常用功能
  1. pyb.delay(500) # 延时500ms
  2. pyb.udelay(20) # 延时20us
  3. pyb.unique_id() # 读取芯片的唯一序列号
  4. pyb.millis() # 复位后的运行时间(ms)
  5. pyb.hard_reset() # 复位,和按下复位键的效果相同
  6. pyb.bootloader() # 直接进入 bootloader 模式升级
  7. pyb.disable_irq() # 禁止中断
  8. pyb.enable_irq() # 恢复中断
  9. pyb.freq() # 读取系统时钟
  10. pyb.wfi() # 等待内部或外部中断
  11. 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)连接到编程器,通过编程软件下载。 参考资料 以上是 MicroPython 和 PYB Nano 的最基础知识,掌握后大家就可以逐步深入了。下面是一些参考网站和论坛,供大家参考。 本帖最后由 dcexpert 于 2016-10-31 12:14 编辑

回复评论 (8)

PYB Nano 开发板快速指南.pdf (174.75 KB)
(下载次数: 28, 2016-10-31 11:50 上传)

点赞  2016-10-31 11:51
资料越来越完善了
http://weibo.com/u/1391449055
点赞  2016-10-31 19:32
           加油
点赞  2016-10-31 19:50

大侠问下,重新上电后有问题如下:

image.png

image.png 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示;

image.png

 

  • image.png
点赞  2019-6-14 00:06
引用: DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

先检查设备管理器中,是否有对应的设备,在查看驱动是否有冲突的。

 

一般情况可能是驱动引起的。

点赞  2019-6-14 09:10
引用: DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

此外USB接口或者USB线接触不好也可能是原因之一

点赞  2019-6-14 09:10
引用: DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

还有在看看操作系统或者杀毒软件,一般情况下linux是不会有类似问题,windows下,特别是精简版或ghost版问题最多,尽量别用。

点赞  2019-6-14 09:12
引用: DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

dcexpert,  原版中系统,管理器中没有设备,必须重新烧录固件,才可以,真诡异;

点赞  2019-6-15 09:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复