More selected projects

M      A R      B       L E               R U        N

Marble Run is a marble run - shock. Built using a mixture of modular building blocks, 3D printed modification pieces and custom designed parts Marble Run is an attraction as well as a work of art that can be installed in gallery spaces and beyond.

produced by: Eleanor Edwards


This synopsis covers the practical research undertaken prior to the creation of Marble Run, the development process to bring about Marble run and future developments. This report also covers the first installation of Marble Run in the recent Shivers Exhibition, a group show of computational artworks in a gallery setting.

  • gallery-image
  • gallery-image
  • gallery-image

Concept and background research

“I’ve spent the last year using practice as a method for research to explore ways in which I can find fun and energy in the art space and art process both for myself and the audience.”

Marble Run is a result of this research. Defined as an attraction as well as an artwork, the distributed setup results in disruptions to the usual journey visitors often take through an exhibition when installed in a gallery setting. The modular nature, and networked functions enable it to be installed in various locations where the disruptions would be more focused on interrupting an everyday activity – intervening these activities by featuring art in unused or unexpected spaces.

The initial research that led to Marble Run began with investigations into the weight of importance on the each of the members within the sphere of influence of an art object.

This research topic came about as a reaction to the boundaries that I personally feel institutional art spaces can impose, for example, the presentation of ‘perfect’ works, the exploration of complex topics that are not always clearly defined or explained with commonplace language, the use of interactions that are intimidating or obscure, the hushed atmosphere, physical barriers, pedestals and lengthy routes can all add up to an overwhelming experience for visitors. Whilst I have been undertaking practical research to react to this topic I have used ethnographic research methods to measure and understand the wider positioning of my work, specifically I have observed a daunting feeling in those who are not ‘in the art world’.

I have reacted to these experiences by exploring different methods, summarised below:

  • treating the audience as the epicentre of the art object, using a high number of interactions, hidden artefacts, and evolving outcomes. [ Eleanor Edwards : Let it grow. 2020. ]
  • working further up the chain and developing artistic tools to encourage the artist to embrace imperfection within their own work and shine more light on the importance of the process that leads to the “perfect” art object. [ Eleanor Edwards : what-the-plot. 2021. ]
  • working in other distributed ways and across the boundaries of institutional walls by using web hosted methods to create work featured both online and in an exhibition setting.


Marble Run is a culmination of my findings from both the practical research of undertaking these projects and the review of the reaction/engagement with them to define successes and failures. In short, I began the Marble Run project knowing I wanted to:

  • limit the required interaction by the audience, in order to avoid framing them as a labourer within the sphere of my art object.
  • embrace playfulness both within the outcome and the medium, because to inject energy and fun into the art space I needed to be having that myself, so I challenged myself to work through experimentation to allow the project to evolve as a reaction to my playtime.
  • design and develop a marble run that could exist in multiple locations and have a life outside of the art gallery in the future.


Using networked microcontrollers Marble Run alludes to an adventurous marble travelling through the space in an impossible way. Although built out of toys there is little active play possible for the audience, which is an intentional restriction made to free them of potentially complex interactions that can result in distraction or reluctance to engage with a work.

Wi-Fi enabled ESP32 DevKit WROOM 32 boards meant that I could distribute my marble run around the exhibition space. This also means that anywhere within reach of a Wi-Fi connection and a power source could become the home to part of this marble run.

I used Gil Maimon’s base example to build my connection to a webserver which I hosted on Heroku, this meant that my server could constantly be active, and I wasn’t bound to the restrictions of a service like, as I or any audience members wouldn’t actively be using the front-end web side of the server during the installation.

I also took guidance from Rob Hall and Clemence Debaig’s workshop to understand that sending messages in a JSON format was the best way to communicate between my different marble run sections.

The JSON format meant that I could easily send specific information from one board detailing which other board(s) within my network needed to act on a particular message. I used a system of numbering my boards and assigning them an ID, which was the first part of the JSON message that was sent.

At the beginning of each INO script I initiated variables to store the IDs of the other boards that one will need to communicate with, which enables me to easily manage the change of communication. I also managed and tracked this on a spreadsheet to help me map out the process.

Within the scripts, once the JSON message has been deserialized, the code first checks whether the boardRecieverID matches the boardID, if not it discards it. If it matches it will then check the String message within the JSON data. I log this data to the Serial, and I can also log it on my server so that I can check the process remotely from the Heroku terminal.

Having remote access to the Heroku terminal was key to debugging and led me to understand that during the exhibition there was a lot of interference going on with the Wi-Fi networks. Each board was set to broadcast a hello world message on connection to the server that was logged to the Heroku terminal, and I could see that some of my boards were dropping or not making the connection whilst others were. This was frustrating as the exhibition was being held in a church (gallery space) where the infrastructure resulted in limitations on what I could do to resolve this. A Wi-Fi network with closer proximity to the boards would have been the solution to this, as then I could have set them to connect to that network. Again, another benefit of hosting a remote server as the boards do not all need to be on the same network.

I used a simple HTML console to be able to send JSON formatted messages to the boards as and when I needed. This helped with testing and development when the complete system was still in the building phase. It also allowed me to debug and to reset the boards if I needed to, although an internet connection is required for this. Otherwise, I needed physical access to be able to troubleshoot via the serial monitor.

I used physical sensors and actuators to automate the marble dispensing process - adding to the smoke and mirrors effect. At the end of the first and middle stage of the marble run there are two sets of LDRs with a laser diode shining into it. The light value on the LDR is constantly registered by the board, whilst a previous value of the analog reading is updated every 5 seconds. This previous value is used to check against the current value and when the current value dips below a certain threshold it can be determine that the marble has broken the light beam from the laser and therefore can establish it has reached the end of that run. The previous value needs to be updated at regular intervals to deal with the subtle changes in environmental light.

The development of the marble dispensing system was the trickiest part of this build process but very key to enabling the marble run to exist autonomously in different locations. Using a Servo motor enabled a lightweight solution that provided enough torque to deal with the marble pressure, as they needed to be fed into the dispensing unit with the help of gravity. The Servo motor’s ability to have exact positioning between 0 and 180 degrees meant that the position could easily be switched to release one marble at a time. The mechanical system of this feature of the marble run was the most challenging to achieve but a success in the end.

Working with a server meant that I had to advance the use of the actuators as a lot of the time these will run using delays. However, as the boards needed to be constantly listening or be able to send messages this meant I needed to use more advanced methods. I used a Timer library from Jack Christensen for some of the Servo movements, enabling me to access callback methods after a certain period. I also began using the internal Timers on the ESP32 chips to work with Interrupt Service Routines to both take readings from the LDRs and to run the stepper motors. This was very out of my comfort zone as this is dealing directly with the chip’s hardware. When setting up the hardware interrupts for measuring the LDR readings at certain points (I was doing this to register a recent previous value to combat light fluctuations within the space), assigning a hardware timer and setting my desired interval to happen each second was straight forward. But when working with the stepper motor and using the intervals to control the step pulse (resulting in speed), I found it difficult to work with the multiple intervals needed. This left me only able to use the example code without little customisation, except to add the on/off effect when I needed it.

Both the timed and triggered events added to the marble run coming alive at surprising moments and increasing the sense of unpredictability and therefore further interruptions to the audience’s art gallery experience, when they would walk away a noise, or a movement might happen, and they would be drawn back to the marble run.

  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
Future development

I would love to take this project further afield, distributing the marble runs further apart, and/or outside artistic institutions. Although this iteration of the project was located within an art exhibition alongside other works of art, the design and development of Marble Run was deliberately undertaken in such a way that it can hold as an attraction outside the boundaries of an art space and fulfil the purpose of blending art with the everyday and with play.

One thing to consider when I distribute the marble runs further apart will be how the audience will get that sense of wonder knowing that the marble has made an impossible journey. At the moment I am considering that when the marble begins the next part of the journey in another location a video stream would be activated and the display would feature details about where the marble has travelled to and from, whilst also potentially capturing the reaction of the unsuspecting receivers of the marble.


Self evaluation

I am conflicted whether to say that my initial goal to work experimentally may have caused me some problems, but I think that is more down to this style of working, leaving you in a bit of a state of limbo as different elements develop before the whole format comes together. This is difficult to manage when you have a goal to achieve.

However, as I see this project as a steppingstone to taking marble runs further afield, this groundwork of experimentation has laid a good foundation for further development.

I would like to have had more control over my web interface but as I have very limited front-end web development experience and the key for this project was much more the networked communication, that is a valid nice to have.

The most exciting thing for me and probably the most important when reviewing my overall research process was the reactions to the installed work, and how captivated people were. I witnessed a lot of people diverting their journeys through the gallery space to examine the different segments of the marble run. My exact intention.

It was also great to see the wide range of people enjoying the playfulness of the marbles and very interesting from an ethnographic point of view to observe the different behaviours across the generations. Kids were right in there to play with the marbles, but adults too were interested down at floor level, trying to figure out how it works, helping the marbles along when gravity decided to misbehave.

A fair few people believed me when I told them that I had used the church’s internal pipe network to get the marble from one run to another which was excellent as I really wanted the computation to be an aid to adventure rather than an intimidating forefront.

A couple of really big wins for me was being told that I was “definitely the person having the most fun making their project” by Owen Plenchart in the month running up to the Shivers exhibition and being told by a friend (not “in the art world”) “yes, I got yours, yours was fun, it was great to watch and great to play with, it didn’t stress me out”.

This has been a fun process, certainly not stress free for me, but I’m not done with marble runs or with Marble Run for now so hopefully see you in some high-street shop windows sometime soon.



Adafruit HUZZAH32 - ESP32 Feather (no date) Adafruit Learning System. Available at:

Aggarwal, R. (no date) Stepper Motor With ESP32 Board, Instructables. Available at:

BIG MOTORIZED MARBLE RUN MACHINE - YouTube (no date). Available at:

cdaviddav (2019) Servo Motor Tutorial for Arduino, ESP8266 and ESP32. Available at:

Christensen, J. (2021) JChristensen/Timer. Available at:

cuboro cugolino Kugelbahn ‘Route 66’ - YouTube (no date). Available at:

d1132690e8bd825c9716e79cc85ba42b.jpg (1280×720) (no date). Available at:

Daniel de Bruin (2020) How to make a STEEL MARBLE TRACK with basic tools! step by step guide. Available at:

embed (no date) Tumblr, Tumblr is a place to express yourself, discover yourself, and bond over the stuff you love. It’s where your interests connect you with your people. Available at:

ESP32. How to use Timers and Alarms with Arduino Code • DIY Projects (no date). Available at:

ESP32: Step Pulse Experiments with Timers at Buildlog.Net Blog (no date). Available at:

ESP32-DevKitC V4 Getting Started Guide - ESP32 - — ESP-IDF Programming Guide latest documentation (no date). Available at:

ESP-Wroom-32 Web Server meets some Nema17 stepper’s | (no date). Available at:

Exploratorium (2019) Paul Spooner- Automata Artist | Curious Contraptions | Exploratorium. Available at:

fast-safe-stringify JavaScript and Node.js code examples | Tabnine (no date). Available at:

Gallery / Image Licensing – Rube Goldberg (no date a). Available at:

Gallery / Image Licensing – Rube Goldberg (no date b). Available at:

‘Getting Started with the ESP32 Development Board | Random Nerd Tutorials’ (2018), 27 August. Available at:

How to calculate VREF (2020) 3D Print Guides. Available at:

Inside the surprisingly dark world of Rube Goldberg machines | The Verge (no date). Available at:

Jelle’s Marble Runs (2018) INCREDIBLE Marble Run Machine with 11,000 Marbles! Available at:

Jelle’s Marble Runs - YouTube (no date). Available at:

Kreindler, R.J. (no date) Tutorial:ESP32 & DC Motors, Instructables. Available at:

laser-tripwire (2020). makertut. Available at:

Maimon, G. (2021) Arduino Websockets. Available at:

Marble ASMR healing (2020) Marble run colorful balls run on a transparent hose ☆. Available at:

Michael Sed (2020) CMD: Experiment In Bio Algorithmic Politics. Available at:

Mini Gear (2018) How to Make BIG Marble Dispenser Machine from Cardboard. Available at:

Monk, S. (no date) ‘Arduino Timer Library’. Available at:

Mr. H2 (2018) How to Make Marble Dispenser Machine from Cardboard. Available at:

nefastudio (2021) Stepper motor at 1500RPM with ESP32 and A4988. Available at:

RobHallArt/React_ESP_Server (no date) GitHub. Available at:

Robojax (2020) Using ESP32  to control 28BYJ-48 Stepper motor over WiFi using mobile phone ESPSTP-1. Available at:

techiesms (2020) WebSocket Server Home Automation using ESP32 or NodeMCU board. Available at: (no date a) Duplo compatible marble run system by joachim67. Available at: (no date b) Gravitrax Compatible ‘Follow Me’ Marble Multiplier by alex80it. Available at:

Using CNC Shield w/o GRBL - Motors, Mechanics, Power and CNC - Arduino Forum (no date). Available at:

Web-Socket Server with ESP32 and Arduino IDE (no date). Available at:

What is the best Battery for the ESP32 (no date). Available at:

White cube – Art Term | Tate (no date). Available at:

Who we are | We The Curious (no date). Available at:

‘Why knowing how art is made enhances how we enjoy it’ (no date). Available at:

Wintergatan (2016) Wintergatan - Marble Machine (music instrument using 2000 marbles). Available at:

Workshop, D. (2020) Using Servo Motors with the ESP32, DroneBot Workshop. Available at:

ws (no date) npm. Available at: