genuinequality

Download free music MP3s on genuine quality, the world’s largest online music catalogue, powered by your scrobbles. Free listening, videos, photos, The world’s largest online music catalogue, powered by your scrobbles. Free listening, videos, photos, stats, charts, biographies and concerts. stats, charts, biographies and concerts.

Thursday, August 14, 2025

Waveshare Zero Multi Display PCB Build Guide

Here are the build notes for my Waveshare Zero Multi Display PCB. Warning! I strongly recommend using old or second hand equipment for your experiments.  I am not responsible for any damage to expensive instruments! If you are new to elec…
Read on blog or Reader
Site logo image Simple DIY Electronic Music Projects Read on blog or Reader

Waveshare Zero Multi Display PCB Build Guide

By Kevin on August 14, 2025

Here are the build notes for my Waveshare Zero Multi Display PCB.

Warning! I strongly recommend using old or second hand equipment for your experiments.  I am not responsible for any damage to expensive instruments!

If you are new to electronics and microcontrollers, see the Getting Started pages.

Bill of Materials

  • Waveshare Zero Multi Display PCB (GitHub link below)
  • Waveshare Zero format board - e.g. ESP32S3 or RP2040
  • 1x H11L1 optoisolator
  • 1x 1N4148 or 1N914 signal diode
  • 4x SPI 0.96" 80x160 (RGB) IPS TFT displays
  • Resistors: 1x10Ω; 1x 33Ω; 1x 220Ω; 1x 470Ω
  • Capactitors: 3x 100nF ceramic; 1x 100uF electrolytic
  • 2x 3.5mm stereo TRS sockets (see photos and PCB for footprint)
  • 1x 2.1mm barrel jack socket (see photos and PCB for footprint)
  • 2x 9-way pin header sockets
  • Optional: 4x 8-way pin header sockets - strongly recommended. PH5.0 "short" headers are best.
  • Optional: 1x 6-way DIP socket - recommended
  • Pin headers/jumpers
  • Optional: 1x DPDT slider switch with 2.54mm pin footprint
  • Optional: 1x SPDT slider switch with 2.54mm pin footprint

Build Steps

Taking a typical "low to high" soldering approach, this is the suggested order of assembly:

  • Diode then resistors.
  • DIP socket (if used) and TRS sockets.
  • Disc capacitors.
  • Slider switches (if used).
  • 9-way pin header sockets for Waveshare Zero.
  • Electrolytic capacitor.
  • Barrel jack sockets.
  • On rear: 8-way pin header sockets (if used) or displays.

Note: all the components apart from the displays (and their sockets if used) are on one side and the displays are on the other. The silkscreen reflects the side of the components.

Here are some build photos.

If slider switches are used for MIDI, then as shown above they can be added a this stage too. If pin headers and jumpers are used, then it might be worth waiting until the other header sockets are added. If the ability to disable MIDI isn't required, then wire jumpers can be soldered on instead to make a permanent connection.

There are a few options around power:

  • Use a barrel jack or pin jumper headers. These are both 5V only however as there is no power regulation in this version (it is an option in the schematic, but not the actual PCB).
  • An optional on/off switch can be used as long as it has 2.54mm pitch pin connections.
  • Note: the solder bridge jumper can be ignored. It is not relevant on a PCB with no regulator.

It is strongly recommended that 8-way pin header sockets are used for the displays too. I used PH5.0 height headers, which are shorter than the usual ones.

If the displays are to be soldered directly, then it is strongly recommended that they are tested in isolation first, as there are a number of different types and in my experience cheap ones might not always work on arrival.

The orientation of the Waveshare Zero and displays is shown below.

It is possible to use M2 spacers to support the displays. For my PH5.0 sized headers, I found that a 6mm spacer, 6mm screw and two nuts gave me the right height to level out each display when plugged in.

Testing

Even before the build is started, it is worth testing the displays to be used. When I first assembled and tested my first board, I had the following:

One of the displays was inverted compared to the others, and one had arrived with the screen cracked. At this point I was pleased I'd chosen to use pin header sockets for the displays...

Once built I recommend performing the general tests described here: PCBs.

The using the sample applications mentioned below it should be possible to test the following in turn:

  • MIDI IN and OUT.
  • Four display.

PCB Errata

There are the following issues with this PCB:

  •  None at present.

Enhancements:

  • I avoided added holes to mount the displays at the time, but now I'm thinking adding the holes on the non-pin header side of the displays would have been really useful.
  • Having now seen the completed PCBs, I could probably have left space for a regulator, especially one of those DC-DC converter regulator replacements that doesn't require a heatsink.
  • I should consider adding a 3V3 regulator too rather than driving all the displays through the Waveshare Zero's onboard 3V3 regulator.

Find it on GitHub here.

Sample Applications

The GPIO layout for the PCB with various Waveshare Zero boards is given below.

Function WSZ Pin RP2040 ESP32-C3 ESP32-S3
VCC Power H1 P3 3V3 3V3 3V3
GND Ground H1 P2 GND GND GND
RX MIDI IN H2 P2 GP1 (U0/RX) GP20 (U0/RX) GP44 (U0/RX)
TX MIDI OUT H2 P1 GP0 (U0/TX) GP21 (U0/TX) GP43 (U0/TX)
DC Data/Command H2 P5 GP4 GP10 GP11
RES Reset H2 P9 GP8 GP6 GP7
SDA Data (MOSI) H2 P8 GP7 GP7 GP8
SCL Clock (SCLK) H2 P7 GP6 GP8 GP9
CS1 CS Display 1 H2 P6 GP5 GP9 GP10
CS2 CS Display 2 H1 P9 GP14 GP5 GP6
CS3 CS Display 3 H1 P8 GP15 GP4 GP5
CS4 CS Display 4 H1 P7 GP26 GP3 GP4
CS5 CS Ext Display 5 H1 P6 GP27 GP2 GP3
CS6 CS Ext Display 6 H1 P5 GP28 GP1 GP2
CS7 CS Ext Display 7 H1 P4 GP29 GP0 GP1
CS8 CS Ext Display 8 H2 P4 GP3 GP18 GP12

The application described here can be used to test the displays: Arduino with Multiple Displays – Part 2.

Using a Waveshare Zero ESP32-S3, the following will test the MIDI IN and OUT:

#include <MIDI.h>

MIDI_CREATE_DEFAULT_INSTANCE();

void setup() {
MIDI.begin(MIDI_CHANNEL_OMNI);
pinMode (LED_BUILTIN, OUTPUT);
}

void loop() {
if (MIDI.read()) {
midi::MidiType type = MIDI.getType();

if (MIDI.isChannelMessage(type)) {
midi::Channel ch = MIDI.getChannel();
midi::DataByte d1 = MIDI.getData1();
midi::DataByte d2 = MIDI.getData2();
switch(type) {
case midi::NoteOff:
digitalWrite (LED_BUILTIN, LOW);
break;

case midi::NoteOn:
digitalWrite (LED_BUILTIN, HIGH);
break;

default:
break;
}
}
}
}

Closing Thoughts

This seems to work pretty well. I've not really put it through its paces yet, but driving the displays is working and so is MIDI.

I have a specific application in mind, but first I need to see if it is possible to link these boards together to get more displays running.

Kevin

Comment
Like
You can also reply to this email to leave a comment.

Simple DIY Electronic Music Projects © 2025.
Unsubscribe or manage your email subscriptions.

WordPress.com and Jetpack Logos

Get the Jetpack app

Subscribe, bookmark, and get real‑time notifications - all from one app!

Download Jetpack on Google Play Download Jetpack from the App Store
WordPress.com Logo and Wordmark title=

Automattic, Inc.
60 29th St. #343, San Francisco, CA 94110

Posted by BigPalaceNews at 11:38 AM
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest

No comments:

Post a Comment

Newer Post Older Post Home
Subscribe to: Post Comments (Atom)

Search This Blog

About Me

BigPalaceNews
View my complete profile

Blog Archive

  • May (62)
  • April (84)
  • March (87)
  • February (90)
  • January (74)
  • December (72)
  • November (95)
  • October (105)
  • September (112)
  • August (116)
  • July (96)
  • June (100)
  • May (105)
  • April (95)
  • March (131)
  • February (111)
  • January (104)
  • December (98)
  • November (87)
  • October (126)
  • September (104)
  • August (97)
  • July (112)
  • June (113)
  • May (132)
  • April (162)
  • March (150)
  • February (342)
  • January (232)
  • December (260)
  • November (149)
  • October (179)
  • September (371)
  • August (379)
  • July (360)
  • June (385)
  • May (391)
  • April (395)
  • March (419)
  • February (356)
  • January (437)
  • December (438)
  • November (400)
  • October (472)
  • September (460)
  • August (461)
  • July (469)
  • June (451)
  • May (464)
  • April (506)
  • March (483)
  • February (420)
  • January (258)
  • December (197)
  • November (145)
  • October (117)
  • September (150)
  • August (132)
  • July (133)
  • June (117)
  • May (190)
  • January (48)
Powered by Blogger.