Python 作為一種易學易用的程式語言,在嵌入式系統和物聯網領域的應用日益廣泛。本文從 Python 的迴圈和函式等基礎語法開始,逐步深入到如何在 Raspberry Pi、MicroPython Pyboard 和 Jetson Nano 等平臺上進行 Python 開發與應用,探討瞭如何在這些平臺上配置 Python 環境、執行程式碼,以及如何利用 Python 進行檔案輸入/輸出、模組化程式設計等操作。此外,本文還介紹了 MicroPython 韌體的升級步驟和 dfu-util 工具的安裝方法,讓讀者能夠快速上手 MicroPython Pyboard 的開發。最後,本文也簡要介紹了物聯網的基本概念及其應用,以及 Python 在物聯網開發中的優勢。
While 迴圈
while
迴圈會在條件為真時重複執行一段程式碼。條件在每次迴圈開始前都會被評估。如果條件為假,迴圈將終止。
i = 0
while i < 5:
print(i)
i += 1
For 迴圈
for
迴圈是一種更簡潔的方式,來寫一個 while
迴圈。它允許你遍歷一個序列(如列表、字串或元組)的每個元素,並對每個元素執行某些操作。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
###巢狀迴圈 巢狀迴圈是指在一個迴圈內部包含另一個迴圈。這種結構可以用來解決一些複雜的問題。
for i in range(3):
for j in range(2):
print(f"i={i}, j={j}")
迴圈控制語句
迴圈控制語句可以改變迴圈的正常執行流程。這些語句包括 break
、continue
和 pass
。
break
語句:終止迴圈的執行,並將控制權轉移到迴圈之後的第一個語句。continue
語句:跳過當前迴圈的剩餘程式碼,並立即重新評估條件。pass
語句:不執行任何操作,可以用作佔位符。
for i in range(5):
if i == 3:
break
print(i)
for i in range(5):
if i == 3:
continue
print(i)
for i in range(5):
if i == 3:
pass
print(i)
函式
函式是一段可以重複使用的程式碼,用於執行某個特定的任務。函式可以接收引數,並傳回結果。
函式定義
在 Python 中,函式是使用 def
關鍵字定義的。以下是函式定義的基本結構:
def 函式名稱(引數):
"""函式文件字串"""
函式體
return 傳回值
函式範例
以下是一個簡單的函式範例:
def multiply(a):
"""傳回 a 的平方"""
ans = a * a
return ans
print(multiply(5)) # 輸出: 25
函式可以接收多個引數,並傳回多個值。函式也可以使用預設引數值和可變長度引數列表。
def greet(name, age=30):
"""列印問候資訊"""
print(f"Hello, {name}! You are {age} years old.")
greet("John") # 輸出: Hello, John! You are 30 years old.
greet("Jane", 25) # 輸出: Hello, Jane! You are 25 years old.
Python程式設計與IoT應用
Python是一種高階程式語言,廣泛應用於各個領域,包括IoT(Internet of Things)。在本文中,我們將探討Python的模組化程式設計、檔案輸入/輸出以及基本的輸入/輸出操作。
模組化程式設計
模組化程式設計是指將程式碼組織成邏輯單元,以提高程式碼的可讀性和可維護性。在Python中,模組是指一個包含相關函式、類別和變數的物件。模組可以被匯入到其他程式中,以便於程式碼的重用。
例如,假設我們有一個名為test.py
的模組,包含一個計算平方的函式:
def square(val):
print("The square is :", val * val)
return
我們可以將此模組匯入到另一個程式中,並呼叫其中的函式:
import test
test.square(15)
檔案輸入/輸出
Python提供了多種方式來進行檔案輸入/輸出。其中,print()
函式可以用來將輸出顯示在螢幕上。例如:
print("Hello to the Python World")
此外,input()
函式可以用來讀取鍵盤輸入的資料。例如:
input_data = input("Please enter a input")
這個函式會顯示提示訊息,並等待使用者輸入資料。輸入的資料會被傳回為字串。
基本輸入/輸出操作
Python提供了多種基本輸入/輸出操作,包括print()
、input()
等。這些函式可以用來進行簡單的輸入/輸出操作。
內容解密:
在上面的程式碼中,print()
函式用來將輸出顯示在螢幕上。input()
函式用來讀取鍵盤輸入的資料。這些函式可以用來進行簡單的輸入/輸出操作。
圖表翻譯:
flowchart TD A[開始] --> B[輸入] B --> C[處理] C --> D[輸出] D --> E[結束]
這個圖表顯示了基本的輸入/輸出操作流程。首先,程式開始執行,然後讀取輸入資料,接著進行資料處理,最後將結果輸出到螢幕上。
Python程式設計與物聯網介紹
Python是一種廣泛使用的程式設計語言,近年來在嵌入式系統領域中逐漸受到重視。根據IEEE Spectrum的報告,Python已經成為最受歡迎的程式設計語言。然而,Python在嵌入式系統領域中仍然面臨著挑戰,因為傳統上嵌入式系統的開發主要使用C語言。
Python在嵌入式系統中的應用
Python可以用於嵌入式系統的開發,特別是在微控制器領域中。MicroPython是一種根據Python 3的實作,允許在微控制器上執行Python程式。MicroPython是一個小型的Python標準庫,優化了在微控制器和資源有限的環境中執行。
物聯網(IoT)簡介
物聯網(IoT)是一種將物理物體和人們透過軟體、硬體、網路連線和感測器相互連線的技術。IoT使得物體可以收集和交換資料,從而實作智慧化和自動化。物聯網系統的基本元件包括感測器、連線性、資料處理和使用者介面。
物聯網的應用
物聯網的應用領域廣泛,包括能源、智慧家居、醫療保健、教育、環境監測、農業和交通等。物聯網可以幫助我們更好地管理和控制物理世界,提高效率和降低成本。
Python在物聯網中的應用
Python是一種適合用於物聯網開發的語言,因為它具有簡單、靈活和高效的特點。Python可以用於開發物聯網裝置、資料處理和分析等。Python的動態性和編碼靈活性使得開發人員可以快速地建立智慧物聯網裝置。
設定 Raspberry Pi、MicroPython Pyboard 和 Jetson Nano 進行 Python 開發
在當今世界,配置和熟悉嵌入式平臺的時間已不再是主要關注點。主要目標應該是快速將設計的應用程式推向市場。為了達到這個目標,作者提供了配置和程式設計平臺的詳細步驟。在這裡,作者關注三種不同的嵌入式平臺:Raspberry Pi 板用於基本介面應用,MicroPython Py 板用於 IoT 應用,NVIDIA Jetson Nano 板用於使用 Python 程式設計的機器學習和深度學習應用,同時結合 FoG/雲端計算。
2.1 Raspberry Pi 板功能
Raspberry Pi 是一種小型單板計算機(SBC)。透過將鍵盤、滑鼠和顯示器連線到 Raspberry Pi,可以將其用作迷你個人計算機。Raspberry Pi 通常用於影像/影片處理、IoT 和機器人應用。雖然 Raspberry Pi 的速度可能不如一般用途的桌面計算機,但它可以在功耗和成本方面提供可比的功能。Debian-based NOOBS 作業系統和 Raspbian 作業系統是 Raspberry Pi 的官方作業系統。此外,還有其他作業系統,如 Archlinux、Ubuntu、Windows 10、RISC OS、IoT Core 等,已適配用於 Raspberry Pi 平臺。目前,Raspbian 作業系統已最佳化用於 Raspberry Pi 上的使用。如 Python 程式設計、瀏覽、文書處理、遊戲等任務,可以在 Raspbian 作業系統上高效地處理。為了作業系統的順暢執行,建議使用至少 8 GB 儲存容量的 microSD 卡。
Raspberry Pi 硬體功能
Raspberry Pi 3 B+ 板的硬體功能如圖 2.2 所示。重要的硬體功能包括:
- **處理器:**ARM 基礎的 Broadcom Processor SoC,具有內建 GPU(圖形處理單元)。
- **時鐘速度:**根據不同的 Raspberry Pi 模型,時鐘速度範圍從 0.7 GHz 到 1.2 GHz。
- **SDRAM:**容量從 256 MB 到 1 GB 不等。
- **序列介面:**提供流行的序列介面,如 SPI、I2C、I2S 和 UART。
Raspberry Pi 的不同版本
Raspberry Pi 有多個版本,包括 Raspberry Pi Zero、Raspberry Pi 1 A、Raspberry Pi 1 A+、Raspberry Pi 1 B、Raspberry Pi 1 B+、Raspberry Pi 2 B、Raspberry Pi 3 B、Raspberry Pi 3 B+ 和 Raspberry Pi 4。每個版本都有其特點和應用場景。
2.2 MicroPython Pyboard
MicroPython Pyboard 是另一種流行的嵌入式平臺,用於 IoT 應用。它支援 MicroPython,這是一種 Python 的子集,設計用於在微控制器上執行。MicroPython Pyboard 提供了一種簡單且易於使用的方式來開發 IoT 應用,具有低功耗和低成本的優點。
2.3 Jetson Nano
NVIDIA Jetson Nano 是一種強大的嵌入式平臺,用於機器學習和深度學習應用。它支援 Python 程式設計,結合 FoG/雲端計算,提供了一種高效且靈活的方式來開發 AI 應用。Jetson Nano 的硬體功能包括:
- **GPU:**NVIDIA Maxwell 架構的 GPU,提供高效能的計算能力。
- **CPU:**四核 ARM Cortex-A57 處理器,提供高效的計算能力。
- **記憶體:**4 GB 的 LPDDR4 記憶體,提供足夠的記憶體空間用於執行應用程式。
Raspberry Pi 系列簡介
Raspberry Pi 是一系列的小型、低成本、開源的單板計算機,廣泛用於教育、研究和開發領域。以下是幾款 Raspberry Pi 型號的簡要介紹:
Raspberry Pi 3 Model B
- 處理器:Broadcom 2837B0,四核 ARM Cortex-A53
- 時脈頻率:1.2 GHz
- 記憶體:1 GB SDRAM
- 圖形處理器:Videocore IV
- 特點:支援 Wi-Fi 和 Bluetooth 4.1,具有 4 個 USB 埠和 1 個 HDMI 埠
Raspberry Pi 3 Model B+
- 處理器:Broadcom 2837B0,四核 ARM Cortex-A53
- 時脈頻率:1.4 GHz
- 記憶體:1 GB SDRAM
- 圖形處理器:Videocore IV
- 特點:支援 Wi-Fi 和 Bluetooth 4.2,具有 4 個 USB 埠和 1 個 HDMI 埠
Raspberry Pi Zero
- 處理器:Broadcom 2835,單核 ARM11
- 時脈頻率:1 GHz
- 記憶體:512 MB SDRAM
- 圖形處理器:Videocore IV
- 特點:超薄超輕,具有 1 個 micro USB 埠和 1 個 micro HDMI 埠
比較不同型號的 Raspberry Pi
型號 | 處理器 | 時脈頻率 | 記憶體 | 圖形處理器 |
---|---|---|---|---|
Raspberry Pi 3 Model B | Broadcom 2837B0 | 1.2 GHz | 1 GB | Videocore IV |
Raspberry Pi 3 Model B+ | Broadcom 2837B0 | 1.4 GHz | 1 GB | Videocore IV |
Raspberry Pi Zero | Broadcom 2835 | 1 GHz | 512 MB | Videocore IV |
每個型號都有其優缺點,選擇哪一款 Raspberry Pi 取決於您的具體需求和應用場景。
Raspberry Pi 和 MicroPython Pyboard 的配置和特點
Raspberry Pi 的配置
Raspberry Pi 是一種小型、低成本的單板電腦,具有多種版本和配置。以下是 Raspberry Pi 3 model B+ 的硬體特點:
- CSI Camera Interface:用於連線 Pi 相機的串列介面。
- HDMI:用於向支援 HDMI 的顯示器傳輸未壓縮的影片和數字音訊。
- 複合音頻和影片輸出:用於向音訊/影片系統傳輸音訊和影片。
- 電源 LED:紅色 LED 指示電源狀態,當電壓低於 4.63V 時開始閃爍。
- DSI:用於連線 LCD 顯示器的串列介面。
- 活動 LED:綠色 LED 指示 microSD 卡活動。
Raspberry Pi 的安裝和配置
安裝 Raspberry Pi 需要以下步驟:
- 下載和安裝 Raspberry Pi Imager:從官方網站下載並安裝 Raspberry Pi Imager。
- 選擇作業系統:選擇要安裝的作業系統,例如 Raspberry Pi OS。
- 插入 microSD 卡:插入 microSD 卡,Imager 會自動檢測。
- 點選寫入:點選「寫入」按鈕開始安裝過程。
或者,可以使用 balenaEtcher 軟體來安裝作業系統。
MicroPython Pyboard 的特點
MicroPython Pyboard 是一種小型開發板,設計用於執行 MicroPython 以實作各種 IoT 專案。以下是 Pyboard V1.1 的規格:
- STM32F405RG 微控制器:168MHz Cortex-M4 核心。
- 1024KB 快閃記憶體 ROM:192KB RAM。
- microUSB 聯結器:用於供電。
- MMA7660 3 軸加速度計:用於感測加速度。
Booting Raspberry Pi
啟動 Raspberry Pi 需要以下步驟:
- 插入 microSD 卡:插入已安裝作業系統的 microSD 卡。
- 連線電源、鍵盤、滑鼠和顯示器:連線必要的外部裝置。
- 啟動 Raspberry Pi:啟動 Raspberry Pi,會出現「Welcome to Raspberry Pi」的對話方塊。
- 快速設定:按照提示快速設定 Raspberry Pi,包括選擇國家、語言、時區等。
現在,Raspberry Pi 已經可以使用了。
MicroPython Pyboard 配置與功能
MicroPython Pyboard 是一款根據 ARM Cortex-M4 微控制器的開發板,內建 MicroPython 解譯器,允許使用者直接在板上編寫和執行 Python 程式碼。以下是 Pyboard 的一些主要功能和配置步驟。
硬體特性
- MicroSD 卡插槽
- 5 個 GPIO 腳位在底部,24 個 GPIO 腳位在左、右側
- 實時時鐘(RTC)
- 三個 12 位元類比數位轉換器(ADC)
- 兩個 12 位元數位類比轉換器(DAC)
- 一個使用者按鈕和一個重置按鈕,四個 LED 燈
- 寬輸入電壓範圍從 3.6V 到 16V,3.3V 低電壓降壓轉換器
- 可透過 DFU 啟動器在 ROM 中升級韌體
配置 Pyboard
- 將 Pyboard 連線到電腦,並以 USB 儲存裝置的形式出現。
- 導航到 Pyboard 驅動器(可能稱為「PYBFLASH」)。
- 編輯「main.py」檔案並新增 MicroPython 程式碼,然後儲存檔案。
- 從作業系統中選擇驅動器。
- 按下重置按鈕(RST)開始執行程式碼或應用程式。
升級韌體
- 斷開 Pyboard 的電源供應。
- 使用跳線或線將 P1(DFU)腳位短接到電源(3V3)腳位,如圖 2.10 所示。
- 將 Pyboard 連線到電腦的 USB 埠。
- 從 MicroPython 網站下載韌體檔案,如圖 2.11 所示。
- 下載 Pyboard 的最新穩定韌體檔案,具有「.dfu」副檔名。
- 使用「dfu-util」工具將新的韌體燒錄到 Pyboard 上。
安裝 dfu-util 工具
- 下載並安裝 Zadig 公用程式,如圖 2.12 所示。
- 確保 Pyboard 已插入並處於 DFU 模式(P1 和 3.3V 短接)。
- 在 Zadig 公用程式中,選擇「選項」→「列出所有裝置」。
- 從下拉選單中選擇「STM32 BOOTLOADER」。
- Zadig 公用程式建議用「WinUSB」取代「STTub30」驅動程式,如圖 2.13 所示。
- 成功安裝後,下載最新版本的 dfu-util 韌體。
- 解壓縮資料夾並開啟命令提示符,如圖 2.14 所示。
- 導航到解壓縮的資料夾。
- 執行以下命令將最新的韌體上傳到 Pyboard:
dfu-util --alt 0 -D <path to .dfu>
測試 Pyboard
- 連線 Pyboard 到電腦的 USB 埠。
- 開啟「裝置管理員」,並識別「連線埠(COM 和 LPT)」。
- 如果顯示「USB 串列裝置」,則驅動程式已安裝並正常工作,如圖 2.16 所示。
- 手動安裝驅動程式,如果您看到黃色驚嘆號(!)。
- 右鍵單擊「裝置」→選擇「屬性」→選擇「驅動程式安裝」。
- 選擇「PYFLASH」驅動器,如圖 2.17 所示。
- 點選「確定」→「下一步」,驅動程式應該會安裝。
- 在「連線埠(COM 和 LPT)」下列出的 USB 串列裝置。
- 記下或複製 COM 名稱(例如 COM6),如圖 2.16 所示。
MicroPython 程式碼編寫
MicroPython 程式碼可以直接在 Pyboard 上編寫和執行。以下是基本步驟:
- 連線 Pyboard 到電腦。
- 導航到 Pyboard 驅動器。
- 編輯「main.py」檔案並新增 MicroPython 程式碼。
- 儲存檔案。
- 按下重置按鈕(RST)開始執行程式碼或應用程式。
Jetson Nano嵌入式AI平臺
Jetson Nano是一款強大的嵌入式AI平臺,適用於機器學習和其他AI應用。它可以用於影像分類、物體偵測和模式識別等任務,利用其平行計算能力。
Jetson Nano的特點
Jetson Nano可以配置為5瓦或10瓦模式,具有小型化的設計,適合於創新的IoT應用。它採用64位ARM Cortex-A57四核處理器,時脈頻率為1.43 GHz。GPU根據NVIDIA Maxwell架構,具有128個CUDA核心,能夠達到472 GFLOPs的計算能力。Jetson Nano的記憶體包括4 GB 64位LPDDR4 RAM和16 GB的eMMC儲存,用於執行Tegra Linux。
嵌入式系統領域正經歷著從傳統C語言到Python的轉變,這反映在Python逐漸成為最受歡迎的程式語言的趨勢中。本文深入探討了三種嵌入式平臺——Raspberry Pi、MicroPython Pyboard 和 Jetson Nano——的配置、功能和Python開發應用,涵蓋了從基礎的迴圈和函式到模組化程式設計、檔案輸入/輸出,以及在IoT和AI領域的應用。分析不同平臺的硬體特性、配置步驟和開發流程,可以發現Python的易用性和靈活性使其成為嵌入式系統開發的理想選擇,尤其在資源受限的環境下,MicroPython的出現更降低了開發門檻。然而,Python在嵌入式系統的應用仍面臨挑戰,例如與傳統C語言生態的整合以及效能最佳化等問題。展望未來,隨著邊緣計算和AI技術的發展,預計Python在嵌入式系統,特別是IoT和AI領域的應用將更加普及。對於有意進入嵌入式系統領域的開發者,建議深入學習Python及其相關的函式庫和框架,並關注不同嵌入式平臺的特性和發展趨勢,才能更好地抓住機遇。玄貓認為,掌握Python將成為未來嵌入式系統開發者的核心競爭力。