Skip to the content
PCBKitNew board
2 layers100 × 64 mmAc tester production, the printed circuit board in 3D

Ac tester production

EVtivity/evtivity-ev-tester3

An open-source, EV-side charging simulator. It emulates an electric vehicle so you can test AC charging stations (EVSE) and CSMS backends on the bench, without a real car.

Size
100 × 64 mm
Copper layers
2
Thickness
1.6 mm
Parts
68
Nets
29
Pads
156
Tracks, vias
347, 94
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
27 Sep 2026
Updated
27 Sep 2026

Overview

Ac tester production is an open-source printed circuit board by EVtivity, from the EVtivity/evtivity-ev-tester repository on GitHub. It is a 2-layer board of 100 × 64 mm with 68 parts on 29 nets, routed with 347 tracks and 94 vias.

It is built around the AP2112K-3.3, TPS26621DRC and BAT54WS, with the PMEG2005AEA, 1N4148WS and CDSOD323-T15C among its other parts. Its parts include 19 resistors, 8 capacitors, 6 diodes, 5 transistors and 5 connectors.

Main components

7

README

README.md

EVtivity EV Tester (AC / J1772)

An open-source, EV-side charging simulator. It emulates an electric vehicle so you can test AC charging stations (EVSE) and CSMS backends on the bench, without a real car.

EVtivity EV Tester board

Built around a Seeed XIAO ESP32-S3 on a small carrier PCB, it drives the SAE J1772 / IEC 61851-1 Control Pilot line through states A, B, and C, reads the charger's offered current from the CP PWM, and reports proximity. A charger sees a full session lifecycle: vehicle detect, transaction start, Charging status, offered current, transaction stop.

Demos: the tester running in its 3D-printed enclosure, with more on the EVtivity YouTube channel.

What it does

  • Emulates the EV side of a Type 1 / SAE J1772 AC session.
  • Cycles three deliberate modes with the MODE button: Ready (State A), Charging (handshake in State B, then State C), Suspended (back to State B while plugged).
  • Reads the offered current from the Control Pilot PWM and shows it on the LCD.
  • Injects a pilot fault on demand to exercise the charger's fault handling.
  • 16x2 I2C LCD, a built-in web UI (mirrors the LCD, remote control), and optional MQTT remote control.

What it does not do

This is a low-voltage signaling tester. It does not draw current or measure energy. When you enter Charging the EVSE closes its contactor and opens a session, but because no real load is connected the charger's meter reads near zero. That is expected and by design. The LCD "offered" and "kW" values are computed from the pilot duty (what the charger advertises), not measured from current flow.

Web UI and MQTT control

Once on WiFi, the device serves a login-protected web control panel that mirrors the LCD and drives the session from a browser - the same MODE/STATS controls, the mode-to-OCPP status mapping, and a live MQTT panel. Hold MODE for 5 s (physical or on-screen) to open the WiFi/MQTT setup access point.

EV Tester web control panel

For automation, the tester also connects to an MQTT broker, taking mode and song commands while publishing its live state (retained) and availability (last-will). The repo ships a terminal console client, mqtt-test.py - run it, point it at your broker and topic, and scroll the commands with the arrow keys. See USER-MANUAL.html for the full command reference and how to run a local broker.

mqtt-test.py MQTT console client

3D-printed enclosure

An optional printed case houses the board, LCD, and J1772 inlet. It prints in three parts and fastens together with M3 screws. STL files are in enclosure/, and there is a build demo video.

Enclosure top coverEnclosure base plateEnclosure mounting bracket
Top
front cover: inlet, LCD, and button cutouts
Bottom
base plate
Mount
mounting bracket

Repository layout

PathWhat it is
firmware/ac_tester/The Arduino firmware for the XIAO ESP32-S3 (flash this).
jlcpcb/The KiCad design plus ready-to-order Gerbers, BOM, and pick-and-place files.
docs/HARDWARE.mdBuild guide: parts list, connector pinout, and how to wire a J1772 inlet.
enclosure/3D-printable case (STL files).
USER-MANUAL.htmlFull user manual (modes, buttons, LCD, web UI, MQTT).
mqtt-test.pyTerminal MQTT console client for driving the tester over a broker.
AC-tester-BOM-amazon.htmlBuy-links list for the parts you add yourself (the ones JLCPCB does not assemble).

Order the board

The jlcpcb/ folder has everything to order the board fully assembled from JLCPCB:

  1. Upload jlcpcb/ac-tester-gerbers.zip to fabricate the bare PCB.
  2. For assembly, upload jlcpcb/ac-tester-bom.csv (BOM) and jlcpcb/ac-tester-cpl.csv (component placement).

JLCPCB assembles the SMD parts on the board. The modules and hardware you add yourself - the Seeed XIAO ESP32-S3, the 16x2 I2C LCD, the U.FL antenna, the J1772 inlet, and the case hardware

To open or modify the design, use KiCad and jlcpcb/ac-tester-production.kicad_pro. jlcpcb/ac-tester-schematic.pdf and jlcpcb/ac-tester-3d-full.step are provided for reference and mechanical fit.

Assemble and wire it to a charger

The board is only the carrier. You also add a Seeed XIAO ESP32-S3, a 16x2 I2C LCD, a U.FL antenna, and a J1772 inlet (the vehicle-side socket the charger plugs into).

The one connection people ask about: this tester emulates the vehicle, so a charger's connector plugs into a J1772 inlet, and you wire that inlet's three signal lines to connector J1 on the board:

J1772 inletBoard J1
Control Pilot (CP)CP
Proximity (PP)PP
Protective Earth / GroundGND

The inlet's AC power pins are left unconnected. Full parts list, pinout, and step-by-step assembly are in docs/HARDWARE.md.

Build and flash the firmware

Target: Seeed XIAO ESP32-S3, Arduino-ESP32 core 3.x.

Using arduino-cli:

sh
arduino-cli core install esp32:esp32
arduino-cli compile --fqbn esp32:esp32:XIAO_ESP32S3 firmware/ac_tester
arduino-cli upload  --fqbn esp32:esp32:XIAO_ESP32S3 -p <your-port> firmware/ac_tester

Or open firmware/ac_tester/ac_tester.ino in the Arduino IDE, select the XIAO ESP32-S3 board, and upload.

The WiFi antenna is required. The XIAO ESP32-S3 has no onboard antenna. Clip on the external U.FL/IPEX antenna or WiFi will not work. WiFi is optional, though: with no credentials the device runs fully as a tester and you can hold MODE for 5 s to open a setup access point and configure WiFi/MQTT from your phone.

Weak WiFi / AUTH_EXPIRE on early XIAO ESP32-S3 boards. XIAO ESP32-S3 units made before August 2025 have a marginal RF front end: at full TX power the signal is distorted and the access point drops the connection with Reason 2 (AUTH_EXPIRE), even with the antenna on and the router nearby. The firmware already works around this by capping the WiFi TX power to 15 dBm (esp_wifi_set_max_tx_power), which restores a strong, reliable connection. Leave that in place; it is harmless on newer boards. This is a known Seeed issue - see Seeed's XIAO ESP32-S3 WiFi notes.

If the boot splash and jingle ever play twice. This is an interrupt-watchdog reset (TG1WDT_SYS_RST) during WiFi start-up, and it comes from the Arduino ESP32 core rather than this sketch. The core ships its prebuilt WiFi libraries with CONFIG_ESP_WIFI_IRAM_OPT and CONFIG_ESP_WIFI_RX_IRAM_OPT turned off (ESP-IDF turns both on by default) to save about 5 KB of IRAM, which leaves the WiFi driver's interrupt path running from flash. Any flash write disables the instruction cache while it runs, and if the WiFi hardware raises an interrupt in that window the handler faults and the watchdog resets the board. In short, on this platform a flash write while WiFi is running can reset the board. It is not the power supply, and it is not the display. The firmware handles it two ways: it shuts the radio down before every settings write, and it brings the WiFi PHY up in the first 20 ms of boot so the one write it cannot move (the radio's own calibration data, stored once after a first flash or a core upgrade) happens before the screen and the fanfare. If you add code to this firmware, never write to flash while WiFi is up - use the same pattern as stopWifiForFlash(). A complete fix requires building with ESP-IDF and CONFIG_ESP_WIFI_IRAM_OPT=y, which is not settable from the Arduino IDE or arduino-cli.

See USER-MANUAL.html for the modes, buttons, web UI, and MQTT command reference.

Safety and scope

This tester keeps everything at the low-voltage EV-signaling side of J1772, so it is safe to build and use on the bench. It is not a DC fast-charge tester and does not handle mains or high-voltage DC.

License

Dual-licensed by component: firmware under Apache-2.0, hardware under CERN-OHL-P-2.0. See LICENSE for details. You are free to build, modify, and sell the hardware and firmware; the EVtivity name and logo are not covered by these licenses.

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md.

Parts

68
QtyValueFootprintReferences
5100kR_0603_1608MetricR2, R4, R15, R20, R21
510kR_0603_1608MetricR14, R16, R17, R18, R19
52N7002SOT-23Q1, Q2, Q5, Q6, Q7
4LCDMountingHole_2.7mm_M2.5H1, H2H, H3, H4H
4MNTMountingHole_3.2mm_M3MH1, MH2, MH3, MH4
3100nFC_0603_1608MetricC4, C6, C7
3fiducialFiducial_1mm_Mask2mmFID1, FID2, FID3
210uFC_0603_1608MetricC3, C5
21nFC_0603_1608MetricC1, C2
2BAT54WSD_SOD-323D2, D3
2PMEG2005AEAD_SOD-323D7, D8
1+3V3TestPoint_Pad_1.5x1.5mmTP5
1+5VTestPoint_Pad_1.5x1.5mmTP4
11.3kR_0603_1608MetricR3
1110kR_0603_1608MetricR13
11N4148WSD_SOD-323D1
11kR_0603_1608MetricR9
11uFC_0603_1608MetricC8
12.74kR_0603_1608MetricR1
1220R_0603_1608MetricR10
1330R_0603_1608MetricR8
133kR_0603_1608MetricR7
1390kR_0603_1608MetricR11
151kR_0603_1608MetricR12
1AP2112K-3.3SOT-23-5U2
1CDSOD323-T15CD_SOD-323TVS2
1CPTestPoint_Pad_1.5x1.5mmTP1
1DC 5VBarrelJack_CUI_PJ-102AH_HorizontalJ2
1GNDTestPoint_Pad_1.5x1.5mmTP6
1I2C LCD 5VJST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ3
1J1772 CP/PP/GNDJST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ1
1MODEJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalSW1
1PESD3V3D_SOD-323D6
1PP_ADCTestPoint_Pad_1.5x1.5mmTP3
1PTC 1AFuse_1812_4532MetricF1
1SELECTJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalSW2
1SENSETestPoint_Pad_1.5x1.5mmTP2
1SMAJ6.0AD_SMATVS1
1TPS26621Texas_DRC0010JU3
1XIAO IOPinSocket_1x07_P2.54mm_VerticalJ6
1XIAO PWRPinSocket_1x07_P2.54mm_VerticalJ5
1piezoBuzzer_15x7.5RM7.6LS1

Questions

How big is the Ac tester production PCB?

It measures 100 × 64 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ac tester production use?

68 parts, built around the AP2112K-3.3, TPS26621DRC, BAT54WS and PMEG2005AEA. 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 Ac tester production KiCad files?

From the EVtivity/evtivity-ev-tester repository on GitHub, at the commit this page was made from: the board is jlcpcb/ac-tester-production.kicad_pcb and its schematic jlcpcb/ac-tester-production.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ac tester production design in my own project?

Its repository states no licence, so its author keeps all rights: ask EVtivity before reusing the design.

Similar boards

  • 2 layers96 × 76 mmWb2, the printed circuit board in 3D

    Wb2

    falseywinchnet/hf-active-antennas

    Open-hardware HF receive-antenna amplifiers: zero-flux loop amp, loop LNA, mini-whip. LTspice models, KiCad boards, JLCPCB packages. see license

    167 parts
  • 2 layersOkgo2mini, the printed circuit board in 3D

    Okgo2mini

    cuspaceflight/OkGo

    Rocket motor ignition and valve control from far, far away

    43 parts3
  • 4 layers70 × 54 mmPicoLab, the printed circuit board in 3D

    PicoLab

    CoretechR/PicoLab

    Web-GUI Embedded Multitool

    285 parts327GPL-3.0
  • 2 layers80 × 60 mmTwo phase charging, the printed circuit board in 3D

    Two phase charging

    HuntieDK/BMW-i3-two-phase-charging

    Extends the BMW i3 60Ah BEV/REX charging to use two phases

    73 parts8MIT
  • 8 layers99 × 61 mmBattery management system cell monitoring unit, the printed circuit board in 3D

    Battery management system cell monitoring unit

    gerhardmalberg/bms-cmu-bq79616-hardware

    Open-source 6S–16S battery monitoring hardware based on TI BQ79616-Q1. Includes KiCad designs, manufacturing files, and electrical, thermal and mechanical simulation studies.

    198 parts1CERN-OHL-P-2.0
  • 2 layers40 × 20 mmB GP8403-BRK R1.0, the printed circuit board in 3D

    B GP8403-BRK R1.0

    Boardoza/Boardoza_GP8403_Dual_Channel_I2C_DAC_Breakout_Board

    Dual-channel 12-bit I²C DAC GP8403 breakout board with selectable 0–5V or 0–10V analog voltage outputs.

    28 partsCC-BY-SA-4.0
  • 6 layers199 × 0.3 mmStrobe Controller, the printed circuit board in 3D

    Strobe Controller

    guatek/KiCAD-BUM-2.0

    KiCAD design for BUM 2.0 custom electronics

    106 parts