什麼是MircoPython?

摘要:互聯網玩家爲了讓Python這樣的容易學,簡單易學、社區API豐富的語言可以在嵌入式領域用上,逐漸開始了一輪Python上嵌入式的遷移,這樣就有了今天的主角——MircoPython。

本文分享自華爲雲社區《Python的物聯網衍生microPython【生長吧!Python】》,原文作者:o0龍龍0o 。

引言

隨着物聯網的發展,隨着互聯網向嵌入式應用下沉,很多應用在互聯網的編程語言也慢慢向嵌入式和單片機領域發展。

因爲物聯網的高速發展,邊端嵌入式應用也開始被物聯網玩家介入,本來嵌入式的發展主要應用的的嵌入式的C語言,因爲C語言對比互聯網使用的腳本語言有上手慢,不好學,社區API少等問題,不利於互聯網玩家和模式的介入,互聯網玩家爲了讓Python這樣的容易學,簡單易學、社區API豐富的語言可以在嵌入式領域用上,有人說1000行的C程序、100行的Java程序、Python只需要10行,體現Python的便易性,逐漸開始了一輪Python上嵌入式的遷移,這樣就有了今天的主角——MircoPython。

MicroPython和Python一樣,都是遵循GPL(GNU General Public License)協議的開源解釋性語言,可以在任何硬件板子上運行已經移植好的API控制硬件和進行算法運算,比如常見的硬件IO-存儲器、傳感器、顯示器、燈開關、運動部件、網絡和通訊都可以利用MicroPython語言進行操作。

MicroPython可以讓有Python語言經驗的人但是沒有C語言基礎、嵌入式基礎和硬件基礎的人,更快捷的接觸嵌入式,控制自己手裏的MCU

MicroPython

MicroPython 是 Python 3 編程語言的精簡高效實現,其中包括 Python 標準庫的一小部分,並針對在微控制器和受限環境中運行進行了優化。

MicroPython pyboard 是一款緊湊型電子電路板,可在裸機上運行 MicroPython,爲您提供可用於控制各種電子項目的低級 Python 操作系統。

MicroPython 充滿了高級功能,例如交互式提示、任意精度整數、閉包、列表理解、生成器、異常處理等。 然而,它足夠緊湊,可以在僅 256k 的代碼空間和 16k 的 RAM 內運行。MicroPython 旨在儘可能與普通 Python 兼容,讓您可以輕鬆地將代碼從桌面傳輸到微控制器或嵌入式系統。

MicroPython 是在裸機上運行的完整 Python 編譯器和運行時。 您將獲得一個交互式提示 (REPL) 以立即執行命令,以及從內置文件系統運行和導入腳本的能力。

MicroPython 儘量與 Python(稱爲 CPython)儘可能兼容,包括用於訪問低級硬件的“機器”等模塊也實現了一些核心Python庫。

看一下看MicroPython是如何操作硬件的

import pyb
 
# 點亮LED1
pyb.LED(1).on()
 
# 打印信息到串口窗口
print('Hello MicroPython!')

有個MicroPython ,我就可以這樣簡單的操作一個LED的點亮和關閉,也可以打印log到串口窗口

更復雜我們可以操作一個存儲器,如下:

from machine import Pin, I2C
 
# 創建一個I2C總線
i2c = I2C(scl=Pin('X1'), sda=Pin('X2'))
 
#查找總線上的設備
dev_list = i2c.scan()
 
# 向設備地址0x42寫入‘4’同時從0x42讀出4個字節
i2c.writeto(0x42, b'4')
data = i2c.readfrom(0x42, 4)
 
# 存儲器和內存互相訪問
i2c.writeto_mem(0x42, 0x12, b'')
data = i2c.readfrom_mem(0x42, 0x12, 2)

通過上面的命令我們就可以簡單的操作一個I2C存儲器,比C語言方便太多了,有個mircoPython,我們甚至可以直接利用嵌入式進行數學運算,來實現計算的轉移,當然大型運算還是需要嵌入式夠有一定的算力,這個和當前的設備定義有些出入,挺好玩,比如在mircoPython IDE上我們可以直接運行下面的計算,當時計算不是由計算機而是由連接的嵌入式MCU完成的。

# mircoPython 數據表示及計算
# 小整數
>>> 123
123
# 大整數
>>> 1 << 160
1461501637330902918203684832716283019655932542976
# 浮點數
>>> 1.23e6
1230000.0
# 複數計算
>>> (1 + 2j) * 4j
(-8+4j)

microPython 應用

目前MicroPython支持基於32-bit的ARM處理器,比如說pyboard(STM32F405),支持NRF51822(micro:bit)、支持FireBeetle-ESP32、支持WiPy、支持ESP8266核心主控、支持CC3200等等。

越來越多廠家開始適配MicroPython,畢竟有着潛在的用戶羣,說不定未來LiteOS也會去繼承MicroPython的支持,現在好像已經有Javascript的支持,有個Python的對應語言包支持,互聯網的人就更容易介入到物聯網感知層的開發了,對於行的的發展是個大好事,希望以後會有更多的支持,比如鴻蒙,也會支持更多的語言包。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章