Skip to content

Latest commit

 

History

History
161 lines (101 loc) · 7.91 KB

README.md

File metadata and controls

161 lines (101 loc) · 7.91 KB

Resources

See the following resources to get started.

Repo Layout

This repository mainly contains two different components:

  1. 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.
  2. 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 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.

While contributing, you should read the coding guidelines section, the device conventions and also how to best contribute to a binding.

System.Device.* APIs

  • 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.

Design Reviews

Showcase

Mono WinForms GPIO Demo Using Toradex Colibri iMX7D and Torizon Container

Interface Knowledge Base

General-Purpose Input/Output (GPIO)

Inter-Integrated Circuit (I2C)

Serial Peripheral Interface (SPI)

Other Helpful links

Development Boards

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

General information for Raspberry Pi

How-Tos for Raspberry Pi

Product details for Raspberry Pi

HummingBoard

General information for HummingBoard

Product details for HummingBoard

BeagleBoard

General information for BeagleBoard

How-Tos for BeagleBoard

Product details for BeagleBoard

Pine64

General information for Pine64

Product details for Pine64

Platforms

Linux

GPIO

Maker Resources

Prototyping

How-Tos

Software

Social

Vendors