查看: 129|回复: 2

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

[复制链接]

230

主题

13

好友

8032

积分

版主

Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 1371 天

    [LV.10]以坛为家III

    爱板会员勋章 发帖机器勋章 在线达人勋章 活跃会员勋章 论坛骨干勋章 在线之王勋章

    发表于 2016-10-31 12:14:51 |显示全部楼层
    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]去使用它们。如:
    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 的最基础知识,掌握后大家就可以逐步深入了。下面是一些参考网站和论坛,供大家参考。















    回复

    使用道具 举报

    230

    主题

    13

    好友

    8032

    积分

    版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 1371 天

    [LV.10]以坛为家III

    爱板会员勋章 发帖机器勋章 在线达人勋章 活跃会员勋章 论坛骨干勋章 在线之王勋章

    发表于 2016-10-31 12:19:28 |显示全部楼层
    PYB Nano 开发板快速指南.pdf (174.75 KB, 下载次数: 1)
    回复

    使用道具 举报

    0

    主题

    1

    好友

    4782

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 1141 天

    [LV.10]以坛为家III

    发表于 2016-11-1 10:24:28 |显示全部楼层
    这个一定要给个支持,赞一个!
    钱! 不是问题,问题是..... 没有钱!!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /6 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-6 20:24 , Processed in 0.121817 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部