分類彙整: Arduino

寫了一個 Serial Port Tool

最近用 Rust 寫了一個 serial port tool 給自己用,GUI 的部分使用 gtk-rs, serial port 通訊的部分使用 tokio-serial (serialport-rs 的 tokio 運行時版本),USB hotplug 的部分使用 rusb (libusb 的 Rust 包裝)。

不過,因為 libusb 不支持 Windows 上的 hotplug,所以在 Windows 上執行時,我使用一個 loop 每隔一秒列舉一次 USB 裝置,來判斷是否有 USB 裝置插入或拔出。

Serial Port Tool 的原始碼:https://github.com/riddleling/serial-tool

然後可以用 Arduino 寫一個 serial echo 程式來測試,把寫入 serial port 的字元回傳回來:

// Arduino serial echo

void setup() {
    Serial.begin(115200);
}

void loop() {    
    if (Serial.available() > 0) {
        Serial.print((char)Serial.read());
    }
}

在 Linux (Raspberry Pi OS) 上執行 serial port tool 的畫面:

在 Windows 上執行的 demo 影片 (透過 serial port 傳輸指令,打開或關閉 LED):

好書推薦:《TinyML|TensorFlow Lite 機器學習》

TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers 繁體中文版

最近終於把這本書讀完一遍了,不過還沒嘗試執行書中的範例程式,等有空時再來試試:)

這本書裡用來執行範例程式的硬體開發板有:

  • Arduino Nano 33 BLE Sense
  • SparkFun Edge
  • ST Microelectronics STM32F746G Discovery kit

不過現在 TensorFlow Lite for Microcontrollers 也支援 ESP32 了,所以沒有上述的硬體開發板也沒關係,可以用 ESP32 來試試看。

書開頭的幾章先用「Hello World」範例帶領讀者走一遍完整的開發流程(從建立與訓練模型開始,然後執行程式,再到部署至微控制器),「Hello World」範例的功能其實很簡單,就是模擬正弦 (sin) 信號而已。

之後的章節陸續講解了喚醒詞偵測 (yes/no)、人體偵測、魔杖(手勢) 等功能的程式建構與模型訓練。

最後幾章講了 TensorFlow Lite for Microcontrollers 使用上要注意的地方,還有優化、除錯、移植等相關的技巧,最後還有提到安全與隱私方面的議題。

這本書厲害的地方是:我覺得作者在概念與基礎知識的講解上算是淺顯易懂,所以蠻推薦對 TinyML 有興趣的人來讀讀看這本書。

★ 2021 年 3 月時的補充說明:Raspberry Pi 基金會在 2021 年 1 月時推出了 Raspberry Pi Pico 開發板,而《TinyML|TensorFlow Lite 機器學習》的作者之一 Pete Warden 也在稍後將 TensorFlow Lite Micro 移植到了 Pi Pico 上,Pi Pico 的價格很便宜,而且很容易購買到,所以使用 Pi Pico 來製作 TinyML 應用的原型應該也是不錯的選擇。

電子專案》使用 iPhone 的 Touch ID 搭配 Arduino Nano 33 解鎖自己的電腦

最近把以前一個用 B4i 寫的 iOS app 用 Swift 重寫,功能是:用 iPhone 的 Touch ID 解鎖自己的電腦。這個程式的原理很簡單,是用一塊 arduino 模擬成 HID Keyboard,然後 iOS app 透過 BLE 把密碼傳送給 arduino 裝置,接著 arduino 裝置再把密碼輸入到電腦,利用這種方式解鎖電腦。

HID Keyboard 的部分,以前是用 Blend Micro 來做,這次則改用 Arduino Nano 33 IoT 來做。

左邊紅色的電路板是 Blend Micro,中間深藍色電路板是 Arduino Nano 33 IoT。

以下是 Demo 影片與 Source code 連結:

詳細情況請看:https://github.com/kyumdbot/AutoPass