Skip to the content
PCBKitNew board
4 layers81 × 114 mmPhonev6, the printed circuit board in 3D

I took an old pay phone from the 2000's and replaced the brains with a raspberry pi and some arduinos.

Size
81 × 114 mm
Copper layers
4
Thickness
1.6 mm
Parts
64
Nets
127
Pads
318
Tracks, vias
638, 87
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
23 Dec 2023
Updated
11 Sep 2026

Overview

Phonev6 is an open-source printed circuit board by kmatzen, from the kmatzen/millennium repository on GitHub, published under the MIT licence. It is a 4-layer board of 81 × 114 mm with 64 parts on 127 nets, routed with 638 tracks and 87 vias.

It is built around the TDA2822M/TR, P6KE6.8CA and AO3401A. Its parts include 20 capacitors, 15 resistors, 10 diodes, 7 connectors and 2 ICs.

Main components

3

README

pcb/README.md

PCB Design

This directory contains the PCB design files created with KiCad.

Design History

  • phonev2 (removed): Dual LM358 op-amps, raw power connector, pin headers for audio.
  • phonev4 (earlier fabrication): Single LM386 power amplifier for ringer only, XL6009 boost converter, RJ9 and 3.5mm jacks. Had two design flaws: speaker output coupling (#42) and unamplified handset earpiece (#44).
  • phonev5 (previous schematic): TDA2822M dual-channel amplifier replacing the LM386, fixing both audio design flaws. Adds reverse polarity protection, ESD protection, power LED, fuse, test points, and improved I2C pull-ups.
  • phonev6 (current — fabricated and installed): through-hole → SMD migration of the phonev5 design, plus a make verify guardrail suite (netlist sync, footprint parity, pinout and footprint checks, ERC, DRC) that must be all-green before ordering. This is the revision currently installed in the phone.

Audio Circuit (TDA2822M)

The TDA2822M is a dual low-voltage audio power amplifier in a DIP-8 package (same footprint as the LM386 it replaces). It provides two independent amplified channels, solving both the speaker coupling and quiet handset issues.

Signal Paths

text
USB audio card (stereo 3.5mm)
  ├─ Left channel → J7 tip → C_inA → TDA2822 IN_A (pin 3)
  │                                    → OUT_A (pin 1) → C_outA → speaker_front+ → ringer
  │
  └─ Right channel → J7 ring → C_inB → TDA2822 IN_B (pin 4)
                                        → OUT_B (pin 5) → C_outB → speaker_receiver+ → J4 RJ9 → handset

Each channel has its own input coupling capacitor (100nF) and output coupling capacitor (100µF). The channels are electrically isolated inside the TDA2822M, eliminating the crosstalk present in the v4 LM386 design.

TDA2822M Pin Connections

PinFunctionNet
1OUT_A→ C_outA → speaker_front+
2GNDgnd
3IN_Aspeaker_front_pre+ via C_inA
4IN_Bspeaker_receiver_pre+ via C_inB
5OUT_B→ C_outB → speaker_receiver+
6V+5V_MAIN
7RIPPLE→ C_ripple (4.7µF) to GND
8NCNot connected

Component Values

RefValuePurpose
C_inA100nFInput coupling, channel A (ringer)
C_inB100nFInput coupling, channel B (handset)
C_outA100µF 16VOutput coupling, channel A (ringer)
C_outB100µF 16VOutput coupling, channel B (handset)
C_vcc100µF 16VVcc bypass
C_ripple4.7µFRipple rejection (pin 7)
C_dec100nFVcc decoupling

Bill of Materials

RefValue / PartQtyFootprintNotes
A1Arduino Micro (keypad)1Socket headersMillennium Alpha board
A2Arduino Micro (display)1Socket headersMillennium Beta board
A3Raspberry Pi Zero WH1ADA3708 footprintAdafruit ADA3708
U1XL6009 boost converter1Module12V output (from 5V input), coin validator supply
U2TDA2822M1DIP-8Dual audio amplifier
R14.7kΩ resistor1AxialI2C pull-up (SDA)
R24.7kΩ resistor1AxialI2C pull-up (SCL)
R31kΩ resistor1AxialPower LED current limit
C_inA100nF ceramic1Axial L3.8mm THTTDA2822 ch A input coupling
C_inB100nF ceramic1Axial L3.8mm THTTDA2822 ch B input coupling
C_outA100µF 16V electrolytic1Radial D8mm P3.8mmTDA2822 ch A output coupling
C_outB100µF 16V electrolytic1Radial D8mm P3.8mmTDA2822 ch B output coupling
C_vcc100µF 16V electrolytic1Radial D8mm P3.8mmTDA2822 Vcc bypass
C_ripple4.7µF electrolytic1Radial D5mm P2.0mmTDA2822 ripple rejection
C_dec100nF ceramic1Axial L3.8mm THTTDA2822 Vcc decoupling
C-*100nF ceramic5Axial L3.8mm THTDecoupling (see below)
D1–D3P6KE6.8CA3DO-15 (THT axial)TVS clamp signal lines to GND (600W bidirectional)
Q1AO3401A P-ch MOSFET1SOT-23 (SMD, JLCPCB basic C15127)Reverse polarity protection
F11A PTC fuse1Radial D10mm THTResettable overcurrent fuse
D4Red LED (0603, C2286 basic)1LED_0603 SMDPower indicator
J1Coin validator12x5 pin header10-pin IDC
J2Keypad12x10 pin header20-pin IDC
J3VFD display12x13 pin header26-pin IDC
J4Handset (RJ9)1RJ9 jack4P4C handset connector
J5Microphone13.5mm stereo jackHandset mic input
J6Card reader12x7 pin header14-pin for magstripe reader
J7Speaker13.5mm stereo jackStereo audio from USB card
TP1–5Test points5Through-hole loop D2.5mm5V_MAIN, Pi 3.3V, GND, SDA, SCL (see Test Points section)

Decoupling Capacitors (C-*)

RefLocation
C-arduino1Near keypad Arduino
C-arduino-display1Near display Arduino
C-raspi1Near Raspberry Pi
C-coin1Near coin connector
C-card1Near card reader

Protection Circuits

Reverse Polarity Protection (Q1)

A P-channel MOSFET (AO3401A, SOT-23 SMD; JLCPCB basic C15127) on the incoming 5V rail protects against accidental reverse-polarity connections. Q1 is placed on the power input before distribution and before feeding U1 IN+. The MOSFET's body diode conducts during normal operation with near-zero voltage drop, and blocks current when polarity is reversed.

ESD / TVS Protection (D1, D2, D3)

Three P6KE6.8CA TVS diodes (600W bidirectional, THT DO-15) protect signal lines from ESD and transients. Each clamps between the protected signal and GND—one pin to signal, one to GND. D1 protects J4 (handset); D2 protects speaker_front+ (ringer output from TDA2822); D3 protects the third signal line. These protect against back-EMF and ESD on external connectors.

Overcurrent Protection (F1)

A 1A resettable PTC fuse (F1) is placed on the incoming 5V rail, in series with Q1, before power distribution and before U1. It protects the entire board (including the boost converter input) from downstream shorts. The fuse self-resets when the fault is cleared.

Power Indicator (D4, R3)

A red LED on the 5V_MAIN rail provides visual confirmation that the board is powered, useful when debugging inside the payphone enclosure.

Connector Pinouts

J1 — Coin Validator (2x5)

The coin validator is powered from the 12V_COIN rail (U1 output). The PCB routes SoftwareSerial (600 baud) from the display Arduino pins 14 (RX) and 23 (TX), plus a reset line from pin 15. See the coin validator documentation for the serial protocol.

J2 — Keypad (2x10)

Routes to the keypad Arduino's row pins (6–9) and column pins (10–13, 18–20), plus the hook switch pins (4, 5, 21). See Arduino/PINOUT.md for the complete mapping.

J3 — VFD Display (2x13)

8-bit parallel data bus (D0–D7) plus control signals (WR, AD, RD, CS, TEST, RESET) routed from the display Arduino. See Arduino/PINOUT.md for the pin- to-VFD-pin mapping with wire colors.

J4 — Handset (RJ9)

PinSignal
1mic+
2speaker_receiver+
3gnd
4gnd

J6 — Card Reader (2x7)

MagStripe reader connections routed to the keypad Arduino: CLS (pin 22), RDT/data (pin 0), RCL/clock (pin 1).

J7 — Speaker/Audio (3.5mm stereo)

ContactSignalDestination
Tipspeaker_receiver_pre+→ TDA2822 ch B → handset
Ringspeaker_front_pre+→ TDA2822 ch A → ringer
SleevegndGround

I2C Bus

The two Arduinos communicate over I2C (SDA/SCL). The PCB provides 4.7kΩ pull-up resistors (R1, R2) to 5V on both lines — the standard recommended value for 100kHz I2C.

Power Distribution

The board is powered from an external 5V supply. Power flows as follows:

  1. Incoming 5V enters the board and passes through:

    • Q1 (reverse polarity protection)
    • F1 (PTC fuse)
  2. 5V_MAIN rail (after Q1 and F1) distributes to:

    • Both Arduino Micro boards (5V pin)
    • Raspberry Pi Zero WH (5V via GPIO header)
    • VFD display (5V logic supply; VFD filament uses its own internal supply)
    • TDA2822M amplifier (pin 6)
    • MagStripe reader (5V via Arduino)
    • U1 IN+ (boost converter input)
  3. 12V_COIN rail: U1 (XL6009) boosts 5V → 12V. XL6009 pins: IN+ = 5V_MAIN, IN- = GND, OUT- = GND, OUT+ = 12V_COIN. The 12V_COIN rail powers the coin validator only (J1). Nothing else on the board uses 12V.

Test Points

LabelSignalPurpose
TP15V_MAINMain 5V power rail
TP23.3VPi's 3.3V output (if accessible)
TP3GNDGround reference
TP4SDAI2C data (Arduino ↔ Arduino)
TP5SCLI2C clock
TP612V_COINBoosted 12V rail for coin validator

Note on USB connectivity: Arduino ↔ Pi communication is via USB through an external hub. There are no discrete USB serial TX/RX nets on the PCB; TP6 and TP7 in older docs referred to USB serial, but that path does not exist as PCB nets. Only the test points above (5V_MAIN, GND, 12V_COIN, I2C) are actual PCB nets.

Schematic Audit

Run python3 audit_schematic.py to check component/BOM alignment, net labels, and documentation consistency. See AUDIT.md for findings and action items.

Files

FileDescription
phonev6.kicad_proKiCad project file
phonev6.kicad_schSchematic (updated with TDA2822M)
phonev6.kicad_pcbPCB layout (needs re-layout for new parts)
phonev6.kicad_prlKiCad preferences (local)
phonev6.csvBill of materials (updated)
phone.kicad_symCustom symbol library (xl6009, TDA2822M, P6KE6.8CA)
footprints.pretty/Project footprint lib (F1: Fuse_Radial_D10.0mm_P5.00mm)
fp-lib-tableFootprint library table (includes project footprints)
jlcpcb/production_files/Gerbers zip, BOM, CPL (JLCPCB upload)
audit_schematic.pyPython script to audit schematic vs BOM vs README
AUDIT.mdAudit findings and action items
SCHEMATIC_D2_CHANGES.mdTVS diode wiring (D1, D2, D3 P6KE6.8CA) and net reference

Manufacturing

See JLCPCB_WORKFLOW.md for fabrication steps.

Quick summary:

  1. Run ./pcb/scripts/export_jlcpcb.sh to generate jlcpcb/production_files/GERBER-phonev6.zip
  2. Use KiCad's JLCPCB Fabrication Toolkit plugin for BOM/CPL
  3. Upload all three from jlcpcb/production_files/ to JLCPCB

Schematic Changes Required in KiCad

The schematic file has been updated with the TDA2822M symbol and updated component values. The following wiring changes need to be completed in KiCad's schematic editor:

Audio path rewiring

  1. J7 pin 1 (tip): Change net from speaker_receiver+ to speaker_receiver_pre+. This is the pre-amplified handset signal that now feeds into the TDA2822 channel B input.

  2. TDA2822 IN_A (pin 3): Connect to speaker_front_pre+ via input coupling cap C_inA.

  3. TDA2822 IN_B (pin 4): Connect to speaker_receiver_pre+ via input coupling cap C_inB.

  4. TDA2822 OUT_A (pin 1): Connect via output coupling cap C_outA to speaker_front+ (ringer speaker).

  5. TDA2822 OUT_B (pin 5): Connect via output coupling cap C_outB to speaker_receiver+ (handset earpiece via J4).

  6. TDA2822 GND (pin 2): Connect to gnd.

  7. TDA2822 V+ (pin 6): Connect to 5V_MAIN via C_vcc and C_dec bypass caps.

  8. TDA2822 RIPPLE (pin 7): Connect via C_ripple (4.7µF) to gnd.

Protection circuit wiring

  1. Q1 (reverse polarity): Place on the incoming 5V rail before distribution and before U1. Source to incoming 5V, drain to 5V_MAIN bus, gate to source (or appropriate pull-down for PMOS). Protects the entire board including U1 input.

  2. F1 (fuse): Insert in series on the incoming 5V rail, before Q1 or between Q1 drain and 5V_MAIN distribution. Protects the 5V supply and boost converter input from overcurrent.

  3. D1, D2, D3 (TVS): P6KE6.8CA bidirectional TVS. Each: pin 1 → GND, pin 2 → protected signal (e.g. speaker_receiver+, speaker_front+, or other external signal). Protects signal lines, not power.

  4. D4 + R3: Connect from 5V_MAIN through R3 (1kΩ) through D4 to GND.

Test points

Add test point symbols connected to: 5V_MAIN, 3.3V, GND, SDA, SCL, 12V_COIN. Do not add TX/RX test points for USB serial; Arduino ↔ Pi communication uses USB through an external hub, so there are no discrete USB serial nets on the PCB.

Known PCB Errata

  1. Missing trace: Reset 2 (GPIO27 → Arduino Beta RST) — The PCB is missing a trace connecting the Pi's GPIO27/GEN2 (pin 13) to the display Arduino's RST pin. Worked around with a bodge wire on the assembled board. Must be added as a proper trace in the next KiCad layout revision.

Known Issues (resolved by this revision)

  1. Speaker output coupling (#42) — Fixed: TDA2822M provides fully isolated dual channels. No more crosstalk between handset and ringer.

  2. Handset earpiece too quiet (#44) — Fixed: Both channels are now amplified by the TDA2822M. The handset earpiece is no longer driven at unamplified line level.

Remaining Considerations

The phonev6 schematic, layout, and generated BOM are the fabricated as-built revision. Its migration is intentionally mixed technology: protection and support parts moved to SMD while U2 remains the verified DIP-8 TDA2822M. The layout is not pending; only the GPIO27 reset bodge in Known PCB Errata remains for a future revision.

  1. ALSA config update: The ALSA softvol max_dB setting in host/asoundrc.example may need adjustment since the TDA2822M provides hardware amplification. Software gain can likely be reduced.

  2. Gain tuning: The TDA2822M's default gain may need adjustment for comfortable volume. If too loud, input attenuation resistors can be added. If too quiet, the coupling cap values can be increased.

  3. Mounting holes: Consider adding M3 mounting holes at board corners for mechanical support inside the payphone enclosure.

Circuit Improvement Ideas

Ideas for future revisions, ordered by likely impact.

High priority

  1. Bulk capacitor on 5V input — Add a 470–1000 µF electrolytic (16–25V) on the 5V rail (after Q1/F1, before distribution). Smooths supply during Pi boot current spikes and audio peaks.

  2. Bulk capacitor on 12V_COIN — Add 100–220 µF (25V) near J1 (coin validator). Coin validators draw current spikes when the motor runs; the bulk cap reduces rail droop.

  3. Series resistor on coin validator reset — If the Arduino drives the reset line directly to J1, add a 100–220 Ω series resistor. Limits fault current and reduces coupling.

Medium priority

  1. I2C series resistors — Add 22–33 Ω series resistors on SDA/SCL at each Arduino I2C port. Dampens ringing if cable lengths increase or in noisy environments.

  2. XL6009 thermal — The 5V→12V boost at ~50–100 mA can get warm in a confined enclosure. Use adequate copper around the module; consider a small heatsink if airflow is limited.

  3. Undervoltage handling — The bulk input cap (item 1) helps. If the 5V supply is marginal during boot, consider explicit UVLO or reset sequencing for critical loads.

Lower priority

  1. ESD on audio jacks — J5 (mic) and J7 (speaker) are externally accessible. Consider PRTR5V0U2X or similar TVS on their signal pins for robustness.

  2. Power LED brightness — If D4 is too bright in a dark payphone, increase R3 (e.g., 2–4.7 kΩ) for dimmer indication.

  3. TDA2822M gain flexibility — Add DNP footprints for optional input attenuation resistors so gain can be tuned without a respin.

Documentation / mechanical

  1. Connector keying — Verify J1 (coin validator) is keyed to prevent reverse insertion. Document pin-1 orientation clearly.

  2. Pi power path — Document whether the Pi receives 5V only from the GPIO header or also via USB; affects power sequencing and fault behavior.

Parts

64
QtyValueFootprintReferences
90.1uCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C5, C16, C18, C19, C20
61kResistor_SMD:R_0805_2012MetricR4, R5, R12, R13, R14, R15
422uCapacitor_SMD:C_0805_2012MetricC13, C14, C15, C17
3100nFCapacitor_SMD:C_0805_2012MetricC6, C9, C10
3100µF 16VCapacitor_SMD:CP_Elec_6.3x5.4C7, C11, C12
3P6KE6.8CADiode_SMD:D_SMBD5, D6, D7
210kResistor_SMD:R_0805_2012MetricR6, R7
24.7Resistor_SMD:R_0805_2012MetricR8, R9
24.7kResistor_SMD:R_0805_2012MetricR1, R2
2Blue LEDLED_SMD:LED_0805_2012MetricD12, D13
2Green LEDLED_SMD:LED_0805_2012MetricD8, D9
2Yellow LEDLED_SMD:LED_0805_2012MetricD10, D11
11kΩResistor_SMD:R_0805_2012MetricR3
12AFuse:Fuse_1812_4532MetricF1
13.3kResistor_SMD:R_0805_2012MetricR11
1330Resistor_SMD:R_0805_2012MetricR10
14.7µFCapacitor_SMD:C_0805_2012MetricC8
15V_MAINTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mmTP1
1ADA3708ADA3708:ADA3708_RPI-ZEROA3
1AO3401APackage_TO_SOT_SMD:SOT-23Q1
1Arduino_Micro_SocketPCM_arduino-library:Arduino_Micro_SocketA1
1Arduino_Micro_Socket (display)PCM_arduino-library:Arduino_Micro_SocketA2
1GroundTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mmTP3
1Pi 3.3v outTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mmTP2
1RJ9Connector_RJ:RJ9_Evercom_5301-440xxx_HorizontalJ4
1Red LEDLED_SMD:LED_0805_2012MetricD4
1SCLTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mmTP5
1SDATestPoint:TestPoint_Loop_D2.50mm_Drill1.0mmTP4
1TDA2822MPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1card_readerConnector_IDC:IDC-Header_2x07_P2.54mm_VerticalJ6
1coinConnector_IDC:IDC-Header_2x05_P2.54mm_VerticalJ1
1displayConnector_IDC:IDC-Header_2x13_P2.54mm_VerticalJ3
1keypadConnector_IDC:IDC-Header_2x10_P2.54mm_VerticalJ2
1micaudio:AUDIO-TH_HOOYA_PJ-320J5
1speakeraudio:AUDIO-TH_HOOYA_PJ-320J7
1~misc_footprints:XL6009_moduleU1

Questions

How big is the Phonev6 PCB?

It measures 81 × 114 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Phonev6 use?

64 parts, built around the TDA2822M/TR, P6KE6.8CA and AO3401A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Phonev6 KiCad files?

From the kmatzen/millennium repository on GitHub, at the commit this page was made from: the board is pcb/phonev6.kicad_pcb and its schematic pcb/phonev6.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Phonev6 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers105 × 85 mmRecorder, the printed circuit board in 3D

    Recorder

    akiihito/expresslrs_realtime_recorder

    USB Gamepad to ExpressLRS adapter using Raspberry Pi Pico

    30 parts
  • 2 layers170 × 115 mmPcb control, the printed circuit board in 3D

    Pcb control

    Danielnvcd/PCB

    PCB WIEGAND

    65 parts
  • 2 layers68 × 76 mmScreen power hand, the printed circuit board in 3D

    Screen power hand

    tomassasovsky/segno-hardware

    Segno hardware: boards, sheet-metal enclosure, printed parts and decals

    46 partsCERN-OHL-S-2.0
  • 4 layers100 × 80 mmLCSDR, the printed circuit board in 3D

    LCSDR

    licheegh/LCSDR

    197 parts7
  • 2 layers191.5 × 139.5 mmSpeaker, the printed circuit board in 3D

    Speaker

    Davey5506/Speaker

    29 parts
  • 2 layers50 × 19.5 mmSolarAmp, the printed circuit board in 3D

    SolarAmp

    clwe/SolarSoundBoards

    A small collection of PCBs for DIY manufacturing on the CNC machine.

    15 parts
  • 2 layers84.8 × 136 mmFind wire, the printed circuit board in 3D

    Find wire

    s-kanaev/kicads

    48 parts
  • 2 layers95.8 × 97 mmFMRadio, the printed circuit board in 3D

    FMRadio

    WaseemALTamer/EmbeddedControlSystem

    56 parts