From 5189f348825d809de04fc1a97fdfdc8ddbf06718 Mon Sep 17 00:00:00 2001 From: Michele Bigi Date: Mon, 17 Aug 2026 00:12:30 +0200 Subject: [PATCH] Add TS3425UA-3x4x2.5-160 SMD tactile switch Symbol + footprint reconstructed from manvalan/DigiRadio's EasyEDA project (same method as the FSC-BT1035 footprint), cross-checked against the manufacturer datasheet found in that same project. The datasheet's own circuit diagram shows two independent, mechanically -ganged contact pairs (not a simple SPST), reproduced faithfully in the symbol. Pin numbering preserved exactly as extracted, kept internally consistent between symbol and footprint. --- MANIFEST.csv | 2 + README.md | 19 ++++++ .../TS3425UA-3x4x2.5-160.kicad_mod | 29 +++++++++ fp-lib-table | 1 + fp-lib-table.global | 1 + sym-lib-table | 1 + sym-lib-table.global | 1 + .../mechanical/TS3425UA-3x4x2.5-160.kicad_sym | 63 +++++++++++++++++++ 8 files changed, 117 insertions(+) create mode 100644 footprints/mechanical/TS3425UA-3x4x2.5-160.pretty/TS3425UA-3x4x2.5-160.kicad_mod create mode 100644 symbols/mechanical/TS3425UA-3x4x2.5-160.kicad_sym diff --git a/MANIFEST.csv b/MANIFEST.csv index e2b24a2..a207284 100644 --- a/MANIFEST.csv +++ b/MANIFEST.csv @@ -543,3 +543,5 @@ symbol,/var/folders/cv/lwgyj_k14gx2rc3t2rlt29s80000gn/T/snapeda_prgp47iz/TLV320A footprint,/var/folders/cv/lwgyj_k14gx2rc3t2rlt29s80000gn/T/snapeda_prgp47iz/QFN50P500X500X100-33N.kicad_mod,footprints/audio/TLV320AIC3104IRHBR.pretty/QFN50P500X500X100-33N.kicad_mod,NEW,4d708f625a47c33414d9883c479a00a1819e666a2edf63016c803211893fd038,category=audio 3d-model,/var/folders/cv/lwgyj_k14gx2rc3t2rlt29s80000gn/T/snapeda_prgp47iz/TLV320AIC3104IRHBR.step,3dmodels/audio/TLV320AIC3104IRHBR.step,NEW,654de545fab7075336f7ddce6521d1562e7c414d6930785a7860a5e2fdf7c5ee,category=audio footprint,/private/tmp/claude-501/-Users-michelebigi-Development-mikylab-kikad-library/1f1c2942-9607-4b23-b424-c9eee772a9a0/scratchpad/FSC-BT1035.kicad_mod,footprints/rf/FSC-BT1035.pretty/FSC-BT1035.kicad_mod,NEW,fe476fbba379d3ef2c26823bf72d4397190227bed02da4ed5ead7d546d1fcadb,category=rf +symbol,/private/tmp/claude-501/-Users-michelebigi-Development-mikylab-kikad-library/1f1c2942-9607-4b23-b424-c9eee772a9a0/scratchpad/TS3425UA-3x4x2.5-160.kicad_sym,symbols/mechanical/TS3425UA-3x4x2.5-160.kicad_sym,NEW,f7a3da138a2c49b51ecf2f024fa79c82e6fe80e7f7a48e11ad243909181291b7,category=mechanical +footprint,/private/tmp/claude-501/-Users-michelebigi-Development-mikylab-kikad-library/1f1c2942-9607-4b23-b424-c9eee772a9a0/scratchpad/TS3425UA-3x4x2.5-160.kicad_mod,footprints/mechanical/TS3425UA-3x4x2.5-160.pretty/TS3425UA-3x4x2.5-160.kicad_mod,NEW,355ee664932f41d9ba6e9a5e805839e1dbcd0e64d050b2c06388d1b42e3b793d,category=mechanical diff --git a/README.md b/README.md index 85e25d6..2530dc9 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,25 @@ reference *standard* KiCad footprint libraries (e.g. `Package_SO`, scope (they ship with every KiCad install) and are not checked or reported as errors. +### TS3425UA-3x4x2.5-160 (Chuangdou SMD tactile switch) + +Symbol + footprint reconstructed the same way as FSC-BT1035, from the +same `manvalan/DigiRadio` EasyEDA project (4 `PAD` + `POLY` records for +the footprint, 4 `PIN` records for the symbol). Cross-checked against +the manufacturer's own datasheet (found via the same project's +`Hardware/DATASHEET/TS3425UA.pdf`): body 4.2 x 3.4mm, actuator 3.0 x 2.5 +x 1.9mm, 160gf actuation, and critically its own circuit diagram, which +shows the 4 legs as **two independent, mechanically-ganged contact +pairs** (pins ①-② and ③-④, both closing together on a single press) -- +the symbol here reproduces that same two-switch depiction rather than +inventing a simplified SPST. Pin numbers were preserved exactly as +extracted from the source (kept internally consistent between the +symbol and footprint, i.e. schematic pin "N" always nets to footprint +pad "N" -- their absolute position on the page doesn't need to match +the datasheet's own circle-number diagram for this to be electrically +correct, since a symmetric ganged switch has no "wrong side"). No 3D +model included. + ### FSC-BT1035 (Feasycom Bluetooth module) `symbols/rf/FSC-BT1035.kicad_sym` (Feasycom Bluetooth 5.2 dual-mode diff --git a/footprints/mechanical/TS3425UA-3x4x2.5-160.pretty/TS3425UA-3x4x2.5-160.kicad_mod b/footprints/mechanical/TS3425UA-3x4x2.5-160.pretty/TS3425UA-3x4x2.5-160.kicad_mod new file mode 100644 index 0000000..5df87ca --- /dev/null +++ b/footprints/mechanical/TS3425UA-3x4x2.5-160.pretty/TS3425UA-3x4x2.5-160.kicad_mod @@ -0,0 +1,29 @@ +(footprint "TS3425UA-3x4x2.5-160" + (version 20241229) + (generator "mikilab_manual_conversion") + (layer "F.Cu") + (descr "Chuangdou TS3425UA-3x4x2.5-160 SMD tactile switch, 4.2x3.4mm body, 160gf actuation. Geometry extracted from manvalan/DigiRadio EasyEDA project (fabricated design); pad layout verified against the official datasheet circuit/PCB diagrams.") + (tags "tactile switch SMD 4-pin") + (attr smd) + (fp_text reference "REF**" (at 0 -3) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value "TS3425UA-3x4x2.5-160" (at 0 3) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad "1" smd rect (at -2.175 -1.0751) (size 1.25 0.95) (layers "F.Cu" "F.Paste" "F.Mask")) + (pad "2" smd rect (at 2.175 -1.0751) (size 1.25 0.95) (layers "F.Cu" "F.Paste" "F.Mask")) + (pad "3" smd rect (at -2.175 1.0751) (size 1.25 0.95) (layers "F.Cu" "F.Paste" "F.Mask")) + (pad "4" smd rect (at 2.175 1.0751) (size 1.25 0.95) (layers "F.Cu" "F.Paste" "F.Mask")) + (fp_line (start -0.7608 0.6355) (end 0.7632 0.6355) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start -0.7608 -0.6345) (end 0.7632 -0.6345) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start -2.159 -0.3689) (end -2.159 0.3688) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start 2.159 -1.7812) (end -2.159 -1.7812) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start 2.159 0.3688) (end 2.159 -0.3689) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start 2.159 1.7999) (end 2.159 1.7811) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start -2.1 1.7999) (end 2.159 1.7999) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start -2.1 1.7811) (end -2.1 1.7999) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start 0.7632 -0.6345) (end 0.762 0.6349) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_line (start -0.7608 0.6355) (end -0.762 -0.6351) (stroke (width 0.254) (type default)) (layer "F.SilkS")) + (fp_rect (start -2.35 -1.95) (end 2.35 1.95) (stroke (width 0.05) (type default)) (layer "F.CrtYd")) +) diff --git a/fp-lib-table b/fp-lib-table index 50165a7..2d90725 100644 --- a/fp-lib-table +++ b/fp-lib-table @@ -13,6 +13,7 @@ (lib (name "MIKILAB_hdmi")(type "KiCad")(uri "${KIPRJMOD}/footprints/interface/hdmi.pretty")(options "")(descr "hdmi.pretty")) (lib (name "MIKILAB_usb3_esd_son50_10")(type "KiCad")(uri "${KIPRJMOD}/footprints/interface/usb3_esd_son50-10.pretty")(options "")(descr "usb3_esd_son50-10.pretty")) (lib (name "MIKILAB_usb3_micro_ab")(type "KiCad")(uri "${KIPRJMOD}/footprints/interface/usb3_micro_ab.pretty")(options "")(descr "usb3_micro_ab.pretty")) + (lib (name "MIKILAB_TS3425UA_3x4x2_5_160")(type "KiCad")(uri "${KIPRJMOD}/footprints/mechanical/TS3425UA-3x4x2.5-160.pretty")(options "")(descr "TS3425UA-3x4x2.5-160.pretty")) (lib (name "MIKILAB_ESP32_C3_MINI_1")(type "KiCad")(uri "${KIPRJMOD}/footprints/microcontrollers/ESP32-C3-MINI-1.pretty")(options "")(descr "ESP32-C3-MINI-1.pretty")) (lib (name "MIKILAB_ESP32_C3_WROOM_02")(type "KiCad")(uri "${KIPRJMOD}/footprints/microcontrollers/ESP32-C3-WROOM-02.pretty")(options "")(descr "ESP32-C3-WROOM-02.pretty")) (lib (name "MIKILAB_ESP32_C5_WROOM_1")(type "KiCad")(uri "${KIPRJMOD}/footprints/microcontrollers/ESP32-C5-WROOM-1.pretty")(options "")(descr "ESP32-C5-WROOM-1.pretty")) diff --git a/fp-lib-table.global b/fp-lib-table.global index e7c4d51..df03450 100644 --- a/fp-lib-table.global +++ b/fp-lib-table.global @@ -13,6 +13,7 @@ (lib (name "MIKILAB_hdmi")(type "KiCad")(uri "${MIKILAB}/footprints/interface/hdmi.pretty")(options "")(descr "hdmi.pretty")) (lib (name "MIKILAB_usb3_esd_son50_10")(type "KiCad")(uri "${MIKILAB}/footprints/interface/usb3_esd_son50-10.pretty")(options "")(descr "usb3_esd_son50-10.pretty")) (lib (name "MIKILAB_usb3_micro_ab")(type "KiCad")(uri "${MIKILAB}/footprints/interface/usb3_micro_ab.pretty")(options "")(descr "usb3_micro_ab.pretty")) + (lib (name "MIKILAB_TS3425UA_3x4x2_5_160")(type "KiCad")(uri "${MIKILAB}/footprints/mechanical/TS3425UA-3x4x2.5-160.pretty")(options "")(descr "TS3425UA-3x4x2.5-160.pretty")) (lib (name "MIKILAB_ESP32_C3_MINI_1")(type "KiCad")(uri "${MIKILAB}/footprints/microcontrollers/ESP32-C3-MINI-1.pretty")(options "")(descr "ESP32-C3-MINI-1.pretty")) (lib (name "MIKILAB_ESP32_C3_WROOM_02")(type "KiCad")(uri "${MIKILAB}/footprints/microcontrollers/ESP32-C3-WROOM-02.pretty")(options "")(descr "ESP32-C3-WROOM-02.pretty")) (lib (name "MIKILAB_ESP32_C5_WROOM_1")(type "KiCad")(uri "${MIKILAB}/footprints/microcontrollers/ESP32-C5-WROOM-1.pretty")(options "")(descr "ESP32-C5-WROOM-1.pretty")) diff --git a/sym-lib-table b/sym-lib-table index effcfdd..ded5d7a 100644 --- a/sym-lib-table +++ b/sym-lib-table @@ -97,6 +97,7 @@ (lib (name "MIKILAB_Timer_RTC")(type "KiCad")(uri "${KIPRJMOD}/symbols/logic/Timer_RTC.kicad_sym")(options "")(descr "Timer_RTC")) (lib (name "MIKILAB_Jumper")(type "KiCad")(uri "${KIPRJMOD}/symbols/mechanical/Jumper.kicad_sym")(options "")(descr "Jumper")) (lib (name "MIKILAB_Mechanical")(type "KiCad")(uri "${KIPRJMOD}/symbols/mechanical/Mechanical.kicad_sym")(options "")(descr "Mechanical")) + (lib (name "MIKILAB_TS3425UA_3x4x2_5_160")(type "KiCad")(uri "${KIPRJMOD}/symbols/mechanical/TS3425UA-3x4x2.5-160.kicad_sym")(options "")(descr "TS3425UA-3x4x2.5-160")) (lib (name "MIKILAB_Memory_EEPROM")(type "KiCad")(uri "${KIPRJMOD}/symbols/memory/Memory_EEPROM.kicad_sym")(options "")(descr "Memory_EEPROM")) (lib (name "MIKILAB_Memory_EPROM")(type "KiCad")(uri "${KIPRJMOD}/symbols/memory/Memory_EPROM.kicad_sym")(options "")(descr "Memory_EPROM")) (lib (name "MIKILAB_Memory_Flash")(type "KiCad")(uri "${KIPRJMOD}/symbols/memory/Memory_Flash.kicad_sym")(options "")(descr "Memory_Flash")) diff --git a/sym-lib-table.global b/sym-lib-table.global index 2fe1fe4..f6b9a4d 100644 --- a/sym-lib-table.global +++ b/sym-lib-table.global @@ -97,6 +97,7 @@ (lib (name "MIKILAB_Timer_RTC")(type "KiCad")(uri "${MIKILAB}/symbols/logic/Timer_RTC.kicad_sym")(options "")(descr "Timer_RTC")) (lib (name "MIKILAB_Jumper")(type "KiCad")(uri "${MIKILAB}/symbols/mechanical/Jumper.kicad_sym")(options "")(descr "Jumper")) (lib (name "MIKILAB_Mechanical")(type "KiCad")(uri "${MIKILAB}/symbols/mechanical/Mechanical.kicad_sym")(options "")(descr "Mechanical")) + (lib (name "MIKILAB_TS3425UA_3x4x2_5_160")(type "KiCad")(uri "${MIKILAB}/symbols/mechanical/TS3425UA-3x4x2.5-160.kicad_sym")(options "")(descr "TS3425UA-3x4x2.5-160")) (lib (name "MIKILAB_Memory_EEPROM")(type "KiCad")(uri "${MIKILAB}/symbols/memory/Memory_EEPROM.kicad_sym")(options "")(descr "Memory_EEPROM")) (lib (name "MIKILAB_Memory_EPROM")(type "KiCad")(uri "${MIKILAB}/symbols/memory/Memory_EPROM.kicad_sym")(options "")(descr "Memory_EPROM")) (lib (name "MIKILAB_Memory_Flash")(type "KiCad")(uri "${MIKILAB}/symbols/memory/Memory_Flash.kicad_sym")(options "")(descr "Memory_Flash")) diff --git a/symbols/mechanical/TS3425UA-3x4x2.5-160.kicad_sym b/symbols/mechanical/TS3425UA-3x4x2.5-160.kicad_sym new file mode 100644 index 0000000..bf353b3 --- /dev/null +++ b/symbols/mechanical/TS3425UA-3x4x2.5-160.kicad_sym @@ -0,0 +1,63 @@ +(kicad_symbol_lib + (version 20241209) + (generator "kicad_symbol_editor") + (symbol "TS3425UA-3x4x2.5-160" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "SW" + (at -7.62 8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "TS3425UA-3x4x2.5-160" + (at -7.62 -8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "MIKILAB_TS3425UA_3x4x2_5_160:TS3425UA-3x4x2.5-160" + (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Description" "SMD tactile switch, 4-pin (2 ganged contact pairs), 160gf actuation force" + (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "TS3425UA-3x4x2.5-160_0_1" + (polyline (pts (xy -2.54 5.08) (xy 2.54 5.08)) (stroke (width 0)(type default)) (fill (type none))) + (polyline (pts (xy -1.27 5.08) (xy 1.905 6.858)) (stroke (width 0)(type default)) (fill (type none))) + (circle (center -2.54 5.08) (radius 0.254) (stroke (width 0)(type default)) (fill (type none))) + (circle (center 2.54 5.08) (radius 0.254) (stroke (width 0)(type default)) (fill (type none))) + (polyline (pts (xy -2.54 -5.08) (xy 2.54 -5.08)) (stroke (width 0)(type default)) (fill (type none))) + (polyline (pts (xy -1.27 -5.08) (xy 1.905 -3.302)) (stroke (width 0)(type default)) (fill (type none))) + (circle (center -2.54 -5.08) (radius 0.254) (stroke (width 0)(type default)) (fill (type none))) + (circle (center 2.54 -5.08) (radius 0.254) (stroke (width 0)(type default)) (fill (type none))) + (pin passive line + (at -7.62 5.08 0) + (length 5.08) + (name "3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 5.08 180) + (length 5.08) + (name "4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -7.62 -5.08 0) + (length 5.08) + (name "1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 7.62 -5.08 180) + (length 5.08) + (name "2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) +)