Geek的入门神器:micropython-能跑python的stm32开发板
2019獨角獸企業重金招聘Python工程師標準>>>
?
????0x01 引言
? ? MicroPython是運行在微控制器上的Python,遵守MIT協議。劍橋大學數學科學中心的Damien P. George在研究各種深奧數學、物理問題之余,還搞了一個MicroPython項目,將Python移植到ARM Cortex M微處理器上,并開發了電路板。2013年曾經在KickStarter上成功籌得近10萬英鎊。2014年成功完成項目,發貨。
? ? 同時,這個項目也在GitHub上開源,至今已有1800+星,60位貢獻者。George曾在2014年PyCon UK上介紹MicroPython,所用硬件平臺叫pyboard。
? ??0x02 micropython開發板概述
? ? Micro Python是Python 3編程語言的一個簡潔和快速實現,專門優化運行于一個微控制器上。它基于ANSIC,語法跟Pyton 3基本一致,擁有自家的解析器、編譯器、虛擬機和類庫等,下面是MicroPython支持的一些常見開發板:
3、??TPYBoardV10x
[attach]379008[/attach]
? ?? ?? ?? ?TPYBoard單片機開發板,現有TPYBoardV101、v102兩個版本,其中v102為v101的升級版,新增swd接口。采用python開發語言,提供了30個GPIO,輕松使用python開發物聯網產品。支持Python3.0及以上版本的直接運行,支持重力加速度傳感器,支持上百周邊外設配件。
?
? ??0x03?以TPYBoardV102為例,講解micropython如何使用。
? ??下面以TPYBoardV102開發板為例,詳解micropython如何使用。比如說,如果現在要運行第一個腳本,那么在TPYBoardV102上面只要做這么幾步:
? ?? ?? ?第一步:通過USB線插入TPYBoardV102跟電腦連接,然后電腦上面會彈出來一個名稱為TPFLASH的U盤,如下圖:
?
空間有點小只有95KB,對你沒有看錯,不是95MB,只有95KB。這是因為現在使用的是STM32芯片內置的flash空間,所以就只有這么大了,但是這么小寫入N個python腳本文件也是足夠的了。而且,我會告訴你插入TF卡后,能夠擴展到4個G的嘛。
? ?? ????第二步:打開U盤打開后里面有如下四個文件:
?
?
其中main.py為開機自動運行文件,可以將自己的代碼放在里面;boot.py為開機引導文件,由它加載main.py;pybcdc.inf為windows下的虛擬串口驅動文件;README.txt包含開啟開發板的必要基礎信息。
第三步:編輯mian.py:
? ?現在我們可以開始編寫自己的 python 程序了。用文本編輯器打開 main.py 文件。Windows 環境下可以使用記事本或者其他編輯器。Mac 和 linux 下使用你喜歡的文本編輯器即可。打開文件后你將看到如下的一行:
?
?
該行以 # 字符開始,意味著只是一個注釋。這樣的命令行不會被執行,僅為代碼提供信息用在這個 main.py 加多兩行,如下所示:
?
? ?? ?? ?? ?? ?
第一行表明使用 pyb 模塊,這個模塊包含了控制開發板的所有函數和類。
第二行打開了藍色的 LED:先是在 pyb 模塊中使用了 LED 類,創建了 LED 4 的實例,然后將其點亮
第四步:重置開發板
為運行這個小小的腳本,我們需要保存并關閉 main.py文件,然后在 USB 設備中退出(或者卸載),就像退出移動磁盤一樣。
當設備安全退出或解除掛載后就來到了實現功能的地方:按下板上的復位鍵將重置開發板并運行寫好的程序。黑色的復位按鍵位于右邊,USB 接口下。當按下復位鍵后綠色的 LED 將快速閃爍,然后藍色的 LED 保持長亮。
至此編寫和運行第一個 MicroPython 程序就完成了,加油!
?
0x04 TPYBoard單片機開發板實用案例
實例一:點亮LEDS
? ? pyboard 板上最容易實現的事情莫過于點亮板上附帶的小燈。連接開發板,按照上篇教程中提到的登錄方法,就可與在解釋器中開始點亮 LED 燈了,代碼如下:
myled.on()
myled.off()
[/code]
?
這些命令將控制 LED 的亮和滅。
這種方式不錯,不過我們將嘗試讓其更智能化。在你擅長的文本編輯器里打開 pyboard 里邊的 MAIN.PY 文件,寫入或粘貼如下的代碼。如果你是 python 新手,那么希望從此開始你能對 python 有正確的認識印象。
[code]led = pyb.LED(2)while True:
? ?led.toggle()
? ?pyb.delay(1000)
[/code]
?
當你保存了文件后,按一下rst鍵,pyboard上的綠色LED將持續閃爍。
?
?
實例二:TPYboard控制LCD5110顯示6x8字符
先看一下LCD5110針腳含義吧(注意:LCD5110的針腳有些不一樣的)
TPYBoard的針腳與5110的針腳對應關系如下:
?
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
?
還是看不明白的話,直接上針腳編號吧
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后,可運行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]
轉載于:https://my.oschina.net/micropython/blog/1611743
總結
以上是生活随笔為你收集整理的Geek的入门神器:micropython-能跑python的stm32开发板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue从入门到进阶:自定义指令direc
- 下一篇: ubuntu16定时任务crontab