This project contains a series of device "drivers" for sensors, input and output devices that are useful on Windows IoT Core.
Note: these are not "Windows drivers" in the strict definition. Everything is user mode code that can simply be newed up and used. However, the code is intended to drive devices so in that sense it is a collection of device drivers.
We have focussed mainly on the Raspberry Pi 3 when developing our drivers and since the Pi is relatively limited in terms of I/O, for the most part these will utilize the I2C bus.
The project is available in source code form or as a series of NuGet packages.
The project is licensed under the Tigra MIT License, which basically means anyone can do anything with the code or binaries, without restriction, as long as they agree not to hold Tigra Astronomy liable for any outcome.
We welcome pull requests. If you see any room for improvement or want to add missing devices, then we'd be delighted to have you on board. We aim to have SOLID, clean code and where possibly we like to have unit tests, although this is currently a challenge when developing for Windows IoT as the tool support for UWP is not very mature yet.
Devices Supported #
This project contains core types and helpers that are generally useful within Windows IoT Core and are used throughout the other projects.
This project contains utilities, extension methods etc. that are useful for device control but are not associated with any particular sensor. For example, there are utilities for working with the I2C bus, a Moving Average for sensors, a "traffic light" status monitor which can monitor a sensor and produce alert indications and several interface definitions.
Adafruit Motor Shield V2
This project has support for the Adafruit motor control shield/HAT, which can control DC motors, stepper motors and servos.
This project is a driver for the MLX90614 non-contact IR thermometer.
Contains generic classes for controlling motors of various types. without reference to any specific hardware. Defines concepts such as H-Bridge, Step Sequencer and so on.
PCA9685 PWM Controller
A popular PWM controller that is actually marketed as an LED driver, but tends to form the heart of various budget motor control boars such as the Adafruit Motor Control shield/HAT and the Adafruit 16-channel Servo Controller.
PCF8591 Analog/Digital Converter
A device with 4 analog input channels and one analog output channel. These are widely available in ready made modules and are particularly useful with the Raspberry Pi, which has no analog I/O of its own.
SSD1306 OLED Display
The SSD1306 controller is capable of driving a number of different OLED displays. Adafruit has several available and they are available very cheaply via eBay and other online outlets.
This driver has support for basic control of the display, utilities for building command and data packets and basic support for rendering bitmapped fonts. There are no drawing primitives as we only needed text display but these could be added by an enthusiastic developer.
Telecontrolli Rain Detector
This is a thick-film device incorporating a capacitive rain sensor, a negative temperature coefficient thermistor for measuring the sensor temperature and a heating element for driving moisture off of the sensor. The device consists of discrete components and has no built in logic or intelligence. However, we have developed a set of support circuitry and drivers that enable the device to be used with Windows IoT Core. Eagle CAD schematics are included in the project.
We developed this sensor for a weather safety system designed to protect an astronomical observatory. This is an ongoing project that utilizes many of the other driver and utility projects.
We have tried to include at least one sample application for each device and some additional samples that use multiple devices, show how to combine sensors with moving averages, status indications and so on.