曾幾何時,流行過這么一句話:再不瘋狂我們就老了!這是青春的再召喚,還是獻給青春的挽歌,個中滋味,也許只有內(nèi)心自知!
在AI蓬勃發(fā)展的今天,IT巨頭都在悄悄布局,做為IT人的你,是否也準備好了?雖說Python不是進入AI領(lǐng)域的最佳編程語言,但毫無疑問,Python是進入其中并探索AI奧秘非常流行的編程語言。所以,趁著還年青,無論是心理還是身理,亦或是職業(yè)生涯的青春期,學(xué)點Python吧!
Adafruit推出的Metro M0 Express開發(fā)板,集MCU開發(fā)與Python一體,確實是入門Python的極佳開發(fā)板。純Python學(xué)習(xí),不免枯燥,如果還能在開發(fā)板上點個燈,是不是會更好一點!(話外音:還是枯燥!)
除了Python,還可以使用Arduino來開發(fā)、測試,也算是一專多能了。
先看板,再點燈,此乃學(xué)習(xí)電子的不二法門(個人經(jīng)驗,切勿模仿)。
初看,這貨不是Arduino板么?其實不是滴,雖具其形,但內(nèi)心更強大。Metro M0 Express擁有一顆 ATSAMD21G18芯,相比ATmeg328來說,在主頻及存儲方面都有極大的提升。引腳全面兼容Arduino UNO。
供電方面,新增了7V~9V DC供電接口,DC Jack規(guī)格為5.5/2.1mm,極性內(nèi)正外負,旁邊還有一個物理開關(guān),手動打開或關(guān)斷電源。
與Arduino不同的是,GPIO接口不再使用過孔,而是使用貼片式,開發(fā)板背面整體一塊,配合Metro Express的大大Logo,更顯大氣。
硬件配置方面,MCU型號為ADSAMD21G18,最高運行主頻為48MHz,3.3V工作電壓。存儲組合則為256KB的Flash存儲加32KB的SRAM;另外還板載了一片4MB的SPI存儲,進一步擴充了存儲需求。 Metro Express的主要特性如下:
? ATSAMD21G18核心,最高運行主頻為48MHz
? 256KB/32KB的存儲組合
? 2MB SPI Flash存儲擴展
? 32.768KHz晶振
? 3.3V電壓調(diào)節(jié)器,最大支持500mA電流
? 原生USB支持,不再需要FTDI轉(zhuǎn)串口支持
? 硬件串口/I2C/SPI支持
? PWM輸出
? 25個GPIO,工作電壓為3.3V
? SWD調(diào)試接口
值得指出的是,25個GPIO可除了可以復(fù)用做數(shù)字/模擬引腳外,其中還包括了一個真正的模塊輸出引腳A0。另外原生的USB支持,免去了類似FTDI之類的轉(zhuǎn)換芯片,USB接口除了可以充當串口通訊設(shè)備外,還可以連接鍵盤、鼠標及MIDI設(shè)備。
另外在開發(fā)板上也集成了一個SWD調(diào)試接口,只是不知道在Arduino環(huán)境里如何使用它?
先不管這些了!上個電看看。
使用MicroUSB轉(zhuǎn)換線連接開發(fā)板的USB口與PC連接,測試用的PC上安裝的是Windows 10系統(tǒng)。當開發(fā)板與PC連接后,通過USB給開發(fā)板供電。上電后開發(fā)板的三色LED燈循環(huán)變換顯示顏色,另外指示串口通信的TX指示燈開始閃爍。
Windows 10自動檢測到串口設(shè)備并安裝了正確的驅(qū)動程序,如下
另外PC上會多出一個大容量存儲磁盤,其中包含了PYTHON啟動代碼及相關(guān)的資源,如下
其中main.py里面包含了相關(guān)的功能代碼。在串口的輸出如下
這個默認的程序有點復(fù)雜,對于初學(xué)者來說,咱們來嘗試寫個簡單的點燈程序,也算是第一個hello world程序。
我們知道在PC上寫Python程序,有很多的IDE可供選擇。那么在為MCU寫代碼時,有什么好的IDE可供選擇呢?Adafruit官方推薦使用Mu來作為Metro M0 Express的IDE。從官網(wǎng)下載并安裝Mu程序,啟動后畫面如下
界面比較樸素,沒有什么噱頭!不過這個IDE提供了一個REPL控制臺,這是個很實用的程序。當然你也許會想,用VSCode行不?用Spyder行不?當然也行,不過我們知道Python程序都提供了一個REPL環(huán)境供用戶獲取幫助或?qū)嶒灪唵蔚拇a,這個時候這些IDE就沒有用了,因為這些IDE都是基于PC端的Python解釋器!
先寫一段簡單的Python代碼,與MCU無關(guān),純粹是驗證Python解釋器。
代碼如下
import time
s = 0
for i in range(10):
print(i)
time.sleep(1)
print('s = {}'.format(s))
將代碼保存為sum.py,如下
Mu聰明的地方在于它能將代碼保存到開發(fā)板映射到PC的磁盤上,將文件命名為sum.py并保存。然后看串口中是否有輸出。然而并沒有,仍然是main.py程序的輸出!
原來,CircuitPython在處理程序的執(zhí)行時,會遵循一定的規(guī)則。CircuitPython會在磁盤上依次查找code.txt, code.py, main.txt及main.py,找到并執(zhí)行第一個程序。咱們將上述代碼保存為sum.py,根本不是上述文件之列,所以剛創(chuàng)建的文件根本就不會運行!
明白了這一點,就好辦了。只需要將sum.py更名為code.py就可以了,試試!
更名后的代碼文件即時生效了,如下
可以看到咱們期望的結(jié)果了。
不止如此,提示還給出了一些有用的信息,比如"Auto-reload is on"這句話告訴我們,代碼文件修改并保存后會即時生效,同時我們也看到了code.py執(zhí)行會優(yōu)先于main.py。
最后一個有趣的地方在于,當code.py執(zhí)行完畢后,我們可以按任意鍵進入REPL環(huán)境,如下
確實很好很強大!
不過我們前面提到Mu這個IDE時也說了,Mu本身就提供了一個REPL環(huán)境,
下面這個窗口就是REPL環(huán)境了,這是個很有用的窗口,例如我們想看看開發(fā)板GPIO接口的命名,可以在REPL里執(zhí)行如下命令
熟悉Arduino編程的用戶一定對A0、A1這些接口耳熟能詳,所以,如果要引用其中一個接口,按照Python的規(guī)則,應(yīng)該是board.XX,其中XX就是上面列出的名稱了。
好,下面開始正式點燈,編輯如下代碼
很光棍的一段代碼,當然也好懂!保存,然后就自動運行了。看到LED燈閃啊閃,串口也有對應(yīng)的輸出。
然而問題來了,Cpython中的哪些庫可以用呢?這個可以參考官方的文檔,參見附錄。上面代碼中用到的一些庫都在參考資源中列出來了,花5分鐘熟悉一下!
說了半天,CircuitPython是啥?CircuitPython是大名鼎鼎的MicroPython的再移植產(chǎn)品,專門為Adafruit的部分硬件定制。
除了支持Python,開發(fā)板也支持Arduino模式開發(fā)。按照Arduino一般的開發(fā)模式,首先要下載并安裝對應(yīng)的板級庫文件,Metro M0 Express也不例外,如下
確定后,就可以在Arduino的開發(fā)板管理器里添加對應(yīng)的開發(fā)板類型了。這里碰到一點糟心的事,就是官方的PDF文檔里舉例使用的是另一款開發(fā)板,不是針對Metro M0 Express的,花了很長時間安裝后卻發(fā)現(xiàn)找不到Metro M0 Express這一開發(fā)板型號,重新在網(wǎng)頁版里找到了正確的庫文件后才解決!因為Arduino現(xiàn)在支持的開發(fā)板種類太多,很多開發(fā)板的命名也比較相似,結(jié)果往往就是找錯了對象,鬧了笑話,浪費了時間!
下圖是正確安裝了軟件庫后顯示的板卡名稱
現(xiàn)在可以打開一個blink程序來點燈了,編譯并上傳的結(jié)果如下
LED燈又開始閃爍了。
不過問題又來了,Python不能用了!
這是正常現(xiàn)象,現(xiàn)在的存儲空間被ARDUINO程序占用了,所以PYTHON當然也就不能用了。怎么辦呢,下面是切換回Python的方法。
首先雙擊開發(fā)板上的復(fù)位鍵,進入bootloader模式,此時PC端映射的盤符會變成METROBOOT,里面有3個文件,如下
從附錄給出的CircuitPython參考里下載一個擴展名為.bin的文件,注意不要下載錯了,必須是針對Metro M0的.bin文件,然后拖動到映射的盤符里,等待大約15秒鐘,奇跡出現(xiàn)了,CircuitPython又出現(xiàn)了。只是此時的CircuitPython里還沒有創(chuàng)建可運行的Python文件,自己寫一個,命名為code.py或main.py,然后丟到映射盤里,又可以了!
總體來說,Metro M0 Express還是很好玩的。首先是硬件參數(shù)提升了,更高的運行主頻及更大的存儲空間,完敗Arduino UNO R3!;其次,引入了CircuitPython的新式編程語言,一方面程序代碼更簡單,另一方面也為那些想要學(xué)習(xí)和了解Python的用戶提供了一個學(xué)習(xí)的理由;最后一點就是靈活的引導(dǎo)配置模式,使得在二種編程語言(c/c++及Python)之間可以靈活切換!
至于配置過程中碰到的文檔不一致的問題,只能怪筆者看文檔的時候不夠細心,不過如果官方在整理文檔時,針對性更具體一點,也許用戶的體驗會更好一點吧!
-
AI
+關(guān)注
關(guān)注
87文章
31536瀏覽量
270354 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85041 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187840
原文標題:再不學(xué)點Python,咱真老了
文章出處:【微信號:weixin21ic,微信公眾號:21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論