想用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组即可。
