Skip to content

Conversation

@nbelzer
Copy link

@nbelzer nbelzer commented Apr 13, 2025

This PR includes the KiCad project for the PCB design I had manufactured (fb45206).

CleanShot 2025-04-13 at 13 42 30@2x

I have started to make some improvements on top of the original design that I plan to include in my next order. Any suggestions or feedback is welcome.

Changes so far:

  • Removed the pull-ups as they should operate on a 3.3v line (which the board doesn't have). Instead I'm opting to manually solder two resistors from the 3.3v pin on the ESP32 to the data lines.
  • Move the connectors down a bit, there is very little tolerance between the stepper connector and the physical slots that hold the PCB, this should give some more clearance.
  • Add a notch to the board design, I believe this will help route the stepper motor cable.
  • I attempted to use a DIP switch for the address selection but found it to take up more space than the current solution. Open to suggestions here.

nbelzer added 7 commits April 13, 2025 13:05
This commit includes the KiCad project for the PCB that I had
manufactured.
The SCL and SDL pull-ups need to happen on 3.3v, yet in the current
design they are attached to the 5v line.  Since they are only necessary
once per circuit (8 boards + esp32) I will leave them out of the board
design.
Moves all components down to increase the space for the stepper motor
JST conector.
This should help route the stepper and hall effect cables.
@fredcohen-aa
Copy link

Any thoughts to just adding 3-pin headers to A0,1 and 2 so jumpers can be used? I'm not sure if that's any less space than the DIPs

@nbelzer
Copy link
Author

nbelzer commented Apr 20, 2025

Any thoughts to just adding 3-pin headers to A0,1 and 2 so jumpers can be used? I'm not sure if that's any less space than the DIPs

That is what the current design looks like. Each address has 3-pins and a jumper is used to set the pin to high or low.

@nbelzer
Copy link
Author

nbelzer commented Apr 21, 2025

As I was assembling my displays with the produced batch (version in fb45206) I realized that communication between the modules is happening with a lot of errors. After debugging and some manual soldering I believe I have traced this back to the pull-up logic.

  • When soldering the pads for the pull-up at 5v I seem to introduce a lot of noise as whenever a second board (without the pull-up pads soldered) is connected everything stops working. I believe this is related to the internal pull-ups (which I assumed were not present when designing the initial version), not sure if those can be controlled in software.

  • The ESP32 that we're using in this project already has internal pull-ups for the SCL and SDA lines (I measured it at 7kΩ) going to 3.3v. In my initial design I am powering the PCF8575 at 5v which means the line will never reach `high as we'd need (0.7 x 5v =) 3.5v to register as high.

  • I scratched through the 5v connections to the PCF8575 on a few of the prototype boards and instead hand soldered a 3.3v line from the ESP32 to them. Initially this didn't work until I realized that the address pins also need to be set from the 3.3v line. I was able to make this work with 2 boards.

Based on this I believe a small re-design is necessary to power the PCF8575 at 3.3v. This would require me to step down the voltage on each board (or add an additional wire to the connectors between boards). My preference goes to stepping down the voltage.

nbelzer added 4 commits April 30, 2025 08:49
This regulator has a smaller footprint and seems to be better
optimised for our use case (more efficient, lower idle power draw,
less heat).
@nbelzer
Copy link
Author

nbelzer commented May 7, 2025

I've pushed an update to this branch with the 3.3v rails, wider tracks, and a two-pin per address solution using pulldown resistors.

CleanShot 2025-05-07 at 17 02 43@2x

nbelzer added 3 commits May 7, 2025 20:09
- Updates the position of the entire board down,
- Adds an edge cut section for the WSH130 wiring.
- Moves the ULN2003 up a bit to clean up the connections.
- Updates silkscreen labels.
@nbelzer
Copy link
Author

nbelzer commented May 8, 2025

I've ordered a second batch of boards with this design (301094f), will update this PR with my findings once they arrive.

nbelzer added 2 commits May 15, 2025 19:49
This is necessary since the PCF8575 can only pull the output to 0, not
bring it up to 3.3v, so a pull-up is necessary to communicate with the
ULN2003 (which only responds to values 2.5v or above).
nbelzer added 2 commits June 3, 2025 07:21
Saves on board space and component count
@nbelzer
Copy link
Author

nbelzer commented Jun 3, 2025

v2 design with hand soldered fixes

I recently received the v2 boards and found two flaws that I was able to correct with some manual soldering:

  • The 5v -> 3.3v step was incorrectly routed, this is now fixed
  • The connection between the PCF8575 and ULN2003 requires pull-ups as at 3.3v the signal between them only reaches 1v (whereas on 5v the signal reaches 1.5v, which is out of spec but worked on the previous iterations). This has also been addressed.

v3 design

@LIVESKILLER
Copy link

very good

@LIVESKILLER
Copy link

上传IMG_8984.jpeg...
I think 0805 capacitors and resistors can be used on this PCB, because the board has enough area and can fully accommodate them. The 0402 components are too small.

@nbelzer
Copy link
Author

nbelzer commented Jul 15, 2025

My display is now working with the v2 boards and the manual fix highlighted before.

Sideview Assembly Result
sideview assembly splitflap

I did notice a power issue with more than 6 displays connected. The whole array works when booted from an unpowered state, but would be inconsistent (only the first few displays would operate) when previously powered in the last few minutes. I believe this might be related to the capacitors that are on each board, potentially drawing too much power. I noticed that the display is stable with 6 units connected, so I scaled down to that for now.

The connection between the units works but the JST cables I used are a bit fragile. Since the cables need to be quite short (so that they fit in the display itself) it makes it harder to assemble and disassemble the display. I have been looking into pogo-pins as a potential solution to remove any cables from between the modules. Maybe even create some sort of PCB with exposed tracks (similar to the DIYson project) that could be part of some sort of base for all the modules.

@pearce1340
Copy link

This looks fantastic - is version 3 working as expected? I'm keen to get my own manufactured using your design, did you use PCBWay? Any advice on specs for ordering them?

Thanks and great work!

Based on the findings by FoxManJ the 3.3v line is not required if we
use a 4.7k Ohm pull-up to 5v for the SCL and SDA lines coming from the
ESP32.

By using this pull-up to 5V we eliminate the need for the PCF8575 to
run at 3.3v to understand the signals from the ESP32, which was the
reason I originally implemented the 3.3v line on each board.
Eliminates the JST cables between boards.
Required as the ESP32 by default does not pull up the data lines to
5v.  Should only be activated once per circuit (display).
@nbelzer
Copy link
Author

nbelzer commented Nov 16, 2025

I just finished up v4 and ordered several for myself. Changes include:

  • Removed the 3.3v step-down in favor of 5v pull-ups on the SDA and SCL lines.
    • The required pull-ups are included on each board but should only be used once per circuit.
  • Increase the cut-out on the right for the cables leading to the magnetic sensor.
  • Use pin sockets and headers for connecting the boards together, this is much easier than using JST cables which in my experience were finicky, easy to break, and difficult to store in the small amount of space we have.
    • I believe this also significantly reduces the resistance on the power and data lines. This seems to be the reason that my previous build could only power 6 out of the 8 units.
CleanShot 2025-11-16 at 12 35 30@2x

If the ordered boards work as expected, I'll add a README with instructions on how to order these boards for yourself.

@brunottonurb
Copy link

Hello @nbelzer ,
How was the latest batch of PCB? Did you get around to test it?

I would love to get some PCBs made from your specs, but my electronics and kicad skills are very low, so I am not sure I could debug any issues myself.

@nbelzer
Copy link
Author

nbelzer commented Dec 16, 2025

Hello @nbelzer , How was the latest batch of PCB? Did you get around to test it?

I would love to get some PCBs made from your specs, but my electronics and kicad skills are very low, so I am not sure I could debug any issues myself.

@brunottonurb I received the batch but only got around to testing them this weekend. I ran into an issue powering more than 2 boards so hold of on ordering any for now. If its an issue with the board I'll update the designs once I figure out what is wrong.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants