Help with homemade arduboy schematic

Hi, I wanted to create my own Arduboy so I started off by making the schematic and now, before laying out the pcb, I would like to make sure that I’ve wired everything correctly and that it is going to work.
Here’s the schematic:

And here’s the project on Easy EDA
and I also have some questions:

  1. Will I be able to use the normal Arduboy library(not the homemade one) with this “setup”?
  2. Is this oscillator ok?
  3. What type of buttons should I use? Right now I’m using the SKPM ones but I’ve read that they get off the pcb pretty easily and sometimes the press doesn’t get detected
  4. Is the LDO going to provide enough current? If I remember correctly it should output a maximum of 300mA
  5. The SPI oled display module I’m going to use has a 3.3v regulator on it, is it going to cause any problems(except the waste of enery maybe)?

Things I should probably mention:

  1. The BMS is based on the TP4056, you can find the on amazon pretty cheaply
  2. I’m going to use a 2100mAh battery from an old samsung phone of mine
  3. The USBAsp programmer I’m going to use to burn the bootloader has a 3.3v mode so I don’t have to worry about burning the flash chip
  4. About the flash chip, I couldn’t find the one that Mr. Blinky used but it should has the same specs

You’re going to need dropping resistors on all the RGB LEDs, not just on red.

I haven’t checked every pin. If you’ve followed the “Arduboy Leonardo/Micro” pinout specified on @Mr.Blinky’s homemade package documentation, then the “normal” Arduboy libraries should work.

I think so.

It should be fine. Your circuit should draw less than 80mA even with all display pixels and all LEDs lit.

It should be OK, but if you have the skills you could remove the regulator and short the input pin to the output pin.

The JV series part that you’re using is a fully compatible replacement for the older FV series.

1 Like

From the datasheet it says that the typ(ical?) voltage for the green and blue leds is is 3.2v and the maximum is 3.6v so they’re in the safe range, maybe they’re going to be brighter than the red led

That’s not how a LED works. They are current driven devices, not voltage driven. A LED will drop a specific voltage across it no matter how much current you feed it (voltage will rise only very slightly with increased current).

The 3.2V typ to 3.6V max is the range of what the specific value for any particular LED, from a number of parts, will be, not the safe voltage range that you can apply to it. That is to say, if you grab a LED from a batch of 100 of the same part number, it would likely have a specific voltage drop somewhere close to the typical 3.2V but could be as high as 3.6V

If the one you grab ends up with a drop of 3.2V (or even lower, since that’s only typical), and you try to force it to 3.3V, it will draw heavy current and possibly burn out. And likewise, if it happens to end up having a 3.6V drop and you feed it 3.3V, it may not even turn on.

Note that, contrary to the above tutorial, for your application you probably don’t want to use the current value specified in the datasheet. The LED will likely end up being too bright. Even calculating for only 2mA will probably make the LED bright enough for your needs.

It’s a good idea to experiment with the dropping resistor value for each of the three RGB LEDs, so you get the desired brightness from each. A green LED may not appear to be the same brightness as a blue or red LED with both running at the same current. It has to do with the eyes perception of brightness for different colours and the efficiency of the LED for each colour. The Arduboy’s use of the same resistor value for all three LEDs is not ideal.

Looking at the forward current vs. forward voltage graphs in the datasheet, I would calculate for voltage drops of 1.65V red, 2.5V blue, 2.5V green, as a start. 2mA for current is a good starting point but even that may be too bright.


I’ve chosen a new rgb led(datasheet) that has a maximum Vf of 3.1v for blue and green instead of the old one whose Vf was 3.6v, so there shouldn’t be any low-voltage problem. Looking at the new led’s datasheet, I was thinking of calculating the resistor value for a voltage drop of 2.1v for red and 2.9 for blue and green, at a current of 10mA. Looking at the Relative Luminous lntensity vs.Forward Current graph they should be at 1/3 of they full brightness, right? I’ve never look at this stuff so I could be completely wrong though

Are you aware that they are different physical sizes? The original is 3mm x 2.5mm. The new one is smaller at 1.6mm x 1.6mm. (The new one is the size that the Arduboy uses.)


Your comparison is not valid. For your original LED the forward voltage (VF) is specified at a current of 20mA. For the new LED the VF is specified at only 5mA. If you go by the Forward Current vs. Forward Voltage graphs, your original LED actually has lower VF at the currents you will be using.

From the graphs, I get:

Current Old R New R Old G/B New G/B
5mA 1.70V 2.00V 2.62V 2.90V
10mA 1.82V 2.20V 2.75V 3.10V

I think you’ll find them to be too bright at 10mA (unless you really want “flashlight” mode to be a good flashlight/torch). With the Arduboy, with the battery at 3.8V, the red runs at about 7.5mA. The green and blue run at about 3.5mA. Many people have complained that the RGB LED on the Arduboy is too bright.

You’ll also likely find that the blue LED will need more current than the red and green to appear to be the same brightness. The green may need a lower current than blue and red because it has a much higher luminous intensity at a given current than the others.


Is this really that important? When and how much is the RGB led used in an Arduboy?

That would be up to you. It’s not used much but when it is used, you wouldn’t want it to blind you or distract you from viewing the OLED display. On the other hand, you wouldn’t want them so dim that they can’t be seen under brighter ambient lighting conditions.

Anyway, as long as you have dropping resistors for all the LEDs, the values specified on the schematic aren’t too important. You can always switch to different values as desired.

Ok, I checked a green led on my arduino pro micro and it should be running at 2mA, and its brightness looks ok to me. On the rgb led datasheet the Forward Current vs.Forward Voltage graph only starts at 5mA, how do I find the Vf at 2mA? Does that mean that the led only work with a If of >5mA?

Just look at the shape of the curve and imagine (extrapolate) where it would be at 2mA. The curves show only typical values, so you’ll get some variance between parts anyway.

From that datasheet, for 2mA I would put it at about 1.95V for red and 2.70V for green and blue.

No. An LED will start emitting light with only a very small current.

1 Like

Ok, thank you very much for your help! I think I will also integrate the bms in the pcb itself because otherwise the status leds for the battery wouldn’t be visible

You’ll probably want to lower the currents (increase the resistor values) for the power, TX and RX LEDs, as well.

Yes, I’ve chosen new resistors for them too

1 Like

Ok so I’ve implemented the bms, could you give it a look please? If this link doesn’t work try this one

The “Battery Protection Circuit” section is not wired correctly. Fix that and then I’ll look at the charging circuit.

Fuse FUSE1 should be moved to be between the USB connector pin 1 and everything that it powers.

S1 should be connected to B- instead of ground and D1 and D2 shouldn’t be connected because they’re already connected together in the IC?

No, it doesn’t hurt to connect D1 and D2 externally. It’s actually better to connect them to lower the resistance between D1 and D2.

Follow the DW01 datasheet for the rest.

I think I’ve fixed everything now, I’ve also increased the fuse rating to 1.25A since the tp4056 will charge the battery at 1A

The protection and charge circuits look OK now.

I don’t know what OUT_B+ is on pins 2 and 3 of the power switch. I think it should be VBAT_CHARGE/B+/P+

Pin 1 on the power switch should go directly to regulator U1 VIN pin 3, not UVCC.

I would use a 6 pin ICSP PROGRAMMER_HEADER instead of a 10 pin, to save space, unless your programmer has a 10 pin header and you don’t want to rewire it or use a converter. If you stay with the 10 pin, your pinout doesn’t match the standard (You have it rotated 180 degrees).

1 Like

Ah yes it should be P+, I forgot to change the net

And then UVCC should be connected to the LDO U1 OUT pin,before the decoupling caps, right? Or to the fuse after USB1 pin 1?

Yes I have this 10 pin USBasp programmer, I’ve fixed it now