Ariadne blog
Network computing: systems

(Ubuntu version)

  1. Signals - 20 September 2020
  2. Introduction - 21 May 2020

(Raspberry Pi version)

Top of blog

Introduction - 21 May 2020

This project is currently about managing multiple heterogenous devices (computers, microcontrollers, and circuits) and talking to them using a simple common interface. Shortly, this facility will be used for the study of independent stand-alone systems (analog and digital) which are "always-on" or "almost-always-on" and which perform long-term unique calculation. Applications of these systems include the distribution of composite correlated datasets, and experiments involving the transfer and exchange of correlation between devices. As such, this project intersects with the Persephone project (distributed binary signals) and the Andromeda project (simple signal processing hardware).

All of the microcontrollers I currently have use AVR chips. These are the same chips I've been using for 20 years and have programmed in assembler. Luckily, today there are inexpensive devices from several vendors, and they can be programmed in C (C++ actually). Two of these devices are Megas:

Two midsize devices are Redboards, and two smaller devices are Nanos. Although these are packaged as DIPs to be included as part of a circuit, unfortunately they don't fit into a solderless breadboard 🙁:

In addition, I have a Raspberry Pi, which is a credit-card-size Linux computer that can be accessed over the WiFi. This is used as a kind of "super-microcontroller" which can run multiple remote processes, interact with external electronics, and can host additional microcontroller devices via USB:

The main coordinating computer is an Intel i5, also running Linux (Ubuntu 18.04). The Pandora program is written in C and GTK, and compiles and runs the same (with GCC) on both the i5 and Pi computers. It manages a collection of devices, and talks to them using the same simple interface (in text and binary):

The Linux devices can run one or more remote Pandora processes (e.g. for Strawberry and Framboise as shown above). Connections over the radio are made using standard C sockets:

Commands currently supported by all devices include:

For interacting with external electronics, the "set pin" and "set port" commands are the most important. The "set pin" command will set or clear an individual pin:

The "set port" command sets or clears several pins "all at once":

Additional commands can easily be added as required, and will shortly include:

Output data is currently all binary. Analog signals can also be produced, but they require heavy filtration after output. Most of the output will be in the form of sparse signals, which consist of a series of pulses.

I have the Pi mounted to the underside of a monitor stand. A ribbon cable makes the GPIO pins easier to access:

Next: playing and recording signals.

26 Aug 2020

©Sky Coyote 2020