Skip to content

PCB v5 design improvements #47

@kmatzen

Description

@kmatzen

Overview

Collected recommendations for a future PCB revision based on the phonev4 schematic audit, firmware audit, and operational experience. Organized by priority.

High Priority (functional issues)

1. Replace LM386 with dual-channel amplifier

Fixes: #42 (speaker coupling) and #44 (quiet handset)

The single LM386 only amplifies the ringer speaker. The handset earpiece is driven unamplified at line level. Both speaker paths are also coupled.

Recommendation: Use a dual-channel audio amplifier (e.g., TDA2822, PAM8403, or similar) with independent outputs for each speaker. This solves both issues:

  • Each speaker gets its own amplified, isolated output
  • No more crosstalk between handset and ringer
  • Handset volume is adequate without software gain hacks

2. Add reverse polarity protection on power input

The XL6009 boost converter module has no reverse polarity protection. Connecting power backwards would destroy the module and potentially the downstream components.

Recommendation: Add a P-channel MOSFET or Schottky diode on the power input.

3. Add ESD protection on external connectors

The RJ9 handset jack (J4), 3.5mm audio jacks (J5, J7), coin validator header (J1), and card reader header (J6) are all externally accessible with no ESD protection. A static discharge through the handset or coin slot could damage the Arduinos.

Recommendation: Add TVS diode arrays (e.g., PRTR5V0U2X) on the signal lines of externally-accessible connectors, at minimum on J4 (RJ9) and J1 (coin validator).

Medium Priority (reliability/debuggability)

4. Add test points

There are no test points on the board. Debugging requires probing IC pins directly.

Recommendation: Add labeled test points for:

  • 5V rail
  • 3.3V rail
  • GND
  • I2C SDA/SCL
  • USB serial TX/RX (between display Arduino and Pi)
  • Coin validator serial (RX/TX)
  • LM386 / amplifier output

5. Lower I2C pull-up resistor values

R1 and R2 are 10kΩ. While this works for the short on-board bus, 4.7kΩ is the standard recommended value for I2C at 100kHz and provides better noise margins.

Recommendation: Change R1, R2 from 10kΩ to 4.7kΩ.

6. Add power indicator LED

There is no visual indication that the board is powered. When debugging inside the payphone enclosure, it's helpful to see at a glance whether power is reaching the PCB.

Recommendation: Add a small LED + current-limiting resistor on the 5V rail.

7. Add a fuse on the power input

No overcurrent protection exists. A short anywhere downstream of the XL6009 could draw excessive current.

Recommendation: Add a resettable PTC fuse (e.g., 1A polyfuse) on the 5V output of the boost converter.

Low Priority (nice to have)

8. Add mounting holes

The PCB does not have dedicated mounting holes. It relies on the connector headers for mechanical support inside the phone enclosure.

Recommendation: Add 4x M3 mounting holes at the board corners.

9. Improve silkscreen

Add component values, orientation marks for polarized components (electrolytics, ICs), and connector pin 1 indicators to the silkscreen for easier assembly.

10. Consider single microcontroller

The current design uses two Arduino Micros (ATmega32U4) connected via I2C, with one bridging to the Pi over USB serial. A single more capable microcontroller (e.g., ATmega2560, RP2040, or ESP32-S3) could handle all peripherals directly and communicate with the Pi, eliminating the I2C bridge complexity and freeing up I/O pins. This would be a significant redesign but would simplify both hardware and firmware.

11. Consider integrated USB audio

Rather than relying on an external C-Media USB sound card connected to the Pi, a future revision could integrate an I2S audio codec (e.g., PCM5102A DAC + INMP441 mic) connected directly to the Pi's I2S pins. This would eliminate the USB sound card, reduce cable clutter, and give better control over audio routing at the hardware level.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions