In case this is helpful for this topic - here’s a description of the kind of projects that we’re hoping to catalyse, and the hardware development kit on offer at: https://www.biomaker.org/information/
The Winter Biomaker Challenge is open to applicants from different backgrounds and skill levels. We have a few suggestions for the types of project that might be suitable - in order of increasing complexity and required programming skills:
1 Code-free open curriculum development. The Winter Biomaker Challenge is an ideal opportunity to learn about code-free Arduino programming, using the XOD environment. For example, we are developing a training course and materials based on the MkII Starter kit, that uses the Rich UNO R3 board with its embedded hardware. This requires the development of modified tutorial materials, similar to those found at: https://xod.io/docs/tutorial/, and the bringing together of a XOD library that is self-documented. So, a project, suitable for newcomers to XOD and Arduino, might be to create nodes from existing functions in XOD. This can be done in two ways, without requiring existing programming skills: (i) You can adjust parameters for existing XOD nodes to support specific hardware on the Rich UNO R3 board, and to incorporate a simple, documented patch into a XOD library. (ii) You can create patch nodes in XOD by linking together multiple “low-level” nodes in a patch, with input an output nodes, and then collapsing the new feature into a single node that can be shared. This is documented at: https://xod.io/docs/guide/nodes-for-xod-in-xod/ Files can be made available in .xodball format and documented online at https://www.hackster.io/biomaker. We would assemble these into a consolidated library for development of a future open training schemes. These types of project would be best suited for newcomers to the system.
2 Engineering support for extension of the Biomaker platform. We are keen to see extension of the Biomaker platform for training and development. This might take the form of physical and electrical extensions, such as 3D printed chassis and expansion modules for interfacing with biological systems, such as cuvette or tube holders, fibre optics or electrode interfaces, and supports for mounting additional hardware. Extra hardware elements should be documented and shared at https://www.hackster.io/biomaker.
3 Code-free support for new hardware. XOD provides a wide range of low-level functions that can be connected together to provide support for new hardware. There are a wide range of analogue and digital devices that can be hooked up to the Rich UNO R3 board, and we provide a set of such parts with the Starter Kit (see above). Examples for development of driver nodes can be found here: (i) Analogue sensors (https://xod.io/docs/guide/analog-sensor-node/). This tutorial shows how one can build a XOD node for the GP2Y0A02 infrared range meter, without touching code - and how the approach is easily adapted for other analogue sensors. Further, there are a number of options for code-free development of drivers for digital devices. (ii) Serial communication (https://xod.io/docs/guide/uart-led-control/). This tutorial shows how to use existing XOD nodes to build a system for serial communication via an Arduino UART. This example shows code-free programming for control of devices via their serial ports. (iii) I2C drivers. A growing number of sophisticated sensors and modules that employ an I2C bus for communication are becoming available at low cost. XOD provides low-level graphical programming nodes for the development of specific drivers (https://xod.io/docs/guide/i2c/). This tutorial show development of a digital interface to real time clock module, based on specification of its I2C communication interface, without needing to resort to C++ code. For comparison, native C++ nodes are also available for some I2C devices, including this real time clock module and LCD displays (https://xod.io/docs/guide/rtc-example/). New hardware nodes should documented and shared at https://www.hackster.io/biomaker - and include copies of the hardware specifications. (iv) Wireless communication and internet connectivity. The latest version of XOD have provided support for Arduino boards with built-in WiFi support, like the ESP8266-based boards, NodeMCU and WeMos D1 Mini. Support information can be found at (https://xod.io/docs/guide/esp8266-connect/), with additional information about support for boards with Ethernet connectivity (https://xod.io/docs/guide/w5500-connect/) and nodes for retrieval of web-based information (https://xod.io/docs/guide/http-get/).
4 Creating nodes for XOD in C++. When you need a new node that cannot be easily expressed as a patch node (built from existing XOD nodes), or where performance is crucial, you can implement it in C++. The outline of the process is: Create a new patch; place input/output terminals as for a patch node; add a xod/patch-nodes/not-implemented-in-xod marker node (https://xod.io/docs/guide/nodes-for-xod-in-cpp/); and double click the marker and write down C++ code. For additional help, see the C++ Node API reference, together with information about managing manage state and time in C++.
5 Wrapping class-based Arduino software libraries. Many libraries already have been written for Arduino and they can be included into XOD to exploit the graphical programming interface. A guide to this has been posted at: (https://xod.io/docs/guide/wrapping-arduino-libraries/). To understand this guide, you will need to understand how to write C++ code in XOD and how to work with custom types. Also, you will need to have some experience of working with C++ libraries for Arduino.
General information about programming in XOD can be found at https://xod.io/docs/, and the XOD forum at https://forum.xod.io gives access to a community of experts. The XOD source code is available at https://github.com/xodio/xod, and a guide to contributions to the community can be found at https://xod.io/docs/contributing/. The XOD facebook page is at https://www.facebook.com/xodlang, and the XOD blog on Medium is at https://medium.com/xodlang.