使用C#通过.NET IoT库可轻松控制树莓派GPIO。1. 在开发机安装.NET SDK,树莓派安装.NET运行时并配置环境变量;2. 添加System.Device.Gpio和Iot.Device.Bindings NuGet包;3. 用GpioController控制引脚,如闪烁LED;4. 通过I2C/SPI连接传感器;5. 发布时指定linux-arm自包含部署;6. 确保用户加入gpio组以获取硬件访问权限。

想用C#控制树莓派的GPIO,或者在Linux小设备上运行你的.NET程序?.NET IoT库让这一切变得简单。它让你能像写普通ASP.NET应用一样,用熟悉的语言和工具与传感器、LED、电机等硬件交互。
准备开发环境
开始前,你需要一台装有Linux的树莓派(推荐Raspberry Pi OS),以及一台用于编码的Windows、macOS或Linux电脑。
在开发机上安装最新版的 .NET SDK(6 或 8)。树莓派不需要安装SDK,只需要运行时。你可以通过SSH连接设备,并运行以下命令安装运行时:
- 下载对应ARM版本的.NET Runtime压缩包
- 解压到/opt/dotnet并配置环境变量
- 使用dotnet yourapp.dll启动程序
使用System.Device.Gpio控制硬件
.NET IoT的核心是System.Device.Gpio命名空间。它提供统一接口访问通用输入输出引脚。先在项目中添加NuGet包:
- System.Device.Gpio – 主要API
- Iot.Device.Bindings – 包含常见外设驱动,如DHT传感器、OLED屏、电机模块
代码示例:闪烁LED
using System.Device.Gpio;
var pin = 18;
var gpio = new GpioController();
gpio.OpenPin(pin, PinMode.Output);
while (true)
{
gpio.Write(pin, PinValue.High);
Thread.Sleep(500);
gpio.Write(pin, PinValue.Low);
Thread.Sleep(500);
}
连接传感器和扩展设备
除了基础GPIO,你还能通过I2C、SPI、UART与复杂设备通信。比如读取温湿度传感器DHT11:
- 将传感器数据线接到指定GPIO引脚
- 使用Dhtxx类(来自Iot.Device.Bindings)读取数值
- 注意:部分传感器对时序敏感,建议使用专用引脚或提高刷新间隔
对于I2C设备(如SSD1306 OLED屏),可用I2cDevice创建连接,再传入对应驱动构造函数。
部署与调试技巧
编译时选择ARM架构目标框架,例如linux-arm。发布自包含应用可避免依赖问题:
dotnet publish -r linux-arm -c Release --self-contained把生成的文件复制到树莓派后直接运行。若程序崩溃,启用日志输出或使用systemd服务管理进程,便于重启和查看错误信息。
基本上就这些。用C#做物联网开发,既能享受强类型语言的安全性,又能快速对接云服务和Web API。不复杂但容易忽略的是权限问题——确保运行程序的用户有访问/dev/gpiomem的权限,通常加入gpio组即可。










