Free hardware for node development

Hi to the XOD community,

Here at the University of Cambridge, we’ve adopted XOD as a way of promoting interdisciplinary project-building between biologists, engineers and physical scientists. You can see more background information at https://www.biomaker.org

As part of this, we’re running a winter challenge to promote development of new XOD nodes, and to help build a wider community for scientific applications of XOD. As part of this Biomaker challenge, we are providing participants with a free kit of hardware that includes an extended Arduino board, parts for prototyping and 4D Systems programmable touchscreen. The only expected outcome is to publicly document a development project at https://www.hackster.io/biomaker/

The Biomaker challenge is mainly targeted at students and researchers in Cambridge and Norwich, UK - but we would like to support the XOD community, with all its enthusiasm and evident skill - and wondered whether members of the community might like to participate remotely? We’ve set aside 10 kits for the XOD community. If you are interested in this, and building links with the Biomaker community - more details, including the application process can be found at: https://www.biomaker.org/information/

(Applications can be brief, and developments with relevance to scientific measurement or control would be best - but these might include visual interfaces, I2C device development, tutorials, etc. - i.e. things that would be useful for the broader XOD community).

I’ll be happy to field any related questions that might crop up.

Best regards, Jim Haseloff
University of Cambridge

6 Likes

Hello!

I’m excited by the opportunity you give to the community. Thank you for that! I pinned the thread for a while and moved it to the “Announcements” category so that more people would likely read it.

Hi Victor,
I have updated some technical information about the starter kit at: https://www.biomaker.org/technical-resources/ - hopefully this will expand as people come to grips with the hardware. In particular, it would be great to see the community develop XOD nodes for the widgets on the programmable touchscreen display. This would allow drag-and-drop programming of sophisticated user interfaces…

Thanks again, Jim.

2 Likes

Say, that’s a nice dev board!

I’ve been working on a set of nodes to facilitate building some basic menu-driven user interface structures in XOD, not super fancy at the moment just to support displaying various data on an LED or LCD display, paging thru menus to view and set parameters of an application, and invoke behavior of various other nodes. To go along with my generalized LED display driver code https://forum.xod.io/t/generalized-7-segment-led-display-driver/1376/5. I will submit an application

Hi - that sounds excellent. It’s winding down for the Christmas-New Year break here, but you can forward the application to me directly at jh295"at"cam.ac.uk. (We can sort out shipping/delivery, depending on your location on the planet). The application doesn’t need to be too elaborate - people like yourself, active in the XOD community have a track record. Please yell if I can be helpful. Jim Haseloff.

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/

Project examples

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.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.