This directory is intended for device bindings, sensors, displays, human interface devices and anything else that requires software to control. We want to establish a rich set of quality .NET bindings to make it straightforward to use .NET to connect devices together to produce weird and wonderful IoT applications.
Our vision: the majority of .NET bindings are written completely in .NET languages to enable portability, use of a single tool chain and complete debugability from application to binding to driver.
- Pca95x4 - I2C GPIO Expander
- Using MCP3008 (10-bit Analog to Digital Converter)
- BMO055 Sensors
- GoPiGo3
- DS3231 - Realtime Clock
- nRF24L01 - Single Chip 2.4 GHz Transceiver
- Using Max7219 (LED Matrix driver)
- Si7021 - Temperature & Humidity Sensor
- Ws28xx LED drivers
- 28BYJ-48 Stepper Motor 5V 4-Phase 5-Wire & ULN2003 Driver Board
- LPS25H - Piezoresistive pressure and thermometer sensor
- HTS221 - Capacitive digital sensor for relative humidity and temperature
- Mcp23xxx - I/O Expander
- HC-SR501 - PIR Motion Sensor
- BMx280 - Digital Pressure Sensors BMP280/BME280
- SHT3x - Temperature & Humidity Sensor
- Pca9685 - I2C PWM Driver
- Solomon Systech Ssd1306
- HC-SR04 - Ultrasonic Ranging Module
- LM75 - Digital Temperature Sensor
- MPR121 - Proximity Capacitive Touch Sensor Controller
- Software PWM
- DC Motor Controller
- LSM9DS1 - 3D accelerometer, gyroscope and magnetometer
- ADS1115 - Analog to Digital Converter
- AGS01DB - MEMS VOC Gas Sensor
- Cpu Temperature
- Sense HAT
- BrickPi3
- NXP/TI PCx857x
- Character LCD (Liquid Crystal Display)
- HMC5883L - 3 Axis Digital Compass
- MAX44009 - Ambient Light Sensor
- Buzzer - Piezo Buzzer Controller
- Servomotor
- ADXL345 - Accelerometer
- DHTxx - Digital-Output Relative Humidity & Temperature Sensor Module
These bindings are distributed via the Iot.Device.Bindings NuGet package. Daily builds with the latest bindings are available on MyGet. You can also consume the bindings as source.
Anyone can contribute a binding. Please do! Bindings should follow the model that is used for the Mcp23xxx or Mcp3008 implementations. There is a Device Binding Template that can help you get started, as well.
Bindings must:
- include a .NET Core project file for the main library.
- include a descriptive README, with a fritzing diagram.
- include a buildable sample (layout will be described below).
- use the System.Device API.
- (Optional) Include a unit test project that DOES NOT require hardware for testing. We will be running these tests as part of our CI and we won't have sensors plugged in to the microcontrollers, which is why test projects should only contain unit tests for small components in your binding.
Here is an example of a layout of a new Binding Foo from the top level of the repo:
iot/
src/
devices/
Foo/
Foo.csproj
Foo.cs
README.md
samples/
Foo.Sample.csproj
Foo.Sample.cs
tests/ <-- Tests are optional, but if present they should be layed out like this.
Foo.Tests.csproj
Foo.Tests.cs
We are currently not accepting samples that rely on native libraries for hardware interaction. This is for two reasons: we want feedback on the System.Device API and we want to encourage the use of 100% portable .NET solutions. If a native library is used to enable precise timing, please file an issue so that we can discuss your proposed contribution further.
We will only accept samples that use the MIT or compatible licenses (BSD, Apache 2, ...). We will not accept samples that use GPL code or were based on an existing GPL implementation. It is critical that these samples can be used for commercial applications without any concern for licensing.