[筆記] 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 »
[應用] 在 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 »
[筆記] 整理控制器 STM32 與無線晶片 ESP32 資料 - 6月 28, 2021 整理自己常使用的 MCU 控制器,下表是 STM32 系列晶片,F1/F2 核心是 ARM Cortex-M3,適用在網路或 USB 2.0 等周邊控制。F3/F4 核心為 ARM-M4,核心工作時脈更高, 適用在 ADC 資料擷取等控制 。F7/H7 系列是目前最高等級的控制器,H7 為雙核心,適用於影像或顯示方面的控制。 另外,常使用的無線網路控制器是樂鑫 ESP 晶片,下表是 ESP32 系列晶片,最早推出的晶片是 ESP8266 系列,不包含藍芽功能,網路傳輸速度為 75Mbps。後來推出 ESP32 系列,工作時脈較高,網路傳輸也較快,並且多了藍芽功能。 從 espressif 官網資料來看,ESP32-C3 ADC 具有 DMA 功能,之前 ESP32 和 S2 的 ADC 並沒有 DMA 模式。C3 有 DMA 模式,可以減少 CPU 功耗,在省電方面應能表現更佳。 應用 [1] 以 ESP32 無線網為基礎,存取共享CF卡的FTP系統 [2] LD3320 離線語音辨識晶片與 ESP32 無線傳輸 [3] 以 STM32 晶片的 ADC 為基礎, 設計一個簡易示波器 [4] 在 STM32 控制器上實現一個 FTP server [5] ESP8266 WiFi to RS485 (MODBUS TCP to RS232) [6] STM32F373 控制板之自我測試程式 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 »
[筆記] Android APP BLE範例程式 -- BluetoothLeGatt - 10月 31, 2015 前言 在 Android 裡面的藍芽和低功耗藍芽 (Bluetooth Low Energy) 控制方式不一樣,這裡有一篇文章[ 連結 ]說明傳統藍芽與 BLE 有哪些部份不同。此外在 API 方面,很多低功耗藍芽的函式必須在 API level 18 以上才能使用,也就是 Android 4.3平台以上。上一篇介紹的 BluetoothChat 程式是採用傳統的藍芽控制方式,為了讓開發者認識 BLE 如何控制,Android 官方網站提供一個 BLE Gatt 的範例程式,圖一所示是這個範例程式的專案檔,主要的程式檔為 DeviceScanActivity 、 DeviceControlActivity 和 BluetoothLeService。 圖一:BLE範例程式專案檔 圖二所示是這個範例的系統方塊圖,從 AndroidManifest.xml 設定檔可得知操作畫面先呼叫 DeviceScanActivity 類別,它衍生自 ListActivity 類別。這 Activity 畫面的 onCreate( ) 函式裡面依舊執行傳統藍芽的檢查: 檢查本身有無藍芽裝置 (參考前一篇 BluetoothChat 的做法) 檢查有無 BLE service 打開藍芽功能 搜尋 BLE 設備 當 DeviceScanActivity 創建出來後,畫面右上方會出現選單,這對應到類別的 option 操作。這裡有兩種選擇:start scan 或 stop scan,如下圖的左邊所示。當搜尋後的結果會列在畫面上,操作者可以從中選一 BLE 設備進行連線,如下圖的右邊所示。透過 Intent 方式開啟 DeviceControlActivity 類別,生成這類別過程會開啟 BluetoothLeService 這個藍芽服務。這裡使用了一個技巧,就是 bind service 的方法,我們把這個 service 類別想像成提供在背景持續工作的服務,而且能提供訊息給 UI 畫面。 圖二:BLE範例的系統方塊圖 搜尋 BLE 設備 ... Read more »
留言