See the following resources to get started.
This repository mainly contains two different components:
- System.Device.Gpio library and tests which is the main library that has the implementation for protocols such as: GPIO, SPI, I2C, PWM. This library is fully supported by the dotnet team since it has the same level of support that dotnet/corefx does. All the code for the library lives under src/System.Device.Gpio. This library targets .NET Standard 2.0, and will work on both Windows and Linux. It's implementation consists of just IL code, so that means that it is supported across different platforms. In order to add new API to this library, an API Proposal would have to be submitted and approved first. Here is an example of a how a good API proposal should look like.
- IoT.Device.Bindings device bindings library. These is a collection of types which work as wrappers (or bindings) for devices and sensors which are able to talk to a microcontroller unit (or MCU like a Raspberry Pi for example) using the protocols supported by System.Device.Gpio. For example: BME280 is a temperature sensor which uses SPI and I2C in order to communicate with a MCU and is able to report the current temperature. Because the process of how to compute the temperature from the data is not trivial, we have a
Bme280class which exposes friendly methods like
ReadTemperature()which will internally use either SPI or I2C to get the current temperature value. In order to start adding a new binding, check out our guide on how to contribute a new binding. It is worth noting that even though all device bindings will be built and packaged as a single library (Iot.Device.Bindings), the code is split under src/devices on individual projects for easier development of a single binding and developer inner-loop.
- Device Bindings - Includes a collection of APIs representing a range of sensors, displays and human interface devices based on System.Device.* APIs.
- DevicesApiTester CLI - Helpful utility, based on System.Device.* APIs, that include various commands for testing connected development boards and external hardware.
- .NET Design Reviews: GPIO (10/2/2018)
- .NET Design Reviews: GPIO (10/19/2018)
- .NET Design Reviews: GPIO (11/2/2018)
Interface Knowledge Base
General-Purpose Input/Output (GPIO)
Inter-Integrated Circuit (I2C)
Serial Peripheral Interface (SPI)
Other Helpful links
- Configuring Remote Debugging from Dev machine to Raspberry Pi on ARM
- .NET Core Documentation
- Install .NET Core on Raspberry Pi
- .NET Core ARM64 Status
- .NET Core Docker Samples
- How to Prepare a Publish Profile
NOTE: It has been verified that .NET Core will work on the following development boards. However, there has only been limited testing so far. It is recommended you experiment with the Raspberry Pi 3 and HummingBoard for now.
- Raspberry Pi Website
- Raspberry Pi GitHub Website
- Raspberry Pi Wiki
- Raspberry Pi GPIO Pinout
- Raspberry Pi GPIO Tutorial
- Enable SPI on Raspberry Pi
- Enable I2C on Raspberry Pi
- Enable Headless Raspberry Pi
- Docker Access to Raspberry Pi GPIO Pins
- Design a Raspberry Pi Hat in 10 Minutes
- Blinking LED Blog Post by Scott Hanselman
- Collin's Lab: Breadboards & Perfboards
- How to Use a Breadboard