A few months ago I came across Arduboy which according to its official website is a miniature 8-bit game platform that makes it easy to learn, share and play games online. It is an open source platform. The games for the Arduboy are made by the users. Arduboy is based around ATmega32u4 which is the same microcontroller used in Arduino Pro Micro. Although I am not yet capable of making games, I decided to make build the hardware part of it on a breadboard. And yes, it worked! Thanks to MrBlinky for creating Homemade Arduboy Package. The hard work was already done.
I had a lot of fun playing some retro games on it. But the breadboard is a bit clumsy with wires running all over. I always wanted to try PCB designing and get it fabricated professionally. So, this is the right time to do it. Also, this is a perfect project as we have to concentrate on PCB design only. In this tutorials, we will make our own version of Arduboy, from circuit diagram to the circuit board!
Let's get started!
1x Arduino Pro Micro (5V)
1x OLED Display (SPI)
6x Tactile Push Button
1x Piezo Speaker
1x Common Anode RGB LED
Gather all the required components and start connecting them on the breadboard as shown in the circuit diagram.
The connections are as follows:
UP - A0
DOWN - A3
RIGHT - A1
LEFT - A2
A - D7
B - D8
SCL - D15
SDA - D16
DC - D4
RES - D2
SPEAKER + - D5
SPEAKER - - D6
RED - D10
GREEN - D3
BLUE - D9
There are few steps to be followed before you can upload any games on the Arduino.
- Open Arduino IDE > File > Preferences
- Copy and paste the URL below in Additional Boards Manager URL text box and click on OK.
- Go to Tools > Boards > Boards Manager.
- In text box type homemade or Arduboy homemade.
- Select Arduboy Homemade package and click Install.
After installing the library, go to Tools menu and make the selection as follows:
- Board: Homemade Arduboy
- Bootloader: Cathy3K
- Based on: SparkFun Pro Micro 5V - Alternate Wiring
- Core: Arduboy optimized core
- Display: SSD1306
Choose and download your favorite game from here.
Open up the.ino file and hit upload.
When everything is working right, we can start with the PCB designing process. I chose EasyEDA for designing as it makes things easy for beginners like me. I wanted it to be portable so I decided to run it on a LiPo battery which means that charging and boost circuit will be required. I decided to build the boost circuit myself using MT3608 but also made a provision to connect a readily available MT3608 module (which is what I ended up using) in case my version fails. I have attached all the files in case you wish to use my PCB design.
First, start by making a circuit diagram. Make sure that everything is labeled properly and the circuit diagram is neat and clean. This makes diagnosing problems easier later on. While choosing components, the footprint of the component and make sure it matches with the component you have.
Once you have checked all the connections, click on the Convert to PCB option. This will open up a new window wherein you can find all the footprints of the components ready to be placed and connected.
The first thing you have to do is to define your board outline. Place your components roughly and in a logical manner to get a rough idea of the shape and size of the board. Select BoardOutline from the Layers menu and start drawing using the Track tool from PCB Tools menu.
Now, finalize the position of components. You might have noticed the lines coming out of the pads. Those are called Ratlines and they help us to get an idea of how the components are connected to each other so that laying out the traces becomes easy.
Once you are happy with the component placement, you can now start connecting them with traces. The width of the trace is determined by the current it has to carry. A PCB Trace Width Calculator comes in handy. I went with 0.254mm for signals and 0.6mm for power stuff. Select TopLayer (or BottomLayer) from the Layers menu and start drawing using the Track tool. While tracing a situation may arise where there is no space to complete the trace. In such a case, you can jump to the other layer and continue the connection. The connection between the traces of the two layers is done with the help if Vias. In the middle of making a trace, hit V. The trace will end and you can now place a via. Then, select the other layer from Layer menu and continue the trace starting from the via. Do all the connections except Ground.
Now select Copper Area tool from PCB Tools menu and draw around the board. Make sure GND is selected in the net text box. This will create a ground plane and the remaining ground connections will be made automatically to it.
Check, check and check! Make sure you didn't miss anything out. Once you are completely sure, click on Generate Fabrication File to download the Gerber files which can then be sent to a fabrication service of your choice.
Note: As mentioned earlier, I have made a boost circuit using MT3608 which works perfectly until a load is connected. The output voltage drops significantly. I was aware of this problem as the datasheet of MT3608 clearly specifies how the components should be arranged and the trace width. And as a beginner, I was pretty sure that mistake will happen. It would be helpful if someone explains me the cause and the solution of the problem.
I ordered the PCBs from JLCPCB and all the required components from LCSC. This saves on shipping cost as both the orders are shipped together. Keep your circuit diagram ready and start soldering the components as per the silkscreen marking. While soldering SMD components, make sure you use a lot of flux as it makes soldering tiny pins a lot easier. It was my first time soldering SMD components and the soldering job looks pretty good.
Clean the PCB after soldering with Iso Propyl Alcohol to remove the flux residue.
Choosing a LiPo Battery:
I used a 380mAh battery which I had laying around. With current drawn between 50mA and 100mA, it should last for approximately 3-4 hours.
Plug in a LiPo battery, upload your favorite game as before and enjoy!
Thank you for sticking till the end. Hope you all love this project and learned something new today. Let me know if you make one for yourself. Subscribe to my YouTube channel for more upcoming projects. Thank you once again!