Arduino-like boards might be moving on a bit with built-in Wi-Fi or Bluetooth and 32 bit processors running at 100s of Megahertz but I still say there’s a good, strong use-case for the original Arduino Uno design. It’s relatively cheap, well tested and quite beginner friendly. The most well-known Arduino is arguably the Arduino Uno. At its core it has an 8 bit Atmel ATMega328 with 32KB program space, 2KB RAM and a 16MHz clock speed. The Arduino Uno is slightly smaller than a deck of playing cards measuring approximately 69 x 53mm.
There is another board that uses the same chip and you might have guessed from the title that it’s called the Nano. As it uses the same chip it is almost functionally identical to the Uno but it’s much smaller at 18 x 45mm, that’s over 4 times smaller. So the question becomes which Arduino to use? I’d say there’s 3 main aspects to look at: price, convenience and safety.
Price
Officially the Arduino Uno and Arduino Nano are both €20, however being open source designs, both are available from 3rd party manufacturers (often referred to as clones) for much less than this. On average a 3rd party Arduino Uno can be purchased for £5 to £8. The Nano, however can be purchased in triple packs for about £10. Looking at this it might seem an obvious no-brainer to get the Nano, seeing as how you get essentially the same board for about 1/3 of the price but we still have further considerations.
Convenience
When designing an electronics project based around Arduino, especially when starting out the Arduino Uno is much more convenient. The larger size makes wiring easier and generally allows full use of a breadboard for making connections, the Arduino Nano generally comes with male header pins for connections, this makes it ideal for plugging into a breadboard, this can be good in some ways as it can make the project more portable with wires going from one part of the breadboard to another. When using an Uno you have wires running from the Uno to a breadboard which can be a pain to move about. However, the Nano does limit space on the breadboard for additional circuitry. One way around this is to solder some female headers on top of the Arduino Nano, similar to how the Uno is designed however this only really works when there’s a few connections or you can design a circuit to fit on top of the Nano. Due to its size and weight it will likely get pulled and thrown about once you connect enough wires to it.
Regarding convenience, the Arduino Uno was designed with add-ons in mind, as such there are many boards called shields which plug into the Uno to provide additional functionality such as providing extra power for driving motors or large numbers of LEDs. There doesn’t appear to be such an infrastructure to support the Nano or similar sized boards (there are some exceptions but not in the scope of this article).
Another point to consider is power. Both Arduinos can be powered from either 5V USB or 7-12V, however the Uno has a 2.1mm barrel jack which makes using 12V power supplies like those used for hard drives possible. The Nano meanwhile only has a USB connector, leaving 7-12V to the realm of battery power or additional circuitry to provide your own barrel jack (or if you’re feeling especially brave to could connect bare wires from a 12V DC adapter). This will likely reduce any space savings you get from the Nano.
One point to talk about when considering convenience is programming the boards. Most 3rd party Arduino Unos come with FTDI chips which are officially supported by the default Arduino IDE (programming application), however these chips are quite expensive and it would seem that most 3rd party Nanos opt for a cheaper chip, usually the CH340. This requires the downloading of additional drivers before you’ll be able to use your board. It’s not a big deal but it does provide a slight barrier to entry.
One final point to talk about when considering convenience is that the Arduino Nano actually provides slightly more digital and analog pins which makes it better for slightly more complex applications.
Safety
This isn’t so much personal safety but more about safety for the microcontroller boards and their peripherals. In my experience, it is a lot easier to damage an Arduino Nano through even temporary shorts and it makes sense that you’re trading size and the extra pins for a reduced level of circuit protection. For example in my recent spooky skull project I received 2 DFPlayer boards, one of which was damaged, causing a short somewhere that wasn’t apparent when simply looking. When plugged into the Arduino Uno this just caused the Uno’s polyfuse to trip, essentially safely disabling the board. When plugged into the Nano however the ATMega got very hot and very quickly started smoking. I quickly yanked out the power and disconnected the DFPlayer and was able to salvage the Nano for a while but it eventually died, about 2 weeks later, right when I needed to demo the project. You might ask why I connected it if it wasn’t working on the Uno? At the time I thought it was the Uno that was at fault, not the DFPlayer. That said I’ve definitely managed to do the same to a Nano that was 100% user error when I managed to short the board while power was applied. By contrast I don’t think I’ve managed to destroy an Uno thanks to the additional circuitry.
Another point to consider is that the layout of the board offers some protection on the Uno. The pins are on the edge of a much larger board, allowing for clearer labelling. Another point to consider is that to make shields safer to use, the Uno is laid out in a slightly non-symmetrical design. This means that the pins are laid out in groups, slightly reducing the likelihood of an incorrect connection.
Conclusion
I would say that if you can, you should almost always design your project on an Arduino Uno and once you’re happy that its stable and need to save space, shrink it down to the Nano. This allows you to benefit from the extra circuit protection of the Uno and the safety that the layout of the board physically provides while tinkering. This may prove impractical however if you really need the extra IO pins. You might think that being so much cheaper it might be worth skipping the Uno and just live with blown Nanos if you mess something up but I would argue this will end up being a false economy, better to try and keep them for future projects and occasional whoopsies than to rely on their cost to save you from faults.
As I hinted above there are some similar sized boards to the Nano that do have an add-on board infrastructure but those are beyond the scope of this article and I don’t have any experience with them but if you’re interested have a look at the Adafruit Feather line of boards. There are also a lot more Arduino-compatible boards out there than just the Uno and Nano, some as big as or bigger than the Uno and some comparable in size to the Nano or even smaller but again I focused on these two boards because I have experience with them and because they are so functionally similar.
I hope you found this board comparison interesting and now have a clearer idea as to which to choose for your project. Let me know in the Discord or Twitter if you’d like more articles like this. If you’d like to support continued content you might consider visiting the links below for some Arduino purchases. These are affiliate links and any purchase you make will provide a small fee support to this blog.
Don’t like context and pre-amble? Go to The Build. Be warned, this is a rather long post.
Distant History
Back in 2016 I’d just got to grips with using my 3D printer. It was still giving me a lot of grief but I was getting used to the niggles and workarounds needed to keep it printing. While we haven’t had much of a trick-or-treat culture around our neighbourhood for several years, I had a hankering for a fun Halloween decoration and decided I’d try to 3D print a laughing skull. I went looking for an open licensed skull that I’d be able to modify to take a motor and hollow out to fit some electronics. To my delight and disappointment I found a model on Thingiverse by user death_metal that already had these modifications. Delight because I wouldn’t have to spend ages cleaning up a model to add cut-outs for hardware, disappointment because that seemed like the biggest part of the project. The skull is licensed under Creative Commons Attribution Share Alike.
I set about chopping the top of the skull off and created a cavity inside the top. This was one part hoping I could fit a board in there and one part hoping it would help with the print as I could flip the skull upside down and reduce the number of visible/external overhangs, minimising the need for supports and ultimately saving some print time. I then cut the biggest cavity I could out of the inside of the skull. Again, this was in the hopes of minimising print time.
The final modification I made was to flatten the bottom of the jaw a little to make printing easier.
Original Electronics
When it came to electronics I wanted the cheapest hardware I could find. At the time I couldn’t find an audio device for the Arduino for much less than the cost of a Raspberry Pi so I decided to use one of my Raspberry Pis for the audio. This caused its own problems as the Raspberry Pi isn’t 5V safe and the Arduino produces 5V signals. My first solution was to use I2C with the Arduino in slave mode so that everything would be safe but I ended up having reliability issues. My second attempt was to use a voltage divider as a make-shift level shifter. This allowed me to do all the sensor/motor work on the Arduino and send a simple signal to the Raspberry Pi at a safe level which would trigger the Pi to play the audio file. This worked but I was never really happy with it. I happened to have a large 10000mAh portable charger with two USB ports that was ideal for powering both the Pi and the Arduino.
Finishing
I didn’t have any more time to print more parts such as the neck or a base to house the electronics, speaker, sensor and battery. I settled on using a medium sized Amazon box with the skull precariously perched on top. I cut a hole through the side and taped the PIR motion sensor inside. This worked surprisingly well, the skull is balanced enough that it would launch forward on the box without falling off (most of the time). The final addition was going to be to drape some thin cloth over the box to give a kind of psychic medium vibe whilst disguising the shabby box, an addition I never got round to trying. You can see the final result in the video below.
Overall the project came out OK but the skull was smaller than I had anticipated and none of the electronics fit in the skull. I had measured to make sure the parts would fit but between the close fit and the number of wires it proved impractical to try and squeeze the electronics in the head.
The Second Attempt
Cut to 2018 and I wanted to take a second stab at it, this time not using a Raspberry Pi for the audio interface and preferably without having to print a new skull. I looked to see how much an audio board for the Arduino is now and was pleasantly surprised to discover that DFRobot have made a board called the DFPlayer Mini which is relatively inexpensive, you can get 2 for about £10 or 1 for about £2 if you’re willing to wait for it to ship from China. This is a big improvement over the £25+ required for other MP3 audio devices out there.
An alternative I had considered was to use an Arduino Nano and a Raspberry Pi Zero but unlike its larger siblings the Zero lacks a convenient audio output for a speaker. According to this Adafruit article it may be doable but it was more work than I was willing to put into this project a second time round.
I tested the DFPlayer on an Arduino Uno and it worked fine with no interference even when the servo was moving. Moving this to the Arduino Nano proved very difficul as the DFPlayer would lock up 90% of the time, sometimes taking the servo with it. I spent a lot of time tweaking with different pins, libraries and resistors until I came up with a solution thanks to some relatively obscure forum posts.
I posted a Youtube video documenting the circuits for both the 2016 build and the current 2018 build.
The image below is for the Nano version of the circuit however as the Arduino Nano is virtually identical in functionality to the Uno you can easily substitute an Uno, just look for the correct pin labels on the Uno and match them to the diagram.
The Build
This project is still somewhat a work-in-progress mainly because never worked out a good way of mounting the skull securely to a box that houses the electronics. The modifications I made to hollow out the skull for speed of printing and electronics installation have made it a little front heavy.
This build isn’t especially hard but it does assume some basic knowledge of both 3D printing and electronics. I’ve tried to make this guide as beginner friendly as possible but some small steps may be missing for readability.
You can get the STL files, code and laugh track at the Github repository.
Printing The Skull
These files are slight modifications from the version I printed in 2016. I haven’t tested them but the changes are minor and everything should work fine. In the original 2016 version I used pegs and sockets to hold the top of the skull together. I didn’t want to use screws as I felt they’d harm the scare factor. This ended with all the pegs breaking very quickly. Luckily the back of the skull was a tight enough fit that it sits snugly when fitted in place. The top of the skull however required gluing to keep in place which somewhat limited its use. As a result the new designs use small neodymium magnets to hold the pieces together. There are 4 slots in the top of the skull and 4 matching slots in the main body of the skull. You will most likely need to glue the magnets in the main body to prevent them being pulled loose but with gravity working in their favour this should be enough to keep them seated.
I personally went with chocolate brown as I felt it looked the most like a dirty old, gooey skull without needing to add detail with paint.
Files To Print
Skull Main – Print it upside down so that the teeth are at the top of the print. This reduces the need for support material though you may want to print with supports if you have trouble with the inside of the cavity collapsing. Mine drooped a little but as it’s an internal surface it’s not really a problem.
Skull Top – There are several versions of this. Print with a small amount of support material. The finish underneath doesn’t matter too much. When I originally printed this part I printed it upside down to minimize supports but this required too much clean up. With the magnet holders this also becomes a little impractical.
If you would like to try housing the speaker in the skull, print the one with the small speaker grill holes in the top.
If you are confident gluing the magnets without demagnetising them consider printing the version with the holes underneath as this should be easier to assemble.
SkullOnePiece – If you’d rather not bother with the split skull you can print the one piece which retains the cavity for the electronics but loses the separate skull top. For quality it would be best to print this right side up (teeth on the bed) but for speed and to minimize supports it would be best to print this upside down.
Skull Back – Somewhat optional. If you’re going to have the skull against a wall you might be better off leaving it off as you won’t see it and wiring will be easier without it. Having said that it may help balance the skull when it’s mounted on the
Jaw
Base Top – Optional. This attaches to the base and allows the skull to sit nicely on it.
Base – Optional. Use this to attach the skull to a sturdy box, preferably one with a removable lid. If you find the base warps, try printing it 30-45 degrees on the bed as this should prevent the legs being in the same orientation as the filament.
Printable M8 washer – Optional if you have real washers lying around.
All files were printed at 0.3 layer height with minimal supports and 2 walls.
Things You’ll Need
A note on links. Some links provide more units than you’ll require for this build but this usually results in lower prices per unit and gives you a safety buffer in case of failures. The links below contain affiliate links, these help further developments on this site and it is appreciated but not required for you to use them.
HC-SR501 PIR sensor – You can get individual units but they’re cheaper and more readily available in multiples and I’m sure you’ll add more to other projects in the future
IN4001 Diode – Optional but can help with some DFPlayer issues any diode that can drop the voltage from 5V to about 4.5V should be OK.
2 x Red (or blue) 3V LEDs – Again you don’t need anywhere near this many but if you’re an existing electronics hobbyist you’ll most likely have some or if you’re getting started and looking to have a life-long hobby you’ll probably get through these in no time
Mini Breadboard – If you’re good with soldering you could get away with a medium sized perfboard for a more permanent setup.
Acrylic breadboard mount – This is optional but helps keep the Arduino Uno and breadboard close together. It can then be glued into the box to stop them moving around. These often come with a 3rd party Arduino so check the listing if you choose to buy one. You could also try printing your own custom mount for the hardware you use.
A locking food storage box or old Amazon/similar cardboard box.
Some fabric sheet to cover the box. I’d recommend something purple or red to give it a bit of a magician’s skull vibe.
About 7-10 hours of print time
About 90 grams of chocolate brown filament (or white filament with brown/beige paint)
Wiring
The wiring for this project is pretty simple. The DFPlayer communicates using just 4 wires. The LEDs use just two digital or PWM pins for their signals and another two for ground. The PIR motion sensor uses 3 wires. The servo communicates via 3 wires, two for power and one for signal.
If using the portable mini speaker you’ll need to wire up a 3.5mm stereo jack connector. Solder a black wire to the middle terminal (it may be labelled 1). This is ground. Solder a red or yellow wire to either of the other 2 terminals. This will be your signal wire. I don’t think it should matter which but I chose the left terminal, labelled as 3 on my connector. I found it best to plug this into the speaker outputs of the DFPlayer, not the DAC connections.
Code
You can get the Arduino Sketch from the Github repository. Everything should be fairly well documented but be sure to leave a comment on the Discord or Twitter if there’s anything you don’t understand. The basic idea is that the sketch tries to connect to the DFPlayer. Once everything is initialised the loop will run. It will read the signal from the PIR sensor and if it has just been triggered high it will begin the laugh animation. The animation consists of reattaching the motor, sending a signal to the LEDs to turn on, sending a signal to the DFPlayer to play the provided laughing track then moving the servo to open and close the jaw in time with the audio. Once the animation finishes the LEDs will slowly fade out.
Choice of Box
The removable lid of a food storage container should make it easier to run wires and mount the skull. You’ll need to measure the electronics, battery (and speaker) to find the right size food storage box for your needs. I would imagine a 1 litre box should provide enough room.
Post Production
Clean Up
You will probably require a little bit of clean up on the prints, removing supports and pulling of strings on smaller parts like the teeth and septum. You might also need to do a little sanding around the jaw spokes.
Painting
If you printed in white now would be the time to really dirt up the skull, have a look at some references of old skulls, add yellow and brown paint where appropriate.
If you printed in brown you may still want to add some paint details, lighting a few places or maybe adding some dark red where you think left over muscle and fibre would be. Again, have a look at some reference photos of zombie skulls.
Wiring and Installing the LEDs
My initial attempt was a bit hacky, I used some female jumper wires and plugged them into the ends of the LEDs. I then glued both the wire housings to the LEDs and the LEDs to the skull. This worked but I’ve been nervous about shorts ever since so the way you’re going to do this is hopefully much safer.
Cut two long lengths of wire, one red and one black and strip both ends of each wire. Solder the red wire close to the bulb of the LED on the longer lead, if you have multicore wire you might find it easier to wrap the exposed end of the wire around the lead a couple of times. This is the positive terminal. Now cut any excess off the long lead. Repeat this step for the shorter lead with the black wire. Now test the LED still works by plugging the red end into the resistor and the black end to ground. If it’s working wrap the leads with some electrical tape or heat shrink tubing so that the metal of the leads and wire are covered. Place a small amount of super glue on the bulb and carefully place the LED into one of the eye sockets inside the skull, hold it until it’s set. Alternatively if you’d prefer not to use super glue you can try using some hot glue but this will likely be more messy and you risk getting glue between the LED and the skull. Repeat the above steps for the second LED.
Assembling The Jaw
Attach a single arm horn to the servo motor and slot this into the receptacle in the jaw.
It’s worth getting an M8/M10 washer (or two) to put over the motor-side spoke of the jaw as the fit can be a little loose and this can cause issues with the motor. The washer will push the jaw closed, keeping the horn attached firmly to the motor. You can try screwing the horn into the motor before hand but it might make fitting the motor and jaw more difficult. You may find that you need to add some glue to hold the horn in place especially if you only have a tapered horn like I did.
The jaw should be flexible enough to (gently) squeeze into the main body of the skull. It is best to try and slot the motor into its socket as you do this. It can be fiddly but can be done.
Run the wire for the servo up through the large slot under the skull and out the back of the cavity.
Assembling the Base
If you printed the optional base, cut out a hole in the top of your box wide enough to fit the base cylinder. Slot the base through the bottom of your box lid. At this point you could either hot glue the base to the box lid. If you’d rather attach it with screws, mark the 4 screw holes. Drill the holes for the screws. Screw the base into the box lid. grab a M3x30mm screw (shorter might be OK). Place the screw through the top of the base top and tighten it into the column of the base. You may need to ream out the holes just a little bit to get the screw to fit but don’t go too far or the screw won’t have any plastic to hold on to. If you find this is the case, try adding a little bit of super glue into the hole and let it set before trying to tighten the screws again. The base should now fit snugly below the servo
Fitting The Speaker
This part is optional. If you’d like to mount the non-amplified speaker inside the head now is the time to do so. Glue the speaker to the top of the main skull print using some hot glue.
Feed the wire either through the large hole at the front if you’ve managed to get the electronics in the hollow or through the small wire to the rear of the skull if you plan to house the electronics in a box.
Assembling the Skull
You can skip this step if you printed the one piece skull.
If you don’t plan to use the top cavity for anything you may want to just glue the top of the skull to the main body of the skull. I split the skull here mainly so I could print the skull upside down for stability though I originally had hoped to be able to fit some electronics in there. However if you’d like to be able to remove the top you can perform the following.
Fitting the magnets may be a little fiddly as you need to reach over the lip of the holder in the top of the skull while making sure they retain the same polarity as the ones in the main skull. The magnets in the skull top shouldn’t need gluing in place though you can try if you feel like you’ll be manhandling the skull a lot or if the magnets are loose in the socket. You may find it helpful to take a few spare magnets and line them up from underneath to help seat the magnet in its socket. Repeat this step for the magnets in the main skull but this time add a little glue to make sure they’re not pulled loose when you remove the top of the skull.
Final Steps
Cut a hole about the size of the PIR sensor dome in the side of the box. Push the PIR through the hole and tape it to the inside of the box.
If you printed one, cut a hole for the long stalk of the 3D printed base. Push it up through the hole. You could use some hot glue to stick the base in place under the lid or drill some holes for screws. If using screws feed them through the box lid and finish with a nut on each screw to hold the base in place. Finally take the 3D printed base top and screw it into the stalk of the main base, tighten until both parts are flush and level.
Cut a large hole in the lid of the box or cut a groove in the side of the box from the top down to run wires through. The hole in the side will make it easier to remove wires and adjust things but drilling a single hole in the top will be quicker and easier, it’s up to you. If you’re good with a saw you may want to consider removing most of the rear side of the box as this will allow easier access without having to fiddle with the lid.
Take your assembled breadboard and Arduino and place them in the box alongside the battery pack. If you want you can remove the backing from the breadboard and stick it to the box. If you have them you can use some nylon screws and nuts to mount the Arduino in the box. You may also want to strap the battery to the box with some velcro to stop it knocking into the electronics. Finally connect any remaining wires into the breadboard such as the eye LEDs, servo motor and PIR sensor.
Now that your electronics are all wired in the last thing to do is cut a hole in some fabric and drape it over your base. This just hides the mess of wires and blinking lights from the electronics. You may want to add some additional spooky decorations to distract from the boxy shape.
Finally place your skull on the edge of the box and it’s ready to go! Just make sure it’s steady enough not to fall off. If you’re using the 3D printed base you should place the skull on the top. If you find it a little loose you might want to add some hot glue between the base and the skull. Try to avoid gluing the servo. This will make the installation fairly permanent but if you need to make modifications it should be possible to peel apart.
Future Improvements
I’d quite like to print a life-sized skull but this would take quite a bit of engineering. The average human skull is just a little bigger than my printer’s maximum build volume and even scaled down to fit would result in print times longer than I’m usually comfortable with. Another big issue with this is resizing the head without resizing the motor housing but also being able to move the housing closer to the jaw.
There is still room for additional features regarding the software. One feature I would have liked to have added is a potentiometer for laugh delay. If the room is going to be busy, frequently visited by people unaware of the skull (like trick-or-treaters on your porch) you could turn the delay right down but if you’re going to be in a room with a fairly static population then a longer delay would be better as it will catch out newcomers and those with short memories without triggering so often that people end up hating you.
I also thought it would be nice if the skull could play some ominous spooky music during long periods where it’s not laughing however I found that the unamplified speaker wasn’t capable of producing the bass tones associated with such music. Since first writing this post I have managed to get the amplified speaker working with the DFPlayer board however it’s not quite right yet so I’ve left this as a possible improvement.
There’s even room for a second potentiometer to control the volume but this is only really necessary if you don’t use a powered speaker.
I’m still working out the best way to keep the skull hollow but improve its balance for mounting. I suspect keeping the back of the skull attached should help with this as it should move the centre of gravity further back and down though this is currently untested.
If this project proves popular I may design an Arduino shield for the DFPlayer and servo/PIR connections or a general PCB for mounting a Nano and all the hardware in one place. Let me know what you think.