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. Doing a PR on this part of the project may result in API review, higher exigence for the code quality and longer discussions. You need to be ready for this.
- Iot.Device.Bindings device bindings library. This 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
Bme280
class which exposes friendly methods likeReadTemperature()
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.
While contributing, you should read the coding guidelines section, the device conventions and also how to best contribute to a binding.
- 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)
Mono WinForms GPIO Demo Using Toradex Colibri iMX7D and Torizon Container
- Configuring Remote Debugging from Dev machine to Raspberry Pi on ARM
- .NET Core Documentation
- Install .NET on Raspberry Pi
- Deploy .NET apps on ARM single-board computers
- .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
- Control GPIO pins within rootless Docker container on Raspberry Pi
- Enable Hardware PWM on Raspberry Pi
- Enable Headless Raspberry Pi
- Docker Access to Raspberry Pi GPIO Pins
- Design a Raspberry Pi Hat in 10 Minutes