[筆記] 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 電子郵件 其他應用程式 留言
[筆記] 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 »
ESP-IDF 在 Visual Studio Code 教學 (不同於 ESP32 Arduino IDE) - 1月 17, 2022 # ESP32 在 VS Code 開發環境的編譯與除錯 距離上次寫關於 ESP-IDF 文章已經一年了,參考上面的連結,這期間 Espressif IDF 版本升了不少級數,在程式開發上又新增了一些便利的功能。首先在 Visual Studio Code 先安裝插件 Espressif IDF Configuration,如下圖影片所展示。現階段並沒有安裝最新的插件 v1.3.0,因為 VS Code 和 Espressif 之間似乎有不相容的問題,網上有人也提到遇到版本問題,所以我們現階段就安裝前一版本,等待一段時間後,問題解決了,再升級到最新版。 在 v1.2.0 Espressif 新增一個功能,創建新項目 (New Project),如下面影片所展示。我們從配置中能設定項目名稱,選定路徑,選擇使用的開發板型號,最後可以選擇由系統的 template 範例來創建新項目,或者自行手動添加項目所需的 Components 來創建。 創建項目後,我們可以在 VS Code 環境進行編譯,當然也可以在 Command Line 的終端機環境下編譯。在終端機環境下,我們必須先設定環境變數,執行 export.bat ,參考底下影片的操作。接著,我們就能以指令方式執行編譯," idf.py build ",然後燒錄上傳也是用指令執行。使用時,可先查看 idf.py 這個程式的說明。 終端機方式並不是我們首選的環境,回到 VS Code 環境上。有關編譯項目的參數,我們要打開 SDK Configuration,請參考下面影片所展示。SDK Configuration 畫面裡所有的配置是來自 sdkconfig 這個文件,可以用一般的文件方式打開來看看,裡面的參數主要定義 ESP32 系統層級的配置。除了這個文件之外,每個子項目或路徑底下還有個別的參數,檔名為 Kconfig.projbuild ,這文件檔採用結構式的編排,當 SDK 配置時會將這個檔案也一起載入,我們可以比對 Kconfig 檔案內容與 SDK 呈現的欄位之間的關係。... 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 »
初學 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 »
[筆記] Visual Studio 遠端偵錯的設定步驟 - 2月 02, 2019 通常我們用微軟Visual Studio IDE開發程式並且在本機上運行與除錯,但隨著開發系統越來越複雜,程式運行在某台服務器上而不是自己的機器,這時候需要進行遠端程式的除錯,架構如下圖一所示。自己的主機要安裝微軟的Visual Studio 2017 IDE,待測的機器上面要有Remote Debugger工具,雙方透過網路的連線進行除錯。 圖一:遠端除錯與待測機器 [步驟]: 1) 在自己主機上的Visual Studio目錄下面找Remote Debugger這個工具目錄,然後把Remote Debugger工具複製到待測機器上。 2) 程式的除錯屬性要設定正確,屬性頁的遠端Windows偵測工具,如下圖二所示。我們必須設定遠端命令 、 工作目錄 、 遠端機器IP 、連接是否驗證...等等,連線的權限要配合遠端機器的設定。 3) 在遠端機器上的Remote Debugger目錄,開啟 msvsmon.exe,這時只要到工具選單設定連線的權限,如下圖三所示。圖中是設為無權限的方式,不需要驗證使用者。 4) 在VS IDE環境運行遠端Windows偵錯工具,如果發現遠端機器上出現錯誤,錯誤的原因是缺少某些 dll 檔案,如:msvcp140D.dll 、ucrtbased.dll... 。我們在本地主機上找找看這些缺少的檔案,應該能找到,然後再複製到遠端機器的 \Windows\System32 目錄底下。 5) 最後,編譯我們的程式後,要再把exe 、 pdb檔案複製到遠端機器的工作目錄上。接著,運行我們的程式遠端 debug,這樣就可以一步步看著遠端機器上的程式怎麼執行了。 C++遠程偵錯 圖二:C++程式的遠端屬性設定 圖三:遠端機器的連線權限設定 C#遠程偵錯 圖四:C# 程式的遠端偵錯設定 Read more »
留言