[筆記] Raspberry Pi 樹莓派的 I/O 介面開發 in Python 取得連結 Facebook X Pinterest 電子郵件 其他應用程式 - 8月 25, 2018 前面文章使用C語言控制樹莓派的周邊介面,需要安裝WringPi的介面函式庫。同樣地,使用Python語言也需要一套介面函式庫,稱為smbus。樹莓派上的介面,如:I2C、SPI...必須借用smbus函式庫接口來控制這些通訊介面,參考底下的連結,有詳細的說明與使用。 RPi.GPIO Library Raspberry Pi 硬體控制 Using I2C LCD on Raspberry Pi 樹莓派3B+上面的操作系統已經內建smbus函式庫了,當我把I2C LCM1602模組接上後,在命令列輸入sudo i2cdetect -y 1,工具便能搜尋到模組的位址在0x27,表示smbus已經成功在系統內了。接下來,繼續用Python來開發LCM模組的控制,如下圖所示。 圖一:LCM1602 in Python 取得連結 Facebook X Pinterest 電子郵件 其他應用程式 留言
[筆記] 以 RISC-V 架構的 MCU - 5月 18, 2022 隨著開源的 RISC-V 架構開始熱絡起來,市場上逐漸出現以此架構設計的晶片,搭配類似 Eclipse 的開發環境 IDE,參考前文 https://han-ya.blogspot.com/2022/02/rt-thread-studio.html 。於是,購買了幾個 RISC-V 核心的開發板,正可對比 ARM Cortext-M 架構的 MCU。在晶片短缺之際,RISC-V 架構的晶片或許可做為另一項選擇。 CSM32RV20 南京中科微電子的 CSM32RV20 低功耗控制器,最高時脈 32MHz,操作電壓範圍 1.8 ~ 5V,內建 Flash 最多 40kB 和 4kB SRAM。這樣的運算等級相當於 ARM Cortex-M0 的控制器,如下圖。周邊介面包含 GPIO 、 I2C 、 SPI 、UART 、高精度的 ADC (up to 16-bit)...等等,這規格看起來滿吸引人的。 這塊開發板需要安裝自家的開發軟體 (CSM Studio) ,其實也是類似 Eclipse 的開發環境,專門接上自家的 debugger (或 JLink)並搭配這套軟體使用,如下圖一所示。安裝後,提供 BSP 驅動程式和範例,使用者就能測試看看晶片的功能。 圖一:CSM Studio 開發軟體 CH32V103 沁恆微電子的 CH32V103 控制器, 最高時脈 80MHz,操作電壓範圍 2.7 ~ 5.5V ,內建 Flash 最多 64kB 和 20kB SRAM,他們的 CH32V2x 系列的時脈可達到 144MHz。這樣的運算等級相當於 ARM Cortex-M3 的控制器,如下圖所示。其 周邊介面包含 GPIO 、 I2C 、 SPI 、UART 、 12-bit ADC 、DMA、USB...等等,這規格正可對比意法半導體的 STM32F103 系列。 這塊開發板需要安裝一套名為 MounRiver 開發軟體 (MounRiver Studio) ,也是基於 Eclipse 平台所設計的 RISC-V 集成開發環境,我們還需... Read more »
[筆記] ESP32 在 VS Code 開發環境的編譯與除錯 - 2月 28, 2021 # ESP32 評比與教學推薦 NodeMCU-32s 的理由 準備工作 1) 安裝 Visual Studio Code (VS Code),並安裝其他 C/C++ 插件。 2) 安裝 Python 套件 3) 下載並執行 Setup ESP-IDF Tools:檢查電腦系統的環境,並幫我們把編譯的工具鏈 tool chain 安裝起來。 4) 在 VS Code 安裝 ESP-IDF 插件,點選插件後,看到下圖一並設定路徑後,點擊安裝 ESP-IDF。安裝 v4.2 版本後,會詢問是否下載安裝工具鏈,如果系統已經有安裝,那就設好路徑即可。最後,再安裝 python 虛擬環境給 ESP-IDF,便完成整個環境設定。 圖一:ESP-IDF 擴充插件 建立專案 1) 從 ESP-IDF 選範例專案:按 F1 後,上方的選單輸入 " ESP-IDF: Show Examples Projects ",出現下圖二的範例專案列表,我們可以從中選一個範例來創建,例如我從當中選了 blink 或 hello_word。按下右上方的創建,就會在左半邊出現專案。 圖二:ESP-IDF 範例專案的列表 2) 編譯專案:按 F1 後,上方的選單輸入 " ESP-IDF: Build your project ",VS Code 環境就會開發進行編譯的工作,在下方的欄位會顯示編譯的過程。 3) 設定模組型號:按 F1 後,上方的選單輸入 " ESP-IDF: Device configuration ",彈出選項後,我們選擇 EPS32 為裝置的型號。 4) 電腦接上 ESP32 模組:按 F1 後,上方的選單輸入 " ESP-IDF: Select port to use ",在 VS Code 會自動彈出 COM port 讓我們選擇,點選 EPS32 連接的 COM 即可。 5) 燒錄程式碼到 ESP32:按 F1 後,上方的選單輸入 " ESP-IDF: Select Flash Method and Flash ",彈出選項 JTAG 或 UART,我們選擇 UART 為下載燒錄的方式 (前面我們已經設定 COM 了)。下載燒錄的方式設好了,下次只要... Read more »
[筆記] Raspberry Pi 樹莓派的軟體開發 - 8月 05, 2018 前言 本文的實驗過程是以樹莓派 3B+ 為主,Python是樹莓派板子上的操作系統所提供的程式語言,並且板子上的I/O介面控制官方建議用Python語法開發。因此,在樹莓派上寫程式的第一首選當然是Python,我們可以使用系統上內建的 Python 3 IDLE 或 Thonny Python IDE 的整合開發套件。雖然它是推薦的語法,不過樹莓派系統也可以使用 C/C++ 語言來開發程式,而且也內建一套IDE套件。底下就用簡單的程式碼來試試看這些開發套件。 C/C++開發 樹莓派官方的系統提供一套IDE軟體開發套件,稱為 Geany 。它可以編輯C/C++/Java/Python...等語法,並且編譯組建成執行檔,在樹莓派這樣的操作環境下,這已經算不錯的官方IDE套件了。 首先,打開Geany之後,先在工具列上選擇"專案",並創建一個新專案。舉例來說,我想要測試C++輸出功能,於是創建一個名為TestCpp的專案。接下來,在工具列上選擇"檔案",並創建一個"開新檔案",它會讓我們選個範本,此時選Main.cxx。系統幫我們在專案目錄下建立一個C++檔案,有main function的範本,如下圖一所示。 第二步,在這個檔案裡開始寫些簡單的code,寫個Hello World吧!順便編譯與組建一下,看看有沒有成功。不過,我的專業裏頭總不能只有一個Main檔案走遍天下吧?還是需要有些其他檔案來組建。新增一個加法函數的檔案,名為myadd.cxx,存放在專案的目錄下,這時就可以從main函數調用這個外部加法函數,試試看!一開始編譯,發現會產生編譯失敗,這是因為組建的命令沒設定妥當,預設的命令是編譯單一檔案,這會兒需要編譯一堆檔案,所以要調整命令,如圖二所示。再次編譯後,成功了,可以執行看看結果。 圖一:Geany IDE C++ 軟體開發環境 圖二:修改組建的命令 Python開發 樹莓派官方的系統內建兩套IDE軟體開發套件,一套稱為 Pytho... Read more »
初學 ESP32-S3 攝像模組的開發 - 2月 25, 2025 ESP32-S3模組的核心是 XTensa 雙核的處理器,運行最高時脈為 240MHz。這個無線模組具備 WiFi 2.4G 無線網路,還有低功耗的藍芽 BLE。模組外觀如下圖一,晶片本身帶有兩組 USB 介面,其中一組是 USB_UART 通訊介面,另一組為 USB OTG。圖一的右邊 type-C USB 是 serial 通訊端口,用來接 Arduino IDE 或者 debug 之用,圖一的左邊 type-C USB 則是 OTG 之用。 圖一:攝像模組的外觀 ESP32-S3 模組的硬體規格能從晶片命名來得知,我們從外觀圖知道這是 N16R8 編號,再根據技術文件的命名規則(下圖二),因此這顆模組帶有 Flash 16MB (Quad SPI) 以及 PSRAM 8MB (Octal SPI),這項資訊會用在稍後的 Arduino IDE 的環境設定。 圖二:晶片模組的命名規則 依據上述的規格,開啟 Arduino IDE,在工具欄位底下設定相關的參數,如下圖三。開發板選擇"ESP32S3 Dev Module",然後記憶體分配的模式設為Huge APP,這樣才有足夠的空間存放攝像模組的APP程式碼。 圖三:Arduino IDE 的環境配置 接下來,我們要驗證攝像模組是否能不能正常運作。因此,開啟範例選項,如下圖四,選擇 CameraWebServer 的參考範例。在範例的程式碼中,先要選擇這個模型,下面這段定義要被採用,編譯過程便會將模組對應的腳位啟用。最後,我們再填入無線網路的 ssid 與 password,並且檢驗編譯範例有沒有出現錯誤。 #define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM 圖四:攝像模組的參考範例 成功編譯後,再進行燒錄。在圖一的模組外觀,上面有兩顆小按鈕,左邊是 rese... Read more »
[應用] 在 ESP32 Audio 開發板的 VoIP 範例 - 9月 20, 2021 開發板介紹 安信可 公司(Ai-Thinker)基於 ESP32 晶片推出一塊具有語音功能的 ESP32 Audio Kit 開發板,簡稱 ESP32-A1S,它與原廠的 ESP32 Lyrat 開發板都使用同一套 ESP-ADF SDK 軟體,但是開發板的電路有些差異,底層的驅動程式需要替換才能順利開發。 首先,最大的差異在 ESP32-A1S 語音編碼晶片採用 AC101 ,不過晶片被封裝在 ESP32 模組上,所以我們在開發板上面看不到這顆晶片,然而 ESP32 Lyrat 板採用 ES8388 晶片,因此在 ESP-ADF 中語音編碼的驅動程式需要更替。另外,其他不一樣的地方都在 GPIO 接腳的連接上,整理後,如下表所示,我們需要調整 ADF 底層的 HAL 和 Board 的配置,SDK 才能正常使用。 表一:ESP32-Lyrat 與 Audio Kit 開發板的差異 第一步,下載 ESP-ADF。在 VS Code 開發環境下[1],按 F1 後,選取 "Install ESP-ADF",VS Code 會自動從 GitHub 下載,並安裝 ADF 開發套件。如果是使用 ESP32-Lyrat 板子,可以直接跳到第四步,創建範例開始開發了。使用 ESP32-A1S 板子前,需要調整一下底層代碼,接續前面動作,我們從 GitHub 下載 A1S 的驅動程式, ESP32-A1S-AudioKit 程式碼,其目錄結構與 ADF 一樣,方便我們相互比對兩者差異。 第二步,到 \esp-adf\components\ audio_hal \driver 目錄下,將下載 A1S 裡的 AC101 驅動程式放進來。接著,要將 ac101 目錄和 ac101.c 加到 CMakeLists.txt 文件,同樣也要加到 component.mk 文件裡 ,這樣編譯過程就會把 AC101 驅動程式加進來編譯了。 第三步,我們再到... Read more »
[開箱文] 帶有AI算力的正點原子 STM32N647 開發板 - 7月 02, 2026 STM32N647 晶片是單核 Cortex-M55 ,其內部工作頻率為 800MHz( 超頻 ) ,內建的記憶體大小約 4.2MB ,與其他 STM32Fx 系列的晶片不同,它沒有內建 Flash ,程式碼必須燒錄在外部的 Flash 。此外,晶片內建 NPU ,具備小量的 AI 加速算力,還有 JPEG/H.264 編碼器。順帶提一點,若有製作板卡的需求時,得由專業的PCB廠商來處理,推薦 JLCPCB https://jlcpcb.com/hk 。 開發環境 過去習慣用 Keil IDE 開發 STM32 的板子,但是 N647 只能在 Keil 編譯,而無法進行燒錄與 debug ,因此只能用官方的 STM32Cube IDE 進行 step debug ,燒錄則用 STM32Cube Programmer 工具,將程式碼燒到外部的 Flash 記憶體。 影片連結【【正点原子】手把手教你学 STM32CubeIDE 开发【真人出镜】 STM32CubeIDE 开发视频教程 单片机 嵌入式】 https://www.bilibili.com/video/BV1Wp42127Cx/?p=3&share_source=copy_web&vd_source=c4accd27d29c32708912d15f0b5f15ce 開機模式 晶片的開機模式透過兩根 pin 腳切換,如下表,有三種模式:開發階段的開機 、 Flash 開機 、 序列方式開機。一般開發階段的開機就是透過 STM32Cube IDE 環境來運行程式碼,一旦 reset 後程式碼就消失了。 Flash 開機就是將程式碼燒錄到外部 Flash ,晶片透過 SPI 介面讀取程式碼運行。另一種是透過 USB 或 UART 序列方式讀取程式碼來運行。 在開發板的軟體包裡面,有個 External_Loader 目錄,裡面包含 MX25UM2565G 記憶體的下載程式碼的演算法 (MX25UM25645G_ATK-CNN647B_ExtMemLoader. stldr ) ,將這個檔案複製到 STM32Cube Programmer 工具的 bin 目錄底下。 外部擴展定址 底下... Read more »
留言