I’m Bryn Lewis from devMobile Software, a .Net developer working on Azure projects and have an unhealthy interest in the .Net nanoFramework and the TinyCLR.

This blog is about .Net Core, Microsoft Azure esp. the IoT bits, .Net Core on *nix , ML.Net, low power wireless communications, hardware, .Net nanoFramework, with the odd diversion into education related topics.

I work for a finance company doing “boring maths for accountants” and contract IoT projects.

I live in the formerly shaky city of Christchurch, New Zealand.

10 thoughts on “About

  1. Hey do you know the best place to source gadgeteer parts in NZ? or best place to source it for nz? shoot me an email. Cheers 🙂

  2. Hi Bryn,
    I am based in Auckland and would like to have a chat with you about your experience with netmf – what are your contact details?

  3. Hi Bryn, I have a small job I’d like to retain you for. I’d appreciate it if you could get in contact with me. I’ve also send a LinkedIn request. Many thanks …. Andrew O214686O1

  4. Hi Bryn, would you be available for hire to do a job? – hooking up a speed and torque sensor. I’ve got the basics, but bit lost on some things. I’m in Chch. Thanks, Nick 356-2275

  5. Hi,

    I am Alessandro from Switzerland. I read your blog. I have a question, maybe you can help me: I have a GrovePI and a Raspberry 3B model.

    I use the library GrovePI from https://github.com/DexterInd/GrovePi/tree/master/Software/CSharp

    GrovePi _collision = DeviceFactory.Build.GrovePi(); //Create obj
    _collision.PinMode(Pin.DigitalPin2, PinMode.Input); //Set obj as input on Pin2

    //Get Value from sensor
    message.Collision = _collision.DigitalRead(Pin.DigitalPin2); //Read value

    for other sensors I have classes:

    _airQualitySensor = DeviceFactory.Build.AirQualitySensor(Pin.AnalogPin2);
    message.AirQuality = _airQualitySensor.AirQuality();

    All work fine but for collision (Where I use generic GrovePi) interface does not run.

    Here the code for DigitalRead:

    public byte DigitalRead(Pin pin)
    var wbuffer = new byte[4] {(byte) Command.DigitalRead, (byte) pin, Constants.Unused, Constants.Unused};
    var rBuffer = new byte[1];
    var i2cTransferResult = DirectAccess.WritePartial(wbuffer);
    if (i2cTransferResult.Status != I2cTransferStatus.FullTransfer)
    return 0;
    i2cTransferResult = DirectAccess.ReadPartial(rBuffer);
    if (i2cTransferResult.Status != I2cTransferStatus.FullTransfer)
    return 0;

        return rBuffer[0];

    The sensor is: https://wiki.seeedstudio.com/Grove-Collision_Sensor/

    Thanks a lot for your time and your help. I don’t know how can resolve the issue.


    • Hi
      Is the Grove Collision Sensor connected to a digital port on the RPI or the onboard Microcontroller?

      If you’re using Windows 10 IoT Core and want an event when the collision sensor is triggered your could look at using an interrupt port on one of the digital ports not connected to the Arduino.

      private GpioPin InterruptGpioPin = null;

      InterruptGpioPin = gpioController.OpenPin(interruptPin);

      InterruptGpioPin.ValueChanged += InterruptGpioPin_ValueChanged;

      private void InterruptGpioPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs args)
      if (args.Edge != GpioPinEdge.RisingEdge)



  6. Hi I’m very new to arduino I’m in christchurch. Would you please be able to point me to the right person to learning how to use. Any classes for beginners be very useful. Thanks

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.