Skip to content

About

CH32V003 USB HID sensor: RESET button → MQTT bridge. IoT.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uiap-sensor-hid

$2 IoT ボタン→LED プロジェクト — CH32V003 (UIAPduino Pro Micro) を USB HID デバイスとして、押しボタンと LED を MQTT でつなぐ。

アーキテクチャ

┌──────────────────────────────────────────────────────────┐
│ CH32V003 (UIAPduino Pro Micro)                           │
│                                                          │
│  ┌──────┐    ┌───────────────┐                           │
 │  │ SW1  │───→│ main.c        │──→ USB HID (feature report)│
 │  │ NRST │    │ RSTSCKR[27]   │   Byte[0]=ReportID(0xAA)  │
 │  │reset │    │ detect@boot   │   Byte[1]=btn_event       │
│  └──────┘    │               │   Byte[2]=led_state       │
│              │               │←── USB HID set_feature     │
│  ┌──────┐    │               │   Byte[3]=led_cmd          │
│  │ LED  │←───│ GPIO output   │                           │
│  │ PD4  │    │ OnBoard LED   │                           │
│  └──────┘    └───────────────┘                           │
└──────────────────────────────────────────────────────────┘
                        │  ▲
                 HID get│  │HID set
                 feature│  │feature
                 report │  │report
                        ▼  │
┌──────────────────────────────────────────────────────────┐
│ Python Bridge (host/bridge.py)                           │
│                                                          │
│  hidapi ─→ read btn_state ─→ MQTT pub  "uiap/btn"       │
│  hidapi ←─ write led_cmd ←─ MQTT sub  "uiap/led"        │
│                                                          │
│  $ mosquitto_pub -t uiap/led -m 1   → LED ON            │
│  $ mosquitto_pub -t uiap/led -m 0   → LED OFF           │
│  $ mosquitto_sub -t uiap/btn        ← ボタン状態         │
└──────────────────────────────────────────────────────────┘

データフロー

方向 経路 内容
センサー (Sub) BTN → CH32V003 → HID → bridge → MQTT uiap/btn ボタン押下状態
アクチュエーター (Pub) MQTT uiap/led → bridge → HID → CH32V003 → LED LED ON/OFF

配線

追加部品は不要。基板実装のリセットスイッチ (SW1 = NRST) をボタン入力として使う:

UIAPduino Pro Micro CH32V003
┌─────────────────────────┐
│                         │
│ SW1 (NRST) ─── 内蔵 SW  │  ← 押すとチップリセット
│ PD4 (LED)   ─── 内蔵 LED │  ← オンボード
│ USB Type-C  ─── 内蔵     │
└─────────────────────────┘
  • ボタン押下 = NRST に LOW → チップリセット → 起動時に RSTSCKR.NRSTRSTF を検出
  • USB HID 接続のみ必要(シリアル不要)

フォルダ構成

uiap-sensor-hid/
├── firmware/
│   ├── src/main.c          # ファームウェア (btn → HID → LED)
│   ├── usb_config.h        # USB HID descriptor
│   ├── funconfig.h         # ch32fun 設定
│   └── Makefile            # make 一発
├── host/
│   ├── bridge.py           # Python HID ↔ MQTT ブリッジ
│   └── requirements.txt    # hidapi, paho-mqtt
├── arch.md                 # 構成図 (これ)
├── README.md
└── KANBAN.md

ビルド & 実行

# firmware
git clone https://github.com/cnlohr/rv003usb.git
cd firmware
make RV003USB_PATH=../rv003usb
minichlink -w firmware.bin   # 書き込み待機モードで

# host
cd host
pip install -r requirements.txt
python bridge.py

# 別ターミナルで制御
mosquitto_pub -h broker.hivemq.com -t uiap/led -m 1    # LED ON
mosquitto_pub -h broker.hivemq.com -t uiap/led -m 0    # LED OFF
mosquitto_sub -h broker.hivemq.com -t uiap/btn          # ボタン監視

License

MIT — based on rv003usb by cnlohr

About

CH32V003 USB HID sensor: RESET button → MQTT bridge. IoT.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages