Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PIEZO-GRID

通过 Web 页面控制 Raspberry Pi Pico 上的蜂鸣器。

浏览器 → WebSocket → FastAPI → pyserial → USB 串口 → Pico (MicroPython) → PWM → 蜂鸣器

结构

  • firmware/ — Pico 端 MicroPython 代码(main.py 解析串口命令,buzzer.py 封装 PWM)
  • server/ — FastAPI 桥接服务(serial_bridge.py 按 VID/PID 自动找端口并断线重连)
  • web/ — 前端静态页面(由 FastAPI 托管)

硬件

6 路蜂鸣器(无源可控音调),一端接对应 GPIO,另一端接 GND:

通道 CH0 CH1 CH2 CH3 CH4 CH5
引脚 GP16 GP17 GP18 GP19 GP20 GP21

发声用 PIO(每路一个状态机)而不是 PWM——RP2040 的 PWM 相邻引脚对(16+17、18+19、20+21)共享 slice 频率,无法同时发不同音高;PIO 每路频率独立。

增删通道改 firmware/main.pyPINS 列表和 web/app.jsCHANNELS(最多 8 路,受 PIO 状态机数量限制)。

串口协议

TONE <ch> <freq> [ms]          # 通道 ch 播放 freq Hz;ms 省略或 0 表示持续到 STOP
PLAY <ch>:<freq>:<ms> ...      # 多通道同时起音,每路独立频率和时长
CHORD <ms> <ch>:<freq> ...     # 多通道同时起音,共用时长
STOP [ch]                      # 停指定通道;无参数停全部
PING                           # 心跳,回 PONG
INFO                           # 回 CHANNELS <引脚列表>

频率范围 40–20000 Hz(下限来自 PIO 时钟分频器)。 回复:OK / DONE <ch>(该通道定时结束)/ PONG / ERR <原因>

运行

# 首次:安装依赖
python3 -m venv server/.venv
server/.venv/bin/pip install -r server/requirements.txt

# 更新固件到 Pico(改了 firmware/ 之后)
python3 -m mpremote cp firmware/buzzer.py :buzzer.py + cp firmware/main.py :main.py + reset

# 启动服务器
cd server && .venv/bin/uvicorn main:app --port 8000

打开 http://127.0.0.1:8000

注意:串口是独占的——mpremote/screen 连着时服务器打不开串口,反之亦然。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages