summaryrefslogtreecommitdiff
path: root/pcb
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-05-24 13:52:16 +0200
committerxengineering <me@xengineering.eu>2025-05-24 13:52:16 +0200
commit6db34475d1935f368bec60f530f88cd066924849 (patch)
tree3ba91953c081566f27a5803fe24d7d8037854cdf /pcb
parent20796b28141ca1e1502675028d7f674cccff3c75 (diff)
downloadiot-contact-6db34475d1935f368bec60f530f88cd066924849.tar
iot-contact-6db34475d1935f368bec60f530f88cd066924849.tar.zst
iot-contact-6db34475d1935f368bec60f530f88cd066924849.zip
pcb: Add voltage divider for PCB versioning
This voltage divider provides an analog voltage between GND and +3.3V to indicate which hardware revision this board is. Thus the same firmware image can be used on multiple PCB versions compensating the hardware differences in software. The resistor combinations are calculated by `tools/resistory_selector.py`.
Diffstat (limited to 'pcb')
-rw-r--r--pcb/iot-contact.kicad_sch490
-rw-r--r--pcb/processor.kicad_sch11
2 files changed, 492 insertions, 9 deletions
diff --git a/pcb/iot-contact.kicad_sch b/pcb/iot-contact.kicad_sch
index 9eee96f..2ac0831 100644
--- a/pcb/iot-contact.kicad_sch
+++ b/pcb/iot-contact.kicad_sch
@@ -1843,6 +1843,130 @@
)
(embedded_fonts no)
)
+ (symbol "Device:R"
+ (pin_numbers
+ (hide yes)
+ )
+ (pin_names
+ (offset 0)
+ )
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (property "Reference" "R"
+ (at 2.032 0 90)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ (property "Value" "R"
+ (at 0 0 90)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ (property "Footprint" ""
+ (at -1.778 0 90)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Datasheet" "~"
+ (at 0 0 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Description" "Resistor"
+ (at 0 0 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "ki_keywords" "R res resistor"
+ (at 0 0 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "ki_fp_filters" "R_*"
+ (at 0 0 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (symbol "R_0_1"
+ (rectangle
+ (start -1.016 -2.54)
+ (end 1.016 2.54)
+ (stroke
+ (width 0.254)
+ (type default)
+ )
+ (fill
+ (type none)
+ )
+ )
+ )
+ (symbol "R_1_1"
+ (pin passive line
+ (at 0 3.81 270)
+ (length 1.27)
+ (name "~"
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ (number "1"
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ )
+ (pin passive line
+ (at 0 -3.81 90)
+ (length 1.27)
+ (name "~"
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ (number "2"
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ )
+ )
+ (embedded_fonts no)
+ )
(symbol "Switch:SW_Push"
(pin_numbers
(hide yes)
@@ -2230,9 +2354,19 @@
)
(uuid "56f4af8c-1572-4497-98f2-10a81ab55e1d")
)
+ (text "PCB versioning"
+ (exclude_from_sim no)
+ (at 116.332 122.174 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ (uuid "8ffab84b-2909-4547-976c-9674893a87fe")
+ )
(text "TODO: RMII connection"
(exclude_from_sim no)
- (at 109.474 82.55 0)
+ (at 109.982 70.104 0)
(effects
(font
(size 1.27 1.27)
@@ -2253,6 +2387,12 @@
(uuid "339686e0-bcb6-47c9-8375-f2246251856d")
)
(junction
+ (at 115.57 104.14)
+ (diameter 0)
+ (color 0 0 0 0)
+ (uuid "d7a5ded7-cab0-44bc-bcb3-51d295ef17c4")
+ )
+ (junction
(at 116.84 53.34)
(diameter 0)
(color 0 0 0 0)
@@ -2310,6 +2450,16 @@
)
(wire
(pts
+ (xy 115.57 102.87) (xy 115.57 104.14)
+ )
+ (stroke
+ (width 0)
+ (type default)
+ )
+ (uuid "1020a578-763e-4bf0-98ef-3e843e6e7cd5")
+ )
+ (wire
+ (pts
(xy 55.88 80.01) (xy 66.04 80.01)
)
(stroke
@@ -2330,7 +2480,7 @@
)
(wire
(pts
- (xy 111.76 165.1) (xy 134.62 165.1)
+ (xy 105.41 165.1) (xy 134.62 165.1)
)
(stroke
(width 0)
@@ -2350,7 +2500,7 @@
)
(wire
(pts
- (xy 109.22 97.79) (xy 109.22 167.64)
+ (xy 102.87 107.95) (xy 102.87 167.64)
)
(stroke
(width 0)
@@ -2360,7 +2510,7 @@
)
(wire
(pts
- (xy 111.76 95.25) (xy 111.76 165.1)
+ (xy 105.41 105.41) (xy 105.41 165.1)
)
(stroke
(width 0)
@@ -2550,6 +2700,16 @@
)
(wire
(pts
+ (xy 115.57 104.14) (xy 115.57 105.41)
+ )
+ (stroke
+ (width 0)
+ (type default)
+ )
+ (uuid "668ac295-8e98-4bec-8a6a-9e0f9977aa67")
+ )
+ (wire
+ (pts
(xy 241.3 83.82) (xy 245.11 83.82)
)
(stroke
@@ -2560,6 +2720,26 @@
)
(wire
(pts
+ (xy 115.57 104.14) (xy 127 104.14)
+ )
+ (stroke
+ (width 0)
+ (type default)
+ )
+ (uuid "6ecbd238-9a11-40af-a479-f3c1c33f4443")
+ )
+ (wire
+ (pts
+ (xy 115.57 113.03) (xy 115.57 114.3)
+ )
+ (stroke
+ (width 0)
+ (type default)
+ )
+ (uuid "6f33808b-14aa-42f0-bfaf-5d5d041eda6f")
+ )
+ (wire
+ (pts
(xy 170.18 53.34) (xy 170.18 58.42)
)
(stroke
@@ -2580,7 +2760,7 @@
)
(wire
(pts
- (xy 91.44 97.79) (xy 109.22 97.79)
+ (xy 91.44 107.95) (xy 102.87 107.95)
)
(stroke
(width 0)
@@ -2630,6 +2810,16 @@
)
(wire
(pts
+ (xy 115.57 93.98) (xy 115.57 95.25)
+ )
+ (stroke
+ (width 0)
+ (type default)
+ )
+ (uuid "863152a8-b32a-4cee-ac15-5a3388895411")
+ )
+ (wire
+ (pts
(xy 55.88 97.79) (xy 66.04 97.79)
)
(stroke
@@ -2900,7 +3090,7 @@
)
(wire
(pts
- (xy 91.44 95.25) (xy 111.76 95.25)
+ (xy 91.44 105.41) (xy 105.41 105.41)
)
(stroke
(width 0)
@@ -2920,7 +3110,7 @@
)
(wire
(pts
- (xy 109.22 167.64) (xy 134.62 167.64)
+ (xy 102.87 167.64) (xy 134.62 167.64)
)
(stroke
(width 0)
@@ -3248,6 +3438,76 @@
)
)
(symbol
+ (lib_id "Device:R")
+ (at 115.57 109.22 0)
+ (unit 1)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
+ (fields_autoplaced yes)
+ (uuid "25ff6048-df12-4801-a5fa-10858ec580ea")
+ (property "Reference" "R2"
+ (at 118.11 107.9499 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (justify left)
+ )
+ )
+ (property "Value" "180R"
+ (at 118.11 110.4899 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (justify left)
+ )
+ )
+ (property "Footprint" ""
+ (at 113.792 109.22 90)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Datasheet" "~"
+ (at 115.57 109.22 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Description" "Resistor"
+ (at 115.57 109.22 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (pin "1"
+ (uuid "4594fa96-7bf7-4a55-b5cf-06cd56d16577")
+ )
+ (pin "2"
+ (uuid "b8ec48f2-d366-4783-a0c0-ce6e9d04ad8c")
+ )
+ (instances
+ (project ""
+ (path "/5defd195-0277-4d04-9f5f-69e505c9845c"
+ (reference "R2")
+ (unit 1)
+ )
+ )
+ )
+ )
+ (symbol
(lib_id "Switch:SW_Push")
(at 142.24 142.24 0)
(mirror y)
@@ -3334,6 +3594,76 @@
)
)
(symbol
+ (lib_id "Device:R")
+ (at 115.57 99.06 0)
+ (unit 1)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
+ (fields_autoplaced yes)
+ (uuid "44194e8c-d4ca-4f3b-8f0c-38d2daec1648")
+ (property "Reference" "R1"
+ (at 118.11 97.7899 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (justify left)
+ )
+ )
+ (property "Value" "75k"
+ (at 118.11 100.3299 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (justify left)
+ )
+ )
+ (property "Footprint" ""
+ (at 113.792 99.06 90)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Datasheet" "~"
+ (at 115.57 99.06 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Description" "Resistor"
+ (at 115.57 99.06 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (pin "2"
+ (uuid "4c288ead-2ab6-4e25-a3f0-01cafd4880ac")
+ )
+ (pin "1"
+ (uuid "28fc83dd-c36e-444e-9a1b-af275a24160b")
+ )
+ (instances
+ (project ""
+ (path "/5defd195-0277-4d04-9f5f-69e505c9845c"
+ (reference "R1")
+ (unit 1)
+ )
+ )
+ )
+ )
+ (symbol
(lib_id "Device:LED")
(at 181.61 129.54 90)
(unit 1)
@@ -4051,6 +4381,72 @@
)
)
(symbol
+ (lib_id "power:+3V3")
+ (at 115.57 93.98 0)
+ (unit 1)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
+ (fields_autoplaced yes)
+ (uuid "b8d6d94c-727e-456b-b826-af3fd7c72013")
+ (property "Reference" "#PWR09"
+ (at 115.57 97.79 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Value" "+3V3"
+ (at 115.57 88.9 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ (property "Footprint" ""
+ (at 115.57 93.98 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Datasheet" ""
+ (at 115.57 93.98 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Description" "Power symbol creates a global label with name \"+3V3\""
+ (at 115.57 93.98 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (pin "1"
+ (uuid "4c5e5d17-e7b8-4575-85c6-050868f487a2")
+ )
+ (instances
+ (project ""
+ (path "/5defd195-0277-4d04-9f5f-69e505c9845c"
+ (reference "#PWR09")
+ (unit 1)
+ )
+ )
+ )
+ )
+ (symbol
(lib_id "power:GND")
(at 181.61 138.43 0)
(unit 1)
@@ -4184,6 +4580,72 @@
)
)
(symbol
+ (lib_id "power:GND")
+ (at 115.57 114.3 0)
+ (unit 1)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
+ (fields_autoplaced yes)
+ (uuid "dd045ace-112c-424a-ad3b-982fb4c768f7")
+ (property "Reference" "#PWR010"
+ (at 115.57 120.65 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Value" "GND"
+ (at 115.57 119.38 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ )
+ (property "Footprint" ""
+ (at 115.57 114.3 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Datasheet" ""
+ (at 115.57 114.3 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (property "Description" "Power symbol creates a global label with name \"GND\" , ground"
+ (at 115.57 114.3 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (hide yes)
+ )
+ )
+ (pin "1"
+ (uuid "1a4096b2-db22-464d-b040-d8134123dfb5")
+ )
+ (instances
+ (project ""
+ (path "/5defd195-0277-4d04-9f5f-69e505c9845c"
+ (reference "#PWR010")
+ (unit 1)
+ )
+ )
+ )
+ )
+ (symbol
(lib_id "power:+3V3")
(at 116.84 22.86 0)
(unit 1)
@@ -4537,7 +4999,7 @@
)
)
(pin "POE_GND" output
- (at 91.44 97.79 0)
+ (at 91.44 107.95 0)
(uuid "6c770162-6936-4729-b598-10f0375ecc24")
(effects
(font
@@ -4547,7 +5009,7 @@
)
)
(pin "POE_VIN" output
- (at 91.44 95.25 0)
+ (at 91.44 105.41 0)
(uuid "1863d617-dc5e-4005-9116-05e2cde6d04b")
(effects
(font
@@ -4871,6 +5333,16 @@
(justify right)
)
)
+ (pin "VVERSION" input
+ (at 127 104.14 180)
+ (uuid "cc6082cf-6e1b-4529-a830-c6a9254ad3b1")
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (justify left)
+ )
+ )
(instances
(project "iot-contact"
(path "/5defd195-0277-4d04-9f5f-69e505c9845c"
diff --git a/pcb/processor.kicad_sch b/pcb/processor.kicad_sch
index 9b6b558..84ec013 100644
--- a/pcb/processor.kicad_sch
+++ b/pcb/processor.kicad_sch
@@ -2473,6 +2473,17 @@
)
(uuid "806823e9-c7ef-45dc-832c-ddb4378c340f")
)
+ (hierarchical_label "VVERSION"
+ (shape input)
+ (at 35.56 100.33 180)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ (justify right)
+ )
+ (uuid "919dc185-71c3-4c56-8386-f6c0dc6b4c73")
+ )
(hierarchical_label "JTAG_TDO"
(shape output)
(at 41.91 35.56 90)