(WIP) Homemade Arduboy!

For some time I’ve been looking to make my own Arduboy, since any previous DIY ones I had broke or the parts couldn’t be replaced easily, I made my own!


I used a 5x7cm proto-board, 6x push buttons, and some detachable headers to make it. The reason it’s a WIP is because I have to wait for my new Pro Micro to see if it actually works (Wish me luck!).

I am definitely planning on making my own PCB design so it’s thinner and less painful to solder everything.


I’ve just finished and ordered version 2 of the PCB design. It includes a TP4056, MT3608 and a 3.7V battery. Here is some images (Front and Back):

(The only questionable thing is connecting the GND for CS and -VOUT but it should be fine)
(I tested it on a breadboard and it works fine :+1: )


We have a slight issue :P:

Due to my inexperience with PCB design I didn’t consider that this would happen (I have to place the screen upside down to work because the wiring is reversed and is technically intended to be placed on the other side, I’ve fixed this in the new Gerber file now)

So a bit of a setback, and I’ll have to make do for now and order some new ones (I think even Version 1 will have this issue)

:trumpet: :trumpet: We have Version 3 now!

It finally arrived with some slight delays:

Note: The battery receives 4.2v instead of it’s required 3.7v but it seems to be fine and most batteries have a protection circuit, it’d be nice though to drop it a bit which should be doable


Good work.
Just as I am laying out design on my custom PCB for my own DIY Arduboy, I realize that most components are soldered (for simplicity), and the display, which gets a connector, is rather flimsily attached. (so I can swap around a display with female headers, and if that one broke, I can solder on a new display or get a new “display hat”)
But you also must realize that the Arduboy itself is not serviceable – you may be able to change the battery, but that’s about it. chips require hot air workstation to replace and the display is glued.
The good news, however, is that components aren’t expensive so you can always build new ones. Although, it may be worth it to buy quality parts (e.g. tactile switches from known manufacturers like Panasonic and Alps that last longer and don’t bounce)

I actually just finished making and ordering some PCBs for an Arduboy. I made them myself on EasyEDA and should expect them in about 10-20 days, so I’ll definitely post about it.

Probably why the back plate is metal, the components are expected to last long with little to no issues. But there’s always that small incident that breaks them so that’d be unfortunate.

As of the past few years, components have gotten more expensive or completely out of stock because of Covid unfortunately. My SSD1306 was expensive and took ages to arrive.

That would be a good idea, I’ll most likely design and 3D print a case for my own one to keep it protected and looking nice. Another option is to laser cut a clear acrylic case. It would look really nice and be a bit stiffer/sturdier than PLA.

The case (and buttons and stuff) is modular, which is good.
I’m saying that how all the electric components are basically soldered and is next to impossible to remove (beside the metal domes which are taped)

Of course the “price is inexpensive” is based on the fact that there are no disturbances like the covid or other material shortages/financial disrupts.

It’s not really about the case as it’s going to get probably smashed up as time goes on. So building one from PLA and seeing it getting slowly smashed up and print a new one won’t affect the lifespan, and you can live without a case anyway.

Whereas if you use cheap buttons that, say, only last 10K presses instead of 200K presses (or the more fancy 500K ones or 1M ones), you can only use the board for like, 20 hours before the buttons go bust and you have to change the buttons (which is difficult to de-solder and you might need to get a new board).
If your design feature buttons that don’t wear (like the rubber domes) or buttons that can be swapped (like some kind of socket. external maybe), that will be quite a sight.
Because the board is where the majority of cost (and exciting bits) happen, so you want that “core piece” to be sturdy especially since you can’t easily swap out parts like, say, buttons.

It would be preferred to prevent any electric static discharge, and to prevent damage anything.

If you have access to a soldering iron, some solder wick to remove it should do the trick (At least on my design which uses pads).

As of recently I actually just finished Version 2 of my design, it includes a TP4056, MT3608, and a 3.7V battery. I also added a switch. They’ve been ordered, so they should arrive either with the others or a day or 2 after.

Does the 32u4 or the SSD1306 OLED tend to have issues with ESD? I’ve fried some chips before with static, but never had this happen with an arduino, and definitely didn’t have it happen with some of the very exposed DIY arduboys I’ve made. Doesn’t mean it’s not possible or likely though, I just haven’t had it happen to me yet.

I’m not really sure, but it’s better to be safe than sorry. I’ve accidentally fried 2 pins before on a pro micro, whether that was ESD or not I have no clue. Plus external damage (Especially in my case where I’ll have it in a pencil case) would be a bigger problem, hence why I’ll be designing a case for it.


New updates on my Homemade Arduboy!

1 Like

If you’re willing to put up with using a modified version of Arduboy2, you should be able to solve that by just adding the ‘invert display’ ‘flip vertical’ screen command (0xC0) into the screen boot sequence. (Probably at the end would be best.)

You’d also probably want to reverse the behaviour of Arduboy2Core::flipVertical as a precaution, though I doubt many games use it.

I added both the Invert and 0xA0 (#define OLED_HORIZ_FLIPPED). It seems the cutting in and out issue is partially fix (Unsure for now but I’ll keep an eye out for it).

I finished and ordered Mk3 of the design now, once they arrive and I can ensure they work properly I’ll be uploading the Gerber file! (Do note there will be my logo and username - though fairly small - on the back of the PCB just because I don’t want people claiming my PCB design as their own).

I am also planning on making a post for it on Hackster.io or Instructables for anyone to access!

1 Like

Ah, yes. I forgot you’ll need both since the screen is technically rotated 180 rather than just being flipped.

(A symptom that I’ve been spending too long in the virtual world rather than reality. :P)

A little update!

  • Version 3 of my PCB should be arriving in about 5-10 days (Then I can procrastinate for a while to make a game)
  • I’ve been looking at the FX chip and how to add it to a 4th version. I’m looking to make a minimised version that includes almost everything I like personally (flat design, FX chip, and some other small things)
  • After I’m mostly done I’ll be releasing all the files (Though I’ll make separate posts and repositories for version 3 & 4)

I’d also add a reset button some games back in the day required it to reflash though that may be fixed by now

It’s not exactly something that can be fixed, you’ve gotta reset for those games because they overwrite the bootloader iirc. So there’s no protocol for automatic reset, which is why there’s a timing element to resetting while uploading; you’re doing the process manually.

Overwriting the bootloader is a different, more serious issue. You can’t solve that without reburning the bootloader. It happened on some older Arduboys because the bootloader protection pins weren’t set properly in the factory. As far as I’m aware, all batches since that batch have had the pins set properly.

The tempermental flashing behaviour is likely due to RAM related to the USB stack and/or serial communication being unintentionally overwritten by the program.

The reason so-called ‘flashlight’ mode prevents the issue is because it puts the processor into an infinite loop before arduboy.begin() exits, so whatever code would have upset the USB/serial isn’t run.

From what I remember, I think the Arduboy FX bootloader has some features built in to help mitigate the issue, but I don’t remember what they are.

1 Like

Arduboy FX uses the Cathy3K bootloader that always starts with the menu (which is the bootloader) and the bootloader does not suffer from the magic key issue so a ‘soft’ reset will always enter bootloader.

Version 4 will have a reset button, but version 3 can be triggered with a turn off and back on sequence since it can only store 1 game.

Though I still have to look through and make sure my schematics are correct for version 4.

1 Like