顯示包含「MicroPython」標籤的文章。顯示所有文章
顯示包含「MicroPython」標籤的文章。顯示所有文章

2021年8月21日星期六

[MicroPython] STM32 + MicroPython + SSD1306 基本使用

 今天來測試 SSD1306 OLED 顯示模組,SSD1306 是透過 I2C 來控制。所以在我們 DIY Pyboard 連接 VCC,GND,SCL,SDA。為了使用麵包板方便連接,我使用 PB3 (SDA) ,PB10(SCL) 這一組來使用。以這次設計的 板子架構來說是 第 2 組 I2C。


準備

STM32_MiniBoard x 1
SSD1306                 x 1
麵包板                    x 1
若干杜邦線


接線

MicroPython



開始

在 MicroPython 裡已經有 SSD1306 驅動程式,在源碼 Drivers/display 目錄裡。不過,在這我自行編譯的 MicroPython firmware 已經加入 SSD1306 驅動,所以不用另外拷貝出來使用。首先我們將 開啟 Thonny 並且開啟 REPL 提示列。

輸入以下程式段

from machine import Pin,I2C
i2c = I2C(2)
I2C(2) 是指 第二組 I2C 通訊

我們可以測試一下
i2c.scan()

如果沒有問題,會顯示以下結果。




表示 SSD1306 的位置是 60 (為10進制, 16進制為 0x3C) ,且 I2C 接線無誤。
繼續輸入以下程式段

from ssd1306 import SSD1306_I2C
oled = SSD1306_I2C(128, 64, i2c)
oled.text("hello makdev.net",0,0)
oled.show()
實際畫面是
MicroPython













我們接著試著使用 Raspberry Pi Pico  RP2040 的 範例測試一下 source code 連結 (https://github.com/raspberrypi/pico-micropython-examples/tree/master/i2c/1306oled/i2c_1306oled_using_defaults.py)

源碼的 第 9 行 



i2c = I2C(0)
改為

i2c = I2C(2)
在 Thonny 中,使用檔案開啟功能 開啟 MicroPython Device 的方式,開啟 main.py 並將全部 Sorce code 貼上並儲存。



# Display Image & text on I2C driven ssd1306 OLED display
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import framebuf

WIDTH  = 128                                            # oled display width
HEIGHT = 32                                             # oled display height

i2c = I2C(2)                                            # Init I2C using I2C0 defaults, SCL=Pin(GP9), SDA=Pin(GP8), freq=400000
print("I2C Address      : "+hex(i2c.scan()[0]).upper()) # Display device address
print("I2C Configuration: "+str(i2c))                   # Display I2C config


oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)                  # Init oled display

# Raspberry Pi logo as 32x32 bytearray
buffer = bytearray(b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|?\x00\x01\x86@\x80\x01\x01\x80\x80\x01\x11\x88\x80\x01\x05\xa0\x80\x00\x83\xc1\x00\x00C\xe3\x00\x00~\xfc\x00\x00L'\x00\x00\x9c\x11\x00\x00\xbf\xfd\x00\x00\xe1\x87\x00\x01\xc1\x83\x80\x02A\x82@\x02A\x82@\x02\xc1\xc2@\x02\xf6>\xc0\x01\xfc=\x80\x01\x18\x18\x80\x01\x88\x10\x80\x00\x8c!\x00\x00\x87\xf1\x00\x00\x7f\xf6\x00\x008\x1c\x00\x00\x0c \x00\x00\x03\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")

# Load the raspberry pi logo into the framebuffer (the image is 32x32)
fb = framebuf.FrameBuffer(buffer, 32, 32, framebuf.MONO_HLSB)

# Clear the oled display in case it has junk on it.
oled.fill(0)

# Blit the image from the framebuffer to the oled display
oled.blit(fb, 96, 0)

# Add some text
oled.text("Raspberry Pi",5,5)
oled.text("Pico",5,15)

# Finally update the oled display so the image & text is displayed
oled.show()
點擊 Run 按鈕
MicroPython



畫面變成
MicroPython






相關文章

開始第一個 micropython 程式
STM32F4 使用 MicroPython 應用
如何安裝 PyBoard 的 Com Port


2021年8月8日星期日

[MicroPython] 開始第一個 micropython 程式

拿到 STM32F401_MiniPyboard 之後就想先測試一下 MicroPython 簡單的程式,順便驗證一下板子。開始之前 先預安裝 Thonny  IDE ,這是編輯程式 及 上傳程式的工具。它同時支援 Windows , Linux 及 MAC 系統。

安裝程式

可以在這裡下載安裝 (https://thonny.org/) , 安裝方式依序按下一步安裝即可。


執行 Thonnny IDE


Thonny


設定 Thonny IDE

先將 STM32F401_MiniPyboard 接入 USB cable。
在 Thonny IDE 的選單點開 Run ->Select interpreter...  並選擇 Interpreter Tab。

選擇 MicroPython(generic)

MicroPython


選好後 下方會出現 Port 的選擇 , 選擇剛接入開發板後 新增的 Com port。 然後點下方的 OK

MicroPython



回到主畫面後 , 在 Shell 窗口 是 REPL 互動窗口。會顯示以下

MicroPython



表示到現在已經正常連接了。
我們可以在 Shell / REPL 窗口直接編輯程式。

MicroPython

依序往下編輯, 這時候 LED 應該是會閃爍了。


如果要開發板上電之後開始執行程式?


點選單 File -> Open ...



選擇 MicroPython device




選擇 main.py 開啟,並將剛剛的 程式 填入




儲存後 ,在 Shell 按組合鍵 Ctrl + D 軟啟動。或是 重新上電

這時候 LED 應該會開始閃爍。 





[MicroPython] STM32F4 使用 MicroPython 應用

 緣起

STM32F401CE mini pyboard  開發板是基於 ST公司 的 STM32F401CE 高效能 ARM Contex-M4 為工作核心,並以 MicroPython 程式語言方向所設計的開發板。因此 SWIO/SWCLK 接腳內定會定為一般的 GPIO 來使用。開發板與電腦接口完全只依靠 STM32F401CE 本身的 USB Port 做為程式開發通訊手段。當然也可回歸於標準 C 語言開發模式。

STM32F401CE 的工作頻率達 84MHz ,並具有浮點單元(FPU) 。Flash Memory 空間為 512 Kbytes,SRAM 空間為 96 Kbytes。做為入門運用程式開發及驗證基本上已經足夠了。開發板電源有 Fuse 自恢復式保險絲做為基本電源保護。內部建置 LDO 3.3V 電源可供 600mA 輸出,並可使用電池 3.6V ~ 4.2V 電源外接輸入。如果同時接入 USB 5V,會自動以 USB 5V 為主。具有獨立外部 RTC 32kHz 振盪器,使 RTC 功能更為精確。

以下是接腳圖

micropython



安裝 MicroPython 方法

事先準備

  1. 準備 STM32F401_MiniPyBoard 
  2. 下載並 安裝 STM32CubeProgrammer ( 連結位置 )
  3. 開啟 Windows 的 裝置管理員
  4. 下載 firmware.hex  燒錄檔  (連結位置 )




開始動作

  1. 開發板上的  Micro USB  接入電腦的 USB 連接器。
  2. BOOT Key 按著不放 , 並按一下 RST Key 重啟。
  3. 1秒後放開  BOOT Key。
  4. 接著 在電腦裡的 裝置管理員 會出現 STM32 BOOTLOADER


  5. 打開 STM32CubeProgrammer
  6. 確認 STM32CubeProgrammer 右上。
    有抓到裝置



    沒抓到裝置, 關閉 STM32CubeProgrammer 並請重回到步驟 1



  7. 有抓到裝置後,點取 Connect

  8. 直接進入畫面



  9. 點一下 Open file Tab 並載入 firmware.hex
    載入成功後,可以直接點右上的 Download 按鈕。


  10. 開始燒錄。



  11. 燒錄成功。


  12. 結束USB 連線, Disconnect。



  13. Micro USB 重新接入,裝置管理員會出現新的 ComPort (如果沒有, 請參考如何安裝 PyBoard 的 Com Port), 並會出現新的磁碟


    micropython

  14. 成功。



測試小段程式


開啟 Thonny 輸入以下程式段。

from pyb import LED
import time

led = LED(1)
while True:
   led.toggle()
   time.sleep_ms(500)

這時候板上的 LED 應該會開始閃爍哦!


[MicroPython] 如何安裝 PyBoard 的 Com Port

在 Windows 系統接入 PyBoard 時 , 在裝置管理員的 Comport 可能會出現 問號裝置。這時候是因為沒有有安裝驅動。

接入 Pyboard 時, 會出現 " PYBFLASH" 磁碟機。打開磁碟機內容

micropython


pybcdc.ini 就是驅動文件檔案。

安裝方式。在裝置管理員在問號裝置,點滑鼠右鍵。選擇安裝驅動程式 或是 更新驅動程式。
使用瀏覽的方式。
micropython


選擇 PYBFLASH , 磁碟代號就依據 電腦系統 給的代號。

micropython


最後依序 按下一步 就可以安裝了。最後再確認裝置管理員 有沒有多出一個 ComPort。



2020年11月8日星期日

[Nuvoton] M263KI Board 的 Micropython 體驗

 最近剛入手 Nuvoton 的 M263KI 開發板,其實是想要體驗 MicroPython 上的運作情況。官方這裡也很貼心已經將初步的 Binary file 準備好,只要你將板子接上電腦就好,就可以做簡單的測試。

在 https://github.com/OpenNuvoton/NuMicroPy 官方的 GITHUB 網頁已經敘述好整個步驟,我這裡只是來驗證一下,就不重複相同的步驟。

板子上的 Nu-Link2-Me 區塊上面有 Switch 按照指示 1、2、3、4 全部切到 On 的位置, USB 接頭是 Micro USB Type,直接接入電腦。等待一下,電腦系統會多出新的 UART 及 新的磁碟機名稱為 "NuMicro MCU"。

在 github 上進入 build / NuMaker-M263KI 的路徑,將 firmware.bin 下載下來。並直接丟入 "NuMicro MCU" 磁碟裡。等待一下,它會自動燒錄到MCU裡。

同時,準備好 UART Terminal 軟體及將 port 設定好。


此時,按一下板子上的 Reset 按鈕。在 Terminal 會出現 REPL 提示

Nuvoton




表示載入 Micropython 成功。

我研究一下這個板子電路,找找看有沒有可以讓我簡單測試一下可以控制硬體的指令。我發現有個在 PB10 腳位有掛一個 LED,立馬下以下指令。

Nuvoton

嘿,是個紅色 LED。

可以控制LED 明滅,太好了。可以繼續接下來的Micropython 測試

M263KI,NUVOTON





2019年12月17日星期二

[STM32]MicroPython 快速建立與初體驗

其實前陣子就想要測試看看 MicroPython,今天想趁著快要跨年了儘早把這事兒完成吧。

MicroPython

是以 Python 3 程式語言語法一種精簡軟體的實現,其中包含 Python標準庫的一部分。並且經過優化可在微控制器和受限環境中運行。雖然如此,它也包含了 Python 的 REPL 交互式提示符的操作模式,可以立即執行語法合法的命令。

MicroPython 支援的開發版

官方有支援很多的開發版,可以自行到官方網站 (https://store.micropython.org/) 瞧瞧。這裡介紹的是使用 ST 的開發板及快速應用,官方版本也許將來有機會再做說明嘍。

在官方網站上有提供已經編譯好了的 dfu 格式燒錄檔,只要用 dfu 燒錄方法就可以導入 MicroPython 。目前提供以下 。



剛好之前有購入 L476RG 的開發板, 正好可以拿來用。所以如果您也剛好有上面的開發板,也可以直接下載 對應的 dfu 燒錄檔使用。


1.開始前

  • 下載 NUCLEO_L476RG-20190529-v1.11.dfu 檔案
  • STM32 DFU 下載軟體 STSW-STM32080 並安裝。如同安裝軟體般 按 Next 繼續,最後會有DfuSeDemo 這個程式。 
  • 準備 終端軟體 , 如 PUTTY 或是 Xshell 等相同軟體。

2.如何連接

連接方式要用 USB 當做主要的連接方法, 而 NUCLEO-L476RG 這個開發板的 USB 接口是 ST-LINK,實際上並沒有直接連接 USB 的接口必須自行做連接。

我手邊只有 USB B type 的連接器 , 我直接焊上排針。 這樣就方便用杜邦線與開發板做連接。 Power 部份我會用 ST-LINK 所帶過來的 5V ,這裡我就不重複接上了。只接 3 PIN


USB
L476RG
D+
PA12
D-
PA11
GND
GND
DFU 模式燒錄和 串口燒錄一樣, STM32 必須要進入系統儲存器啟動模式。上電之前要將 BOOT0=1 ,BOOT1(PB2)= 0 。不過這個開發板只用 BOOT0 所以我預先將 BOOT0 用短接 JUMP 設給 VDD。

所以最後是長這個樣子,參考一下


3.開始燒錄

確認好前面接線是正確的及BOOT0 要設定好後 ,先接入 ST-LINK 讓開發板先上電之後連接 USB B type 端。在裝置管理員會多出一個新的設備出現 "STM Device in DFU Mode" 表示開發板已經有進入 dfu 模式了並準備好燒錄狀態。


打開 DfuSeDemo 軟體 , 並選好之前下載好的檔案 "NUCLEO_L476RG-20190529-v1.11.dfu"。


 點擊 Upgrade 開始執行燒錄。
燒錄完成後,將 ST-LINK 先移除斷電,BOOT0 短接解除。再重新將 ST-LINK 連接上電。
打開串口終端軟體,我使用的是 Xshell 。並選擇好 ST-LINK 所帶出來的虛擬串口。

裝置管理員

Xshell ,注意 Baud Rate 要設定為 115200


按一下開發板的復位鍵,會出現以下 Python 的 REPL 訊息。



寫小段程式碼測試一下



這一段程式碼會將開發版上的 LED 做出明滅閃爍狀態。以上就先做這樣的介紹,其他細節有機會再做分享了。


相關文章