PYB Nano 開發板快速指南

PYB Nano 開發板快速指南

這篇快速指南是爲 MicroPython 和 PYB Nano 的初學者寫的,經過這個文檔,能夠快速掌握 MicroPython 和 PYB Nano 的基本使用方法。php

 

PYB Nano開發板簡介

PYB Nano開發板是目前體積最小、成本最低的MicroPython開發板python

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進階到其它應用的最好選擇。git

 

系統需求

在開始使用 PYB Nano 前,須要作一點準備工做:github

  • 一臺計算機,安裝了不低於Win7,或者Linux、MacOS操做系統,32位/64位均可以
  • 串口終端軟件,如超級終端、putty、MobaXterm、SecureCRT等
  • macroUSB數據線(可使用安卓手機的數據線)

由於Windows的用戶最多,因此下面的介紹也以Windwos爲主,但其它操做系統下的用法也是相似的,甚至更簡單。編程

另外,爲了順利使用 MicroPython,你們還須要對 Python 語言有基本瞭解,由於MicroPython 是基於 python3 的。安全

 

安裝驅動

在Windows系統中,第一次鏈接開發板時,會出現一個PYBFLASH磁盤,同時提示須要安裝新的設備。這個新的設備就是虛擬串口,它的驅動程序就在新出現的PYBFLASH磁盤上,瀏覽到這個磁盤安裝驅動,安裝後就可使用。函數

在大部分的Linux、MacOS下無需安裝任何驅動程序。oop

 

終端軟件設置

在調試時,一般都使用串口終端軟件。在使用前,須要對終端軟件的串口參數進行設置。性能

先用數據線鏈接開發板,而後運行任一串口終端軟件,並設置串口爲 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相關的參考網站和論壇,供你們參考。

相關文章
相關標籤/搜索