BEAM robots utilise a lot of passive components and other fundamental components like CMOS inverters, but lack any kind of microcontroller. The most complex BEAM robots are made up of blocks that mimic neurons. That is, once a certain stimulus threshold is met on the input of each block, an action occurs. Valentino Braitenberg’s early thought experiments into artificial intelligence (and I mean 1980s early) showed how complex behaviours can arise from a robot created with just a few of these artificial neurons. Such neurons can easily be simulated on a microcontroller, yes, but they can be made even more simply with just a CMOS inverter. This also means that the input and threshold voltages remain entirely analogue. Perhaps this is why I still find BEAM circuits so endearing today: the entire system is built from the ground up, there is no abstraction of signals with 1s and 0s, and no abstracting of logic with high-level code. It really feels like you are manipulating electrons at the lowest level in order to create an intelligent, almost life-like system. I think that all of this is secondary to my robot’s main function, which is to look pretty. I definitely consider my BEAM circuits to be more sculpture than robot, and few BEAM roboticists (bar Mark Tilden, the father of BEAM) ever created such complicated robots.
Enough with the philosophy, let’s talk about the robot. What does it actually do? It sits in a glass bell-jar from IKEA, charging via the large solar panel and turning to face the brightest light source. It spends most of the day sitting rather stationary, only to move about quickly, like an excited dog, when in direct sunlight or when you pass your hand over it. Sitting on my desk, it generally wakes up around 8–10:00 in the morning and stops anywhere from 5–10:00 in the afternoon. To make it more interactive, I also added a circuit that makes the robot do a little dance when you give it three whistles.
The mechanical assembly of this robot is centred around the motors and the solar panel. The motors are common N20 gear motors which were chosen for two reasons: 1) if the robot is still operating decades from now and a motor breaks, there will likely be replacements available, and 2) a wide variety of gear ratios were available to experiment with. In hindsight, I wish I had chosen a higher-quality motor as the N20 motors are noisy and have backlash that made the robot very hard to tune. The motor mounts and other brass components were all made by hand using tools like a hacksaw, drill, soldering torch, and my favourite two tools, a jeweller’s saw and needle files. I absolutely adore working with brass: it is easy to cut/bend, readily available in all shapes and sizes, solders well, and looks beautiful!
The solar panel is housed in a frame made from square brass tubing (most of the brass is from K&S Precision Metals). This brass frame was very important as everything builds off it both mechanically and electrically. Because I didn’t want to damage the solar panel while building, I made the frame such that one side can be removed for the panel to slide out. Wherever possible, I tried to make the robot dismantlable in favour of permanent connections, in the hopes that the robot will still be serviceable decades from now.
Onto the electronics, and the circuitry can be broken down into three major sections: the solar charging, the motor control, and the whistle/dance circuit. A lot of the robot was based on BEAM circuits originally designed by Wilf Rigter in the early 2000s with a lot of modifications and adjustments. The full circuit is much too big and nuanced to fully cover here, but there is an Instructable and a half-hour YouTube video overviewing the circuit in more detail.
The circuit is entirely free-formed, meaning that there is no PCB. Connections between components are created in three-dimensional space using bent brass wire, which I think looks stunning and creates a kind of electronic, steampunk vibe (BEAMpunk?). The process of free-forming feels very similar to routing a PCB, and I find it quite therapeutic as long as nothing goes wrong. Indeed, lots of testing was done throughout assembly to ensure everything worked and a little confidence soldering goes a long way.
Interestingly, this robot actually took me longer to prototype and breadboard than it did for me to build/free-form! Without code, any changes to the robot’s behaviour must be made by physically altering the circuit, which is significantly easier to do on a breadboard than on the eventual free-formed robot.
Starting the circuit explanation with power, the broad goal is to be able to run the robot solely off the solar panel. However, if you have ever played around with solar panels before, you might have noticed that they are immensely less efficient when out of direct sunlight and I wanted this robot to live on my desk all year round. The solar panels generally found on indoor devices like calculators are amorphous panels. These are different to the polycrystalline and monocrystalline panels used outdoors, and output lower power for their area. The ANYSOLAR panel used in this project is a high-efficiency monocrystalline panel that boasts up to 25% efficiency and, more importantly, responds to a wide enough range of light to be effective indoors. Even still, the datasheet says to expect anywhere from 100–500 times less power when used indoors. Evidently, power is a big hurdle, but luckily we have plenty of BEAM tricks we can use in order to squeeze everything we can from this panel.
Indoors, the panel outputs <100 μA on a cloudy day and 5–10 mA on a sunny day, but the motors draw around 20 mA each! Clearly, the panel alone would never be able to power the robot, which is a problem that many solar-powered BEAM projects face. This problem is solved with a ubiquitous BEAM circuit known as a ‘solar engine’. The goal of a solar engine is to allow the panel to charge a storage capacitor until there is enough energy to do useful work, at which point the solar engine turns on the rest of the circuit. Simple solar engines are robust and easy to implement, but are not always the most efficient. Hence, I have used a clever Wilf circuit, dubbed the Dual Slope Sampling Solar Engine (DSSSE). This DSSSE samples the storage capacitor voltage for only a short moment every five seconds or so and only draws significant power during that sample time. The solar engine on this robot turns on at around 3.5 V and turns off again at around 2.5 V. When off, only the charging is connected, and when on, the motor controller and microphone circuit turn on alongside a blue standby LED.
The DSSSE actually charges two capacitors: one is a smaller 330 mF supercapacitor and the other is a larger 7.5 F supercapacitor. The circuit starts by charging the 330 mF capacitor so that, in the morning, it takes much less time for the robot to initially turn on and face the sun. Once locked onto the sun, the panel begins charging the 7.5 F capacitor until it matches the 330 mF capacitor voltage, and the two capacitors act as one.
Motor Control Circuitry
The motor control circuitry is really elegant and was also (surprise, surprise) originally designed by Wilf. He called this circuit the Power Smart Head (PSH), and one PSH is used for each of the robot’s axes. The PSH uses a modified CMOS oscillator to create what I would describe as a PWM-based, proportional controller, with a large dead-band. The oscillator has two resistor/capacitor (RC) pairs. The first RC pair dictates the oscillator frequency, and the duty cycle of this oscillator is altered by a pair of photodiodes that act as the robot’s ‘eyes’. This creates the PWM. The second RC pair creates the dead-band so that the robot does not just constantly move and waste power. The interesting thing here is that from controller input (the voltage between the eyes) to the motor output (the PWM duty cycle), the signals remain entirely analogue!
The microphone circuit is based on yet another Wilf design that he called ‘BEAM Sonics‘. It consists of preamplification, followed by some BEAM-style logic, again mostly made of inverters and RC pairs. This logic ensures that the whistles are of the correct length, and that there is a distinct pause between each whistle. Once it counts three suitable whistles, it triggers a circuit to make the robot dance and another to lock the whistle circuit for 20 minutes so that the robot is not dancing too often and wasting power. The microphone circuit has three LEDs: one green that flashes for every whistle, one amber that flashes when the circuit activates, and one red that remains on while locked.
The dance circuit is simply three oscillators, two of which force the motors to oscillate and the other to make a pink, hexagonal LED flash.
While BEAM circuits may take a little more effort to build and are nowhere near as powerful as a microcontroller, I would encourage anyone interested to do some research, and give these old BEAM circuits a look (the Wayback Machine might be your friend here). If you are keen to build any, I think that the best circuits to start with are ‘pummers’ that charge during the day and slowly flash at night, and ‘photovores/photopoppers’ that hop about using two motors to locomote toward light. Although the obvious solution is often to slap a microcontroller onto projects, there may be times where simpler analogue circuits make more sense. In fact, in recent years, analogue computers are once again being considered for use in artificial intelligence!
Even without building a BEAM solar engine, the principle of storing charge from a solar panel in a capacitor until there is enough energy to do something useful can be applied to many solar-powered projects. I hope this article might have inspired you to consider solar power for future projects, or perhaps to try free-forming, which can be a fun way to bring a little more artistry to any project.