Winter Software Challenge 2018-2019
Summary: Biomaker is inviting applications for the Winter 2018-9 Challenge. Applicants will develop software nodes for integrating hardware with a new graphical programming interface, XOD. With a short-form application, all successful applicants will receive a hardware starter kit, document their projects on the Hackster platform, exhibit their results in February 2019, and be in the running for fabulous prizes.
Develop XOD nodes for code-free programming of scientific instruments and real-world tools for biology.
We will provide teams with a low-cost development platform based on the Open-Smart Rich UNO R3 board, which contains a variety of embedded components. The board is Arduino compatible, and can be programmed directly from the graphical programming environment XOD (C++ source code available). XOD nodes can be programmed using C++ (https://xod.io/docs/guide/#making-your-own-nodes), or composed from low-level XOD nodes (e.g. I2C device support, https://xod.io/libs/xod/i2c/)
Potential projects might involve the production of code for new i2C devices, serial communication routines for use with programmable touch screens or integration and documentation of existing nodes for scientific use.
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:
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 (see above). 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.
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.
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/).
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++.
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.
What is Biomaker?
The Biomaker Challenge is an interdisciplinary team-based opportunity to explore the intersection of electronics, 3D printing, sensor technology, low cost DIY instrumentation and biology. The Biomaker Challenge aims to promote collaboration between disciplines, tapping into commodity electronics and open technologies for instrumentation to build research skills and collaborations. Whether you’re a biologist looking to optimise your protocols and pick up some electronics knowledge; an engineer looking to apply your skills and gain experience of practical biology or you’re just curious and interested to participate, we’re keen to recruit you.
Simple hardware for computing: We have chosen Arduino-based hardware (www.arduino.cc) as our starting point. The Arduino community has established open standards and rich ecosystem of resources for simple microcontrollers, first established to simplify programming and physical computing for designers and artists. Arduino circuit boards can be plugged into the USB port of any laptop, and a simple cross-platform programming environment used to program the board. A program is simply loaded to non-volatile memory on the Arduino board, which will execute this program loop whenever the board is powered on - behaving as a dedicated appliance or instrument. Arduino boards include many input/output ports, and are intended to interface with sensors and actuators. The Arduino system provides a simple environment for learning programming and hardware skills, and developing real-world laboratory tools for biologists. Further, the Biomarker Challenge provides a direct route for other scientists and engineers to get hands-on experience with biological systems.
Visual programming: We have adopted XOD as a simple platform for programming Arduino-based hardware. XOD is an open source platform that allows the graphical layout and assembly of software through connection of a series of nodes. XOD allows a hierarchical and dataflow driven approach, avoids the complexities of text management and syntax, and can be used to directly programme Arduino boards. We use XOD for our training programmes. The software can be downloaded from (https://xod.io). In order to get started with XOD - head to https://xod.io/docs/tutorial/install/
A starter kit of parts: We will provide an extended Arduino board, components, small prototyping board and programmable display. It is based on the Open-Smart Rich UNO R3 board, which contains a variety of embedded components, including sensors, 7-segment 4 digit display, real-time clock, touch sensors, buzzer, mp3 player with microSD card holder and expansion shield. Importantly, the connections to the embedded components can be turned off using a DIP switch. The board is Arduino UNO compatible, and can be programmed directly from XOD. Click here to download the board manual (4.9 MB PDF). The Starter kit includes a wide variety of addition components that allow the addition of new inputs and outputs.
Programmable interface: The Biomaker Starter Kit contains a 4D Systems 3.2" gen4 touch-responsive programmable display (with memory card, Arduino interface and programmer), with information about programming environments. An Arduino library for direct serial communication with the display is available - along with more sophisticated Workshop4 development tools, including ViSi-Genie, a graphical programming tool that allows simple access to a wide range of display widgets like gauges, switches, sliders, readouts, etc., for creating customised interfaces for Arduino-based instruments. The programmable displays can be easily adapted for Raspberry Pi board computers.
We are recruiting teams for the Winter Challenge, running information sessions and mixer events in Cambridge and Norwich. Up to 50 teams are funded over the winter, and we are extending the competition internationally. Contact Alexandra Ting (firstname.lastname@example.org) for more information.
Free Starter Kit for participants:
1. Arduino-based prototyping system
The Starter Kit will contain an extended Arduino board, components, small prototyping board and programmable display. It is based on the Open-Smart Rich UNO R3 board, which contains a variety of embedded components, including sensors, 7-segment 4 digit display, real-time clock, touch sensors, buzzer, mp3 player with microSD card holder and expansion shield. Importantly, the connections to the embedded components can be turned off using a DIP switch. The board is Arduino UNO compatible, and can be programmed directly from XOD. Click here to download the board manual (4.9 MB PDF).
Further, the board is available as a kit of components that includes a wide range of sensors and displays. The kit includes: the Arduino board and: IO Shield, Voltage sensor, Ultrasonic sensor, Touch sensor, Water sensor, PIR motion sensor, Rocker switch, NTC sensor, Light sensor, Slide Potentiometer, Vibration motor, Passive buzzer, Speaker, 8 LED bar, Eagle eyes LED, I2C 1602 LCD, 4-Digit display, microSD card (256MB), CR1220 button battery (40mAh), Infrared Remote Control (with one CR2032 battery), Micro SD card adapter, Infrared emitter, 40pin female to female cable, USB cable (50cm).
2. Kit of Parts
3. Programmable touchscreen display
The extended kit provides a wide range of sensors, actuators and displays that are programmable from XOD and can form the basis for an extended set of tutorials - as well as provide parts for applications.
We wil also provide a programmable touchscreen, such as the 4D Systems Gen4 µLCD 3.2” resistive touch screen. This intelligent display provides a microcontroller and touch screen that can be customised to display user interface elements for visualisation of data (e.g. gauges) or graphical input (e.g. switches, sliders). Graphical elements can be laid out using the free 4D Systems Workshop4 IDE, and downloaded to the display, which can then interact with an Arduino board via serial connection.
Applicants and teams:
Teams can be any size, including individuals. All team members will be provided a Starter Kit. If you would like to join a team, post on our Hackster discussion page and we'll help match people and projects!
Teams which span Norwich and Cambridge are highly encouraged.
We are also recruiting participants who might have a special interest in building links with the Biomaker programme around XOD development, or international cooperation. Please contact us (see below) if you are interested in this.
All proposals must lead to publicly documented code or project on the Biomaker platform at Hackster (https://www.hackster.io/biomaker/)
Please submit an application form to email@example.com in an editable format such as .odt or Word .docx (not PDF) and attach any images separately to the email.
Applications should include:
Team details, including contact details and hardware or programming experience
Project title and brief abstract
Short description of the intended challenge.
Expected outcomes and benefits
The full application can be succinct, ranging from a paragraph or two - to no more than 2 pages, excluding any figures, photos and diagrams which can be inserted at the end of the document and referenced in the text.
Applications are invited from Monday November 26th, and will be evaluated on a rolling basis until the free hardware kits are gone. (Cambridge undergraduates may be able to pick up their Starter Kits before the end of term, otherwise these will be mailed).
Prizes will be awarded for the best documented use of the Starter Kits and creative development of XOD resources. Projects should be documented on the Biomaker platform at Hackster (https://www.hackster.io/biomaker/) by February 3rd, 2019.
Please contact firstname.lastname@example.org with any enquiries.
The Biomaker Challenge is organised by:
OpenPlant (Cambridge) and the Synthetic Biology SRI: Prof. Jim Haseloff & Alexandra Ting; email@example.com
OpenPlant (Norwich): Dr Colette Matthewman; firstname.lastname@example.org
The Biomaker Challenge is sponsored by BBSRC/EPSRC through OpenPlant Synthetic Biology Research Centre (www.openplant.org) and the University of Cambridge Research Policy Committee through the Synthetic Biology Strategic Research Initiative (www.synbio.cam.ac.uk).