摘要:互聯網玩家為了讓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的對應語言包支持,互聯網的人就更容易介入到物聯網感知層的開發了,對于行的的發展是個大好事,希望以后會有更多的支持,比如鴻蒙,也會支持更多的語言包,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289680.html
標籤:其他
