Table of Contents
Introduction
I was recently interested in trying out a circular LCD screen for indicating rotational information. I wished to prototype up something that could be used to develop code for circular content on the screen! Searching around, it turned out that some badge developed for a conference used such a display, and a Pi Pico! It looked like a great way to quickly build a development board.
However, unfortunately, that project used a PCB CAD package that isn’t very popular. I’d need to redraw it all into KiCad format.*
The schematic is replicated. Now, there is the opportunity to extend the design a little!
Note: The render below is not how the board will look; I have not done anything with the PCB layout so far. It just shows approximately what components are used on the board!
*Note: Since starting it, I’ve realized that other people have given it a shot too, with some based on the original Gerber files. I don’t know their project status since I was unable to view any (perhaps they have not been published yet). Anyway, I decided to continue since if there are faults, there’s just a single throat to choke!
Besides, I wish to make some changes as discussed below. The KiCad files are published on GitHub in case anyone spots errors or wishes to make their own changes. This version does not rely on the original board Gerber files (mainly because I didn't know how to do that). I figured I may as well enter it all into KiCad from scratch, since it's not a huge project.
What Is It?
The original conference board (also see its original GitHub page) is intended for hacking. It is named a Vectorscope, and as such, it contains a couple of ADC channels for capturing data that could be shown in a vector format (although most examples don't do that; it's just a fun badge, after all). Although I don’t need the ADC/DAC, I left that part in the schematic since it could be handy for future projects. Besides, it would still be fun to explore the ADC/DAC in spare time.
Image source: https://github.com/Hack-a-Day/Vectorscope
What Parts are Needed?
All the parts are generally available from various distributors, and many of the parts used are jellybean. The LCD screen is available from AliExpress (I don’t know where else to source it from at a reasonable price). All the components will cost 25 GBP / 31 USD at current prices (excluding tax/shipping and PCB). It’s an acceptable price for the functionality. However, since this is a custom board, removing functionality if it is not required can save cost! In my case, I don’t require the ADC/DAC as mentioned.
The entire parts list is below.
Item |
Qty |
Reference(s) |
Value |
Notes |
1 |
2 |
B1, B2 |
Keystone 2460 |
Battery Holder Keystone 2460 |
2 |
3 |
C1, C2, C22 |
22u 16V |
22uF Tant Case B |
3 |
10 |
C3, C4, C10, C11, C13, C17, C18, C19, C20, C24 |
100n |
Cap 0603 X7R |
4 |
11 |
C5, C6, C7, C8, C9, C12, C14, C15, C16, C21, C23 |
2.2u 16V |
Cap 0603 X5R |
5 |
8 |
D1, D2, D3, D4, D5, D6, D7, D8 |
APT2012SYCK/J3-PRV |
LED Yellow 0805 |
6 |
1 |
DISP1 |
ATM0128B1 |
Round TFT |
7 |
2 |
J1, J3 |
Pin-Header-4way |
4-pin Header Pins 2.54mm Right-Angle |
8 |
1 |
J2 |
Pin-Header-5way |
5-pin Header Pins 2.54mm Right-Angle |
9 |
1 |
J4 |
Pin-Header-7way |
7-pin Header Pins 2.54mm Right-Angle |
10 |
1 |
J5 |
Pin-Socket-2x2 |
2x2 Header Socket 2.54mm Vertical |
11 |
1 |
L1 |
47uH |
0805 Inductor |
12 |
1 |
LS1 |
Speaker |
20mm dia 8 ohm |
13 |
1 |
Q1 |
DMG2305UX |
MOSFET P-ch SOT-23 |
14 |
1 |
R1 |
22R |
0805 Resistor |
15 |
3 |
R2, R12, R13 |
2.7k |
0805 Resistor |
16 |
4 |
R3, R5, R6, R7 |
4.7k |
0805 Resistor |
17 |
1 |
R4 |
22k |
0805 Resistor |
18 |
1 |
R8 |
33R |
0805 Resistor |
19 |
3 |
R9, R10, R11 |
680R |
0805 Resistor |
20 |
1 |
R14 |
10k |
0805 Resistor |
21 |
1 |
R15 |
220k |
0805 Resistor |
22 |
1 |
R16 |
100R |
0805 Resistor |
23 |
9 |
SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9 |
PTS645SK50SMTR92LFS |
Tact Switch 6x6mm SMD |
24 |
3 |
SW10, SW11, SW12 |
TL3300DF260Q |
Tact Switch 12x12mm SMD |
25 |
1 |
SW13 |
2425755-1 |
TE Connectivity Switch 5-way Joystick |
26 |
1 |
SW14 |
EG 1218 |
SPDT Switch 2.5 mm pin pitch |
27 |
1 |
SW15 |
Tact 4x3 |
Tact Switch 4x3 mm body SMD |
28 |
1 |
U1 |
AK4619 |
CODEC (ADC/DAC) |
29 |
1 |
U2 |
LMV324 |
TSSOP Quad Op Amp |
30 |
1 |
U3 |
TLC59283 |
SSOP24 LED Driver |
31 |
1 |
U4 |
TPA321 |
SOIC-8 Audio Amplifier |
32 |
1 |
U5 |
Pi Pico |
Pi Pico Board |
33 |
1 |
U6 |
LM4040C30 |
3.0V Shunt Reference SOT-23 |
Circuit Diagram
The KiCad schematic is shown below, also downloadable as a high-res schematic on GitHub. If anyone is willing to check it, it would be appreciated, since I may have made mistakes. All the component references are the same as the original conference version (which is available as JPG images, original schematic part 1, and original schematic part 2).
How Does it Work?
As can be seen, the circuit is quite simple but nevertheless allows for a lot of experimentation! Here's a quick explanation from the top-left on the schematic, going counter-clockwise:
The Pi Pico is operated from two AA batteries or from USB power.
The round TFT screen uses an SPI interface to accept data from the Pi Pico. There are 8 LEDs on the board, and they are driven by 8 channels of a 16-channel LED driver chip. The remaining 8 channels are used for scanning an 8x2 array of buttons. This isn't pretty for the source code to manage, but it's cheap and makes total sense for a badge for that reason. Personally, I would really like to modify this part of the design but will refrain so that the original code can be used. I will add any alternative hardware to an extension board instead.
An audio amplifier is wired to an input called INY. An audio codec chip, U1, provides the ADC and DAC functionality. The DAC outputs are connected to op-amp buffers.
Small Fixes/Changes
For this KiCad version (let’s call it the Guy Fawkes version for want of a better name, since others may produce other KiCad designs, and this KiCad version was produced in November), I added a few minor parts, mainly capacitors, since there’s less need to cost-reduce since I’m not producing this in the hundreds as the conference badge was.
I corrected a MOSFET issue that was on the original board and also decided to add a few resistors to protect the MOSFET a bit (the original conference badge version doesn’t need that since the MOSFET is in-circuit, but for a DIY version, there will be times when the Pi Pico is not attached, and that makes the MOSFET out-of-circuit if the protection was not added). Otherwise, the circuit should be identical for now unless I’ve made errors!
Proposed Modifications
Since I don’t need the ADC/DAC, I plan to bring out the GPIO pins onto the edge of the board so I can use them for attaching extra circuitry (such as a rotary encoder). The ADC/DAC consumes a lot of pins on the Pi Pico (10 pins), so I want to use them for off-board purposes if the ADC/DAC chip is not soldered on. Even if the chip is soldered on, the edge connections could be useful for probing the chip.
New Ideas?
If you have ideas for the board, it would be great to hear them. I don’t want to make too many changes from the original board so that the existing software can be used, but I’d still be interested to hear suggestions. I was thinking about adding optional circuitry for an I2C real-time clock (RTC) chip so that the board can function as a desk clock.
Next Steps
The Vectorscope, although intended as a fun conference badge, could be excellent for learning about various hardware components and software! I think it will also be useful for anyone who wishes to design a circular GUI, display rotational/angular/vector information, or even just to build a fancy clock.
I have started laying out the PCB design and will likely submit the PCB order within about a week or so. It will be a fun project to assemble over the Xmas hols. If you’re interested in building one, the KiCad files are on GitHub, but as mentioned, the PCB layout is still to be done, so you may wish to wait, or you could use the original Hackaday Gerber files. But if you wish to influence this KiCad design a bit, please let me know!
Thanks for reading!