Geek的入门神器:micropython-能跑python的stm32开发板
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
?
????0x01 引言
? ? MicroPython是運(yùn)行在微控制器上的Python,遵守MIT協(xié)議。劍橋大學(xué)數(shù)學(xué)科學(xué)中心的Damien P. George在研究各種深?yuàn)W數(shù)學(xué)、物理問(wèn)題之余,還搞了一個(gè)MicroPython項(xiàng)目,將Python移植到ARM Cortex M微處理器上,并開(kāi)發(fā)了電路板。2013年曾經(jīng)在KickStarter上成功籌得近10萬(wàn)英鎊。2014年成功完成項(xiàng)目,發(fā)貨。
? ? 同時(shí),這個(gè)項(xiàng)目也在GitHub上開(kāi)源,至今已有1800+星,60位貢獻(xiàn)者。George曾在2014年P(guān)yCon UK上介紹MicroPython,所用硬件平臺(tái)叫pyboard。
? ??0x02 micropython開(kāi)發(fā)板概述
? ? Micro Python是Python 3編程語(yǔ)言的一個(gè)簡(jiǎn)潔和快速實(shí)現(xiàn),專門(mén)優(yōu)化運(yùn)行于一個(gè)微控制器上。它基于ANSIC,語(yǔ)法跟Pyton 3基本一致,擁有自家的解析器、編譯器、虛擬機(jī)和類庫(kù)等,下面是MicroPython支持的一些常見(jiàn)開(kāi)發(fā)板:
3、??TPYBoardV10x
[attach]379008[/attach]
? ?? ?? ?? ?TPYBoard單片機(jī)開(kāi)發(fā)板,現(xiàn)有TPYBoardV101、v102兩個(gè)版本,其中v102為v101的升級(jí)版,新增swd接口。采用python開(kāi)發(fā)語(yǔ)言,提供了30個(gè)GPIO,輕松使用python開(kāi)發(fā)物聯(lián)網(wǎng)產(chǎn)品。支持Python3.0及以上版本的直接運(yùn)行,支持重力加速度傳感器,支持上百周邊外設(shè)配件。
?
? ??0x03?以TPYBoardV102為例,講解micropython如何使用。
? ??下面以TPYBoardV102開(kāi)發(fā)板為例,詳解micropython如何使用。比如說(shuō),如果現(xiàn)在要運(yùn)行第一個(gè)腳本,那么在TPYBoardV102上面只要做這么幾步:
? ?? ?? ?第一步:通過(guò)USB線插入TPYBoardV102跟電腦連接,然后電腦上面會(huì)彈出來(lái)一個(gè)名稱為T(mén)PFLASH的U盤(pán),如下圖:
?
空間有點(diǎn)小只有95KB,對(duì)你沒(méi)有看錯(cuò),不是95MB,只有95KB。這是因?yàn)楝F(xiàn)在使用的是STM32芯片內(nèi)置的flash空間,所以就只有這么大了,但是這么小寫(xiě)入N個(gè)python腳本文件也是足夠的了。而且,我會(huì)告訴你插入TF卡后,能夠擴(kuò)展到4個(gè)G的嘛。
? ?? ????第二步:打開(kāi)U盤(pán)打開(kāi)后里面有如下四個(gè)文件:
?
?
其中main.py為開(kāi)機(jī)自動(dòng)運(yùn)行文件,可以將自己的代碼放在里面;boot.py為開(kāi)機(jī)引導(dǎo)文件,由它加載main.py;pybcdc.inf為windows下的虛擬串口驅(qū)動(dòng)文件;README.txt包含開(kāi)啟開(kāi)發(fā)板的必要基礎(chǔ)信息。
第三步:編輯mian.py:
? ?現(xiàn)在我們可以開(kāi)始編寫(xiě)自己的 python 程序了。用文本編輯器打開(kāi) main.py 文件。Windows 環(huán)境下可以使用記事本或者其他編輯器。Mac 和 linux 下使用你喜歡的文本編輯器即可。打開(kāi)文件后你將看到如下的一行:
?
?
該行以 # 字符開(kāi)始,意味著只是一個(gè)注釋。這樣的命令行不會(huì)被執(zhí)行,僅為代碼提供信息用在這個(gè) main.py 加多兩行,如下所示:
?
? ?? ?? ?? ?? ?
第一行表明使用 pyb 模塊,這個(gè)模塊包含了控制開(kāi)發(fā)板的所有函數(shù)和類。
第二行打開(kāi)了藍(lán)色的 LED:先是在 pyb 模塊中使用了 LED 類,創(chuàng)建了 LED 4 的實(shí)例,然后將其點(diǎn)亮
第四步:重置開(kāi)發(fā)板
為運(yùn)行這個(gè)小小的腳本,我們需要保存并關(guān)閉 main.py文件,然后在 USB 設(shè)備中退出(或者卸載),就像退出移動(dòng)磁盤(pán)一樣。
當(dāng)設(shè)備安全退出或解除掛載后就來(lái)到了實(shí)現(xiàn)功能的地方:按下板上的復(fù)位鍵將重置開(kāi)發(fā)板并運(yùn)行寫(xiě)好的程序。黑色的復(fù)位按鍵位于右邊,USB 接口下。當(dāng)按下復(fù)位鍵后綠色的 LED 將快速閃爍,然后藍(lán)色的 LED 保持長(zhǎng)亮。
至此編寫(xiě)和運(yùn)行第一個(gè) MicroPython 程序就完成了,加油!
?
0x04 TPYBoard單片機(jī)開(kāi)發(fā)板實(shí)用案例
實(shí)例一:點(diǎn)亮LEDS
? ? pyboard 板上最容易實(shí)現(xiàn)的事情莫過(guò)于點(diǎn)亮板上附帶的小燈。連接開(kāi)發(fā)板,按照上篇教程中提到的登錄方法,就可與在解釋器中開(kāi)始點(diǎn)亮 LED 燈了,代碼如下:
myled.on()
myled.off()
[/code]
?
這些命令將控制 LED 的亮和滅。
這種方式不錯(cuò),不過(guò)我們將嘗試讓其更智能化。在你擅長(zhǎng)的文本編輯器里打開(kāi) pyboard 里邊的 MAIN.PY 文件,寫(xiě)入或粘貼如下的代碼。如果你是 python 新手,那么希望從此開(kāi)始你能對(duì) python 有正確的認(rèn)識(shí)印象。
[code]led = pyb.LED(2)while True:
? ?led.toggle()
? ?pyb.delay(1000)
[/code]
?
當(dāng)你保存了文件后,按一下rst鍵,pyboard上的綠色LED將持續(xù)閃爍。
?
?
實(shí)例二:TPYboard控制LCD5110顯示6x8字符
先看一下LCD5110針腳含義吧(注意:LCD5110的針腳有些不一樣的)
TPYBoard的針腳與5110的針腳對(duì)應(yīng)關(guān)系如下:
?
TPYBoard? ?? ? LCD5110? ? memo
————————————————————————————
# any? ?Pin? ?? ???=> RST? ?? ? Reset pin (0=reset, 1=normal)
# any? ?Pin? ?? ???=> CE? ?? ???Chip Enable (0=listen for input,? ?1=ignore input)
# any? ?Pin? ?? ???=> DC? ?? ???Data/Command (0=commands, 1=data)
#? ?MOSI? ?? ?? ? => DIN? ?? ? data flow (Master out, Slave in)
#? ?SCK? ?? ?? ???=> CLK? ?? ? SPI clock
# 3V3? ?or any Pin??=> VCC? ?? ? 3.3V logic voltage (0=off, 1=on)
# any? ?Pin? ?? ???=> LIGHT? ???Light (0=on, 1=off)
#? ?GND? ?? ?? ???=> GND
?
還是看不明白的話,直接上針腳編號(hào)吧
TPYBoard? ?? ? LCD5110? ? memo
————————————————————————————
Y10? ?? ???=> RST? ?? ? Reset pin (0=reset, 1=normal)
Y11? ?? ???=> CE? ?? ???Chip Enable (0=listen for input,1=ignore input)
Y9? ?? ?? ?=> DC? ?? ???Data/Command (0=commands, 1=data)
X8? ?? ?? ?=> DIN? ?? ? data flow (Master out, Slave in)
X6? ?? ?? ?=> CLK? ?? ? SPI clock
VCC
Y12? ?? ???=> LIGHT? ???Light (0=on, 1=off)
?
GND
接線ok后,可運(yùn)行main.py了。
? ?main.py源代碼:
[code]#main.pyimport pyb
import upcd8544
from machine import SPI,Pin
??
def main():
? ? SPI? ? = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
? ? #DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
? ? #CLK =>SPI(1).SCK??'X6' SPI clock
? ??
? ? RST? ? = pyb.Pin('Y10')
? ? CE? ???= pyb.Pin('Y11')
? ? DC? ???= pyb.Pin('Y9')
? ? LIGHT??= pyb.Pin('Y12')
? ? lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)
? ??
? ? lcd_5110.lcd_write_string('Hello Python!',0,0)
? ? lcd_5110.lcd_write_string('Micropython',6,1)
? ? lcd_5110.lcd_write_string('TPYBoard',12,2)
? ? lcd_5110.lcd_write_string('v102',60,3)
? ? lcd_5110.lcd_write_string('This is a test of LCD5110',0,4)
? ??
??
if __name__ == '__main__':
? ? main()
?
[/code]
轉(zhuǎn)載于:https://my.oschina.net/micropython/blog/1611743
總結(jié)
以上是生活随笔為你收集整理的Geek的入门神器:micropython-能跑python的stm32开发板的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vue从入门到进阶:自定义指令direc
- 下一篇: python3网络爬虫(4):pytho