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
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