搜尋此網誌

2025年10月4日 星期六

Esp32-Cam Rtsp Server 與 Bluetooth Keyboard

緣起:



    前兩天,我不知怎樣,突然想到之前買的那個 Esp32-Cam,我的腦子一直告訴我說:"嘿,要不要看看它能不能當 Rtsp Server 跑 ?",我:"好啊",然後,我一整天就都在玩那個 Esp32-Cam 了。

    似乎是存放 Esp32 的地方太潮溼,導致它鏡頭的接口生鏽,所以無法使用。我當時上傳完程式碼後,發現網頁頁面的提示說無法初始化鏡頭,這才發現它壞掉。馬的,我還為此出門一趟,去嘉義買個新的回來,沒辨法,當下太想要今天就玩到這功能。



Rtsp-Server:


    找網路上現成的專案使用,我選的專案是這個,可以直接在 VS Code 的 PlatformIO extension 建置跟上傳程式碼。接線的話,可以參考這裡的教學。


    之前要上傳程式碼時,老是要修改 /dev/ttyUSB 的讀寫權限,每次拔插後又要再重複動作,超麻煩的,應該有什麼方法可以解決這問題,對吧?後來注意到錯誤訊息有這提示


    Hint: Try to add user into dialout or uucp group。哦 ~~ 原來如此。我在 arch 上試的時候,它跟我說沒有 dialout 這個 group,但有 uucp group,所以就把我的帳號加到 uucp group,然後再重開機,就能正常存取 /dev/ttyUSB 了,如果是在 Ubuntu 上的話,要改成加入 dialout group。

    那時在 Build 專案時發現,我去,怎麼一個完成後又開始另一個,後來才發現,你要自己手動修改一下它 platformio.ini 的內容,把 default-evns = esp32cam_ai_thinker 的註解拿掉,不然它預設是 Build 所有上頭條列的型號。話說,我這才知道我買的這個 esp32 開發板的型號叫 "ai thinker"


    再來斷開 IO0 跟 GND 相接的那條線,然後按下板子上的 RST 鈕,等它啟動後,可以看到一個 ESP32CAM-RTSP-{GUID} 的 Wifi,連上它後,開啟瀏覽器,輸入 192.168.1.4,可以進入這頁面


    選擇 Change settings,進入設定頁


    可以更改 Esp32 Wifi 的 AP 名稱與密碼,如果你有要讓 Esp32 連上其它 Wifi 的話,它會強制你要設定密碼。再來 WIFI SSID 跟 WIFI password 欄位,設定你 Esp32 要連上的 Wifi。Camera 的設定我沒怎麼動,只有條整解析度而已。都填好後,可以到最下面按 Apply,然後等設定生效。

    Esp32 成功連上其它 Wifi 後,如果想再次進入設定頁面,會跳出這個


    Username 輸入 admin,Password 輸入你為 Esp32 Wifi 設定的密碼即可。

    這樣,Esp32 Rtsp Server 就完成了,它的主頁面下有連結的路徑




Esp32 Bluetooth Keyboard:


    玩完 Rtsp Server 後,腦子又想到,之前看有人用 Esp32 模擬藍牙鍵盤的專案,所以又接著去試了 Bluetooth 功能,可以使用這個 library。到 Releases 那邊下載 zip 檔,解壓後把資料夾丢到 platformio 專案的 lib 資料夾裡即可



#include <BleKeyboard.h>
#include <Arduino.h>

BleKeyboard bleKeyboard;

void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  bleKeyboard.begin();
}

void loop() {
  if(bleKeyboard.isConnected()) {

    Serial.println("Sending Play/Pause media key...");
    bleKeyboard.write('f');
  }
  Serial.println("Waiting 5 seconds...");
  delay(5000);
}

    拿它範例改的,每 5 秒按一次 f,上傳完程式碼後,再 rest Esp32,開啟電腦的藍牙,可以看到一個叫 Esp32 Keyboard 的裝置,跟它配對連線後就行了。





沒有留言:

張貼留言