返回

文章详情

在 Raspberry Pi Pico 2 W 上使用 Rust 的 Matter Wi-Fi 灯泡

Hacker News2026年6月8日 00:17

本仓库包含针对 Raspberry Pi Pico 2 (RP2350) 板的示例,使用 Embassy 异步框架用 Rust 编写。项目生成命令为 cargo generate --git https://github.com/ImplFerris/pico2-template.git --name rust-rpico2-embassy-examples 硬件板:Raspberry Pi Pico 2 MCU:RP2350(双核 Arm Cortex-M33 和 RISC-V 内核) 板载外设:GPIO25 引脚的 LED 引脚配置 I2C 引脚:I2C0 SDA: GPIO4 I2C0 SCL: GPIO5 I2C1 SDA: GPIO2 I2C1 SCL: GPIO3 UART 引脚:UART0 TX: GPIO0,UART0 RX: GPIO1 UART1 TX: GPIO8,UART1 RX: GPIO9 示例 I2C 示例 hs3003_i2c 使用 Embassy 异步框架从 HS3003 传感器读取温度和湿度。使用命令 cargo run --example hs3003_i2c 连线(Arduino Modulino Thermo):Modulino -> RPi Pico 2 ---------- -------------- GND(黑色)-> GND VCC(红色)-> 3.3V SCL(黄色)-> GPIO5(引脚 7)(I2C0 SCL)SDA(蓝色)-> GPIO4(引脚 6)(I2C0 SDA)关于 HS3003:Renesas HS3003 是一个高性能的温湿度传感器:温度范围:-40°C 到 +125°C(±0.2°C 准确度)湿度范围:0% 到 100% RH(±1.5% 准确度)14 位分辨率,具有超低功耗 消耗 adxl345_i2c 通过 I2C0 使用 Embassy 从 ADXL345 传感器读取加速度计数据。使用命令 cargo run --example adxl345_i2c 连线:ADXL345 -> RPi Pico 2 ---------- -------------- GND(黑色)-> GND VCC(红色)-> 3.3V SCL(黄色)-> GPIO5(引脚 7)(I2C0 SCL) SDA(蓝色)-> GPIO4(引脚 6)(I2C0 SDA)关于 ADXL345:ADXL345 是一个小巧、薄型、低功耗的 3 轴加速度计,具有高分辨率(13 位)测量,最大为 ±16 g。数字输出数据经过格式化为 16 位二补码,可以通过 SPI(3 或 4 根线)或 I2C 数字接口访问。SPI 显示示例 zermatt 在 Adafruit 2.2 英寸 TFT LCD 显示器上以横向模式显示 Zermatt 的 320x240 图像。使用命令 cargo run --example zermatt 连线(Eye-SPI Breakout):Raspberry Pi Pico 2 Eye-SPI Breakout +-----------------------+ +---------------------------+ | | | | | 3V3(引脚 36)----------+------+-> VIN(红线) | | GND(引脚 38)----------+------+-> GND(黑线) | | GPIO18(引脚 24)-----+------+-> SCK(蓝线) | | GPIO19(引脚 25)-----+------+-> MOSI(绿线) | | GPIO16(引脚 21)-----+------+-> MISO(黄线) | | GPIO20(引脚 26)-----+------+-> DC(白线) | | GPIO21(引脚 27)-----+------+-> RST(橙线) | | GPIO17(引脚 22)-----+------+-> TCS(蓝线) | | | | | +-----------------------+ +---------------------------+ zermatt_snow 在 Adafruit 2.2 英寸 TFT LCD 显示器上显示 Zermatt 的 320x240 图像,伴有动画下雪效果,利用物理引擎和 Embassy 异步框架绘制到离屏 lcd-async 帧缓冲区,并通过 DMA 调度,而不会阻塞 CPU。使用命令 cargo run --example zermatt_snow 连线与 zermatt 示例相同。1-Wire 示例 ds18b20 通过 1-Wire 总线使用 Embassy 从 DS18B20 防水温度传感器探头读取温度。它利用自定义的周期准确的 PreciseDelay 实现,以实现 RP2350 Cortex-M33 内核所需的无抖动亚微秒定时。使用命令 cargo run --example ds18b20 连线原理图:Raspberry Pi Pico 2 +-----------------------+ | | | [ ] 1 40 [ ] USB | | [ ] 2 39 [ ] | | [ ] 3 38 [G]ND --+-------+(黑色) | [ ] 4 37 [ ] | | | [ ] 5 36 [3]V3 --+---+ | | ... ... | | | | [ ] 20 21 [ ] ----+---+---|---+(白色,GPIO16) +-----------------------+ | | | | | | | | | +-----------------------------+ | | | | DS18B20 传感器 / 探头 | | | | |(底面/平面) | | | | | | | | | | [GND] [DAT] [VCC] | | | | +-------|-------|-------|-----+ | | | | | | | | | | +-------+--[5K1]----+ |(上拉电阻 | | | 在 DAT 和 VCC 之间的电阻) | | +---------------+(红色)+-------|-----------------------+(黑色) | +---------------------------(白色)面包板布局:关于 DS18B20:DS18B20 是一个 1-Wire 数字温度计,提供 9 位到 12 位的摄氏温度测量。通过 1-Wire 总线通信,仅需一条数据线(和接地)即可与微控制器接口。它的温度范围为 -55°C 到 +125°C,温度范围内的准确度为 ±0.5°C。 dht11 使用 Embassy 异步框架从 DHT11 传感器读取温度和湿度。它结合使用了 dht-sensor crate 的异步 API 和我们的周期准确的 PreciseDelay 实现。使用命令 cargo run --example dht11 --release 注意:由于 DHT11 协议在读取位阶段的时间敏感性,您必须在发布模式下运行此示例。连线原理图:Raspberry Pi Pico 2 DHT11 模块 +---------------------+ +---------------------+ | | | | | GND(引脚 38)-------+----->| GND | | 3V3(引脚 36)-------+----->| VCC | | GPIO16(引脚 21)----+----->| DAT(数据) | | | | | +---------------------+ +---------------------+ 重要的上拉电阻:如果使用 DHT11 模块板:它可能已经内置上拉电阻。不需要额外组件。如果使用裸露的 4 针...

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡