Skip to the content
2 layers65 × 100 mmJjy sim r3, the printed circuit board in 3D

JJY Simulator for ESP32-C3 / ESP8684

Size
65 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
93
Nets
59
Pads
245
Tracks, vias
430, 66
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
14 Apr 2026
Updated
27 Oct 2026

Overview

Jjy sim r3 is an open-source printed circuit board by shachi-lab, from the shachi-lab/jjy_sim repository on GitHub, published under the MIT licence. It is a 2-layer board of 65 × 100 mm with 93 parts on 59 nets, routed with 430 tracks and 66 vias.

It is built around the ESP32-C3-WROOM-02-H4, CH340K and RT9193-33GB, with the HN1C01FU-GR,LF, MF-FSMF020X-2 and WS2812B-2020 among its other parts. Its parts include 20 resistors, 19 capacitors, 5 ICs, 4 diodes and 3 switches. It belongs with the lEDs and displays boards and the ESP32 and RISC-V boards of this library.

Main components

6

README

README.md

📡 JJY-SIM R4 (with R3 design references)

Build your own JJY time-signal simulator with an ESP32-C3 or ESP8684!
This compact simulator reproduces the 40 kHz / 60 kHz JJY radio time signal using PWM output,
based on accurate time obtained from NTP.
R2, R3 and R4 share an ESP-IDF firmware codebase.

R4 is the latest model. The older R3 design files are retained for reference.

The firmware version is 1.2.0.

👉 README 日本語版はこちら


R4 / R3 / R2 layout

ItemR4 (latest model)R3 (older model, for reference)R2 (older model)
ExteriorAntenna inside the caseAntenna outside the caseSimilar to R3
MCUESP32-C3ESP8684 (ESP32-C2)ESP32-C3
Resonance selectionAutomatic switching via GPIO3On-board switchSolder jumpers
FirmwareShared source, esp32c3 buildShared source, esp32c2 buildShared source, esp32c3 build
Hardware design filesIncluded (r4 / r4.1, r4_ant)Included for reference (r3)Not included

R3 and R4 use PCB antennas. R4 stacks a main PCB and three antenna PCBs inside the case. R3 integrates the main circuitry and antenna on one PCB, with the antenna extending outside the case.

R2 has an exterior similar to R3, but uses an ESP32-C3 and solder jumpers for resonance selection. It can use the C3 build of the shared firmware. R2 hardware design files are not included in this repository.

The shared R2/R3/R4 firmware sources are in firmware/idf/jjy-sim. R4 is identified by the eFuse field USER_DATA_JJYSIM_HW_GENERATION set to 4. An unconfigured ESP32-C3 runs as R2. A self-built R4 requires this identification field to be programmed. eFuse writes are irreversible; verify the board and main/esp_efuse_custom_table.csv before programming.

See the USB flashing instructions (Japanese).

Board designs are in hardware/KiCad/r3, r4, r4.1 and r4_ant, with shared libraries in hardware/KiCad/lib. Each board has its own PLOT directory. Case models are in hardware/case_3d/r3 and r4.

hardware/KiCad/r4.1 contains an alternative component layout for the R4 PCB. The order of the L/C/R components in the resonant circuit has also been changed to accommodate the new layout.

🪛 Features

  • Generates JJY 40 kHz / 60 kHz signals from time obtained via NTP
  • Equipped with a PCB antenna (inside the case on R4)
  • Shows the time and operating status on an OLED display
  • Configures Wi-Fi and operating settings through a web browser
  • Supports Hourly Mode, Night Mode and a screen saver
  • Distributes time to devices on the LAN as an NTP server
  • Supports firmware updates over Wi-Fi via OTA updates

R4 exterior

JJY Simulator Rev.4

For reference: the older R3 model below

JJY Simulator Rev.3

🛠 Build and Flash (ESP-IDF / CLI)

Use ESP-IDF v5.5.4 and run these commands from firmware/idf/jjy-sim. Arduino builds are not supported.

R3 (ESP8684 / ESP32-C2):

bash
idf.py -B build-c2 -D IDF_TARGET=esp32c2 -D SDKCONFIG=sdkconfig.c2 build
idf.py -B build-c2 -D IDF_TARGET=esp32c2 -D SDKCONFIG=sdkconfig.c2 -p COMx flash monitor

R4 (ESP32-C3):

bash
idf.py -B build -D IDF_TARGET=esp32c3 -D SDKCONFIG=sdkconfig.c3 build
idf.py -B build -D IDF_TARGET=esp32c3 -D SDKCONFIG=sdkconfig.c3 -p COMx flash monitor

Replace COMx with your serial port. partitions.csv defines the OTA partition layout. Migration from the old layout requires USB flashing including the partition table, not just the application image.

Program the R4 identification eFuse

The ESP32-C3 on a self-built R4 needs the identification value 4. Do not run this procedure on R3. eFuse programming is irreversible.

In an ESP-IDF environment, change to firmware/idf/jjy-sim and replace COMx with the port of the target R4. These commands use a USB connection.

First, check the current value:

powershell
espefuse --chip esp32c3 -p COMx --before usb_reset --extend-efuse-table main/esp_efuse_custom_table.csv summary

Confirm that USER_DATA_JJYSIM_HW_GENERATION is 0 (unprogrammed) before writing 4 with the command below. If it is already 4, no write is needed. For any other value, do not attempt to overwrite it using this procedure.

powershell
espefuse --chip esp32c3 -p COMx --before usb_reset --extend-efuse-table main/esp_efuse_custom_table.csv burn_efuse USER_DATA_JJYSIM_HW_GENERATION 4

Review the target and changes shown by the tool, then follow its confirmation prompt. After programming, run the summary command again and confirm that the value is 4. Restart the board so that the firmware identifies it as R4.


🛠 Build and Flash (VSCode / GUI)

You can also develop this project using VSCode + the ESP-IDF Extension.

■ Recommended Extension

  • ESP-IDF Extension (Espressif)

By installing the extension in VSCode, you can perform the following from the GUI:

  • Build
  • Flash
  • Serial monitor

■ Setup

Set up your environment according to the ESP-IDF Extension instructions.

Once the extension is installed, you can run actions such as:

  • Build
  • Flash
  • Monitor

with a single click.

■ Workspace

When opening the project in VSCode, open JJY-SIM.code-workspace in the source-code folder then select your local ESP-IDF 5.5.4 installation and either C3 (R2 / R4) or C2 (R3) configuration.


⚙️ Usage

Refer to the model-specific manuals on the JJY-SIM support page for settings, screens and controls. R4 switches its resonance circuit automatically with the BAND setting. On R3, also set the on-board switch to match the selected BAND.


🔌 Pin Assignment (Main Signals)

FunctionGPIONotes
JJY PWM output10,4Modulated output signals, inverted A/B pair for the H-bridge
R4 BAND selection3R4 only; resonance circuit switching
CONFIG switch9Used for Wi-Fi setup (shared with BOOT pin)
ACT LED5Activity LED
IND LED0Status indicator LED (can be shared)
OLED Reset2OLED module reset
OLED SDA7OLED I2C data
OLED SCL6OLED I2C clock

🧾 File Structure

💻 Firmware

  • The firmware source code is located in the firmware/idf folder.
  • This firmware uses a rebuilt library, ported as an IDF component, based on the Arduino OLED driver library used in R2.
    This component is publicly available on GitHub.
    👉 SSD1306 OLED display driver
  • storage_key.h contains placeholder values and can be used as-is.
    For better security, you may want to replace them with your own values before building.

🧰 Hardware

  • The hardware design files are located in the hardware folder.

  • The schematic and PCB design data are in hardware/KiCad.

    • Saved with KiCad 10 (R4 design files require KiCad 10 or later)
    • Gerber data is included in hardware/KiCad/<revision>/PLOT, so the board can be fabricated as-is
  • The 3D case data is in hardware/case_3d.


🔧 DIY Assembly

R4 antenna

Building an R4 requires stacking three antenna PCBs. The antenna stack and main PCB fit inside the case.

PCB thickness: 1.6 mm for the main PCB and 0.8 mm for each antenna PCB.

OLED supports (R3 / R4)

Both R3 and R4 PCBs include tab-shaped sections for the OLED supports. Break these sections off during assembly and use them as supports for the OLED.

Case screws

Use hex M2 × 5 mm self-tapping screws to fasten the case.


📸 Appearance / Assembly Examples

The photos below show the R4 board and case.
The design uses a black PCB and a black case so that only the display appears to float visually.

JJY Simulator Rev.4 PCB JJY Simulator Rev.4 with case

R3 (for reference)

The photos below show the R3 board and case.

JJY Simulator Rev.3 PCB JJY Simulator Rev.3 with case

⚠️ Caution

The R4 antenna section becomes slightly warm during operation.

This device may radiate farther than expected.
Please make sure to comply with applicable radio regulations when experimenting with it.


🔗 Support / Documentation

For the latest information, setup guide, and detailed usage notes, please see the support page.
👉 JJY-SIM Support Page

Note: The support page is currently available in Japanese only.


📝 Attribution

JJY-SIM is released under the MIT License.
You are free to use, modify, and build upon this project.

When selling, distributing, or publicly releasing something based on JJY-SIM, please include attribution to Shachi-lab / JJY-SIM somewhere visible, such as the product page, documentation, README, package, or other accompanying materials.

Example:

  • Designed by Shachi-lab
  • Based on JJY-SIM by Shachi-lab
  • Inspired by JJY-SIM by Shachi-lab

Parts

93
QtyValueFootprintReferences
81, 2, 3, 4, 5, 6, 7, 8
71uCapacitor_SMD:C_0603_1608MetricC10, C12, C13, C14, C15, C16, C17
60Resistor_SMD:R_0603_1608MetricR6, R10, R11, R12, R13, R14
60.1uCapacitor_SMD:C_0603_1608MetricC2, C3, C5, C6, C8, C9
610kResistor_SMD:R_0603_1608MetricR1, R4, R5, R15, R16, R18
3TPTestPoint:TestPoint_THTPad_D1.5mm_Drill0.7mmTP1, TP2, TP3
210uCapacitor_SMD:C_0805_2012MetricC1, C7
24.7Resistor_SMD:R_0603_1608MetricR2, R3
24.7uCapacitor_SMD:C_0603_1608MetricC18, C19
25.1kResistor_SMD:R_0603_1608MetricR19, R20
2G***kibuzzard-68D2B4BBkibuzzard-1, kibuzzard-28
2LOGOJJY-SIM:Shachi-lab_LOGO_15mmG***, G***1
10.022uCapacitor_SMD:C_0603_1608MetricC4
10.22uCapacitor_SMD:C_0603_1608MetricC11
11kResistor_SMD:R_0603_1608MetricR8
12.2kResistor_SMD:R_0603_1608MetricR9
1390kResistor_SMD:R_0603_1608MetricR17
15.6kResistor_SMD:R_0603_1608MetricR7
1AM1025EAJJY-SIM:eSOP-8_3.9x5.05mm_EP_3.1x2.2mm_P1.27mmU1
1ANT-AJJY-SIM:Jumper-2_TH_3.81mmJP1
1BANDJJY-SIM:MSK-12C02SW1
1BLUELED_SMD:LED_0603_1608MetricD3
1CH340KJJY-SIM:SSOP-10-1EP_3.9x4.9mm_P1mm_EP2.1x3.3mmU2
1CONFIGJJY-SIM:SKRPACE010SW3
1ESP32-C3-WROOM-02JJY-SIM:ESP32-C3-WROOM-02,ESP8684-WROOM-2CU3
1FBInductor_SMD:L_0603_1608MetricL1
1G***kibuzzard-69816480kibuzzard-8
1G***kibuzzard-69820ADFkibuzzard-4
1G***kibuzzard-69820977kibuzzard-3
1G***kibuzzard-6A179A92kibuzzard-6A179A92
1G***kibuzzard-69867CABkibuzzard-9
1G***kibuzzard-665B3587kibuzzard-15
1G***kibuzzard-665A8DD6kibuzzard-18
1G***kibuzzard-665B357Fkibuzzard-16
1G***kibuzzard-6646C6ACkibuzzard-6
1G***kibuzzard-669B6DC4kibuzzard-12
1G***kibuzzard-68E061D7kibuzzard-13
1G***kibuzzard-665B35AEkibuzzard-20
1G***kibuzzard-669B4532kibuzzard-19
1G***kibuzzard-68D3A9C1kibuzzard-5
1G***kibuzzard-698209E3kibuzzard-10
1G***kibuzzard-68D3A910kibuzzard-7
1G***kibuzzard-669B16B9kibuzzard-17
1G***kibuzzard-6982098Fkibuzzard-2
1G***kibuzzard-69965DBCkibuzzard-14
1G***kibuzzard-669B6BC9kibuzzard-11
1GNDJJY-SIM:Jumper-2_TH_3.81mmJP2
1HN1C01FU-GRJJY-SIM:2-2J1AQ1
1MF-FSMF020X-2Fuse:Fuse_1206_3216Metric_Pad1.42x1.75mm_HandSolderF1
1REDLED_SMD:LED_0603_1608MetricD1
1RESETJJY-SIM:SKRPACE010SW2
1RT9193-33GBPackage_TO_SOT_SMD:SOT-23-5U4
1UG-2864HLJJY-SIM:UG-2864-FPC (Reverse)U5
1USB_C_Plug_USB2.0JJY-SIM:5077CR-16SMC2-BK-TR_ExtP1
1WS2812B-2020LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mmD4
1YGLED_SMD:LED_0603_1608MetricD2

The 92 most common of 93 parts.

More from shachi-lab/jjy_sim

2
  • 2 layers50 × 67.5 mmJjy sim r4, the printed circuit board in 3D

    Jjy sim r4

    shachi-lab/jjy_sim

    JJY Simulator for ESP32-C3 / ESP8684

    75 parts6MIT
  • 2 layers100 × 100 mmJjy sim r41 ant, the printed circuit board in 3D

    Jjy sim r41 ant

    shachi-lab/jjy_sim

    JJY Simulator for ESP32-C3 / ESP8684

    63 parts6MIT

Similar boards

  • 2 layers200 × 130.3 mmMainBorad, the printed circuit board in 3D

    MainBorad

    wakimizufu/TBSEQ

    258 parts
  • 2 layers17.5 × 40.3 mmUsbMeter2, the printed circuit board in 3D

    UsbMeter2

    TheBadZhang/usbMeter

    Type-A USB 双向电流电压表

    48 parts
  • 4 layers59 × 33.8 mmCYM1A113, the printed circuit board in 3D

    CYM1A113

    trezor/trezor-hardware

    :wrench: Hardware design of Trezor

    133 parts228
  • 4 layers124.6 × 68.7 mmOssc board, the printed circuit board in 3D

    Ossc board

    marqs85/ossc_pcb

    ossc pcb design files

    265 parts163
  • 2 layers103.9 × 43.5 mmCps2 digiav, the printed circuit board in 3D

    Cps2 digiav

    marqs85/cps2_digiav

    CPS2 digital AV interface

    146 parts49
  • 4 layers79 × 39.1 mmConnector pcb, the printed circuit board in 3D

    Connector pcb

    festlv/mso5000-logic-probe

    Cheap logic probe for Rigol MSO5000-series oscilloscopes

    39 parts37MIT
  • 2 layers212.5 × 99.5 mmOssc pro, the printed circuit board in 3D

    Ossc pro

    marqs85/ossc_pro_hw

    OSSC Pro HW files

    499 parts31CERN-OHL-P-2.0

Questions

How big is the Jjy sim r3 PCB?

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

What parts does the Jjy sim r3 use?

93 parts, built around the ESP32-C3-WROOM-02-H4, CH340K, RT9193-33GB and HN1C01FU-GR,LF. 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 Jjy sim r3 KiCad files?

From the shachi-lab/jjy_sim repository on GitHub, at the commit this page was made from: the board is hardware/KiCad/r3/jjy_sim_r3.kicad_pcb and its schematic hardware/KiCad/r3/jjy_sim_r3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Jjy sim r3 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).