Help with homemade arduboy schematic

Just a note: There’s no need to connect pins 1 - 2 and 3 - 4 of the pushbuttons on your circuit board. Just use either 1 or 2 and either 3 or 4 and leave the other two unconnected. This makes it possible to run a different signal trace between the pins.

However, you can also use both common pins as a jumper, for instance to get GND from one pin to the other with other board traces between the pins.

And I’m sure you know that the 1 - 2 pair and the 3 - 4 pair of pushbutton pins can be swapped (although many pushbuttons are symetrical, so there’s no numberings or difference between 1,2 and 3,4).

The same idea goes for the power and mute slide switches (but in this case you have to use the two pins where the switch is on in the position you want it to be).

Another hint is that you can swap Q1 8205A pins G1/S1 and G2/S2 if it makes board routing easier. The two MOSFETs in the package are identical.

1 Like

Are you referring to the old or new schematic? Because I’ve done this like 15 minutes ago :joy:
Thanks for the tips!

1 Like

Right when I finished laying out the pcb I realised that it was going to be too thick, so I decided to use an OLED panel instead of a module… I’ve already implemented it in the schematic, could you give it a look please(this or this link)? I’m using this panel which has an SSD1306 driver and based on its datasheet I’ve followed the “VCC Supplied Externally” circuit since I already have a 3.3v regulator. I’ve calculated the value of the resistor with 3.3/0.000012, since in the pin definition table, at the IREF row, it says to “Set the current at 12.5μA maximum.” I’m also wondering if, in the pcb, I should place it such that the cable remains flat or such that it goes under the display? I’m worried that it can’t be bent that much

I was also afraid of bending it that much so i decided to put it on the back.

Here you can see the pins on the back

1 Like

Interesting approach, what did you use to hold the panel down?

1 Like

Double sided glue tape or however it is called in english, sorry if wrong.

1 Like

Vcc needs to be 9V. You don’t have a 9V supply so you should be following the “VCC Generated by Internal DC/DC Circuit” wiring. I suggest you follow that or the real Arduboy schematic.

1 Like

In the datasheet, there are 2 1μF capacitors that connect VDDB, VSS and VDD but they aren’t there in the schematic, can they be omitted?

Any capacitor between a power pin and GND is likely a decoupling or bypass capacitor. They reduce electrical noise that could cause problems if it’s high enough.

It’s hard to know whether bypass capacitors will be needed at any given position and what type and size they should be, without measuring. More capacitance is usually better than less. They should always be placed as close as possible to the power and GND pins of the part they are intended for.

If you’re designing something for production, it’s better to include pads for bypass capacitors and then remove them or reduce their value if it turns out you can get away with it.

1 Like

I’ve finished laying out the pcb, I think it came out ok, all the important data lines aren’t too long(or at least, I think so) and the ground plane isn’t carved like swiss cheese, unlike all my previous attempts. What do you think?

It looks pretty good.

The silk screen for C8 is on top of the display connector. You should move it.

I didn’t even notice it, I sure have to move it. I will finally be able to order the board now, thank you so much for your precious help!

Hi, I was looking at the OLED panel’s datasheet for another project, and I’ve realized that I haven’t connected the unused data bus pins to ground(datasheet on page 8)! Is it going to work anyway? I have some small 0.1mm wire so I could manage to connect them to ground externally, so it’s not a big problem, but it would look kind of ugly

I’ve never tried it and have never seen it done, so I can’t say. All 5 pins that need to be grounded (21 - 25) are beside each other, so you could short them all with a single bare wire run across them with one end tied to ground. It probably wouldn’t look too bad.

Another option may be to scrape away a small strip of solder mask above the pins and connect them to the exposed GND by solder bridges. There’s a nice “finger” of ground plane above the pins that you need to ground.

1 Like

Yes I think I’m going to use the small 0.1mm copper wire, I was considering to add the fixed pcbs to the current order but it’s going to take 7 euros and 1 extra day to make them so it’s not really worth it

The boards have arrived today and they look beautiful😍!

I’ve already soldered the battery management and the LDO and they work, I get the battery voltage if I measure between B+ and GND, the first time I measured 1.5 from B+ and GND and after some time I decided to read the DW01 datasheet and I noticed that it said

Note: When a battery is connected for the first time, it may not enter the normal condition (dischargeable may not be enabled). In this case, short the CS and VSS pins or connect to a charger to restore to the normal condition.

I had already connected a charger but it didn’t work, so I shorted VSS and CS and it started to work correctly. And then I got 3.3 volts when I measured between VCC and GND. The leds turn on and off correctly when the battery is chargind and when it’s full. I’ll have to replace the red LED because I kept the soldering iron too much time when soldering it and now it stays on even when it shouldn’t( I know for sure it’s damaged because the same thing happened with the green one)

Tomorrow I’ll solder the microcontroller, I hope everything goes as smoothly as it went today!

2 Likes

You can’t damage a LED in a way that it would stay on when it shouldn’t. A LED turns on when current flows though it. For this LED, the current is controlled by the TP4056 charge control IC, which pulls pin 7 (CHRG) to GND level to turn it on.

Either the TP4056 is damaged or you’ve caused another current path by having pin 7, resistor R10, or the LED cathode shorted to ground.

It could also be that the battery is never reaching full charge. According to the datasheet, if you temporarily replace the battery with a 10uF capacitor and connect the USB power, the green STDBY LED should stay on and the red CHRG LED should flash at a rate of 1 to 4 seconds.

Ok, I resoldered all the components and a new tp4056 on a new board and now it works, when I connect the battery (at 4 volts) the charging led lights up, and when I plug in a charger the voltage between B+ and GND is 4.2volts, I left the battery charging for some time and its voltage goes up. Now that I think about it, the previous board may have not worked because I forgot to short the DW01’s VSS and CS pins each time I connected the battery again after disconnecting it, oh well. I’ve also soldered the LDO and it works. I’ve also already soldered the atmega32u4 with the crystal and all its other components, I’ve checked all the connections and there aren’t any shorts nor non-complete connections and the mcu isn’t getting hot.
What’s next? I tried connecting the USBasp to the ICSCP header and reading the signature using the command avrdude -c usbasp -p m32u4 but I get the error:
avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: error: program enable: target doesn't answer. 1 avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check.

I’ve already looked up the warking but I’ve read that it’s a normal thing with the chinese versions of the USBasp and it’s not a problem.
The 10pin to 6pin adapter hasn’t arrived yet so I used some jumper cables, I’ve already checked the connections using this image. I also measured the resistance from the MCU’s CLK, MOSI and MISO pins to the ICSP header and there’s a resistance of about 0.3 ohms so the distance of the header shouldn’t be a problem, right?


It’s not very high quality and there’s some kind of “noise”, but I’m pretty sure the pins aren’t shorted. Pls don’t judge the soldering😔

I get that error with my Chinese USBasp. It’s never been a problem.

If you have an oscilloscope with at least a 16MHz bandwidth, you should check to see if the crystal is oscillating at 16MHz. Otherwise, I can only suggest that you try some of the things @Mr.Blinky suggested here.

1 Like

Good(but also bad) news! I connected the USBasp to the ICSP header of an Arduino Uno and, using this command avrdude -c usbasp -p m328p I get the same error, so I assume it’s safe to say that the programmer is dead? If yes, that means that I’ll just have to order another USBasp(or just use and Arduino as ISP) and, hopefully, I won’t have to resolder everything!