Last week I pushed the Xamarin version of the Google Contrib drivers to Nuget. I’ve now added a sample project, to illustrate how it all works. The sample also includes the use of Azure Iot Hubs.
The sample and the Xamarin components for Android Things Contrib can be found here: https://github.com/apead/Xamarin-AndroidThings-Contrib
The Google Contrib drivers provides for the following components:
- Sparkfun ADC Block for Intel Edison – adcv2x
- Apa102 RGB LED strip
- Bmx280 temperature and pressure sensor
- Push button over GPIO
- Cap12xx capacitive touch buttons
- GPS
- Ht16k33 7-digit alphanumeric segment
- Mma7660fc accelerometer sensor
- PWM speaker/buzzer
- Metadriver for the Rainbow HAT
- Metadriver for the Sense HAT
- Ssd1306 OLED display
- Tm1637 4-digit numeric segment display
You can find more details on each can be found within the Android Things Github repo: https://github.com/androidthings/contrib-drivers
A great test of the contrib drivers is Pimoroni’s Rainbow Hat. https://shop.pimoroni.com/products/rainbow-hat-for-android-things The Rainbow HAT brings together a lot of the components mentioned above on one board. It’s provided with the Android Things Starter Kit so it’s a very good place to start. The first sample I’ve added here focus’s on this specific HAT.
I’ve added a Nuget package which contains the entire contrib library. The nuget is built on version 0.4 preview of Android Things It can be found on nuget.org: https://www.nuget.org/packages/Xamarin.AndroidThings.Contrib.RainbowHat/0.40.0-beta Something to note, it’s still a pre-release nuget package.
The sample added is based on the google Weather Station sample. It has one difference, it uses Azure Iot Hubs for cloud messaging.
Sample Functionality
- Temperature Monitoring
- Pressure Monitoring
- Push Button (A) to swap display from Temperature and Pressure on the board display
- Native UI for RaspberryPi to display weather based on air pressure
- Telemetry sent from Android Things Device to Azure via Azure Iot Hubs
- Message support from Azure to Android Things Device.
To uses the Iot hub in the sample, the DeviceId, DeviceKey and HostName of an Azure Iot hub will need to be provided. I will do a post specific on Iot Hubs to provide more detail on this in subsequent blog posts. These variables are set in the MainActivity.
private bool _useHubs = true; // Set this to true to use Azure Iot Hubs _weatherDevice.DeviceId = "<Add Azure Iot Hub Device Id Here>"; _weatherDevice.DeviceKey = "<Add Azure Iot Hub Device Key Here>"; _weatherDevice.HostName = "<Add Azure Iot Hub Hostname Here>";
The sample uses Xamarin’s own 0.4 Preview nuget for Android Things: https://www.nuget.org/packages/Xamarin.Android.Things/0.4.0-devpreview
I’m in the process of creating more samples of the rest of the contrib library. I’m also packaging more third-party drivers from around the community into reusable Nuget packages for Android Things with Xamarin.
I’m also having a lot of fun at the moment with a version of these drivers, built from scratch to work with Xamarin Iot. We can then have these components (and Rainbow HAT) working on Linux devices which will of course be awesome!
Happy Iot’ing with Xamarin!