Raspberry Pi controlled Lego model

Lego Space base

Lego Space base using two servos and LEDs.

Here’s a simple creation to illustrate the kind of things possible using the Lego interface I’ve built along with servos and LEDs.

I’ve put some kind of radar antenna on top of a large servo. Scratch can be easily programmed to make the servo sweep backwards and forwards, scanning for distant incoming spacecraft. I’ve put a green LED into the top of the radar which flashes constantly. The light projects down the transparent green antenna, making for quite an attractive show.

Getting into your spaceship is quite tricky given that the crew compartment is at the top. There’s a miniature servo connected to a lift arm. Pressing the Spacebar triggers a Scratch routine to lift the arm, wait enough time to transfer the crew and then lower to the ground.

I suppose the next step would be to add a flashing red LED to simulate thrusters along with sound effects played from Scratch.

Lego – Raspberry Pi interface

Lego interface

Lego interface – a L298 H-bridge motor controller with a servo buffer board.

Here’s the current version of my Lego interface for the Raspberry Pi. It uses an L298 H-bridge motor controller (covered in a previous post) combined with another of my 74HC541 buffers to protect the Raspberry Pi when connecting LEDs and servos.

The whole thing runs from a 5v plug-top power supply which is adequate for driving the 4.5v Lego motors along with a bunch of servos.

There’s a bit of scope here for making the whole thing more compact but that’s another step once I’m happy with the design. I need to add input connections so that the Lego creations can be fully interactive.

It would be also interesting to see if I could make this into a Lego case, perhaps with a bunch of plates combined with 1 x 4 x 3 Panels.

Lego and Raspberry Pi working together

In a small way, I consider the Raspberry Pi almost like a Lego brick. On its own, it’s an interesting device, but it becomes more useful when combined with other components. What would be more natural then, than combining it with other Lego devices along with a few of my own devising.

In previous posts, I’ve shown how servos can be used to create some pretty whacky Lego devices, but equally I feel that individual bricks are open to hacking. Note… this is pretty gruesome stuff – drilling, cutting and filing Lego bricks. Even something rather similar to “The Kragle” ends up being used!

Rather than steal my son’s Lego, I’ve been using Bricklink as a place to buy specific parts. I’ll try to list their code numbers here so that they’re easy to find on the Bricklink website. Bricklink serves as a market place for people to sell their bricks.

In a follow-up post, I’ll show the current version of my Lego interface.

Lego LEDs

Lego LED

Lego LED in 2×2 brick

I’ve debated at length in my own head how to wire these. Essentially all the device needs is a resistor and LED to be mounted into some kind of transparent brick, or for the LED to be poking out of the top.

A standard 5mm LED can be fitted inside a 2×2 brick if it’s allowed to shine through the top. This does mean that other bricks can’t be stacked with it, but it is a neat solution. These 2×2 bricks are also available in clear (I bought Trans-clear, Trans-Dark blue, Trans-Green, Trans-Red).

To make this, you will need:

  • 2×2 Brick (Part No:3003)
  • 2×2 Plate (Part No: )
  • 0.1″ Female connector cables
  • LED
  • 100 Ω resistor (1/8 Watt is easier to fit in)

Lego switches

Lego tactile switch

Lego tactile switch

These are easily made with a 6mm tactile switch with a long actuator. A blob of hot glue can be used to keep the whole switch central while the rest of the brick and plate is assembled around it.

The switch is connected to a short cable with 0.1″ Female connectors on the end.

To make this, you will need:

  • 2×2 Brick (Part No:3003)
  • 2×2 Plate (Part No: )
  • 0.1″ Female connector cables
  • 6mm tactile switch
4-way tactile switch

4-way tactile switch on a PCB in a Lego frame

I’ve also had success with using 4 tactile switches on a PCB. The spacing between studs is 8mm, therefore it’s a fairly simple job to create a PCB which matches. I’ve linked one side of each switch to a common line to reduce the amount of cables required.


Lego large servo

A Large servo in a Lego framework

Connecting servos into a Lego system remains the biggest challenge. I tried a number of ideas before I settled with two possible solutions.

The micro servos seem to work best glued to a tile. It needs to be something that’s compatible with the plastic of both the servo and plate. Hot glue seems to work well here, although I have had success with some solvent-based cements. Polystyrene cement worked well for a bit, but surprisingly I did have on piece fall apart.

Larger servos require a different approach. I build a framework out of bricks and plates and that seemed to work well, but it does mean that right-angle parts are needed to mount it if the axis of rotation needs to be vertical. The egg-drawing robot used a large servo resting on a tile, with some small axles to centre the spindle within the Lego grid system.

To make a framework that supports a servo on its side, I used:

  • 2 bricks – 1 x 6 (Part no: 3009)
  • 1 plate – 1 x 6 (Part no: 3666)
  • 2 plates – 4 x 6 (Part no: 3032)
  • Optional – Bracket – 2 x 2 with 2 holes (Part no: )

All of the pieces need to be stuck together with solvent and then the servo can be linked into this with hot glue. It’s fairly neat, robust and fits into the Lego system well.

The servo actuator needs a little bit of treatment to make it useful. Small servos can use a Technic axle and pin connector (Part no: 3651) and larger servos will need modifying with a pulley (Part no: 4185) along with some small screws. I used PCB pillars to get the spacing just right.

Lego framework with brackets

Large servo in Lego frame

22mm Pulley for actuator

Servo actuator using a pulley

Lego framework

Largeservo and the Lego framework

Small servo

Small servo on Lego tile with actuator

Mini amplifier – 5v powered stereo modules

PAM8403 stereo amplifier board

PAM8403 stereo amplifier board

I had been looking to create a little monitoring amplifier for the Raspberry Pi for a while, as well as creating an amplifier which our phones could plug into for listening to music. After trawling that well-known internet auction site, I came across these little boards for an absolute bargain price of 99 pence each with free postage and packaging.

The power supply requirements are around 2.5v to 5.5v, which means it is suitable for powering from a USB power supply.

The module is described as a “PAM8403 5V DC Audio Amplifier 2 Channel 3W*2 Volume Control USB Power New Board”. There are a bunch of connections on one side, and a volume control/on-off switch on the other.

The connections (0.1″ spacing) are:

  • Left and right speaker connections (8Ω)
  • Power (2.5v to 5.5v)
  • Stereo audio input (Left/Right/Ground)

I hunted around the parts bins and soon came across an old usb cable and a 3.5mm stereo audio cable. These took a while to strip and tin as the usb cable had really fine wires. I needed a voltmeter to determine which of the connections would give me 5v. To make things more awkward, the colour codes used didn’t match with any of my internet research.

The internal layout. The amplifier module sits between the two speakers.

The internal layout. The amplifier module sits between the two speakers.

On to the CAM router to produce a case. The first one would be for my wife while she goes into labour, so I opted for something a little more interesting than a black box.

The template was generated from some earlier work (It’s the same size as the servo robot) but equally it could be created from the Automatic Case Designer

I use a lot of foamed PVC sheet with the router as its easy on the cutters, gives a little and makes a case that looks professional. The tabs fit the slots perfectly if a 3mm cutter is used. The case tends to hold itself together purely by friction although a glue gun can be used to permanently join the sides together.

The amplifier module comes without a knob, but searching around I found a 6mm splined shaft soft-touch knob which does the job perfectly.

Finished amplifier in its case

The finished product!

Here we have the finished case. The speaker grilles are drilled using the router into a heart pattern. The cables are USB power and a stereo jack.

One advantage of USB power was that the amplifier can also be used with a USB backup battery to make a portable amplifier. Alternatively, I found that the USB sockets on the Raspberry Pi can also be used.

Eventually, I’ll make a similar circuit for the Dalek so that it’s self-contained.

In conclusion, this little amplifier board is a perfect little problem solver. It might be possible to drive it direct from the 5v supply on the GPIO connector, although a pretty beefy power supply might be needed if the full 3w x 2 is required, given that this equates to over 1Amp. I suspect that the Raspberry Pi might crash if the amplifier is driven at high volumes with a particularly weak power supply.

Another alternative might be to create an internet/network media player. Couple one of these to a Raspberry Pi running Kodi, stick in a USB WiFi dongle to pick up network attached storage, and use a mobile phone app such as Yatse (Android) as a remote control.