40 Commits
Author SHA1 Message Date
EmpirePhoenix a30dbe0759 go to stay alive 2024-01-07 14:33:02 +01:00
EmpirePhoenix 5724088780 remove boardaccess arc and replace with static lazy 2023-12-27 20:00:06 +01:00
EmpirePhoenix 4c02b99ea7 webserver improvements 2023-12-27 17:33:11 +01:00
EmpirePhoenix 1e40e2e3ba move to typescript, testmode, shiftregister revival 2023-12-23 01:59:00 +01:00
EmpirePhoenix fd823217aa fix for reset of shift register 2023-12-23 01:56:07 +01:00
EmpirePhoenix 2541c83ebe more javascript shit 2023-12-22 17:26:00 +01:00
EmpirePhoenix 58801f870e initial config changes 2023-12-22 01:35:08 +01:00
EmpirePhoenix 066b3ec24f play with config page 2023-12-19 10:45:56 +01:00
EmpirePhoenix 303bdd131f fix reverse protection diodes 2023-12-19 10:45:22 +01:00
EmpirePhoenix 5d6871250e wifi config file handling added 2023-12-12 03:46:53 +01:00
EmpirePhoenix e43538ec8a free size handling 2023-12-07 02:50:50 +01:00
EmpirePhoenix fb0ad6b1dc file write test 2023-12-07 02:33:17 +01:00
EmpirePhoenix f0f0e9f27e adjustments 2023-12-04 00:41:29 +01:00
EmpirePhoenix 4a8fffb3cc Merge branch 'feature/12v' of github.com:0110/PlantCtrl into feature/12v
# Conflicts:
#	rust/Cargo.toml
2023-11-30 19:26:03 +01:00
EmpirePhoenix dd949a1be1 partition table 2023-11-29 18:28:09 +01:00
EmpirePhoenix a9ab4ee99b fixes 2023-11-29 18:27:55 +01:00
EmpirePhoenix 8bfa27612d config start 2023-11-29 18:27:40 +01:00
EmpirePhoenix 55369e46a8 adjusted partitions 2023-11-29 18:27:23 +01:00
EmpirePhoenix b2e5ccccee adjusted runner 2023-11-29 18:27:15 +01:00
EmpirePhoenix 031e8de99f use vergen 2023-11-27 01:07:07 +01:00
EmpirePhoenix d35b814047 adjust compile stuff 2023-11-27 00:05:09 +01:00
EmpirePhoenix 0a0ac6babf added chrono-tz filter 2023-11-23 22:50:17 +01:00
EmpirePhoenix b268466b89 adjustments 2023-11-21 23:45:15 +01:00
EmpirePhoenix 3c409ea339 proceeed further 2023-11-21 01:05:12 +01:00
EmpirePhoenix 825d389a8c design 2023-11-20 02:24:14 +01:00
EmpirePhoenix 17db1b8a45 adjust folder to be shorter 2023-11-20 01:46:19 +01:00
EmpirePhoenix 2092354bc9 ignore netlist 2023-11-20 00:14:29 +01:00
EmpirePhoenix ae8ff86c1a rust init 2023-11-20 00:05:47 +01:00
EmpirePhoenix ec67450a0a finalize layout for comparator 2023-11-01 22:44:32 +01:00
EmpirePhoenix f72135a2b3 finalize 2023-10-26 23:08:03 +02:00
EmpirePhoenix ba0fa2e732 added bettry manager 2023-10-26 07:49:56 +02:00
EmpirePhoenix d3d6ad8ffb added batterymanagemt 2023-10-22 20:06:27 +02:00
EmpirePhoenix ca74a716b7 updated layout 2023-10-22 01:20:17 +02:00
EmpirePhoenix ba9fc2432b changes 2023-10-21 21:59:41 +02:00
EmpirePhoenix fd08921bba layouted further 2023-10-16 01:10:03 +02:00
EmpirePhoenix 33082b7481 add charging circuit 2023-10-15 13:16:44 +02:00
EmpirePhoenix 8cc9b9d492 layouting continued 2023-10-11 00:01:17 +02:00
EmpirePhoenix 928dce949d Signed-off-by: Empire <empirephoenix@yahoo.de> 2023-10-10 20:20:48 +02:00
EmpirePhoenix 5f20ec17d0 12v layout tests 2023-09-27 00:55:39 +02:00
EmpirePhoenix bdd9a17757 initial bus design 2023-09-26 01:20:07 +02:00
120 changed files with 241855 additions and 127101 deletions
+11
View File
@@ -1 +1,12 @@
*.sch-bak
PlantCtrlESP32-backups/
board/production/PlantCtrlESP32_2023-11-08_00-45-35/PlantCtrlESP32.zip
board/production/PlantCtrlESP32_2023-11-08_00-45-35/netlist.ipc
.vscode
.embuild/
target
Cargo.lock
node_modules/
rust/src/webserver/bundle.js
rust/image.bin
+46
View File
@@ -0,0 +1,46 @@
(footprint "4435" (version 20221018) (generator pcbnew)
(layer "F.Cu")
(attr smd)
(fp_text reference "REF**" (at -3.705 0 90) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 888d4749-ec8d-48e0-b622-265ef152540e)
)
(fp_text value "4435" (at 0 0) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 92782e22-8381-4ed1-a11f-ef69c9601af0)
)
(fp_line (start -2.705 -1.9) (end 2.705 -1.9)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 3128977c-e0a0-4ca7-8f5b-79eab6c86d44))
(fp_line (start -2.705 1.1) (end -2.705 -1.9)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp b5339e6e-bef0-40f8-ac0d-5ffe68b262f3))
(fp_line (start -1.905 1.9) (end -2.705 1.1)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 267dcc87-49da-46db-86da-4ce81b7d2468))
(fp_line (start 2.705 -1.9) (end 2.705 1.9)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 14aaa409-1cdb-4bf6-a811-f0da4dffe73a))
(fp_line (start 2.705 1.9) (end -1.905 1.9)
(stroke (width 0.12) (type default)) (layer "F.SilkS") (tstamp 1789de97-d192-4375-b67e-3ad05848eee2))
(fp_line (start -2.46 -4.85) (end 2.46 -4.85)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp f4d6fc79-0700-4ee7-b411-e8f033ff66d3))
(fp_line (start -2.46 4.85) (end -2.46 -4.85)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp 3cfe9046-c22e-44b7-8f86-5e90bf2c83b0))
(fp_line (start 2.46 -4.85) (end 2.46 4.85)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp 41eb9d06-d36a-4d1d-a098-b2c48b580c65))
(fp_line (start 2.46 4.85) (end -2.46 4.85)
(stroke (width 0.05) (type default)) (layer "F.CrtYd") (tstamp 05ce4f60-8c60-4fe2-86da-df65172ffb03))
(pad "1" smd rect (at -1.905 -3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp 239f0d43-7a93-43bf-abef-be78a7aed604))
(pad "1" smd rect (at -0.635 -3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp a9c370b9-178b-48cd-94a4-ca368fb8484d))
(pad "1" smd rect (at 0.635 -3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp 8d506357-8b26-4d9b-b778-52fd40f96071))
(pad "1" smd rect (at 1.905 -3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp 4f4e03c6-0964-4327-a6cb-2e71085bfef0))
(pad "2" smd rect (at 1.905 3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp 3f6b4cbd-12fd-4380-92b9-d204178e6014))
(pad "3" smd rect (at -1.905 3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp bb893791-93a0-4766-9b0e-f175da5df5f4))
(pad "3" smd rect (at -0.635 3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp 8487832e-80f2-4019-9519-9da7cbe24a96))
(pad "3" smd rect (at 0.635 3.5) (size 0.6 2.2) (layers "F.Cu" "F.Paste" "F.Mask")
(thermal_bridge_angle 45) (tstamp 4ecffbef-d0f1-4d07-af9a-0fb6030dccea))
)
+82
View File
@@ -0,0 +1,82 @@
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
(symbol "CN3306" (in_bom yes) (on_board yes)
(property "Reference" "U" (at 5.08 -5.08 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (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)
)
(symbol "CN3306_1_1"
(rectangle (start -2.54 7.62) (end 12.7 -16.51)
(stroke (width 0) (type default))
(fill (type background))
)
(pin input line (at 15.24 -8.89 180) (length 2.54)
(name "FB" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin input line (at 5.08 10.16 270) (length 2.54)
(name "COME" (effects (font (size 1.27 1.27))))
(number "10" (effects (font (size 1.27 1.27))))
)
(pin input line (at 15.24 -13.97 180) (length 2.54)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "11" (effects (font (size 1.27 1.27))))
)
(pin input line (at 15.24 -11.43 180) (length 2.54)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "12" (effects (font (size 1.27 1.27))))
)
(pin input line (at 15.24 5.08 180) (length 2.54)
(name "DRV" (effects (font (size 1.27 1.27))))
(number "13" (effects (font (size 1.27 1.27))))
)
(pin input line (at 3.81 -19.05 90) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "14" (effects (font (size 1.27 1.27))))
)
(pin input line (at 6.35 -19.05 90) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "15" (effects (font (size 1.27 1.27))))
)
(pin input line (at 15.24 2.54 180) (length 2.54)
(name "ISW" (effects (font (size 1.27 1.27))))
(number "16" (effects (font (size 1.27 1.27))))
)
(pin input line (at -5.08 -10.16 0) (length 2.54)
(name "COMP" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin input line (at -5.08 -1.27 0) (length 2.54)
(name "MPPT" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin input line (at -5.08 -7.62 0) (length 2.54)
(name "SHDN" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin input line (at -5.08 3.81 0) (length 2.54)
(name "CHRG" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin input line (at -5.08 1.27 0) (length 2.54)
(name "DONE" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin input line (at 15.24 -3.81 180) (length 2.54)
(name "CSP" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin input line (at 15.24 -6.35 180) (length 2.54)
(name "ONE" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
)
)
)
+123
View File
@@ -0,0 +1,123 @@
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
(symbol "CN3795" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (id 0) (at 5.08 18.542 0)
(effects (font (size 1.27 1.27)) (justify bottom left))
)
(property "Value" "CN3795" (id 1) (at 5.08 -20.32 0)
(effects (font (size 1.27 1.27)) (justify bottom left))
)
(property "Footprint" "CN3795:SSOP10" (id 2) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "MF" "Consonance" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Description" "\n4A, Multi-Chemistry Battery Charger\nWith Photovoltaic Cell MPPT Function\n" (id 5) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Package" "Package" (id 6) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Price" "None" (id 7) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "SnapEDA_Link" "https://www.snapeda.com/parts/CN3795/Consonance/view-part/?ref=snap" (id 8) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "MP" "CN3795" (id 9) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Availability" "Not in stock" (id 10) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Check_prices" "https://www.snapeda.com/parts/CN3795/Consonance/view-part/?ref=eda" (id 11) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(symbol "CN3795_0_0"
(rectangle (start -12.7 -17.78) (end 12.7 17.78)
(stroke (width 0.254)) (fill (type background))
)
(pin bidirectional line (at -15.24 7.62 0) (length 2.54)
(name "VCC"
(effects (font (size 1.016 1.016)))
)
(number "9"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -15.24 -2.54 0) (length 2.54)
(name "~{CHRG}"
(effects (font (size 1.016 1.016)))
)
(number "3"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -15.24 -7.62 0) (length 2.54)
(name "MPPT"
(effects (font (size 1.016 1.016)))
)
(number "4"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -2.54 20.32 270.0) (length 2.54)
(name "VG"
(effects (font (size 1.016 1.016)))
)
(number "1"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 2.54 20.32 270.0) (length 2.54)
(name "DRV"
(effects (font (size 1.016 1.016)))
)
(number "10"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 15.24 7.62 180.0) (length 2.54)
(name "CSP"
(effects (font (size 1.016 1.016)))
)
(number "8"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 15.24 2.54 180.0) (length 2.54)
(name "BAT"
(effects (font (size 1.016 1.016)))
)
(number "7"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 15.24 -2.54 180.0) (length 2.54)
(name "FB"
(effects (font (size 1.016 1.016)))
)
(number "6"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 15.24 -7.62 180.0) (length 2.54)
(name "COM"
(effects (font (size 1.016 1.016)))
)
(number "5"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 0.0 -20.32 90.0) (length 2.54)
(name "GND"
(effects (font (size 1.016 1.016)))
)
(number "2"
(effects (font (size 1.016 1.016)))
)
)
)
)
)
+144251 -13882
View File
File diff suppressed because it is too large Load Diff
+5 -3
View File
@@ -2,7 +2,7 @@
"board": {
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": true,
"auto_track_width": false,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
@@ -64,10 +64,12 @@
33,
34,
35,
36
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
"zone_display_mode": 1
},
"meta": {
"filename": "PlantCtrlESP32.kicad_prl",
+625 -49
View File
@@ -34,9 +34,9 @@
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
"drill": 0.0,
"height": 3.0,
"width": 1.6
},
"silk_line_width": 0.12,
"silk_text_italic": false,
@@ -45,12 +45,39 @@
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.508
"min_clearance": 0.0
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [
"courtyards_overlap|189080001|128865001|67ac55df-4a92-42f8-90ae-0f317d1fcee5|c62213e3-5f38-460c-825e-5567e84c0a13",
"courtyards_overlap|199080001|128865001|67ac55df-4a92-42f8-90ae-0f317d1fcee5|cfde0667-9234-45fc-8eda-14a18003cf8d",
"courtyards_overlap|209080001|128865001|5ed14a34-184f-41cd-94a0-c9f4df9ff6fd|cfde0667-9234-45fc-8eda-14a18003cf8d",
"courtyards_overlap|219080001|128865001|4dcef43e-4bc3-40ed-bbe5-22243d3d487f|5ed14a34-184f-41cd-94a0-c9f4df9ff6fd",
"courtyards_overlap|229080001|128865001|1c5c2a00-3616-406b-aedf-bf3a81986791|4dcef43e-4bc3-40ed-bbe5-22243d3d487f",
"courtyards_overlap|239080001|128865001|1c5c2a00-3616-406b-aedf-bf3a81986791|1ecf7cd6-6488-4305-b20b-72dbab800538",
"courtyards_overlap|249080001|128865001|1ecf7cd6-6488-4305-b20b-72dbab800538|6ccc9c73-6edf-479a-97a6-a01eda77987f",
"courtyards_overlap|268679999|80770001|22510631-57e1-46b7-916a-63be4d1f1249|ab413b79-2f68-48c4-8ed3-cedb5f870570",
"silk_edge_clearance|170180000|117670000|87e2c53a-11a1-4d9d-89a9-2a5ca6e6f269|058105c1-5307-4874-9401-d1e0612824b0",
"silk_edge_clearance|170180000|49705000|87e2c53a-11a1-4d9d-89a9-2a5ca6e6f269|2af3bc4a-e24d-48a4-898d-739774f84bd6",
"silk_edge_clearance|170180000|67945000|87e2c53a-11a1-4d9d-89a9-2a5ca6e6f269|d1ed732d-93f0-4bca-ae40-dde82301c749",
"silk_edge_clearance|170242295|123498571|87e2c53a-11a1-4d9d-89a9-2a5ca6e6f269|98242ad4-5a51-4508-b392-eeabff738172",
"silk_edge_clearance|170242295|127998571|87e2c53a-11a1-4d9d-89a9-2a5ca6e6f269|9dfe510c-725d-437b-9270-62f0fb83346b",
"silk_edge_clearance|269240000|110840000|6d070ea4-5732-4974-b15a-6adc25e87507|ab851b96-316a-460d-b1e8-9d3fef419e7b",
"silk_edge_clearance|269240000|113440000|6d070ea4-5732-4974-b15a-6adc25e87507|f1ae4a26-c73e-4b69-af96-801c2a8e61d3",
"silk_edge_clearance|269240000|115980000|6d070ea4-5732-4974-b15a-6adc25e87507|685b88f7-a226-4ce5-b9a2-70f5eea54d45",
"silk_edge_clearance|269240000|118520000|6d070ea4-5732-4974-b15a-6adc25e87507|dfd6db18-258f-4809-8096-700f3184e482",
"silk_edge_clearance|269240000|121060000|6d070ea4-5732-4974-b15a-6adc25e87507|df12db4f-f2d6-4bbb-962f-c504c70a12d7",
"silk_edge_clearance|269240000|123600000|6d070ea4-5732-4974-b15a-6adc25e87507|0f1bb1cf-595c-42a5-b79f-53ba7db0e565",
"silk_edge_clearance|269240000|126140000|6d070ea4-5732-4974-b15a-6adc25e87507|85c77ea0-2469-4305-9635-0c4ccb268a57",
"silk_edge_clearance|269240000|128740000|6d070ea4-5732-4974-b15a-6adc25e87507|90543f7d-a988-4bce-a183-20300704c3c1"
],
"meta": {
"filename": "board_design_settings.json",
"version": 2
@@ -58,32 +85,43 @@
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint_type_mismatch": "error",
"footprint": "error",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"silk_edge_clearance": "warning",
"silk_over_copper": "ignore",
"silk_overlap": "ignore",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
@@ -92,33 +130,77 @@
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zone_has_empty_net": "error",
"zones_intersect": "error"
},
"rule_severitieslegacy_courtyards_overlap": true,
"rule_severitieslegacy_no_courtyard_defined": false,
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.024999999999999998,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 1,
"min_silk_clearance": 0.0,
"min_through_hole_diameter": 0.3,
"min_text_height": 0.7999999999999999,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.19999999999999998,
"min_track_width": 0.19999999999999998,
"min_via_annular_width": 0.049999999999999996,
"min_via_annular_width": 0.09999999999999999,
"min_via_diameter": 0.39999999999999997,
"solder_mask_to_copper_clearance": 0.005,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.2,
0.5,
1.0
1.0,
1.5,
2.0
],
"via_dimensions": [
{
@@ -134,7 +216,7 @@
"drill": 3.0
}
],
"zones_allow_external_fillets": false,
"zones_allow_external_fillets": true,
"zones_use_no_outline": true
},
"layer_presets": [],
@@ -329,7 +411,7 @@
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"endpoint_off_grid": "ignore",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
@@ -345,7 +427,7 @@
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
@@ -367,7 +449,7 @@
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"clearance": 0.15,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
@@ -384,62 +466,556 @@
},
{
"bus_width": 12,
"clearance": 0.2,
"clearance": 0.15,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "5V",
"name": "12V",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 1.4,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Mini",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgb(255, 4, 6)",
"track_width": 1.0,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
"wire_width": 12
},
{
"bus_width": 12,
"clearance": 0.2,
"clearance": 0.15,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Power",
"name": "3V",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 1.7,
"schematic_color": "rgb(255, 153, 0)",
"track_width": 0.2,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
"wire_width": 12
},
{
"bus_width": 12,
"clearance": 0.15,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "BAT+",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgb(81, 255, 3)",
"track_width": 1.2,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 12
},
{
"bus_width": 12,
"clearance": 0.15,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "BAT-",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgb(130, 130, 130)",
"track_width": 1.2,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 12
},
{
"bus_width": 12,
"clearance": 0.15,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "GND",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgb(0, 0, 0)",
"track_width": 0.5,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 12
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
"netclass_assignments": {
"Net-(battery1-Pin_1)": "BAT-",
"VBAT": "BAT+"
},
"netclass_patterns": [
{
"netclass": "3V",
"pattern": "3_3V"
},
{
"netclass": "Default",
"pattern": "CUSTOM_GPIO12"
},
{
"netclass": "Default",
"pattern": "CUSTOM_GPIO2"
},
{
"netclass": "Default",
"pattern": "CUSTOM_GPIO34"
},
{
"netclass": "Default",
"pattern": "CUSTOM_GPIO35"
},
{
"netclass": "Default",
"pattern": "ESP_RX"
},
{
"netclass": "Default",
"pattern": "ESP_TX"
},
{
"netclass": "GND",
"pattern": "GND"
},
{
"netclass": "Default",
"pattern": "Net-(12V1-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(12V2-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Boot1-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(C10-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(C14-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(C16-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(C17-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(C4-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(C5-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(C6-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D10-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D11-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D12-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D13-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D14-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D15-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D16-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D4-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(D5-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(D7-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(D9-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(Pumps1-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(Q1-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q1-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(Q10-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q11-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q12-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q12-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(Q13-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q13-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(Q2-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q2-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(Q3-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q3-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(Q4-Pad3)"
},
{
"netclass": "Default",
"pattern": "Net-(Q5-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q6-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q7-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q8-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q9-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q_PWR1-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q_PWR2-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q_PWR3-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q_PWR4-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q_PWR5-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(Q_PWR6-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(R1-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(R14-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R18-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R19-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R28-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R54-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R56-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R58-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R60-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R62-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R64-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R66-Pad2)"
},
{
"netclass": "Default",
"pattern": "Net-(R68-Pad1)"
},
{
"netclass": "Default",
"pattern": "Net-(U3-Pad6)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-Pad17)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-Pad18)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-Pad19)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-Pad20)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-Pad21)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-Pad22)"
},
{
"netclass": "Default",
"pattern": "Net-(U4-Pad32)"
},
{
"netclass": "Default",
"pattern": "Net-(U6-Pad6)"
},
{
"netclass": "Default",
"pattern": "Net-(U6-Pad7)"
},
{
"netclass": "Default",
"pattern": "PLANT0_MOIST"
},
{
"netclass": "Default",
"pattern": "PLANT0_PUMP"
},
{
"netclass": "Default",
"pattern": "PLANT1_MOIST"
},
{
"netclass": "Default",
"pattern": "PLANT1_PUMP"
},
{
"netclass": "Default",
"pattern": "PLANT2_MOIST"
},
{
"netclass": "Default",
"pattern": "PLANT2_PUMP"
},
{
"netclass": "Default",
"pattern": "PLANT3_MOIST"
},
{
"netclass": "Default",
"pattern": "PLANT3_PUMP"
},
{
"netclass": "Default",
"pattern": "PLANT4_MOIST"
},
{
"netclass": "Default",
"pattern": "PLANT4_PUMP"
},
{
"netclass": "Default",
"pattern": "PLANT5_MOIST"
},
{
"netclass": "Default",
"pattern": "PLANT5_PUMP"
},
{
"netclass": "Default",
"pattern": "PLANT6_MOIST"
},
{
"netclass": "Default",
"pattern": "PLANT6_PUMP"
},
{
"netclass": "Default",
"pattern": "PLANT_CTRL_PUMP_0"
},
{
"netclass": "Default",
"pattern": "PLANT_CTRL_PUMP_1"
},
{
"netclass": "Default",
"pattern": "PLANT_CTRL_PUMP_2"
},
{
"netclass": "Default",
"pattern": "PLANT_CTRL_PUMP_3"
},
{
"netclass": "Default",
"pattern": "PLANT_CTRL_PUMP_4"
},
{
"netclass": "Default",
"pattern": "PLANT_CTRL_PUMP_5"
},
{
"netclass": "Default",
"pattern": "PLANT_CTRL_PUMP_6"
},
{
"netclass": "Default",
"pattern": "PUMP_ENABLE"
},
{
"netclass": "Default",
"pattern": "PUMP_PWR"
},
{
"netclass": "Default",
"pattern": "PWR_I2C"
},
{
"netclass": "Default",
"pattern": "PWR_PUMP_CONVERTER"
},
{
"netclass": "Default",
"pattern": "PWR_SENSORS"
},
{
"netclass": "Default",
"pattern": "Rsense+"
},
{
"netclass": "Default",
"pattern": "SCL"
},
{
"netclass": "Default",
"pattern": "SDA"
},
{
"netclass": "Default",
"pattern": "SENSORS_ENABLE"
},
{
"netclass": "Default",
"pattern": "SOLAR_IN"
},
{
"netclass": "Default",
"pattern": "Temp"
},
{
"netclass": "Default",
"pattern": "VCC"
},
{
"netclass": "Default",
"pattern": "VCC_BATT"
},
{
"netclass": "Default",
"pattern": "VCC_FUSED_ALWAYS"
},
{
"netclass": "12V",
"pattern": "12V"
},
{
"netclass": "12V",
"pattern": "/12VR"
}
]
},
"pcbnew": {
"last_paths": {
+20588 -7825
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-288
View File
@@ -1,288 +0,0 @@
update=Thu 10 Jun 2021 10:17:33 PM CEST
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=/tmp/
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceAjustPassiveValues=0
LabSize=50
ERC_TestSimilarLabels=1
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=PlantCtrlESP32.net
CopperLayerCount=2
BoardThickness=1.6
AllowMicroVias=0
AllowBlindVias=0
RequireCourtyardDefinitions=0
ProhibitOverlappingCourtyards=1
MinTrackWidth=0.2
MinViaDiameter=0.4
MinViaDrill=0.3
MinMicroViaDiameter=0.2
MinMicroViaDrill=0.09999999999999999
MinHoleToHole=0.25
TrackWidth1=1.2
TrackWidth2=0.2
TrackWidth3=0.5
TrackWidth4=1
ViaDiameter1=0.8
ViaDrill1=0.4
ViaDiameter2=1.2
ViaDrill2=0.8
ViaDiameter3=4
ViaDrill3=3
dPairWidth1=0.2
dPairGap1=0.25
dPairViaGap1=0.25
SilkLineWidth=0.12
SilkTextSizeV=1
SilkTextSizeH=1
SilkTextSizeThickness=0.15
SilkTextItalic=0
SilkTextUpright=1
CopperLineWidth=0.2
CopperTextSizeV=1.5
CopperTextSizeH=1.5
CopperTextThickness=0.3
CopperTextItalic=0
CopperTextUpright=1
EdgeCutLineWidth=0.05
CourtyardLineWidth=0.05
OthersLineWidth=0.15
OthersTextSizeV=1
OthersTextSizeH=1
OthersTextSizeThickness=0.15
OthersTextItalic=0
OthersTextUpright=1
SolderMaskClearance=0.051
SolderMaskMinWidth=0.25
SolderPasteClearance=0
SolderPasteRatio=-0
[pcbnew/Layer.F.Cu]
Name=F.Cu
Type=0
Enabled=1
[pcbnew/Layer.In1.Cu]
Name=In1.Cu
Type=0
Enabled=0
[pcbnew/Layer.In2.Cu]
Name=In2.Cu
Type=0
Enabled=0
[pcbnew/Layer.In3.Cu]
Name=In3.Cu
Type=0
Enabled=0
[pcbnew/Layer.In4.Cu]
Name=In4.Cu
Type=0
Enabled=0
[pcbnew/Layer.In5.Cu]
Name=In5.Cu
Type=0
Enabled=0
[pcbnew/Layer.In6.Cu]
Name=In6.Cu
Type=0
Enabled=0
[pcbnew/Layer.In7.Cu]
Name=In7.Cu
Type=0
Enabled=0
[pcbnew/Layer.In8.Cu]
Name=In8.Cu
Type=0
Enabled=0
[pcbnew/Layer.In9.Cu]
Name=In9.Cu
Type=0
Enabled=0
[pcbnew/Layer.In10.Cu]
Name=In10.Cu
Type=0
Enabled=0
[pcbnew/Layer.In11.Cu]
Name=In11.Cu
Type=0
Enabled=0
[pcbnew/Layer.In12.Cu]
Name=In12.Cu
Type=0
Enabled=0
[pcbnew/Layer.In13.Cu]
Name=In13.Cu
Type=0
Enabled=0
[pcbnew/Layer.In14.Cu]
Name=In14.Cu
Type=0
Enabled=0
[pcbnew/Layer.In15.Cu]
Name=In15.Cu
Type=0
Enabled=0
[pcbnew/Layer.In16.Cu]
Name=In16.Cu
Type=0
Enabled=0
[pcbnew/Layer.In17.Cu]
Name=In17.Cu
Type=0
Enabled=0
[pcbnew/Layer.In18.Cu]
Name=In18.Cu
Type=0
Enabled=0
[pcbnew/Layer.In19.Cu]
Name=In19.Cu
Type=0
Enabled=0
[pcbnew/Layer.In20.Cu]
Name=In20.Cu
Type=0
Enabled=0
[pcbnew/Layer.In21.Cu]
Name=In21.Cu
Type=0
Enabled=0
[pcbnew/Layer.In22.Cu]
Name=In22.Cu
Type=0
Enabled=0
[pcbnew/Layer.In23.Cu]
Name=In23.Cu
Type=0
Enabled=0
[pcbnew/Layer.In24.Cu]
Name=In24.Cu
Type=0
Enabled=0
[pcbnew/Layer.In25.Cu]
Name=In25.Cu
Type=0
Enabled=0
[pcbnew/Layer.In26.Cu]
Name=In26.Cu
Type=0
Enabled=0
[pcbnew/Layer.In27.Cu]
Name=In27.Cu
Type=0
Enabled=0
[pcbnew/Layer.In28.Cu]
Name=In28.Cu
Type=0
Enabled=0
[pcbnew/Layer.In29.Cu]
Name=In29.Cu
Type=0
Enabled=0
[pcbnew/Layer.In30.Cu]
Name=In30.Cu
Type=0
Enabled=0
[pcbnew/Layer.B.Cu]
Name=B.Cu
Type=0
Enabled=1
[pcbnew/Layer.B.Adhes]
Enabled=1
[pcbnew/Layer.F.Adhes]
Enabled=1
[pcbnew/Layer.B.Paste]
Enabled=1
[pcbnew/Layer.F.Paste]
Enabled=1
[pcbnew/Layer.B.SilkS]
Enabled=1
[pcbnew/Layer.F.SilkS]
Enabled=1
[pcbnew/Layer.B.Mask]
Enabled=1
[pcbnew/Layer.F.Mask]
Enabled=1
[pcbnew/Layer.Dwgs.User]
Enabled=1
[pcbnew/Layer.Cmts.User]
Enabled=1
[pcbnew/Layer.Eco1.User]
Enabled=1
[pcbnew/Layer.Eco2.User]
Enabled=1
[pcbnew/Layer.Edge.Cuts]
Enabled=1
[pcbnew/Layer.Margin]
Enabled=1
[pcbnew/Layer.B.CrtYd]
Enabled=1
[pcbnew/Layer.F.CrtYd]
Enabled=1
[pcbnew/Layer.B.Fab]
Enabled=1
[pcbnew/Layer.F.Fab]
Enabled=1
[pcbnew/Layer.Rescue]
Enabled=0
[pcbnew/Netclasses]
[pcbnew/Netclasses/Default]
Name=Default
Clearance=0.2
TrackWidth=1.2
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25
[pcbnew/Netclasses/1]
Name=5V
Clearance=0.2
TrackWidth=1.4
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25
[pcbnew/Netclasses/2]
Name=Mini
Clearance=0.2
TrackWidth=1
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25
[pcbnew/Netclasses/3]
Name=Power
Clearance=0.2
TrackWidth=1.7
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25
+7
View File
@@ -0,0 +1,7 @@
Default False 2.0 3
12V True 2.0 3
3V True 2.0 3
BAT+ True 2.0 3
BAT- True 2.0 3
GND True 2.0 3
False True False
@@ -0,0 +1,63 @@
(footprint "R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm" (version 20221018) (generator pcbnew)
(layer "F.Cu")
(descr "Shunt Resistor SMD 2512 (6332 Metric), 2.6mm thick, Vishay WKS2512, Terminal length (T) 1.19mm, 5 to 200 milli Ohm (http://http://www.vishay.com/docs/30108/wsk.pdf)")
(tags "resistor shunt WSK2512")
(attr smd)
(fp_text reference "REF**" (at 0 -2.65) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp e64357ee-67ea-437d-842c-edd4e9b0e817)
)
(fp_text value "R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm" (at 0 2.65) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 6d43eee8-d677-4710-a5b6-ed0a393d7e86)
)
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 7af73258-6848-4c90-ada6-9916b21e0d54)
)
(fp_line (start -2.5 1.7) (end 1.67 1.7)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 686b0a9f-f303-4b9c-97bc-13b268071b2a))
(fp_line (start -1.67 -1.7) (end 2.53 -1.7)
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 8ff3cd0c-2e69-49a7-948e-62e2af1cdeaf))
(fp_line (start -4.38 -1.9) (end 4.38 -1.9)
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 97453d6f-90a6-4d0b-9533-4b9de0e70d67))
(fp_line (start -4.38 1.9) (end -4.38 -1.9)
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8d751a64-d963-4d3e-b652-c6367d221a4c))
(fp_line (start 4.38 -1.9) (end 4.38 1.9)
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 5fc8cbbe-390d-45f2-b9e2-001b3b36ad53))
(fp_line (start 4.38 1.9) (end -4.38 1.9)
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 85ea9322-734e-4f57-b7f4-e08d8559c109))
(fp_line (start -3.175 -1.59) (end 3.175 -1.59)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp a616017c-8c30-4c24-8988-6ebc65a5a14c))
(fp_line (start -3.175 0.32) (end -3.175 -1.59)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 007035a4-df14-4627-b9dd-16c0816e9fc4))
(fp_line (start -3.175 0.32) (end -2.795 0.32)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7a92ebc4-86fb-494b-8925-1512bf4598dd))
(fp_line (start -3.175 0.94) (end -3.175 1.59)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8d1ed9db-8b9e-4c9a-b026-a147d8ba5a89))
(fp_line (start -3.175 0.94) (end -2.795 0.94)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 3238b0a3-1bbc-4ecd-9eca-d39a4563f46a))
(fp_line (start -2.795 0.94) (end -2.795 0.32)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 56e7214e-7e65-4896-9919-6dfa6ad242a1))
(fp_line (start 2.79 -0.94) (end 3.17 -0.94)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp bf2fd8b5-dc07-4d36-93f4-c05d760e4ae8))
(fp_line (start 2.79 -0.32) (end 2.79 -0.94)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2732ea3b-0a68-4014-9f1f-147b192cb827))
(fp_line (start 2.79 -0.32) (end 3.17 -0.32)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7597632e-0fab-4537-9ef5-3d955ee8fe04))
(fp_line (start 3.175 -0.94) (end 3.175 -1.59)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp be78e59b-9296-4843-849b-9aeaddf3ec90))
(fp_line (start 3.175 -0.32) (end 3.175 1.59)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp f0529fdf-6a96-4afa-ae66-3987676f8cc1))
(fp_line (start 3.175 1.59) (end -3.175 1.59)
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 5494f1f1-9934-4901-ae11-4f45356840a6))
(pad "1" smd roundrect (at -2.985 0.635) (size 2.29 2.03) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.12) (tstamp 7d665233-6376-4fd3-9d23-184556b0630c))
(pad "2" smd roundrect (at -3.43 -1.27) (size 1.4 0.76) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.12) (tstamp a060266a-0c38-4364-b2df-6f7cf4c69f0d))
(pad "3" smd roundrect (at 3.43 -1.27) (size 1.4 0.76) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (tstamp a1e31646-49e8-4836-bd67-1b6bed652414))
(pad "4" smd roundrect (at 2.985 0.635) (size 2.29 2.03) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.12) (tstamp 3f532dd2-fd5a-4fe7-9636-aa84f769e3b2))
(model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm.wrl"
(offset (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)
+4562
View File
File diff suppressed because one or more lines are too long
+7 -4
View File
@@ -1,4 +1,7 @@
(fp_lib_table
(lib (name misc_footprints)(type KiCad)(uri ${KIPRJMOD}/kicad-stuff/misc_footprints-master/misc_footprints.pretty)(options "")(descr ""))
(lib (name ESP32)(type KiCad)(uri ${KIPRJMOD}/kicad-stuff/ESP32)(options "")(descr ""))
)
(fp_lib_table
(version 7)
(lib (name "misc_footprints")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/misc_footprints-master/misc_footprints.pretty")(options "")(descr ""))
(lib (name "ESP32")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/ESP32")(options "")(descr ""))
(lib (name "kicad-stuff")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff")(options "")(descr ""))
(lib (name "board")(type "KiCad")(uri "${KIPRJMOD}/")(options "")(descr ""))
)
-15
View File
@@ -1,15 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Glue,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*
-32
View File
@@ -1,32 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Other,User*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.050000*%
G04 APERTURE END LIST*
D10*
X237729200Y-51267800D02*
X237729200Y-60847800D01*
X237729200Y-51267800D02*
X242229200Y-51267800D01*
X242229200Y-60847800D02*
X237729200Y-60847800D01*
X242229200Y-60847800D02*
X242229200Y-51267800D01*
X231560800Y-64114800D02*
X223160800Y-64114800D01*
X231560800Y-57364800D02*
X231560800Y-64114800D01*
X223160800Y-57364800D02*
X231560800Y-57364800D01*
X223160800Y-64114800D02*
X223160800Y-57364800D01*
M02*
File diff suppressed because it is too large Load Diff
-425
View File
@@ -1,425 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Other,Fab,Bot*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.100000*%
%ADD11C,0.150000*%
G04 APERTURE END LIST*
D10*
X226110800Y-62614800D02*
X226735800Y-63614800D01*
X225485800Y-63614800D02*
X226110800Y-62614800D01*
X231060800Y-63614800D02*
X223660800Y-63614800D01*
X231060800Y-57864800D02*
X231060800Y-63614800D01*
X223660800Y-57864800D02*
X231060800Y-57864800D01*
X223660800Y-63614800D02*
X223660800Y-57864800D01*
D11*
X235812057Y-62843514D02*
X235764438Y-62891133D01*
X235716819Y-63033990D01*
X235716819Y-63129228D01*
X235764438Y-63272085D01*
X235859676Y-63367323D01*
X235954914Y-63414942D01*
X236145390Y-63462561D01*
X236288247Y-63462561D01*
X236478723Y-63414942D01*
X236573961Y-63367323D01*
X236669200Y-63272085D01*
X236716819Y-63129228D01*
X236716819Y-63033990D01*
X236669200Y-62891133D01*
X236621580Y-62843514D01*
X235716819Y-62272085D02*
X235764438Y-62367323D01*
X235812057Y-62414942D01*
X235907295Y-62462561D01*
X236193009Y-62462561D01*
X236288247Y-62414942D01*
X236335866Y-62367323D01*
X236383485Y-62272085D01*
X236383485Y-62129228D01*
X236335866Y-62033990D01*
X236288247Y-61986371D01*
X236193009Y-61938752D01*
X235907295Y-61938752D01*
X235812057Y-61986371D01*
X235764438Y-62033990D01*
X235716819Y-62129228D01*
X235716819Y-62272085D01*
X236383485Y-61510180D02*
X235716819Y-61510180D01*
X236288247Y-61510180D02*
X236335866Y-61462561D01*
X236383485Y-61367323D01*
X236383485Y-61224466D01*
X236335866Y-61129228D01*
X236240628Y-61081609D01*
X235716819Y-61081609D01*
X236383485Y-60605419D02*
X235716819Y-60605419D01*
X236288247Y-60605419D02*
X236335866Y-60557800D01*
X236383485Y-60462561D01*
X236383485Y-60319704D01*
X236335866Y-60224466D01*
X236240628Y-60176847D01*
X235716819Y-60176847D01*
X235621580Y-59938752D02*
X235621580Y-59176847D01*
X236716819Y-58748276D02*
X236716819Y-58653038D01*
X236669200Y-58557800D01*
X236621580Y-58510180D01*
X236526342Y-58462561D01*
X236335866Y-58414942D01*
X236097771Y-58414942D01*
X235907295Y-58462561D01*
X235812057Y-58510180D01*
X235764438Y-58557800D01*
X235716819Y-58653038D01*
X235716819Y-58748276D01*
X235764438Y-58843514D01*
X235812057Y-58891133D01*
X235907295Y-58938752D01*
X236097771Y-58986371D01*
X236335866Y-58986371D01*
X236526342Y-58938752D01*
X236621580Y-58891133D01*
X236669200Y-58843514D01*
X236716819Y-58748276D01*
X235716819Y-57462561D02*
X235716819Y-58033990D01*
X235716819Y-57748276D02*
X236716819Y-57748276D01*
X236573961Y-57843514D01*
X236478723Y-57938752D01*
X236431104Y-58033990D01*
X235716819Y-57129228D02*
X236383485Y-56605419D01*
X236383485Y-57129228D02*
X235716819Y-56605419D01*
X236716819Y-56033990D02*
X236716819Y-55938752D01*
X236669200Y-55843514D01*
X236621580Y-55795895D01*
X236526342Y-55748276D01*
X236335866Y-55700657D01*
X236097771Y-55700657D01*
X235907295Y-55748276D01*
X235812057Y-55795895D01*
X235764438Y-55843514D01*
X235716819Y-55938752D01*
X235716819Y-56033990D01*
X235764438Y-56129228D01*
X235812057Y-56176847D01*
X235907295Y-56224466D01*
X236097771Y-56272085D01*
X236335866Y-56272085D01*
X236526342Y-56224466D01*
X236621580Y-56176847D01*
X236669200Y-56129228D01*
X236716819Y-56033990D01*
X236621580Y-55319704D02*
X236669200Y-55272085D01*
X236716819Y-55176847D01*
X236716819Y-54938752D01*
X236669200Y-54843514D01*
X236621580Y-54795895D01*
X236526342Y-54748276D01*
X236431104Y-54748276D01*
X236288247Y-54795895D01*
X235716819Y-55367323D01*
X235716819Y-54748276D01*
X235621580Y-54557800D02*
X235621580Y-53795895D01*
X236240628Y-53224466D02*
X236240628Y-53557800D01*
X235716819Y-53557800D02*
X236716819Y-53557800D01*
X236716819Y-53081609D01*
X235764438Y-52319704D02*
X235716819Y-52414942D01*
X235716819Y-52605419D01*
X235764438Y-52700657D01*
X235859676Y-52748276D01*
X236240628Y-52748276D01*
X236335866Y-52700657D01*
X236383485Y-52605419D01*
X236383485Y-52414942D01*
X236335866Y-52319704D01*
X236240628Y-52272085D01*
X236145390Y-52272085D01*
X236050152Y-52748276D01*
X235716819Y-51843514D02*
X236383485Y-51843514D01*
X236288247Y-51843514D02*
X236335866Y-51795895D01*
X236383485Y-51700657D01*
X236383485Y-51557800D01*
X236335866Y-51462561D01*
X236240628Y-51414942D01*
X235716819Y-51414942D01*
X236240628Y-51414942D02*
X236335866Y-51367323D01*
X236383485Y-51272085D01*
X236383485Y-51129228D01*
X236335866Y-51033990D01*
X236240628Y-50986371D01*
X235716819Y-50986371D01*
X235716819Y-50081609D02*
X236240628Y-50081609D01*
X236335866Y-50129228D01*
X236383485Y-50224466D01*
X236383485Y-50414942D01*
X236335866Y-50510180D01*
X235764438Y-50081609D02*
X235716819Y-50176847D01*
X235716819Y-50414942D01*
X235764438Y-50510180D01*
X235859676Y-50557800D01*
X235954914Y-50557800D01*
X236050152Y-50510180D01*
X236097771Y-50414942D01*
X236097771Y-50176847D01*
X236145390Y-50081609D01*
X235716819Y-49462561D02*
X235764438Y-49557800D01*
X235859676Y-49605419D01*
X236716819Y-49605419D01*
X235764438Y-48700657D02*
X235716819Y-48795895D01*
X235716819Y-48986371D01*
X235764438Y-49081609D01*
X235859676Y-49129228D01*
X236240628Y-49129228D01*
X236335866Y-49081609D01*
X236383485Y-48986371D01*
X236383485Y-48795895D01*
X236335866Y-48700657D01*
X236240628Y-48653038D01*
X236145390Y-48653038D01*
X236050152Y-49129228D01*
X239526819Y-57486371D02*
X239526819Y-57962561D01*
X240526819Y-57962561D01*
X239526819Y-57153038D02*
X240526819Y-57153038D01*
X239526819Y-56676847D02*
X240526819Y-56676847D01*
X240526819Y-56295895D01*
X240479200Y-56200657D01*
X240431580Y-56153038D01*
X240336342Y-56105419D01*
X240193485Y-56105419D01*
X240098247Y-56153038D01*
X240050628Y-56200657D01*
X240003009Y-56295895D01*
X240003009Y-56676847D01*
X240526819Y-55486371D02*
X240526819Y-55295895D01*
X240479200Y-55200657D01*
X240383961Y-55105419D01*
X240193485Y-55057800D01*
X239860152Y-55057800D01*
X239669676Y-55105419D01*
X239574438Y-55200657D01*
X239526819Y-55295895D01*
X239526819Y-55486371D01*
X239574438Y-55581609D01*
X239669676Y-55676847D01*
X239860152Y-55724466D01*
X240193485Y-55724466D01*
X240383961Y-55676847D01*
X240479200Y-55581609D01*
X240526819Y-55486371D01*
X239526819Y-54105419D02*
X239526819Y-54676847D01*
X239526819Y-54391133D02*
X240526819Y-54391133D01*
X240383961Y-54486371D01*
X240288723Y-54581609D01*
X240241104Y-54676847D01*
X231098895Y-57021942D02*
X231146514Y-57069561D01*
X231289371Y-57117180D01*
X231384609Y-57117180D01*
X231527466Y-57069561D01*
X231622704Y-56974323D01*
X231670323Y-56879085D01*
X231717942Y-56688609D01*
X231717942Y-56545752D01*
X231670323Y-56355276D01*
X231622704Y-56260038D01*
X231527466Y-56164800D01*
X231384609Y-56117180D01*
X231289371Y-56117180D01*
X231146514Y-56164800D01*
X231098895Y-56212419D01*
X230527466Y-57117180D02*
X230622704Y-57069561D01*
X230670323Y-57021942D01*
X230717942Y-56926704D01*
X230717942Y-56640990D01*
X230670323Y-56545752D01*
X230622704Y-56498133D01*
X230527466Y-56450514D01*
X230384609Y-56450514D01*
X230289371Y-56498133D01*
X230241752Y-56545752D01*
X230194133Y-56640990D01*
X230194133Y-56926704D01*
X230241752Y-57021942D01*
X230289371Y-57069561D01*
X230384609Y-57117180D01*
X230527466Y-57117180D01*
X229765561Y-56450514D02*
X229765561Y-57117180D01*
X229765561Y-56545752D02*
X229717942Y-56498133D01*
X229622704Y-56450514D01*
X229479847Y-56450514D01*
X229384609Y-56498133D01*
X229336990Y-56593371D01*
X229336990Y-57117180D01*
X228860800Y-56450514D02*
X228860800Y-57117180D01*
X228860800Y-56545752D02*
X228813180Y-56498133D01*
X228717942Y-56450514D01*
X228575085Y-56450514D01*
X228479847Y-56498133D01*
X228432228Y-56593371D01*
X228432228Y-57117180D01*
X228194133Y-57212419D02*
X227432228Y-57212419D01*
X227003657Y-56117180D02*
X226908419Y-56117180D01*
X226813180Y-56164800D01*
X226765561Y-56212419D01*
X226717942Y-56307657D01*
X226670323Y-56498133D01*
X226670323Y-56736228D01*
X226717942Y-56926704D01*
X226765561Y-57021942D01*
X226813180Y-57069561D01*
X226908419Y-57117180D01*
X227003657Y-57117180D01*
X227098895Y-57069561D01*
X227146514Y-57021942D01*
X227194133Y-56926704D01*
X227241752Y-56736228D01*
X227241752Y-56498133D01*
X227194133Y-56307657D01*
X227146514Y-56212419D01*
X227098895Y-56164800D01*
X227003657Y-56117180D01*
X225717942Y-57117180D02*
X226289371Y-57117180D01*
X226003657Y-57117180D02*
X226003657Y-56117180D01*
X226098895Y-56260038D01*
X226194133Y-56355276D01*
X226289371Y-56402895D01*
X225384609Y-57117180D02*
X224860800Y-56450514D01*
X225384609Y-56450514D02*
X224860800Y-57117180D01*
X224289371Y-56117180D02*
X224194133Y-56117180D01*
X224098895Y-56164800D01*
X224051276Y-56212419D01*
X224003657Y-56307657D01*
X223956038Y-56498133D01*
X223956038Y-56736228D01*
X224003657Y-56926704D01*
X224051276Y-57021942D01*
X224098895Y-57069561D01*
X224194133Y-57117180D01*
X224289371Y-57117180D01*
X224384609Y-57069561D01*
X224432228Y-57021942D01*
X224479847Y-56926704D01*
X224527466Y-56736228D01*
X224527466Y-56498133D01*
X224479847Y-56307657D01*
X224432228Y-56212419D01*
X224384609Y-56164800D01*
X224289371Y-56117180D01*
X223575085Y-56212419D02*
X223527466Y-56164800D01*
X223432228Y-56117180D01*
X223194133Y-56117180D01*
X223098895Y-56164800D01*
X223051276Y-56212419D01*
X223003657Y-56307657D01*
X223003657Y-56402895D01*
X223051276Y-56545752D01*
X223622704Y-57117180D01*
X223003657Y-57117180D01*
X230860800Y-58493371D02*
X230527466Y-58493371D01*
X230384609Y-59017180D02*
X230860800Y-59017180D01*
X230860800Y-58017180D01*
X230384609Y-58017180D01*
X230051276Y-58017180D02*
X229384609Y-59017180D01*
X229384609Y-58017180D02*
X230051276Y-59017180D01*
X229146514Y-58017180D02*
X228575085Y-58017180D01*
X228860800Y-59017180D02*
X228860800Y-58017180D01*
X228479847Y-59112419D02*
X227717942Y-59112419D01*
X227479847Y-59017180D02*
X227479847Y-58017180D01*
X227098895Y-58017180D01*
X227003657Y-58064800D01*
X226956038Y-58112419D01*
X226908419Y-58207657D01*
X226908419Y-58350514D01*
X226956038Y-58445752D01*
X227003657Y-58493371D01*
X227098895Y-58540990D01*
X227479847Y-58540990D01*
X226575085Y-58017180D02*
X226336990Y-59017180D01*
X226146514Y-58302895D01*
X225956038Y-59017180D01*
X225717942Y-58017180D01*
X224765561Y-59017180D02*
X225098895Y-58540990D01*
X225336990Y-59017180D02*
X225336990Y-58017180D01*
X224956038Y-58017180D01*
X224860800Y-58064800D01*
X224813180Y-58112419D01*
X224765561Y-58207657D01*
X224765561Y-58350514D01*
X224813180Y-58445752D01*
X224860800Y-58493371D01*
X224956038Y-58540990D01*
X225336990Y-58540990D01*
X223813180Y-59017180D02*
X224384609Y-59017180D01*
X224098895Y-59017180D02*
X224098895Y-58017180D01*
X224194133Y-58160038D01*
X224289371Y-58255276D01*
X224384609Y-58302895D01*
M02*
File diff suppressed because it is too large Load Diff
-15
View File
@@ -1,15 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*
-436
View File
@@ -1,436 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.500000*%
%ADD11C,0.120000*%
%ADD12C,0.150000*%
G04 APERTURE END LIST*
D10*
X237963476Y-80549523D02*
X237963476Y-76549523D01*
X236439666Y-76549523D01*
X236058714Y-76740000D01*
X235868238Y-76930476D01*
X235677761Y-77311428D01*
X235677761Y-77882857D01*
X235868238Y-78263809D01*
X236058714Y-78454285D01*
X236439666Y-78644761D01*
X237963476Y-78644761D01*
X233392047Y-80549523D02*
X233773000Y-80359047D01*
X233963476Y-79978095D01*
X233963476Y-76549523D01*
X230153952Y-80549523D02*
X230153952Y-78454285D01*
X230344428Y-78073333D01*
X230725380Y-77882857D01*
X231487285Y-77882857D01*
X231868238Y-78073333D01*
X230153952Y-80359047D02*
X230534904Y-80549523D01*
X231487285Y-80549523D01*
X231868238Y-80359047D01*
X232058714Y-79978095D01*
X232058714Y-79597142D01*
X231868238Y-79216190D01*
X231487285Y-79025714D01*
X230534904Y-79025714D01*
X230153952Y-78835238D01*
X228249190Y-77882857D02*
X228249190Y-80549523D01*
X228249190Y-78263809D02*
X228058714Y-78073333D01*
X227677761Y-77882857D01*
X227106333Y-77882857D01*
X226725380Y-78073333D01*
X226534904Y-78454285D01*
X226534904Y-80549523D01*
X225201571Y-77882857D02*
X223677761Y-77882857D01*
X224630142Y-76549523D02*
X224630142Y-79978095D01*
X224439666Y-80359047D01*
X224058714Y-80549523D01*
X223677761Y-80549523D01*
X220058714Y-80168571D02*
X220249190Y-80359047D01*
X220820619Y-80549523D01*
X221201571Y-80549523D01*
X221773000Y-80359047D01*
X222153952Y-79978095D01*
X222344428Y-79597142D01*
X222534904Y-78835238D01*
X222534904Y-78263809D01*
X222344428Y-77501904D01*
X222153952Y-77120952D01*
X221773000Y-76740000D01*
X221201571Y-76549523D01*
X220820619Y-76549523D01*
X220249190Y-76740000D01*
X220058714Y-76930476D01*
X218915857Y-77882857D02*
X217392047Y-77882857D01*
X218344428Y-76549523D02*
X218344428Y-79978095D01*
X218153952Y-80359047D01*
X217773000Y-80549523D01*
X217392047Y-80549523D01*
X216058714Y-80549523D02*
X216058714Y-77882857D01*
X216058714Y-78644761D02*
X215868238Y-78263809D01*
X215677761Y-78073333D01*
X215296809Y-77882857D01*
X214915857Y-77882857D01*
X213011095Y-80549523D02*
X213392047Y-80359047D01*
X213582523Y-79978095D01*
X213582523Y-76549523D01*
X209011095Y-76549523D02*
X207677761Y-80549523D01*
X206344428Y-76549523D01*
X204249190Y-76549523D02*
X203868238Y-76549523D01*
X203487285Y-76740000D01*
X203296809Y-76930476D01*
X203106333Y-77311428D01*
X202915857Y-78073333D01*
X202915857Y-79025714D01*
X203106333Y-79787619D01*
X203296809Y-80168571D01*
X203487285Y-80359047D01*
X203868238Y-80549523D01*
X204249190Y-80549523D01*
X204630142Y-80359047D01*
X204820619Y-80168571D01*
X205011095Y-79787619D01*
X205201571Y-79025714D01*
X205201571Y-78073333D01*
X205011095Y-77311428D01*
X204820619Y-76930476D01*
X204630142Y-76740000D01*
X204249190Y-76549523D01*
X201201571Y-80168571D02*
X201011095Y-80359047D01*
X201201571Y-80549523D01*
X201392047Y-80359047D01*
X201201571Y-80168571D01*
X201201571Y-80549523D01*
X197201571Y-80549523D02*
X199487285Y-80549523D01*
X198344428Y-80549523D02*
X198344428Y-76549523D01*
X198725380Y-77120952D01*
X199106333Y-77501904D01*
X199487285Y-77692380D01*
X194725380Y-76549523D02*
X194344428Y-76549523D01*
X193963476Y-76740000D01*
X193773000Y-76930476D01*
X193582523Y-77311428D01*
X193392047Y-78073333D01*
X193392047Y-79025714D01*
X193582523Y-79787619D01*
X193773000Y-80168571D01*
X193963476Y-80359047D01*
X194344428Y-80549523D01*
X194725380Y-80549523D01*
X195106333Y-80359047D01*
X195296809Y-80168571D01*
X195487285Y-79787619D01*
X195677761Y-79025714D01*
X195677761Y-78073333D01*
X195487285Y-77311428D01*
X195296809Y-76930476D01*
X195106333Y-76740000D01*
X194725380Y-76549523D01*
D11*
X223260800Y-64014800D02*
X223260800Y-62764800D01*
X224510800Y-64014800D02*
X223260800Y-64014800D01*
X230410800Y-58514800D02*
X227360800Y-58514800D01*
X230410800Y-61464800D02*
X230410800Y-58514800D01*
X231160800Y-61464800D02*
X230410800Y-61464800D01*
X224310800Y-58514800D02*
X227360800Y-58514800D01*
X224310800Y-61464800D02*
X224310800Y-58514800D01*
X223560800Y-61464800D02*
X224310800Y-61464800D01*
X231160800Y-63714800D02*
X229360800Y-63714800D01*
X231160800Y-62964800D02*
X231160800Y-63714800D01*
X229360800Y-62964800D02*
X231160800Y-62964800D01*
X229360800Y-63714800D02*
X229360800Y-62964800D01*
X225360800Y-63714800D02*
X223560800Y-63714800D01*
X225360800Y-62964800D02*
X225360800Y-63714800D01*
X223560800Y-62964800D02*
X225360800Y-62964800D01*
X223560800Y-63714800D02*
X223560800Y-62964800D01*
X227860800Y-63714800D02*
X226860800Y-63714800D01*
X227860800Y-62964800D02*
X227860800Y-63714800D01*
X226860800Y-62964800D02*
X227860800Y-62964800D01*
X226860800Y-63714800D02*
X226860800Y-62964800D01*
X231170800Y-63724800D02*
X223550800Y-63724800D01*
X231170800Y-57754800D02*
X231170800Y-63724800D01*
X223550800Y-57754800D02*
X231170800Y-57754800D01*
X223550800Y-63724800D02*
X223550800Y-57754800D01*
D12*
X185356285Y-137866380D02*
X185689619Y-137390190D01*
X185927714Y-137866380D02*
X185927714Y-136866380D01*
X185546761Y-136866380D01*
X185451523Y-136914000D01*
X185403904Y-136961619D01*
X185356285Y-137056857D01*
X185356285Y-137199714D01*
X185403904Y-137294952D01*
X185451523Y-137342571D01*
X185546761Y-137390190D01*
X185927714Y-137390190D01*
X184546761Y-137818761D02*
X184642000Y-137866380D01*
X184832476Y-137866380D01*
X184927714Y-137818761D01*
X184975333Y-137723523D01*
X184975333Y-137342571D01*
X184927714Y-137247333D01*
X184832476Y-137199714D01*
X184642000Y-137199714D01*
X184546761Y-137247333D01*
X184499142Y-137342571D01*
X184499142Y-137437809D01*
X184975333Y-137533047D01*
X184118190Y-137818761D02*
X184022952Y-137866380D01*
X183832476Y-137866380D01*
X183737238Y-137818761D01*
X183689619Y-137723523D01*
X183689619Y-137675904D01*
X183737238Y-137580666D01*
X183832476Y-137533047D01*
X183975333Y-137533047D01*
X184070571Y-137485428D01*
X184118190Y-137390190D01*
X184118190Y-137342571D01*
X184070571Y-137247333D01*
X183975333Y-137199714D01*
X183832476Y-137199714D01*
X183737238Y-137247333D01*
X182880095Y-137818761D02*
X182975333Y-137866380D01*
X183165809Y-137866380D01*
X183261047Y-137818761D01*
X183308666Y-137723523D01*
X183308666Y-137342571D01*
X183261047Y-137247333D01*
X183165809Y-137199714D01*
X182975333Y-137199714D01*
X182880095Y-137247333D01*
X182832476Y-137342571D01*
X182832476Y-137437809D01*
X183308666Y-137533047D01*
X182546761Y-137199714D02*
X182165809Y-137199714D01*
X182403904Y-136866380D02*
X182403904Y-137723523D01*
X182356285Y-137818761D01*
X182261047Y-137866380D01*
X182165809Y-137866380D01*
X181308666Y-137866380D02*
X181880095Y-137866380D01*
X181594380Y-137866380D02*
X181594380Y-136866380D01*
X181689619Y-137009238D01*
X181784857Y-137104476D01*
X181880095Y-137152095D01*
X197683238Y-137596571D02*
X197540380Y-137644190D01*
X197492761Y-137691809D01*
X197445142Y-137787047D01*
X197445142Y-137929904D01*
X197492761Y-138025142D01*
X197540380Y-138072761D01*
X197635619Y-138120380D01*
X198016571Y-138120380D01*
X198016571Y-137120380D01*
X197683238Y-137120380D01*
X197588000Y-137168000D01*
X197540380Y-137215619D01*
X197492761Y-137310857D01*
X197492761Y-137406095D01*
X197540380Y-137501333D01*
X197588000Y-137548952D01*
X197683238Y-137596571D01*
X198016571Y-137596571D01*
X196873714Y-138120380D02*
X196968952Y-138072761D01*
X197016571Y-138025142D01*
X197064190Y-137929904D01*
X197064190Y-137644190D01*
X197016571Y-137548952D01*
X196968952Y-137501333D01*
X196873714Y-137453714D01*
X196730857Y-137453714D01*
X196635619Y-137501333D01*
X196588000Y-137548952D01*
X196540380Y-137644190D01*
X196540380Y-137929904D01*
X196588000Y-138025142D01*
X196635619Y-138072761D01*
X196730857Y-138120380D01*
X196873714Y-138120380D01*
X195968952Y-138120380D02*
X196064190Y-138072761D01*
X196111809Y-138025142D01*
X196159428Y-137929904D01*
X196159428Y-137644190D01*
X196111809Y-137548952D01*
X196064190Y-137501333D01*
X195968952Y-137453714D01*
X195826095Y-137453714D01*
X195730857Y-137501333D01*
X195683238Y-137548952D01*
X195635619Y-137644190D01*
X195635619Y-137929904D01*
X195683238Y-138025142D01*
X195730857Y-138072761D01*
X195826095Y-138120380D01*
X195968952Y-138120380D01*
X195349904Y-137453714D02*
X194968952Y-137453714D01*
X195207047Y-137120380D02*
X195207047Y-137977523D01*
X195159428Y-138072761D01*
X195064190Y-138120380D01*
X194968952Y-138120380D01*
X194111809Y-138120380D02*
X194683238Y-138120380D01*
X194397523Y-138120380D02*
X194397523Y-137120380D01*
X194492761Y-137263238D01*
X194588000Y-137358476D01*
X194683238Y-137406095D01*
X243336819Y-57486371D02*
X243336819Y-57962561D01*
X244336819Y-57962561D01*
X243336819Y-57153038D02*
X244336819Y-57153038D01*
X243336819Y-56676847D02*
X244336819Y-56676847D01*
X244336819Y-56295895D01*
X244289200Y-56200657D01*
X244241580Y-56153038D01*
X244146342Y-56105419D01*
X244003485Y-56105419D01*
X243908247Y-56153038D01*
X243860628Y-56200657D01*
X243813009Y-56295895D01*
X243813009Y-56676847D01*
X244336819Y-55486371D02*
X244336819Y-55295895D01*
X244289200Y-55200657D01*
X244193961Y-55105419D01*
X244003485Y-55057800D01*
X243670152Y-55057800D01*
X243479676Y-55105419D01*
X243384438Y-55200657D01*
X243336819Y-55295895D01*
X243336819Y-55486371D01*
X243384438Y-55581609D01*
X243479676Y-55676847D01*
X243670152Y-55724466D01*
X244003485Y-55724466D01*
X244193961Y-55676847D01*
X244289200Y-55581609D01*
X244336819Y-55486371D01*
X243336819Y-54105419D02*
X243336819Y-54676847D01*
X243336819Y-54391133D02*
X244336819Y-54391133D01*
X244193961Y-54486371D01*
X244098723Y-54581609D01*
X244051104Y-54676847D01*
X230860800Y-64743371D02*
X230527466Y-64743371D01*
X230384609Y-65267180D02*
X230860800Y-65267180D01*
X230860800Y-64267180D01*
X230384609Y-64267180D01*
X230051276Y-64267180D02*
X229384609Y-65267180D01*
X229384609Y-64267180D02*
X230051276Y-65267180D01*
X229146514Y-64267180D02*
X228575085Y-64267180D01*
X228860800Y-65267180D02*
X228860800Y-64267180D01*
X228479847Y-65362419D02*
X227717942Y-65362419D01*
X227479847Y-65267180D02*
X227479847Y-64267180D01*
X227098895Y-64267180D01*
X227003657Y-64314800D01*
X226956038Y-64362419D01*
X226908419Y-64457657D01*
X226908419Y-64600514D01*
X226956038Y-64695752D01*
X227003657Y-64743371D01*
X227098895Y-64790990D01*
X227479847Y-64790990D01*
X226575085Y-64267180D02*
X226336990Y-65267180D01*
X226146514Y-64552895D01*
X225956038Y-65267180D01*
X225717942Y-64267180D01*
X224765561Y-65267180D02*
X225098895Y-64790990D01*
X225336990Y-65267180D02*
X225336990Y-64267180D01*
X224956038Y-64267180D01*
X224860800Y-64314800D01*
X224813180Y-64362419D01*
X224765561Y-64457657D01*
X224765561Y-64600514D01*
X224813180Y-64695752D01*
X224860800Y-64743371D01*
X224956038Y-64790990D01*
X225336990Y-64790990D01*
X223813180Y-65267180D02*
X224384609Y-65267180D01*
X224098895Y-65267180D02*
X224098895Y-64267180D01*
X224194133Y-64410038D01*
X224289371Y-64505276D01*
X224384609Y-64552895D01*
M02*
File diff suppressed because it is too large Load Diff
-748
View File
@@ -1,748 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,OtherDrawing,Comment*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.100000*%
%ADD11C,0.150000*%
G04 APERTURE END LIST*
D10*
X169862000Y-119918000D02*
X159082000Y-119918000D01*
X169862000Y-91918000D02*
X169862000Y-119918000D01*
X169862000Y-91918000D02*
X159082000Y-91918000D01*
X159082000Y-91918000D02*
X159082000Y-119918000D01*
X159082000Y-118443000D02*
X160172000Y-119918000D01*
X159082000Y-116443000D02*
X161787000Y-119918000D01*
X159082000Y-114443000D02*
X163402000Y-119918000D01*
X159082000Y-112443000D02*
X165017000Y-119918000D01*
X159082000Y-110443000D02*
X166632000Y-119918000D01*
X159082000Y-108443000D02*
X168247000Y-119918000D01*
X159082000Y-106443000D02*
X169862000Y-119918000D01*
X159082000Y-104443000D02*
X169862000Y-117918000D01*
X159082000Y-102443000D02*
X169862000Y-115918000D01*
X169862000Y-113918000D02*
X159082000Y-100443000D01*
X159082000Y-98443000D02*
X169862000Y-111918000D01*
X159082000Y-96443000D02*
X169862000Y-109918000D01*
X159082000Y-94443000D02*
X169862000Y-107918000D01*
X159082000Y-92443000D02*
X169862000Y-105918000D01*
X160172000Y-91918000D02*
X169862000Y-103918000D01*
X161787000Y-91918000D02*
X169862000Y-101918000D01*
X163402000Y-91918000D02*
X169862000Y-99918000D01*
X165017000Y-91918000D02*
X169862000Y-97918000D01*
X166632000Y-91918000D02*
X169862000Y-95918000D01*
X168247000Y-91918000D02*
X169862000Y-93918000D01*
D11*
X260475480Y-68863421D02*
X260475480Y-68768183D01*
X260523100Y-68672945D01*
X260570719Y-68625326D01*
X260665957Y-68577707D01*
X260856433Y-68530088D01*
X261094528Y-68530088D01*
X261285004Y-68577707D01*
X261380242Y-68625326D01*
X261427861Y-68672945D01*
X261475480Y-68768183D01*
X261475480Y-68863421D01*
X261427861Y-68958659D01*
X261380242Y-69006278D01*
X261285004Y-69053897D01*
X261094528Y-69101516D01*
X260856433Y-69101516D01*
X260665957Y-69053897D01*
X260570719Y-69006278D01*
X260523100Y-68958659D01*
X260475480Y-68863421D01*
X261380242Y-68101516D02*
X261427861Y-68053897D01*
X261475480Y-68101516D01*
X261427861Y-68149135D01*
X261380242Y-68101516D01*
X261475480Y-68101516D01*
X260475480Y-67434850D02*
X260475480Y-67339611D01*
X260523100Y-67244373D01*
X260570719Y-67196754D01*
X260665957Y-67149135D01*
X260856433Y-67101516D01*
X261094528Y-67101516D01*
X261285004Y-67149135D01*
X261380242Y-67196754D01*
X261427861Y-67244373D01*
X261475480Y-67339611D01*
X261475480Y-67434850D01*
X261427861Y-67530088D01*
X261380242Y-67577707D01*
X261285004Y-67625326D01*
X261094528Y-67672945D01*
X260856433Y-67672945D01*
X260665957Y-67625326D01*
X260570719Y-67577707D01*
X260523100Y-67530088D01*
X260475480Y-67434850D01*
X260475480Y-66196754D02*
X260475480Y-66672945D01*
X260951671Y-66720564D01*
X260904052Y-66672945D01*
X260856433Y-66577707D01*
X260856433Y-66339611D01*
X260904052Y-66244373D01*
X260951671Y-66196754D01*
X261046909Y-66149135D01*
X261285004Y-66149135D01*
X261380242Y-66196754D01*
X261427861Y-66244373D01*
X261475480Y-66339611D01*
X261475480Y-66577707D01*
X261427861Y-66672945D01*
X261380242Y-66720564D01*
X260904052Y-65577707D02*
X260856433Y-65672945D01*
X260808814Y-65720564D01*
X260713576Y-65768183D01*
X260665957Y-65768183D01*
X260570719Y-65720564D01*
X260523100Y-65672945D01*
X260475480Y-65577707D01*
X260475480Y-65387230D01*
X260523100Y-65291992D01*
X260570719Y-65244373D01*
X260665957Y-65196754D01*
X260713576Y-65196754D01*
X260808814Y-65244373D01*
X260856433Y-65291992D01*
X260904052Y-65387230D01*
X260904052Y-65577707D01*
X260951671Y-65672945D01*
X260999290Y-65720564D01*
X261094528Y-65768183D01*
X261285004Y-65768183D01*
X261380242Y-65720564D01*
X261427861Y-65672945D01*
X261475480Y-65577707D01*
X261475480Y-65387230D01*
X261427861Y-65291992D01*
X261380242Y-65244373D01*
X261285004Y-65196754D01*
X261094528Y-65196754D01*
X260999290Y-65244373D01*
X260951671Y-65291992D01*
X260904052Y-65387230D01*
X261475480Y-64768183D02*
X260808814Y-64768183D01*
X260475480Y-64768183D02*
X260523100Y-64815802D01*
X260570719Y-64768183D01*
X260523100Y-64720564D01*
X260475480Y-64768183D01*
X260570719Y-64768183D01*
X260808814Y-64291992D02*
X261475480Y-64291992D01*
X260904052Y-64291992D02*
X260856433Y-64244373D01*
X260808814Y-64149135D01*
X260808814Y-64006278D01*
X260856433Y-63911040D01*
X260951671Y-63863421D01*
X261475480Y-63863421D01*
X260427861Y-62672945D02*
X261713576Y-63530088D01*
X261475480Y-61815802D02*
X261475480Y-62387230D01*
X261475480Y-62101516D02*
X260475480Y-62101516D01*
X260618338Y-62196754D01*
X260713576Y-62291992D01*
X260761195Y-62387230D01*
X261380242Y-61387230D02*
X261427861Y-61339611D01*
X261475480Y-61387230D01*
X261427861Y-61434850D01*
X261380242Y-61387230D01*
X261475480Y-61387230D01*
X260808814Y-60482469D02*
X261475480Y-60482469D01*
X260427861Y-60720564D02*
X261142147Y-60958659D01*
X261142147Y-60339611D01*
X260475480Y-59530088D02*
X260475480Y-59720564D01*
X260523100Y-59815802D01*
X260570719Y-59863421D01*
X260713576Y-59958659D01*
X260904052Y-60006278D01*
X261285004Y-60006278D01*
X261380242Y-59958659D01*
X261427861Y-59911040D01*
X261475480Y-59815802D01*
X261475480Y-59625326D01*
X261427861Y-59530088D01*
X261380242Y-59482469D01*
X261285004Y-59434850D01*
X261046909Y-59434850D01*
X260951671Y-59482469D01*
X260904052Y-59530088D01*
X260856433Y-59625326D01*
X260856433Y-59815802D01*
X260904052Y-59911040D01*
X260951671Y-59958659D01*
X261046909Y-60006278D01*
X261475480Y-59006278D02*
X260808814Y-59006278D01*
X260904052Y-59006278D02*
X260856433Y-58958659D01*
X260808814Y-58863421D01*
X260808814Y-58720564D01*
X260856433Y-58625326D01*
X260951671Y-58577707D01*
X261475480Y-58577707D01*
X260951671Y-58577707D02*
X260856433Y-58530088D01*
X260808814Y-58434850D01*
X260808814Y-58291992D01*
X260856433Y-58196754D01*
X260951671Y-58149135D01*
X261475480Y-58149135D01*
X261475480Y-57672945D02*
X260808814Y-57672945D01*
X260904052Y-57672945D02*
X260856433Y-57625326D01*
X260808814Y-57530088D01*
X260808814Y-57387230D01*
X260856433Y-57291992D01*
X260951671Y-57244373D01*
X261475480Y-57244373D01*
X260951671Y-57244373D02*
X260856433Y-57196754D01*
X260808814Y-57101516D01*
X260808814Y-56958659D01*
X260856433Y-56863421D01*
X260951671Y-56815802D01*
X261475480Y-56815802D01*
X270305280Y-72063761D02*
X270305280Y-71968523D01*
X270352900Y-71873285D01*
X270400519Y-71825666D01*
X270495757Y-71778047D01*
X270686233Y-71730428D01*
X270924328Y-71730428D01*
X271114804Y-71778047D01*
X271210042Y-71825666D01*
X271257661Y-71873285D01*
X271305280Y-71968523D01*
X271305280Y-72063761D01*
X271257661Y-72159000D01*
X271210042Y-72206619D01*
X271114804Y-72254238D01*
X270924328Y-72301857D01*
X270686233Y-72301857D01*
X270495757Y-72254238D01*
X270400519Y-72206619D01*
X270352900Y-72159000D01*
X270305280Y-72063761D01*
X271210042Y-71301857D02*
X271257661Y-71254238D01*
X271305280Y-71301857D01*
X271257661Y-71349476D01*
X271210042Y-71301857D01*
X271305280Y-71301857D01*
X270400519Y-70873285D02*
X270352900Y-70825666D01*
X270305280Y-70730428D01*
X270305280Y-70492333D01*
X270352900Y-70397095D01*
X270400519Y-70349476D01*
X270495757Y-70301857D01*
X270590995Y-70301857D01*
X270733852Y-70349476D01*
X271305280Y-70920904D01*
X271305280Y-70301857D01*
X271305280Y-69349476D02*
X271305280Y-69920904D01*
X271305280Y-69635190D02*
X270305280Y-69635190D01*
X270448138Y-69730428D01*
X270543376Y-69825666D01*
X270590995Y-69920904D01*
X270638614Y-68492333D02*
X271305280Y-68492333D01*
X270257661Y-68730428D02*
X270971947Y-68968523D01*
X270971947Y-68349476D01*
X271305280Y-67968523D02*
X270638614Y-67968523D01*
X270305280Y-67968523D02*
X270352900Y-68016142D01*
X270400519Y-67968523D01*
X270352900Y-67920904D01*
X270305280Y-67968523D01*
X270400519Y-67968523D01*
X270638614Y-67492333D02*
X271305280Y-67492333D01*
X270733852Y-67492333D02*
X270686233Y-67444714D01*
X270638614Y-67349476D01*
X270638614Y-67206619D01*
X270686233Y-67111380D01*
X270781471Y-67063761D01*
X271305280Y-67063761D01*
X270257661Y-65873285D02*
X271543376Y-66730428D01*
X270305280Y-65063761D02*
X270305280Y-65539952D01*
X270781471Y-65587571D01*
X270733852Y-65539952D01*
X270686233Y-65444714D01*
X270686233Y-65206619D01*
X270733852Y-65111380D01*
X270781471Y-65063761D01*
X270876709Y-65016142D01*
X271114804Y-65016142D01*
X271210042Y-65063761D01*
X271257661Y-65111380D01*
X271305280Y-65206619D01*
X271305280Y-65444714D01*
X271257661Y-65539952D01*
X271210042Y-65587571D01*
X271210042Y-64587571D02*
X271257661Y-64539952D01*
X271305280Y-64587571D01*
X271257661Y-64635190D01*
X271210042Y-64587571D01*
X271305280Y-64587571D01*
X270638614Y-63682809D02*
X271305280Y-63682809D01*
X270257661Y-63920904D02*
X270971947Y-64159000D01*
X270971947Y-63539952D01*
X270638614Y-62730428D02*
X271305280Y-62730428D01*
X270257661Y-62968523D02*
X270971947Y-63206619D01*
X270971947Y-62587571D01*
X270733852Y-62063761D02*
X270686233Y-62159000D01*
X270638614Y-62206619D01*
X270543376Y-62254238D01*
X270495757Y-62254238D01*
X270400519Y-62206619D01*
X270352900Y-62159000D01*
X270305280Y-62063761D01*
X270305280Y-61873285D01*
X270352900Y-61778047D01*
X270400519Y-61730428D01*
X270495757Y-61682809D01*
X270543376Y-61682809D01*
X270638614Y-61730428D01*
X270686233Y-61778047D01*
X270733852Y-61873285D01*
X270733852Y-62063761D01*
X270781471Y-62159000D01*
X270829090Y-62206619D01*
X270924328Y-62254238D01*
X271114804Y-62254238D01*
X271210042Y-62206619D01*
X271257661Y-62159000D01*
X271305280Y-62063761D01*
X271305280Y-61873285D01*
X271257661Y-61778047D01*
X271210042Y-61730428D01*
X271114804Y-61682809D01*
X270924328Y-61682809D01*
X270829090Y-61730428D01*
X270781471Y-61778047D01*
X270733852Y-61873285D01*
X271305280Y-61254238D02*
X270638614Y-61254238D01*
X270733852Y-61254238D02*
X270686233Y-61206619D01*
X270638614Y-61111380D01*
X270638614Y-60968523D01*
X270686233Y-60873285D01*
X270781471Y-60825666D01*
X271305280Y-60825666D01*
X270781471Y-60825666D02*
X270686233Y-60778047D01*
X270638614Y-60682809D01*
X270638614Y-60539952D01*
X270686233Y-60444714D01*
X270781471Y-60397095D01*
X271305280Y-60397095D01*
X271305280Y-59920904D02*
X270638614Y-59920904D01*
X270733852Y-59920904D02*
X270686233Y-59873285D01*
X270638614Y-59778047D01*
X270638614Y-59635190D01*
X270686233Y-59539952D01*
X270781471Y-59492333D01*
X271305280Y-59492333D01*
X270781471Y-59492333D02*
X270686233Y-59444714D01*
X270638614Y-59349476D01*
X270638614Y-59206619D01*
X270686233Y-59111380D01*
X270781471Y-59063761D01*
X271305280Y-59063761D01*
X267295380Y-77835911D02*
X267295380Y-77740673D01*
X267343000Y-77645435D01*
X267390619Y-77597816D01*
X267485857Y-77550197D01*
X267676333Y-77502578D01*
X267914428Y-77502578D01*
X268104904Y-77550197D01*
X268200142Y-77597816D01*
X268247761Y-77645435D01*
X268295380Y-77740673D01*
X268295380Y-77835911D01*
X268247761Y-77931150D01*
X268200142Y-77978769D01*
X268104904Y-78026388D01*
X267914428Y-78074007D01*
X267676333Y-78074007D01*
X267485857Y-78026388D01*
X267390619Y-77978769D01*
X267343000Y-77931150D01*
X267295380Y-77835911D01*
X268200142Y-77074007D02*
X268247761Y-77026388D01*
X268295380Y-77074007D01*
X268247761Y-77121626D01*
X268200142Y-77074007D01*
X268295380Y-77074007D01*
X267295380Y-76407340D02*
X267295380Y-76312102D01*
X267343000Y-76216864D01*
X267390619Y-76169245D01*
X267485857Y-76121626D01*
X267676333Y-76074007D01*
X267914428Y-76074007D01*
X268104904Y-76121626D01*
X268200142Y-76169245D01*
X268247761Y-76216864D01*
X268295380Y-76312102D01*
X268295380Y-76407340D01*
X268247761Y-76502578D01*
X268200142Y-76550197D01*
X268104904Y-76597816D01*
X267914428Y-76645435D01*
X267676333Y-76645435D01*
X267485857Y-76597816D01*
X267390619Y-76550197D01*
X267343000Y-76502578D01*
X267295380Y-76407340D01*
X267390619Y-75693054D02*
X267343000Y-75645435D01*
X267295380Y-75550197D01*
X267295380Y-75312102D01*
X267343000Y-75216864D01*
X267390619Y-75169245D01*
X267485857Y-75121626D01*
X267581095Y-75121626D01*
X267723952Y-75169245D01*
X268295380Y-75740673D01*
X268295380Y-75121626D01*
X268295380Y-74169245D02*
X268295380Y-74740673D01*
X268295380Y-74454959D02*
X267295380Y-74454959D01*
X267438238Y-74550197D01*
X267533476Y-74645435D01*
X267581095Y-74740673D01*
X268295380Y-73740673D02*
X267628714Y-73740673D01*
X267295380Y-73740673D02*
X267343000Y-73788292D01*
X267390619Y-73740673D01*
X267343000Y-73693054D01*
X267295380Y-73740673D01*
X267390619Y-73740673D01*
X267628714Y-73264483D02*
X268295380Y-73264483D01*
X267723952Y-73264483D02*
X267676333Y-73216864D01*
X267628714Y-73121626D01*
X267628714Y-72978769D01*
X267676333Y-72883530D01*
X267771571Y-72835911D01*
X268295380Y-72835911D01*
X267247761Y-71645435D02*
X268533476Y-72502578D01*
X267295380Y-71121626D02*
X267295380Y-71026388D01*
X267343000Y-70931150D01*
X267390619Y-70883530D01*
X267485857Y-70835911D01*
X267676333Y-70788292D01*
X267914428Y-70788292D01*
X268104904Y-70835911D01*
X268200142Y-70883530D01*
X268247761Y-70931150D01*
X268295380Y-71026388D01*
X268295380Y-71121626D01*
X268247761Y-71216864D01*
X268200142Y-71264483D01*
X268104904Y-71312102D01*
X267914428Y-71359721D01*
X267676333Y-71359721D01*
X267485857Y-71312102D01*
X267390619Y-71264483D01*
X267343000Y-71216864D01*
X267295380Y-71121626D01*
X268200142Y-70359721D02*
X268247761Y-70312102D01*
X268295380Y-70359721D01*
X268247761Y-70407340D01*
X268200142Y-70359721D01*
X268295380Y-70359721D01*
X267295380Y-69407340D02*
X267295380Y-69883530D01*
X267771571Y-69931150D01*
X267723952Y-69883530D01*
X267676333Y-69788292D01*
X267676333Y-69550197D01*
X267723952Y-69454959D01*
X267771571Y-69407340D01*
X267866809Y-69359721D01*
X268104904Y-69359721D01*
X268200142Y-69407340D01*
X268247761Y-69454959D01*
X268295380Y-69550197D01*
X268295380Y-69788292D01*
X268247761Y-69883530D01*
X268200142Y-69931150D01*
X267295380Y-69026388D02*
X267295380Y-68407340D01*
X267676333Y-68740673D01*
X267676333Y-68597816D01*
X267723952Y-68502578D01*
X267771571Y-68454959D01*
X267866809Y-68407340D01*
X268104904Y-68407340D01*
X268200142Y-68454959D01*
X268247761Y-68502578D01*
X268295380Y-68597816D01*
X268295380Y-68883530D01*
X268247761Y-68978769D01*
X268200142Y-69026388D01*
X267295380Y-68074007D02*
X267295380Y-67454959D01*
X267676333Y-67788292D01*
X267676333Y-67645435D01*
X267723952Y-67550197D01*
X267771571Y-67502578D01*
X267866809Y-67454959D01*
X268104904Y-67454959D01*
X268200142Y-67502578D01*
X268247761Y-67550197D01*
X268295380Y-67645435D01*
X268295380Y-67931150D01*
X268247761Y-68026388D01*
X268200142Y-68074007D01*
X268295380Y-67026388D02*
X267628714Y-67026388D01*
X267723952Y-67026388D02*
X267676333Y-66978769D01*
X267628714Y-66883530D01*
X267628714Y-66740673D01*
X267676333Y-66645435D01*
X267771571Y-66597816D01*
X268295380Y-66597816D01*
X267771571Y-66597816D02*
X267676333Y-66550197D01*
X267628714Y-66454959D01*
X267628714Y-66312102D01*
X267676333Y-66216864D01*
X267771571Y-66169245D01*
X268295380Y-66169245D01*
X268295380Y-65693054D02*
X267628714Y-65693054D01*
X267723952Y-65693054D02*
X267676333Y-65645435D01*
X267628714Y-65550197D01*
X267628714Y-65407340D01*
X267676333Y-65312102D01*
X267771571Y-65264483D01*
X268295380Y-65264483D01*
X267771571Y-65264483D02*
X267676333Y-65216864D01*
X267628714Y-65121626D01*
X267628714Y-64978769D01*
X267676333Y-64883530D01*
X267771571Y-64835911D01*
X268295380Y-64835911D01*
X266660380Y-65339230D02*
X266660380Y-65243992D01*
X266708000Y-65148754D01*
X266755619Y-65101135D01*
X266850857Y-65053516D01*
X267041333Y-65005897D01*
X267279428Y-65005897D01*
X267469904Y-65053516D01*
X267565142Y-65101135D01*
X267612761Y-65148754D01*
X267660380Y-65243992D01*
X267660380Y-65339230D01*
X267612761Y-65434469D01*
X267565142Y-65482088D01*
X267469904Y-65529707D01*
X267279428Y-65577326D01*
X267041333Y-65577326D01*
X266850857Y-65529707D01*
X266755619Y-65482088D01*
X266708000Y-65434469D01*
X266660380Y-65339230D01*
X267565142Y-64577326D02*
X267612761Y-64529707D01*
X267660380Y-64577326D01*
X267612761Y-64624945D01*
X267565142Y-64577326D01*
X267660380Y-64577326D01*
X266660380Y-63910659D02*
X266660380Y-63815421D01*
X266708000Y-63720183D01*
X266755619Y-63672564D01*
X266850857Y-63624945D01*
X267041333Y-63577326D01*
X267279428Y-63577326D01*
X267469904Y-63624945D01*
X267565142Y-63672564D01*
X267612761Y-63720183D01*
X267660380Y-63815421D01*
X267660380Y-63910659D01*
X267612761Y-64005897D01*
X267565142Y-64053516D01*
X267469904Y-64101135D01*
X267279428Y-64148754D01*
X267041333Y-64148754D01*
X266850857Y-64101135D01*
X266755619Y-64053516D01*
X266708000Y-64005897D01*
X266660380Y-63910659D01*
X266660380Y-62672564D02*
X266660380Y-63148754D01*
X267136571Y-63196373D01*
X267088952Y-63148754D01*
X267041333Y-63053516D01*
X267041333Y-62815421D01*
X267088952Y-62720183D01*
X267136571Y-62672564D01*
X267231809Y-62624945D01*
X267469904Y-62624945D01*
X267565142Y-62672564D01*
X267612761Y-62720183D01*
X267660380Y-62815421D01*
X267660380Y-63053516D01*
X267612761Y-63148754D01*
X267565142Y-63196373D01*
X267660380Y-62196373D02*
X266993714Y-62196373D01*
X266660380Y-62196373D02*
X266708000Y-62243992D01*
X266755619Y-62196373D01*
X266708000Y-62148754D01*
X266660380Y-62196373D01*
X266755619Y-62196373D01*
X266993714Y-61720183D02*
X267660380Y-61720183D01*
X267088952Y-61720183D02*
X267041333Y-61672564D01*
X266993714Y-61577326D01*
X266993714Y-61434469D01*
X267041333Y-61339230D01*
X267136571Y-61291611D01*
X267660380Y-61291611D01*
X266612761Y-60101135D02*
X267898476Y-60958278D01*
X267660380Y-59243992D02*
X267660380Y-59815421D01*
X267660380Y-59529707D02*
X266660380Y-59529707D01*
X266803238Y-59624945D01*
X266898476Y-59720183D01*
X266946095Y-59815421D01*
X267565142Y-58815421D02*
X267612761Y-58767802D01*
X267660380Y-58815421D01*
X267612761Y-58863040D01*
X267565142Y-58815421D01*
X267660380Y-58815421D01*
X266755619Y-58386850D02*
X266708000Y-58339230D01*
X266660380Y-58243992D01*
X266660380Y-58005897D01*
X266708000Y-57910659D01*
X266755619Y-57863040D01*
X266850857Y-57815421D01*
X266946095Y-57815421D01*
X267088952Y-57863040D01*
X267660380Y-58434469D01*
X267660380Y-57815421D01*
X266660380Y-57482088D02*
X266660380Y-56815421D01*
X267660380Y-57243992D01*
X267660380Y-56434469D02*
X266993714Y-56434469D01*
X267088952Y-56434469D02*
X267041333Y-56386850D01*
X266993714Y-56291611D01*
X266993714Y-56148754D01*
X267041333Y-56053516D01*
X267136571Y-56005897D01*
X267660380Y-56005897D01*
X267136571Y-56005897D02*
X267041333Y-55958278D01*
X266993714Y-55863040D01*
X266993714Y-55720183D01*
X267041333Y-55624945D01*
X267136571Y-55577326D01*
X267660380Y-55577326D01*
X267660380Y-55101135D02*
X266993714Y-55101135D01*
X267088952Y-55101135D02*
X267041333Y-55053516D01*
X266993714Y-54958278D01*
X266993714Y-54815421D01*
X267041333Y-54720183D01*
X267136571Y-54672564D01*
X267660380Y-54672564D01*
X267136571Y-54672564D02*
X267041333Y-54624945D01*
X266993714Y-54529707D01*
X266993714Y-54386850D01*
X267041333Y-54291611D01*
X267136571Y-54243992D01*
X267660380Y-54243992D01*
M02*
-14
View File
@@ -1,14 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Other,ECO1*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*
-14
View File
@@ -1,14 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Other,ECO2*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*
-28
View File
@@ -1,28 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 #@! TA.AperFunction,Profile*
%ADD10C,0.050000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
X170180000Y-40640000D02*
X269240000Y-40640000D01*
X170180000Y-43180000D02*
X170180000Y-40640000D01*
X170180000Y-139700000D02*
X170180000Y-43180000D01*
X269240000Y-139700000D02*
X269240000Y-40640000D01*
X170180000Y-139700000D02*
X269240000Y-139700000D01*
M02*
-32
View File
@@ -1,32 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Glue,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.380000*%
G04 APERTURE END LIST*
D10*
X211413132Y-73660000D02*
G75*
G03*
X211413132Y-73660000I-212132J0D01*
G01*
X211751000Y-73660000D02*
G75*
G03*
X211751000Y-73660000I-550000J0D01*
G01*
X212101000Y-73660000D02*
G75*
G03*
X212101000Y-73660000I-900000J0D01*
G01*
M02*
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-14
View File
@@ -1,14 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10*
G04 #@! TF.CreationDate,2021-06-10T23:09:58+02:00*
G04 #@! TF.ProjectId,PlantCtrlESP32,506c616e-7443-4747-926c-45535033322e,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Other,User*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.10) date 2021-06-10 23:09:58*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*
-20
View File
@@ -1,20 +0,0 @@
M48
; DRILL file {KiCad 5.1.10} date Thu Jun 10 23:11:37 2021
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2021-06-10T23:11:37+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.10
; #@! TF.FileFunction,NonPlated,1,2,NPTH
FMAT,2
INCH
T1C0.0941
T2C0.1358
%
G90
G05
T1
X9.8951Y-2.461
T2
X7.394Y-2.461
X9.5672Y-1.831
T0
M30
-304
View File
@@ -1,304 +0,0 @@
M48
; DRILL file {KiCad 5.1.10} date Thu Jun 10 23:11:37 2021
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2021-06-10T23:11:37+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.10
; #@! TF.FileFunction,Plated,1,2,PTH
FMAT,2
INCH
T1C0.0157
T2C0.0295
T3C0.0315
T4C0.0374
T5C0.0394
T6C0.0591
T7C0.0591
T8C0.0787
T9C0.1181
%
G90
G05
T1
X6.7418Y-4.8632
X6.755Y-4.285
X6.8055Y-4.415
X6.825Y-3.525
X6.845Y-3.93
X6.8754Y-4.7304
X6.8757Y-4.3343
X6.905Y-4.58
X6.96Y-4.585
X6.98Y-3.19
X6.985Y-3.91
X7.005Y-4.37
X7.025Y-2.385
X7.025Y-4.75
X7.04Y-4.6
X7.045Y-5.035
X7.05Y-3.48
X7.055Y-4.38
X7.055Y-4.89
X7.08Y-2.99
X7.11Y-5.025
X7.13Y-2.45
X7.13Y-4.96
X7.14Y-4.77
X7.15Y-2.92
X7.1528Y-5.1602
X7.17Y-5.43
X7.21Y-4.3
X7.22Y-4.77
X7.225Y-4.35
X7.225Y-4.35
X7.2274Y-4.2647
X7.23Y-3.06
X7.25Y-5.16
X7.255Y-4.41
X7.2866Y-5.2154
X7.29Y-3.41
X7.3Y-4.41
X7.315Y-2.385
X7.32Y-4.77
X7.3282Y-3.95
X7.34Y-4.075
X7.35Y-3.73
X7.3621Y-4.3489
X7.37Y-3.67
X7.37Y-4.12
X7.42Y-4.77
X7.4275Y-5.0525
X7.43Y-4.92
X7.43Y-4.96
X7.45Y-3.15
X7.5Y-3.78
X7.52Y-4.77
X7.5434Y-4.5416
X7.55Y-4.35
X7.58Y-4.58
X7.59Y-4.15
X7.59Y-5.29
X7.5965Y-4.9528
X7.62Y-4.77
X7.64Y-4.18
X7.66Y-2.095
X7.665Y-1.99
X7.69Y-5.41
X7.7Y-2.36
X7.72Y-4.77
X7.78Y-2.525
X7.78Y-5.37
X7.825Y-3.25
X7.875Y-3.45
X7.975Y-3.45
X7.975Y-4.45
X8.025Y-1.97
X8.0625Y-2.8075
X8.07Y-2.09
X8.072Y-4.652
X8.09Y-5.2
X8.125Y-3.4
X8.145Y-2.32
X8.15Y-5.09
X8.18Y-4.44
X8.22Y-3.92
X8.24Y-4.72
X8.2779Y-3.7421
X8.2779Y-3.9179
X8.2779Y-4.1879
X8.29Y-5.44
X8.3Y-5.26
X8.31Y-3.275
X8.31Y-3.645
X8.3299Y-3.8453
X8.33Y-4.58
X8.35Y-4.645
X8.375Y-3.66
X8.38Y-5.37
X8.4Y-1.72
X8.43Y-4.7
X8.48Y-4.595
X8.49Y-1.815
X8.54Y-3.85
X8.57Y-1.78
X8.615Y-4.375
X8.637Y-4.8689
X8.6726Y-3.6326
X8.695Y-4.59
X8.695Y-4.7
X8.8Y-3.15
X8.83Y-3.85
X8.841Y-1.761
X8.847Y-1.646
X8.915Y-4.38
X8.9526Y-3.6326
X8.955Y-4.705
X8.9559Y-4.861
X8.96Y-4.58
X9.06Y-2.97
X9.11Y-2.1
X9.11Y-2.34
X9.13Y-3.85
X9.2Y-3.34
X9.22Y-4.37
X9.2526Y-3.6326
X9.2551Y-4.8335
X9.27Y-4.585
X9.27Y-4.705
X9.28Y-3.21
X9.319Y-1.656
X9.32Y-3.46
X9.325Y-1.764
X9.35Y-2.48
X9.44Y-3.85
X9.45Y-3.21
X9.47Y-2.59
X9.515Y-3.375
X9.52Y-4.38
X9.525Y-3.46
X9.525Y-4.585
X9.53Y-4.7
X9.5374Y-3.6326
X9.5588Y-3.2462
X9.58Y-4.85
X9.59Y-4.955
X9.715Y-2.025
X9.74Y-3.85
X9.75Y-4.7
X9.79Y-3.465
X9.84Y-4.385
X9.84Y-4.85
X9.845Y-1.835
X9.851Y-1.657
X9.854Y-1.744
X9.8774Y-3.6326
X9.885Y-4.955
X9.925Y-4.58
X10.03Y-3.27
X10.03Y-3.41
X10.05Y-3.85
X10.12Y-4.375
X10.125Y-4.22
X10.14Y-4.01
X10.17Y-4.85
X10.185Y-4.525
X10.185Y-4.955
X10.21Y-3.265
X10.315Y-4.715
X10.328Y-2.639
X10.3328Y-2.1392
X10.3378Y-3.8453
X10.34Y-3.41
X10.345Y-4.275
X10.355Y-3.585
X10.36Y-4.485
X10.365Y-2.6
X10.375Y-3.29
X10.4Y-3.945
X10.4028Y-3.85
X10.42Y-3.405
X10.475Y-3.63
X10.48Y-3.015
X10.505Y-4.41
X10.5051Y-3.5849
X10.51Y-3.195
X10.57Y-3.559
X10.572Y-2.412
T2
X8.47Y-1.645
X8.52Y-1.645
X8.57Y-1.645
T3
X8.655Y-3.03
X10.145Y-3.47
X10.1474Y-3.6326
T4
X6.861Y-2.737
X6.861Y-2.8354
X6.861Y-2.9339
X7.5247Y-5.07
X7.6231Y-5.07
X7.7216Y-5.07
X7.82Y-5.07
X8.45Y-4.9031
X8.45Y-5.0016
X8.45Y-5.1
X8.75Y-4.9031
X8.75Y-5.0016
X8.75Y-5.1
X9.05Y-4.9031
X9.05Y-5.0016
X9.05Y-5.1
X9.35Y-4.9031
X9.35Y-5.0016
X9.35Y-5.1
X9.65Y-4.9031
X9.65Y-5.0016
X9.65Y-5.1
X9.95Y-4.9031
X9.95Y-5.0016
X9.95Y-5.1
X10.25Y-4.9031
X10.25Y-5.0016
X10.25Y-5.1
T5
X6.95Y-3.4
X7.1381Y-2.805
X7.1469Y-3.4
X7.335Y-2.805
X7.5781Y-2.795
X7.775Y-2.795
X7.825Y-3.775
X7.825Y-3.875
X7.9Y-4.55
X7.925Y-3.775
X7.925Y-3.875
X8.0Y-4.55
X8.025Y-3.775
X8.025Y-3.875
X8.1Y-4.55
X8.125Y-3.775
X8.125Y-3.875
X8.39Y-3.4
X8.45Y-4.3516
X8.45Y-4.45
X8.5869Y-3.4
X8.707Y-2.665
X8.75Y-4.3516
X8.75Y-4.45
X8.807Y-2.665
X8.85Y-3.4
X8.902Y-2.412
X8.907Y-2.665
X9.0004Y-2.412
X9.007Y-2.665
X9.0469Y-3.4
X9.05Y-4.3516
X9.05Y-4.45
X9.35Y-4.3516
X9.35Y-4.45
X9.65Y-4.3516
X9.65Y-4.45
X9.95Y-4.3516
X9.95Y-4.45
X10.225Y-2.815
X10.225Y-2.915
X10.225Y-3.015
X10.225Y-3.115
X10.25Y-4.3516
X10.25Y-4.45
T6
X9.1502Y-2.8
X10.04Y-2.8
T7
X9.448Y-2.107
X9.448Y-2.307
T8
X6.9321Y-2.146
X10.029Y-2.146
T9
X6.85Y-1.75
X6.85Y-5.34
X10.45Y-1.75
X10.45Y-5.34
T0
M30
Binary file not shown.
+158
View File
@@ -0,0 +1,158 @@
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
(symbol "BQ34Z100PWR-G1" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (id 0) (at -12.7 26.4 0.0)
(effects (font (size 1.27 1.27)) (justify bottom left))
)
(property "Value" "BQ34Z100PWR-G1" (id 1) (at -12.7 -29.4 0.0)
(effects (font (size 1.27 1.27)) (justify bottom left))
)
(property "Footprint" "BQ34Z100PWR-G1:SOP65P640X120-14N" (id 2) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "MF" "Texas Instruments" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Description" "\nMulti-chemistry Impedance Track™ standalone fuel gauge | battery gas gauge\n" (id 5) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Package" "TSSOP-14 Texas Instruments" (id 6) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Price" "None" (id 7) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "SnapEDA_Link" "https://www.snapeda.com/parts/BQ34Z100PWR-G1/Texas+Instruments/view-part/?ref=snap" (id 8) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "MP" "BQ34Z100PWR-G1" (id 9) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Purchase-URL" "https://www.snapeda.com/api/url_track_click_mouser/?unipart_id=327977&manufacturer=Texas Instruments&part_name=BQ34Z100PWR-G1&search_term=None" (id 10) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Availability" "In Stock" (id 11) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(property "Check_prices" "https://www.snapeda.com/parts/BQ34Z100PWR-G1/Texas+Instruments/view-part/?ref=eda" (id 12) (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify bottom) hide)
)
(symbol "BQ34Z100PWR-G1_0_0"
(rectangle (start -12.7 -25.4) (end 12.7 25.4)
(stroke (width 0.41)) (fill (type background))
)
(pin input line (at -17.78 22.86 0) (length 5.08)
(name "REGIN"
(effects (font (size 1.016 1.016)))
)
(number "6"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 17.78 0) (length 5.08)
(name "BAT"
(effects (font (size 1.016 1.016)))
)
(number "4"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 12.7 0) (length 5.08)
(name "CE"
(effects (font (size 1.016 1.016)))
)
(number "5"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 7.62 0) (length 5.08)
(name "P1"
(effects (font (size 1.016 1.016)))
)
(number "3"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 5.08 0) (length 5.08)
(name "P2"
(effects (font (size 1.016 1.016)))
)
(number "1"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 2.54 0) (length 5.08)
(name "P3/SDA"
(effects (font (size 1.016 1.016)))
)
(number "14"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 -2.54 0) (length 5.08)
(name "REG25"
(effects (font (size 1.016 1.016)))
)
(number "7"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 -7.62 0) (length 5.08)
(name "SRN"
(effects (font (size 1.016 1.016)))
)
(number "10"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 -12.7 0) (length 5.08)
(name "SRP"
(effects (font (size 1.016 1.016)))
)
(number "9"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at -17.78 -17.78 0) (length 5.08)
(name "VEN"
(effects (font (size 1.016 1.016)))
)
(number "2"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 17.78 5.08 180.0) (length 5.08)
(name "P4/SCL"
(effects (font (size 1.016 1.016)))
)
(number "13"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 17.78 2.54 180.0) (length 5.08)
(name "P5/HDQ"
(effects (font (size 1.016 1.016)))
)
(number "12"
(effects (font (size 1.016 1.016)))
)
)
(pin bidirectional line (at 17.78 1.77636e-15 180.0) (length 5.08)
(name "P6/TS"
(effects (font (size 1.016 1.016)))
)
(number "11"
(effects (font (size 1.016 1.016)))
)
)
(pin power_in line (at 17.78 -20.32 180.0) (length 5.08)
(name "VSS"
(effects (font (size 1.016 1.016)))
)
(number "8"
(effects (font (size 1.016 1.016)))
)
)
)
)
)
File diff suppressed because it is too large Load Diff
+186
View File
@@ -0,0 +1,186 @@
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
(symbol "CN61CN33" (in_bom yes) (on_board yes)
(property "Reference" "U" (at 2.54 12.7 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "CN61CN33" (at 5.08 10.16 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "Package_TO_SOT_SMD:SOT-23" (at 7.62 2.54 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm809.pdf" (at 7.62 2.54 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "reset supervisor" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "Microprocessor Reset (active-low) Circuit, SOT-23" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_fp_filters" "SOT?23*" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "CN61CN33_0_1"
(rectangle (start 5.08 7.62) (end -5.08 -7.62)
(stroke (width 0.254) (type solid))
(fill (type background))
)
)
(symbol "CN61CN33_1_1"
(pin output line (at 0 -10.16 90) (length 2.54)
(name "RESET" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 7.62 0 180) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 0 10.16 270) (length 2.54)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "DS2438" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "DS2438" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (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)
)
(symbol "DS2438_0_1"
(rectangle (start -11.43 -2.54) (end 12.7 -30.48)
(stroke (width 0) (type solid))
(fill (type background))
)
)
(symbol "DS2438_1_1"
(pin power_in line (at -13.97 -6.35 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at -13.97 -12.7 0) (length 2.54)
(name "Vsens+" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at -13.97 -19.05 0) (length 2.54)
(name "Vsense-" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin input line (at -13.97 -25.4 0) (length 2.54)
(name "Vad" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 15.24 -25.4 180) (length 2.54)
(name "Vdd" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at 15.24 -19.05 180) (length 2.54)
(name "NC" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at 15.24 -12.7 180) (length 2.54)
(name "NC" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 15.24 -6.35 180) (length 2.54)
(name "DQ" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "DW01" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "IC" (at 21.59 7.62 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "DW01" (at 21.59 5.08 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "SOT95P280X135-6N" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Datasheet" "" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "HEIGHT" "1.35mm" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "DESCRIPTION" "ic" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "MANUFACTURER_PART_NUMBER" "DW01" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "MANUFACTURER_NAME" "Slkor" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "ki_locked" "" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(symbol "DW01_0_0"
(polyline
(pts
(xy 5.08 2.54)
(xy 5.08 -7.62)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 5.08 2.54)
(xy 20.32 2.54)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 20.32 -7.62)
(xy 5.08 -7.62)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 20.32 -7.62)
(xy 20.32 2.54)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(pin bidirectional line (at 0 0 0) (length 5.08)
(name "OD" (effects (font (size 1.016 1.016))))
(number "1" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 0 -2.54 0) (length 5.08)
(name "CSI" (effects (font (size 1.016 1.016))))
(number "2" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 0 -5.08 0) (length 5.08)
(name "OC" (effects (font (size 1.016 1.016))))
(number "3" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 25.4 -5.08 180) (length 5.08)
(name "TD" (effects (font (size 1.016 1.016))))
(number "4" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 25.4 -2.54 180) (length 5.08)
(name "VDD" (effects (font (size 1.016 1.016))))
(number "5" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 25.4 0 180) (length 5.08)
(name "VSS" (effects (font (size 1.016 1.016))))
(number "6" (effects (font (size 1.016 1.016))))
)
)
)
)
@@ -0,0 +1,454 @@
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
(symbol "ESP32-DEVKITC-32D" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at -15.2654 26.0604 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "ESP32-DEVKITC-32D" (at -15.2654 -27.9654 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "MODULE_ESP32-DEVKITC-32D" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Datasheet" "4" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Field4" "Espressif Systems" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "ki_locked" "" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(symbol "ESP32-DEVKITC-32D_0_0"
(polyline
(pts
(xy -15.24 -25.4)
(xy -15.24 25.4)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -15.24 25.4)
(xy 15.24 25.4)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 15.24 -25.4)
(xy -15.24 -25.4)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 15.24 25.4)
(xy 15.24 -25.4)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(pin power_in line (at -20.32 22.86 0) (length 5.08)
(name "3V3" (effects (font (size 1.016 1.016))))
(number "1" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 0 0) (length 5.08)
(name "IO26" (effects (font (size 1.016 1.016))))
(number "10" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 -2.54 0) (length 5.08)
(name "IO27" (effects (font (size 1.016 1.016))))
(number "11" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 -5.08 0) (length 5.08)
(name "IO14" (effects (font (size 1.016 1.016))))
(number "12" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 -7.62 0) (length 5.08)
(name "IO12" (effects (font (size 1.016 1.016))))
(number "13" (effects (font (size 1.016 1.016))))
)
(pin power_in line (at -20.32 -10.16 0) (length 5.08)
(name "GND1" (effects (font (size 1.016 1.016))))
(number "14" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 -12.7 0) (length 5.08)
(name "IO13" (effects (font (size 1.016 1.016))))
(number "15" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 -15.24 0) (length 5.08)
(name "SD2" (effects (font (size 1.016 1.016))))
(number "16" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 -17.78 0) (length 5.08)
(name "SD3" (effects (font (size 1.016 1.016))))
(number "17" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 -20.32 0) (length 5.08)
(name "CMD" (effects (font (size 1.016 1.016))))
(number "18" (effects (font (size 1.016 1.016))))
)
(pin power_in line (at -20.32 -22.86 0) (length 5.08)
(name "EXT_5V" (effects (font (size 1.016 1.016))))
(number "19" (effects (font (size 1.016 1.016))))
)
(pin input line (at -20.32 20.32 0) (length 5.08)
(name "EN" (effects (font (size 1.016 1.016))))
(number "2" (effects (font (size 1.016 1.016))))
)
(pin power_in line (at 20.32 22.86 180) (length 5.08)
(name "GND3" (effects (font (size 1.016 1.016))))
(number "20" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 20.32 180) (length 5.08)
(name "IO23" (effects (font (size 1.016 1.016))))
(number "21" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 17.78 180) (length 5.08)
(name "IO22" (effects (font (size 1.016 1.016))))
(number "22" (effects (font (size 1.016 1.016))))
)
(pin output line (at 20.32 15.24 180) (length 5.08)
(name "TXD0" (effects (font (size 1.016 1.016))))
(number "23" (effects (font (size 1.016 1.016))))
)
(pin input line (at 20.32 12.7 180) (length 5.08)
(name "RXD0" (effects (font (size 1.016 1.016))))
(number "24" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 10.16 180) (length 5.08)
(name "IO21" (effects (font (size 1.016 1.016))))
(number "25" (effects (font (size 1.016 1.016))))
)
(pin power_in line (at 20.32 7.62 180) (length 5.08)
(name "GND2" (effects (font (size 1.016 1.016))))
(number "26" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 5.08 180) (length 5.08)
(name "IO19" (effects (font (size 1.016 1.016))))
(number "27" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 2.54 180) (length 5.08)
(name "IO18" (effects (font (size 1.016 1.016))))
(number "28" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 0 180) (length 5.08)
(name "IO5" (effects (font (size 1.016 1.016))))
(number "29" (effects (font (size 1.016 1.016))))
)
(pin input line (at -20.32 17.78 0) (length 5.08)
(name "SENSOR_VP" (effects (font (size 1.016 1.016))))
(number "3" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -2.54 180) (length 5.08)
(name "IO17" (effects (font (size 1.016 1.016))))
(number "30" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -5.08 180) (length 5.08)
(name "IO16" (effects (font (size 1.016 1.016))))
(number "31" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -7.62 180) (length 5.08)
(name "IO4" (effects (font (size 1.016 1.016))))
(number "32" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -10.16 180) (length 5.08)
(name "IO0" (effects (font (size 1.016 1.016))))
(number "33" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -12.7 180) (length 5.08)
(name "IO2" (effects (font (size 1.016 1.016))))
(number "34" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -15.24 180) (length 5.08)
(name "IO15" (effects (font (size 1.016 1.016))))
(number "35" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -17.78 180) (length 5.08)
(name "SD1" (effects (font (size 1.016 1.016))))
(number "36" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 20.32 -20.32 180) (length 5.08)
(name "SD0" (effects (font (size 1.016 1.016))))
(number "37" (effects (font (size 1.016 1.016))))
)
(pin input clock (at 20.32 -22.86 180) (length 5.08)
(name "CLK" (effects (font (size 1.016 1.016))))
(number "38" (effects (font (size 1.016 1.016))))
)
(pin input line (at -20.32 15.24 0) (length 5.08)
(name "SENSOR_VN" (effects (font (size 1.016 1.016))))
(number "4" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 12.7 0) (length 5.08)
(name "IO34" (effects (font (size 1.016 1.016))))
(number "5" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 10.16 0) (length 5.08)
(name "IO35" (effects (font (size 1.016 1.016))))
(number "6" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 7.62 0) (length 5.08)
(name "IO32" (effects (font (size 1.016 1.016))))
(number "7" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 5.08 0) (length 5.08)
(name "IO33" (effects (font (size 1.016 1.016))))
(number "8" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -20.32 2.54 0) (length 5.08)
(name "IO25" (effects (font (size 1.016 1.016))))
(number "9" (effects (font (size 1.016 1.016))))
)
)
)
(symbol "SL2300" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "Q" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "SL2300" (at 7.62 0 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (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)
)
(symbol "SL2300_1_1"
(polyline
(pts
(xy -1.016 0)
(xy -3.81 0)
)
(stroke (width 0) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -1.016 1.905)
(xy -1.016 -1.905)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -0.508 -1.27)
(xy -0.508 -2.286)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -0.508 0.508)
(xy -0.508 -0.508)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -0.508 2.286)
(xy -0.508 1.27)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 1.27 2.54)
(xy 1.27 1.778)
)
(stroke (width 0) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 1.27 -2.54)
(xy 1.27 0)
(xy -0.508 0)
)
(stroke (width 0) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -0.508 -1.778)
(xy 2.032 -1.778)
(xy 2.032 1.778)
(xy -0.508 1.778)
)
(stroke (width 0) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -0.254 0)
(xy 0.762 0.381)
(xy 0.762 -0.381)
(xy -0.254 0)
)
(stroke (width 0) (type solid))
(fill (type outline))
)
(polyline
(pts
(xy 1.524 0.508)
(xy 1.651 0.381)
(xy 2.413 0.381)
(xy 2.54 0.254)
)
(stroke (width 0) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 2.032 0.381)
(xy 1.651 -0.254)
(xy 2.413 -0.254)
(xy 2.032 0.381)
)
(stroke (width 0) (type solid))
(fill (type none))
)
(circle (center 0.381 0) (radius 2.794)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(circle (center 1.27 -1.778) (radius 0.254)
(stroke (width 0) (type solid))
(fill (type outline))
)
(circle (center 1.27 1.778) (radius 0.254)
(stroke (width 0) (type solid))
(fill (type outline))
)
(pin input line (at -6.35 0 0) (length 2.54)
(name "G" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 1.27 -5.08 90) (length 2.54)
(name "S" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 1.27 5.08 270) (length 2.54)
(name "D" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "SR04M-2" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "H" (at 6.35 27.94 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "SR04M-2" (at 7.62 -21.59 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (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)
)
(symbol "SR04M-2_0_1"
(rectangle (start -22.86 26.67) (end 41.91 -20.32)
(stroke (width 0.254) (type solid))
(fill (type none))
)
)
)
(symbol "SR04M-2-HeaderConn_01x04_Female" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes)
(property "Reference" "J" (at 0 5.08 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "SR04M-2-HeaderConn_01x04_Female" (at 0 -7.62 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "ESP32:SR04M-2PinHeader_1x04_P2.54mm_Vertical" (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 "ki_keywords" "connector" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_fp_filters" "Connector*:*_1x??_*" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "SR04M-2-HeaderConn_01x04_Female_1_1"
(arc (start 0 -4.572) (mid -0.5058 -5.08) (end 0 -5.588)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(arc (start 0 -2.032) (mid -0.5058 -2.54) (end 0 -3.048)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -1.27 -5.08)
(xy -0.508 -5.08)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -1.27 -2.54)
(xy -0.508 -2.54)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -1.27 0)
(xy -0.508 0)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -1.27 2.54)
(xy -0.508 2.54)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(arc (start 0 0.508) (mid -0.5058 0) (end 0 -0.508)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(arc (start 0 3.048) (mid -0.5058 2.54) (end 0 2.032)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(pin power_in line (at -5.08 2.54 0) (length 3.81)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin input line (at -5.08 0 0) (length 3.81)
(name "RX" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin output line (at -5.08 -2.54 0) (length 3.81)
(name "TX" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -5.08 -5.08 0) (length 3.81)
(name "GND" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
)
)
)
+74
View File
@@ -0,0 +1,74 @@
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
(symbol "LP38690DT-3.3" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at -10.16 5.08 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "LP38690DT-3.3" (at -10.16 -7.62 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "DPAK457P991X255-3N" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Datasheet" "IPC-7351B" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Field4" "Texas Instruments" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Field5" "M" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Field6" "2.55mm" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "ki_locked" "" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(symbol "LP38690DT-3.3_0_0"
(polyline
(pts
(xy -10.16 -5.08)
(xy 10.16 -5.08)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -10.16 5.08)
(xy -10.16 -5.08)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 10.16 -5.08)
(xy 10.16 5.08)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 10.16 5.08)
(xy -10.16 5.08)
)
(stroke (width 0.1524) (type solid))
(fill (type none))
)
(pin output line (at 15.24 2.54 180) (length 5.08)
(name "OUT" (effects (font (size 1.016 1.016))))
(number "1" (effects (font (size 1.016 1.016))))
)
(pin input line (at -15.24 2.54 0) (length 5.08)
(name "IN" (effects (font (size 1.016 1.016))))
(number "3" (effects (font (size 1.016 1.016))))
)
(pin power_in line (at 15.24 -2.54 180) (length 5.08)
(name "GND" (effects (font (size 1.016 1.016))))
(number "4" (effects (font (size 1.016 1.016))))
)
)
)
)
@@ -0,0 +1,37 @@
(footprint SOP65P640X120-14N (layer F.Cu) (tedit 65346025)
(descr "")
(attr smd)
(fp_text reference REF** (at -0.595 -3.435 0) (layer F.SilkS)
(effects (font (size 1.0 1.0) (thickness 0.15)))
)
(fp_text value SOP65P640X120-14N (at 7.025 3.435 0) (layer F.Fab)
(effects (font (size 1.0 1.0) (thickness 0.15)))
)
(pad 1 smd roundrect (roundrect_rratio 0.05) (at -2.87 -1.95) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 2 smd roundrect (roundrect_rratio 0.05) (at -2.87 -1.3) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 3 smd roundrect (roundrect_rratio 0.05) (at -2.87 -0.65) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 4 smd roundrect (roundrect_rratio 0.05) (at -2.87 0.0) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 5 smd roundrect (roundrect_rratio 0.05) (at -2.87 0.65) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 6 smd roundrect (roundrect_rratio 0.05) (at -2.87 1.3) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 7 smd roundrect (roundrect_rratio 0.05) (at -2.87 1.95) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 8 smd roundrect (roundrect_rratio 0.05) (at 2.87 1.95) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 9 smd roundrect (roundrect_rratio 0.05) (at 2.87 1.3) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 10 smd roundrect (roundrect_rratio 0.05) (at 2.87 0.65) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 11 smd roundrect (roundrect_rratio 0.05) (at 2.87 0.0) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 12 smd roundrect (roundrect_rratio 0.05) (at 2.87 -0.65) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 13 smd roundrect (roundrect_rratio 0.05) (at 2.87 -1.3) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 14 smd roundrect (roundrect_rratio 0.05) (at 2.87 -1.95) (size 1.57 0.41) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(fp_circle (center -4.24 -2.26) (end -4.14 -2.26) (layer F.SilkS) (width 0.2))
(fp_circle (center -4.24 -2.26) (end -4.14 -2.26) (layer F.Fab) (width 0.2))
(fp_line (start -2.2 -2.5) (end 2.2 -2.5) (layer F.Fab) (width 0.127))
(fp_line (start -2.2 2.5) (end 2.2 2.5) (layer F.Fab) (width 0.127))
(fp_line (start -2.2 -2.5) (end 2.2 -2.5) (layer F.SilkS) (width 0.127))
(fp_line (start -2.2 2.5) (end 2.2 2.5) (layer F.SilkS) (width 0.127))
(fp_line (start -2.2 -2.5) (end -2.2 2.5) (layer F.Fab) (width 0.127))
(fp_line (start 2.2 -2.5) (end 2.2 2.5) (layer F.Fab) (width 0.127))
(fp_line (start -3.905 -2.75) (end 3.905 -2.75) (layer F.CrtYd) (width 0.05))
(fp_line (start -3.905 2.75) (end 3.905 2.75) (layer F.CrtYd) (width 0.05))
(fp_line (start -3.905 -2.75) (end -3.905 2.75) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.905 -2.75) (end 3.905 2.75) (layer F.CrtYd) (width 0.05))
)
+29
View File
@@ -0,0 +1,29 @@
(footprint SSOP10 (layer F.Cu) (tedit 652971AF)
(descr "")
(attr smd)
(fp_text reference REF** (at -3.2004 0.0 900) (layer F.SilkS)
(effects (font (size 0.64 0.64) (thickness 0.15)))
)
(fp_text value SSOP10 (at 3.1496 -0.4064 900) (layer F.Fab)
(effects (font (size 0.64 0.64) (thickness 0.15)))
)
(pad 2 smd rect (at -1.0 2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 9 smd rect (at -1.0 -2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 1 smd rect (at -2.0 2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 3 smd rect (at 0.0 2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 4 smd rect (at 1.0 2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 10 smd rect (at -2.0 -2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 8 smd rect (at 0.0 -2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 7 smd rect (at 1.0 -2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 5 smd rect (at 2.0 2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(pad 6 smd rect (at 2.0 -2.8) (size 0.6 1.75) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
(fp_line (start 2.527 -1.9) (end 2.527 1.4) (layer F.Fab) (width 0.2032))
(fp_line (start 2.527 1.4) (end 2.527 1.9) (layer F.Fab) (width 0.2032))
(fp_line (start 2.527 1.9) (end -2.527 1.9) (layer F.Fab) (width 0.2032))
(fp_line (start -2.527 1.9) (end -2.527 1.4) (layer F.Fab) (width 0.2032))
(fp_line (start -2.527 1.4) (end -2.527 -1.9) (layer F.Fab) (width 0.2032))
(fp_line (start -2.527 -1.9) (end 2.527 -1.9) (layer F.Fab) (width 0.2032))
(fp_line (start 2.527 1.4) (end -2.527 1.4) (layer F.Fab) (width 0.2032))
(fp_line (start -1.905 1.016) (end -1.905 -1.016) (layer F.SilkS) (width 0.3048))
)
+104
View File
@@ -0,0 +1,104 @@
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
(symbol "SX1308" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at -17.78 20.32 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "SX1308" (at -17.8054 17.8054 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "SOT-23-6" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "Datasheet" "" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom) hide)
)
(property "ki_locked" "" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(symbol "SX1308_0_0"
(polyline
(pts
(xy -17.78 -7.62)
(xy -17.78 15.24)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -17.78 15.24)
(xy 0 15.24)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -13.7922 0.1778)
(xy -11.2522 0.1778)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -11.303 1.6764)
(xy -8.763 1.6764)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy -11.2522 0.1778)
(xy -11.303 1.6764)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 0 -7.62)
(xy -17.78 -7.62)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 0 15.24)
(xy 0 -7.62)
)
(stroke (width 0.254) (type solid))
(fill (type none))
)
(text "ON/OFF" (at -10.8712 -0.0508 0)
(effects (font (size 0.8128 0.8128)) (justify left bottom))
)
(pin bidirectional line (at 5.08 12.7 180) (length 5.08)
(name "SW" (effects (font (size 1.016 1.016))))
(number "1" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -22.86 -5.08 0) (length 5.08)
(name "GND" (effects (font (size 1.016 1.016))))
(number "2" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 5.08 -2.54 180) (length 5.08)
(name "FB" (effects (font (size 1.016 1.016))))
(number "3" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -22.86 2.54 0) (length 5.08)
(name "EN" (effects (font (size 1.016 1.016))))
(number "4" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at -22.86 12.7 0) (length 5.08)
(name "IN" (effects (font (size 1.016 1.016))))
(number "5" (effects (font (size 1.016 1.016))))
)
(pin bidirectional line (at 5.08 5.08 180) (length 5.08)
(name "N/C" (effects (font (size 1.016 1.016))))
(number "6" (effects (font (size 1.016 1.016))))
)
)
)
)
+168
View File
@@ -0,0 +1,168 @@
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
(symbol "ds2438az+" (pin_names (offset 0.254)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at 30.48 10.16 0)
(effects (font (size 1.524 1.524)))
)
(property "Value" "ds2438az+" (at 30.48 7.62 0)
(effects (font (size 1.524 1.524)))
)
(property "Footprint" "21-0041B_8_MXM" (at 30.48 6.096 0)
(effects (font (size 1.524 1.524)) hide)
)
(property "Datasheet" "" (at 0 0 0)
(effects (font (size 1.524 1.524)))
)
(property "ki_locked" "" (at 0 0 0)
(effects (font (size 1.27 1.27)))
)
(property "ki_fp_filters" "21-0041B_8_MXM 21-0041B_8_MXM-M 21-0041B_8_MXM-L" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "ds2438az+_1_1"
(polyline
(pts
(xy 7.112 -7.62)
(xy 6.0452 -8.128)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 7.112 -7.62)
(xy 6.0452 -7.112)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 7.112 -5.08)
(xy 6.0452 -5.588)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 7.112 -5.08)
(xy 6.0452 -4.572)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 7.112 -2.54)
(xy 6.0452 -3.048)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 7.112 -2.54)
(xy 6.0452 -2.032)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 7.62 -12.7)
(xy 53.34 -12.7)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 7.62 5.08)
(xy 7.62 -12.7)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 53.34 -12.7)
(xy 53.34 5.08)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 53.34 5.08)
(xy 7.62 5.08)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 53.848 0)
(xy 54.9148 -0.508)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 53.848 0)
(xy 54.9148 0.508)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 55.4228 -0.508)
(xy 56.4642 0)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(polyline
(pts
(xy 55.4228 0.508)
(xy 56.4642 0)
)
(stroke (width 0.127) (type solid))
(fill (type none))
)
(pin power_in line (at 0 0 0) (length 7.62)
(name "GND" (effects (font (size 1.4986 1.4986))))
(number "1" (effects (font (size 1.4986 1.4986))))
)
(pin input line (at 0 -2.54 0) (length 7.62)
(name "VSENS+" (effects (font (size 1.4986 1.4986))))
(number "2" (effects (font (size 1.4986 1.4986))))
)
(pin input line (at 0 -5.08 0) (length 7.62)
(name "VSENS-" (effects (font (size 1.4986 1.4986))))
(number "3" (effects (font (size 1.4986 1.4986))))
)
(pin input line (at 0 -7.62 0) (length 7.62)
(name "VAD" (effects (font (size 1.4986 1.4986))))
(number "4" (effects (font (size 1.4986 1.4986))))
)
(pin power_in line (at 60.96 -7.62 180) (length 7.62)
(name "VDD" (effects (font (size 1.4986 1.4986))))
(number "5" (effects (font (size 1.4986 1.4986))))
)
(pin no_connect line (at 60.96 -5.08 180) (length 7.62)
(name "NC" (effects (font (size 1.4986 1.4986))))
(number "6" (effects (font (size 1.4986 1.4986))))
)
(pin no_connect line (at 60.96 -2.54 180) (length 7.62)
(name "NC" (effects (font (size 1.4986 1.4986))))
(number "7" (effects (font (size 1.4986 1.4986))))
)
(pin bidirectional line (at 60.96 0 180) (length 7.62)
(name "DQ" (effects (font (size 1.4986 1.4986))))
(number "8" (effects (font (size 1.4986 1.4986))))
)
)
)
)
File diff suppressed because it is too large Load Diff
+11 -8
View File
@@ -1,8 +1,11 @@
(sym_lib_table
(lib (name "LP38690DT-3.3")(type "Legacy")(uri "${KIPRJMOD}/kicad-stuff/LP38690DT-3.3.lib")(options "")(descr ""))
(lib (name "ESP32-DEVKITC-32D")(type "Legacy")(uri "${KIPRJMOD}/kicad-stuff/ESP32/ESP32-DEVKITC-32D.lib")(options "")(descr ""))
(lib (name "DW01")(type "Legacy")(uri "${KIPRJMOD}/kicad-stuff/DW01.lib")(options "")(descr ""))
(lib (name "SX1308")(type "Legacy")(uri "${KIPRJMOD}/kicad-stuff/SX1308.lib")(options "")(descr ""))
(lib (name "ds2438")(type "Legacy")(uri "${KIPRJMOD}/kicad-stuff/ds2438.lib")(options "")(descr ""))
(lib (name "PlantCtrlESP32-rescue")(type "Legacy")(uri "${KIPRJMOD}/PlantCtrlESP32-rescue.lib")(options "")(descr ""))
)
(sym_lib_table
(version 7)
(lib (name "LP38690DT-3.3")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/LP38690DT-3.3.kicad_sym")(options "")(descr ""))
(lib (name "ESP32-DEVKITC-32D")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/ESP32/ESP32-DEVKITC-32D.kicad_sym")(options "")(descr ""))
(lib (name "DW01")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/DW01.kicad_sym")(options "")(descr ""))
(lib (name "SX1308")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/SX1308.kicad_sym")(options "")(descr ""))
(lib (name "ds2438")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/ds2438.kicad_sym")(options "")(descr ""))
(lib (name "CN3306")(type "KiCad")(uri "${KIPRJMOD}/CN3306.kicad_sym")(options "")(descr ""))
(lib (name "CN3795")(type "KiCad")(uri "${KIPRJMOD}/CN3795.kicad_sym")(options "")(descr ""))
(lib (name "BQ34Z100PWR-G1")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/BQ34Z100PWR-G1.kicad_sym")(options "")(descr ""))
)
+7 -32
View File
@@ -1,41 +1,16 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32doit-devkit-v1]
platform = espressif32@6.3.2
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino
build_flags = -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY
-DPLANT0_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT1_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT2_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT3_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT4_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT5_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT6_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DTIMED_LIGHT_PIN=CUSTOM1_PIN5
-DFLOWMETER_PIN=CUSTOM1_PIN1
-DANALOG_WATER=GPIO_NUM_34
board_build.partitions = defaultWithSmallerSpiffs.csv
;#https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html
; the latest development brankitchen-lightch (convention V3.0.x)
lib_deps = bblanchon/ArduinoJson@^6.20.1
paulstoffregen/OneWire@^2.3.6
milesburton/DallasTemperature@^3.11.0
pololu/VL53L0X@^1.3.1
lib_deps = ArduinoJson@6.16.1
OneWire
DallasTemperature
pololu/VL53L0X
https://github.com/homieiot/homie-esp8266.git#develop
[platformio]
extra_configs = custom_platformio.ini
; add additional parameter, like the upload port
upload_port=/dev/ttyUSB1
-2
View File
@@ -17,8 +17,6 @@ if [ ! -f $firmwareFile ]; then
echo "the script $0 must be started in host/ sub directory"
exit 2
fi
echo "Firmware changed:"
ls -l $firmwareFile
mosquitto_pub -h $mqttHost -t "${mqttPrefix}${homieId}/stay/alive/set" -m "1" -r
echo "Waiting ..."
+11 -59
View File
@@ -54,15 +54,6 @@
#define SENSOR_PLANT5 GPIO_NUM_39 /**< SENSOR_VIN */
#define SENSOR_PLANT6 GPIO_NUM_36 /**< SENSOR_VP */
#ifdef HWREVISION07
#define OUTPUT_PUMP0 GPIO_NUM_17 /**< GPIO 17 */
#define OUTPUT_PUMP1 GPIO_NUM_5 /**< GPIO 5 */
#define OUTPUT_PUMP2 GPIO_NUM_18 /**< GPIO 18 */
#define OUTPUT_PUMP3 GPIO_NUM_19 /**< GPIO 19 */
#define OUTPUT_PUMP4 GPIO_NUM_21 /**< GPIO 21 */
#define OUTPUT_PUMP5 GPIO_NUM_22 /**< GPIO 22 */
#define OUTPUT_PUMP6 GPIO_NUM_23 /**< GPIO 23 */
#else
#define OUTPUT_PUMP0 GPIO_NUM_15 /**< GPIO 15 */
#define OUTPUT_PUMP1 GPIO_NUM_5 /**< GPIO 5 */
#define OUTPUT_PUMP2 GPIO_NUM_18 /**< GPIO 18 */
@@ -70,38 +61,18 @@
#define OUTPUT_PUMP4 GPIO_NUM_21 /**< GPIO 21 */
#define OUTPUT_PUMP5 GPIO_NUM_22 /**< GPIO 22 */
#define OUTPUT_PUMP6 GPIO_NUM_23 /**< GPIO 23 */
#endif
#define OUTPUT_ENABLE_PUMP GPIO_NUM_13 /**< GPIO 13 - Enable Pumps */
#ifdef HWREVISION07
#define OUTPUT_ENABLE_SENSOR GPIO_NUM_16 /**< GPIO 16 - Enable Sensors */
#define SENSOR_ONEWIRE GPIO_NUM_2 /** GPIO 02 - Temperatur sensor, Battery and other cool onewire stuff */
#else
#define OUTPUT_ENABLE_SENSOR GPIO_NUM_14 /**< GPIO 14 - Enable Sensors */
#define SENSOR_ONEWIRE GPIO_NUM_4 /**< GPIO 12 - Temperatur sensor, Battery and other cool onewire stuff */
#endif
#ifdef ANALOG_WATER
#define SENSOR_TANK_ANALOG ANALOG_WATER /**< GPIO 34 - analog water sensor (GPIO_NUM_34) */
/* Define CAN communication via I2C Connector */
#define CAN_TX GPIO_NUM_17 /**< GPIO 17 - water sensor SDA */
#define CAN_RX GPIO_NUM_16 /**< GPIO 16 - water sensor SCL */
#else
#ifdef HWREVISION07
#define OUTPUT_ENABLE_PUMP GPIO_NUM_13 /**< GPIO 13 - Enable Pumps */
#else
#define SENSOR_ONEWIRE GPIO_NUM_4 /**< GPIO 12 - Temperatur sensor, Battery and other cool onewire stuff */
#define SENSOR_TANK_SDA GPIO_NUM_17 /**< GPIO 17 - water sensor SDA */
#define SENSOR_TANK_SCL GPIO_NUM_16 /**< GPIO 16 - water sensor SCL */
#endif
#endif
#define BUTTON GPIO_NUM_0 /**< GPIO 0 - Fix button of NodeMCU */
#define CUSTOM1_PIN1 GPIO_NUM_34 /** direct gpio */
#define CUSTOM1_PIN3 GPIO_NUM_35 /** direct gpio */
#ifdef HWREVISION07
#define CUSTOM1_PIN5 GPIO_NUM_4 /** mosfet controlled */
#else
#define CUSTOM1_PIN5 GPIO_NUM_2 /** mosfet controlled */
#endif
#define CUSTOM1_PIN7 GPIO_NUM_12 /** mosfet controlled */
/* @} */
@@ -114,29 +85,18 @@
#define FLOWMETER_PULSES_PER_ML 2.2
#define FIRMWARE_FEATURE1 "Flow"
#else
#ifdef ANALOG_WATER
#define FIRMWARE_FEATURE1 "Water"
#else
#define FIRMWARE_FEATURE1 ""
#endif
#endif
#ifdef TIMED_LIGHT_PIN
#define FIRMWARE_FEATURE2 "Light"
#else
#define FIRMWARE_FEATURE2 ""
#define FIRMWARE_FEATURE2 ""
#endif
#define FIRMWARE_BASENAME "PlantControl"
#define FIRMWARE_NAME FIRMWARE_BASENAME FIRMWARE_FEATURE1 FIRMWARE_FEATURE2
#define FIRMWARE_VERSIONNMUMBER "3.021"
#ifdef HWREVISION07
#define FIRMWARE_VERSION FIRMWARE_VERSIONNMUMBER " HW0.7"
#else
#define FIRMWARE_VERSION FIRMWARE_VERSIONNMUMBER " HW0.10b"
#endif
#define FIRMWARE_VERSION "3.01 HW0.10b"
#define MOIST_SENSOR_MAX_FRQ 5200 // 60kHz (500Hz margin)
#define MOIST_SENSOR_MIN_FRQ 500 // 0.5kHz (500Hz margin)
@@ -144,36 +104,28 @@
#define ANALOG_SENSOR_MAX_MV 1300 //successive approximation of good range
#define ANALOG_SENSOR_MIN_MV 100 //successive approximation of good range
#ifdef HWREVISION07
#define SOLAR_VOLT_FACTOR (4.0306f) /**< 100k and 33k voltage dividor */
#else
#define SOLAR_VOLT_FACTOR (11.0f) /**< Configuratiion before dd3888ba52f51338788820a933c0a6f4bee78ed5 */
#endif
#define SOLAR_VOLT_FACTOR 11
#define BATTSENSOR_INDEX_SOLAR 0
#define BATTSENSOR_INDEX_BATTERY 1
#define MQTT_TIMEOUT (1000 * 60) /**< After 10 seconds, MQTT is expected to be connected */
#define ESP_STALE_TIMEOUT (MQTT_TIMEOUT+(700*1000))
#define ESP_ADC_MAX 4095
#define MAX_PLANTS 7
#define SOLAR_CHARGE_MIN_VOLTAGE 7 /**< Sun is rising (morning detected) */
#define SOLAR_CHARGE_MAX_VOLTAGE 9 /**< Sun is shining (noon) */
#define SOLAR_MAX_VOLTAGE_POSSIBLE 100 /**< higher values are treated as not connected sensor */
#define VOLT_MAX_BATT 4.2f
#define VOLT_SENSORS_BATT 3.6f /**< Minimum battery voltage for sensor (and pump) usage */
#define VOLT_MIN_BATT 3.4f /**< Minimum battery voltage for normal operation */
#define LOWVOLT_SLEEP_FACTOR 6 /**< Factor for nightsleep delay, if the battery drops below minimum (@see VOLT_MIN_BATT) */
#define LOWVOLT_SLEEP_MINIMUM 7200 /**< At low voltage sleep at least for 120 minutes (two hours) */
#define WATER_LEVEL_MINIMUM 500 /**< Minimum Analog value (1023 is the maximum)*/
#define VOLT_MIN_BATT 3.0f /**< Minimum battery voltage for normal operation */
#define LOWVOLT_SLEEP_FACTOR 3 /**< Factor for nightsleep delay, if the battery drops below minimum (@see VOLT_MIN_BATT) */
#define LOWVOLT_SLEEP_MINIMUM 1800 /**< At low voltage sleep at least for 30 minutes */
#define MAX_CONFIG_SETTING_ITEMS 100 /**< Parameter, that can be configured in Homie */
#define MAX_JSON_CONFIG_FILE_SIZE_CUSTOM 2500
#define TEMPERATUR_TIMEOUT 5000 /**< 5 Seconds timeout for the temperatures sensors */
#define WATERSENSOR_TIMEOUT 1000 /**< 1 Seconds timeout for the water distance sensor */
#define WATERSENSOR_CYCLE 10 /**< 10 sensor measurement are performed */
#define TEMPERATUR_TIMEOUT 3000 /**< 3 Seconds timeout for the temperatures sensors */
#define WATERSENSOR_TIMEOUT 3000 /**< 3 Seconds timeout for the water distance sensor */
#define WATERSENSOR_CYCLE 10 /**< 5 sensor measurement are performed */
#define DS18B20_RESOLUTION 9 /**< 9bit temperature resolution -> 0.5°C steps */
#define UTC_OFFSET_DE 3600 /* UTC offset in seconds for Germany */
+3
View File
@@ -75,6 +75,9 @@ HomieNode stayAlive("stay", "alive", "alive"); /**< Necessary for Mqtt Active C
HomieSetting<long> deepSleepTime("sleep", "time in seconds to sleep");
HomieSetting<long> deepSleepNightTime("nightsleep", "time in seconds to sleep (0 uses same setting: deepsleep at night, too)");
HomieSetting<long> pumpIneffectiveWarning("pumpConsecutiveWarn", "if the pump was triggered this amount directly after each cooldown, without resolving dryness, warn");
HomieSetting<long> waterLevelMax("tankmax", "distance (mm) at maximum water level");
HomieSetting<long> waterLevelMin("tankmin", "distance (mm) at minimum water level (pumps still covered)");
HomieSetting<long> waterLevelWarn("tankwarn", "warn (mm) if below this water level %");
HomieSetting<long> waterLevelVol("tankVolume", "(ml) between minimum and maximum");
HomieSetting<const char *> lipoSensorAddr("lipoDSAddr", "1wire address for lipo temperature sensor");
HomieSetting<const char *> waterSensorAddr("tankDSAddr", "1wire address for water temperature sensor");
+1 -7
View File
@@ -25,8 +25,7 @@
#define LOG_SENSORMODE_UNKNOWN "Unknown sensor mode requested"
#define LOG_SENSORMODE_UNKNOWN_CODE -5
#define LOG_SENSOR_MISSING_ERROR_MESSAGE "1Wire: sensors found"
#define LOG_SENSOR_MISSING_ERROR_CODE -6
#define LOG_SENSOR_MISSING -6
#define LOG_PUMP_AND_DOWNLOADMODE "Download mode, ignoring pump request"
#define LOG_PUMP_AND_DOWNLOADMODE_CODE 2
@@ -47,10 +46,5 @@
#define LOG_SLEEP_CYCLE 102
#define LOG_MISSING_PUMP -4
#define LOG_BOOT_ERROR_DETECTION 10000
#define LOG_BOOT_ERROR_IMG_UNDEFINED (LOG_BOOT_ERROR_DETECTION + 1)
#define LOG_BOOT_ERROR_IMG_NEW (LOG_BOOT_ERROR_DETECTION + 2)
#define LOG_BOOT_ERROR_IMG_INVALID (LOG_BOOT_ERROR_DETECTION + 3)
#define LOG_BOOT_ERROR_IMG_VALID (LOG_BOOT_ERROR_DETECTION + 4)
#define LOG_BOOT_ERROR_IMG_PENDING_VERIFY (LOG_BOOT_ERROR_DETECTION + 5)
#define LOG_SOLAR_CHARGER_MISSING 300
#endif
-14
View File
@@ -1,14 +0,0 @@
/**
* @file can.h
*
*/
#include "ControllerConfiguration.h"
#ifndef PLANTCTRL_CAN_H
#define PLANTCTRL_CAN_H
void can_setup(void);
void can_loop(void);
#endif
+24 -16
View File
@@ -13,20 +13,28 @@ platform = espressif32@6.3.2
board = esp32doit-devkit-v1
framework = arduino
build_flags = -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY
-DPLANT0_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT1_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT2_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT3_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT4_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT5_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT6_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DTIMED_LIGHT_PIN=CUSTOM1_PIN5
-DANALOG_WATER=GPIO_NUM_34
-DPLANT0_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT1_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT2_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT3_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT4_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT5_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DPLANT6_SENSORTYPE=FREQUENCY_MOD_RESISTANCE_PROBE
-DTIMED_LIGHT_PIN=CUSTOM1_PIN5
-DFLOWMETER_PIN=CUSTOM1_PIN1
board_build.partitions = defaultWithSmallerSpiffs.csv
lib_deps =
bblanchon/ArduinoJson@^6.20.1
paulstoffregen/OneWire@^2.3.6
milesburton/DallasTemperature@^3.11.0
pololu/VL53L0X@^1.3.1
https://github.com/homieiot/homie-esp8266.git#develop
handmade0octopus/ESP32-TWAI-CAN@^1.0.1
;#https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html
; the latest development brankitchen-lightch (convention V3.0.x)
lib_deps = bblanchon/ArduinoJson@^6.20.1
paulstoffregen/OneWire@^2.3.6
milesburton/DallasTemperature@^3.11.0
pololu/VL53L0X@^1.3.1
https://github.com/homieiot/homie-esp8266.git#develop
[platformio]
extra_configs = custom_platformio.ini
+1 -3
View File
@@ -54,10 +54,8 @@ void Plant::init(void)
{ return ((candidate >= 0) && (candidate <= 100)); });
/* Initialize Hardware */
pinMode(this->mPinPump, OUTPUT);
digitalWrite(this->mPinPump, LOW);
ledcSetup(this->mPlantId, PWM_FREQ, PWM_BITS);
ledcAttachPin(this->mPinPump, this->mPlantId);
ledcAttachPin(mPinPump, this->mPlantId);
ledcWrite(this->mPlantId, 0);
pinMode(this->mPinSensor, INPUT);
}
-83
View File
@@ -1,83 +0,0 @@
/**
* @file can.cpp
*
* Based on ESP32-TWAI-CAN example
*/
#include <ESP32-TWAI-CAN.hpp>
#include "can.h"
#ifndef CAN_TX
#error CAN Interface not declared
#else
CanFrame rxFrame;
void sendObdFrame(uint8_t obdId) {
CanFrame obdFrame = { 0 };
obdFrame.identifier = 0x7DF; // Default OBD2 address;
obdFrame.extd = 0;
obdFrame.data_length_code = 8;
obdFrame.data[0] = 2;
obdFrame.data[1] = 1;
obdFrame.data[2] = obdId;
obdFrame.data[3] = 0xAA; // Best to use 0xAA (0b10101010) instead of 0
obdFrame.data[4] = 0xAA; // CAN works better this way as it needs
obdFrame.data[5] = 0xAA; // to avoid bit-stuffing
obdFrame.data[6] = 0xAA;
obdFrame.data[7] = 0xAA;
// Accepts both pointers and references
ESP32Can.writeFrame(obdFrame); // timeout defaults to 1 ms
}
void can_setup() {
// Setup serial for debbuging.
Serial.begin(115200);
// Set pins
ESP32Can.setPins(CAN_TX, CAN_RX);
// You can set custom size for the queues - those are default
ESP32Can.setRxQueueSize(5);
ESP32Can.setTxQueueSize(5);
// .setSpeed() and .begin() functions require to use TwaiSpeed enum,
// but you can easily convert it from numerical value using .convertSpeed()
ESP32Can.setSpeed(ESP32Can.convertSpeed(500));
// You can also just use .begin()..
if(ESP32Can.begin()) {
Serial.println("CAN bus started!");
} else {
Serial.println("CAN bus failed!");
}
// or override everything in one command;
// It is also safe to use .begin() without .end() as it calls it internally
if(ESP32Can.begin(ESP32Can.convertSpeed(500), CAN_TX, CAN_RX, 10, 10)) {
Serial.println("CAN bus started!");
} else {
Serial.println("CAN bus failed!");
}
}
void can_loop() {
static uint32_t lastStamp = 0;
uint32_t currentStamp = millis();
if(currentStamp - lastStamp > 1000) { // sends OBD2 request every second
lastStamp = currentStamp;
sendObdFrame(5); // For coolant temperature
}
// You can set custom timeout, default is 1000
if(ESP32Can.readFrame(rxFrame, 1000)) {
// Comment out if too many frames
Serial.printf("Received frame: %03X \r\n", rxFrame.identifier);
if(rxFrame.identifier == 0x7E8) { // Standard OBD2 frame responce ID
Serial.printf("Collant temp: %3d°C \r\n", rxFrame.data[3] - 40); // Convert to °C
}
}
}
#endif
+143 -185
View File
@@ -38,7 +38,6 @@
#include "MQTTUtils.h"
#include "esp_ota_ops.h"
#include "Arduino.h"
#include "can.h"
extern "C" bool verifyRollbackLater(){
return true;
@@ -52,10 +51,7 @@ extern "C" bool verifyRollbackLater(){
* DEFINES
******************************************************************************/
#define AMOUNT_SENOR_QUERYS 8
#ifdef ANALOG_WATER
#else
#define MAX_TANK_DEPTH 5000
#endif
#define REBOOT_LOOP_DETECTION_ERROR 5
/******************************************************************************
@@ -81,9 +77,9 @@ RTC_DATA_ATTR long consecutiveWateringPlant[MAX_PLANTS] = {0};
/******************************************************************************
* LOCAL VARIABLES
******************************************************************************/
bool volatile vmDownloadMode = false; /**< Controller must not sleep */
bool volatile vmSensorsRead = false; /**< Sensors are read without Wifi or MQTT */
int volatile vmPumpToRun = -1; /** pump to run at the end of the cycle */
bool volatile mDownloadMode = false; /**< Controller must not sleep */
bool volatile mSensorsRead = false; /**< Sensors are read without Wifi or MQTT */
int volatile pumpToRun = -1; /** pump to run at the end of the cycle */
int volatile selfTestPumpRun = -1; /** pump to run at the end of the cycle */
bool mConfigured = false;
@@ -152,23 +148,23 @@ void finsihedCycleSucessfully()
esp_ota_img_states_t ota_state;
if (esp_ota_get_state_partition(running, &ota_state) == ESP_OK)
{
log(LOG_LEVEL_DEBUG, "Get State Partition was Successfull", LOG_BOOT_ERROR_DETECTION);
log(LOG_LEVEL_INFO, "Get State Partition was Successfull", LOG_BOOT_ERROR_DETECTION);
if(ota_state == ESP_OTA_IMG_UNDEFINED){
log(LOG_LEVEL_DEBUG, "ESP_OTA_IMG_UNDEFINED should not happen with rollback", LOG_BOOT_ERROR_IMG_UNDEFINED);
log(LOG_LEVEL_INFO, "ESP_OTA_IMG_UNDEFINED should not happen with rollback", LOG_BOOT_ERROR_DETECTION);
}
if(ota_state == ESP_OTA_IMG_NEW){
log(LOG_LEVEL_DEBUG, "ESP_OTA_IMG_NEW", LOG_BOOT_ERROR_IMG_NEW);
log(LOG_LEVEL_INFO, "ESP_OTA_IMG_NEW", LOG_BOOT_ERROR_DETECTION);
}
if(ota_state == ESP_OTA_IMG_INVALID){
log(LOG_LEVEL_DEBUG, "ESP_OTA_IMG_INVALID", LOG_BOOT_ERROR_IMG_INVALID);
log(LOG_LEVEL_INFO, "ESP_OTA_IMG_INVALID", LOG_BOOT_ERROR_DETECTION);
}
if(ota_state == ESP_OTA_IMG_VALID){
log(LOG_LEVEL_DEBUG, "ESP_OTA_IMG_VALID", LOG_BOOT_ERROR_IMG_VALID);
log(LOG_LEVEL_INFO, "ESP_OTA_IMG_VALID", LOG_BOOT_ERROR_DETECTION);
}
if (ota_state == ESP_OTA_IMG_PENDING_VERIFY)
{
log(LOG_LEVEL_DEBUG, "ESP_OTA_IMG_PENDING_VERIFY Diagnostics completed successfully! Marking as valid", LOG_BOOT_ERROR_IMG_PENDING_VERIFY);
log(LOG_LEVEL_INFO, "ESP_OTA_IMG_PENDING_VERIFY Diagnostics completed successfully! Marking as valid", LOG_BOOT_ERROR_DETECTION);
esp_ota_mark_app_valid_cancel_rollback();
}
}
@@ -176,11 +172,11 @@ void finsihedCycleSucessfully()
void espDeepSleep(bool afterPump = false)
{
/* download mode or normal operation should restore device status*/
finsihedCycleSucessfully();
if (vmDownloadMode)
if (mDownloadMode)
{
log(LOG_LEVEL_DEBUG, "abort deepsleep, DownloadMode active", LOG_DEBUG_CODE);
// if we manage to get to the download mode, the device can be restored
finsihedCycleSucessfully();
return;
}
if (aliveWasRead())
@@ -205,7 +201,7 @@ void espDeepSleep(bool afterPump = false)
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);
unsigned long secondsToSleep = -1;
long secondsToSleep = -1;
if (afterPump)
{
@@ -214,8 +210,9 @@ void espDeepSleep(bool afterPump = false)
}
else
{
if ( ((int) (mBatteryVoltage * 100)) < ((int) (VOLT_MIN_BATT * 100)) )
if (mBatteryVoltage < VOLT_MIN_BATT)
{
log(LOG_LEVEL_INFO, String(String(mBatteryVoltage) + "V! Almost empty -> deepSleepNight " + String(LOWVOLT_SLEEP_FACTOR)) + " times", LOG_SLEEP_LOWVOLTAGE);
/* use the largest sleeping duration */
if (deepSleepNightTime.get() > deepSleepTime.get()) {
secondsToSleep = (deepSleepNightTime.get() * LOWVOLT_SLEEP_FACTOR);
@@ -226,7 +223,6 @@ void espDeepSleep(bool afterPump = false)
if (secondsToSleep < LOWVOLT_SLEEP_MINIMUM) {
secondsToSleep = LOWVOLT_SLEEP_MINIMUM;
}
log(LOG_LEVEL_INFO, String(String(mBatteryVoltage) + "V! Almost empty -> deepSleepNight " + String(LOWVOLT_SLEEP_FACTOR)) + " times (" + secondsToSleep + "s)", LOG_SLEEP_LOWVOLTAGE);
}
else if (mSolarVoltage < SOLAR_CHARGE_MIN_VOLTAGE)
{
@@ -240,14 +236,12 @@ void espDeepSleep(bool afterPump = false)
}
}
#define SECOND2USECOND_FACTOR (1000U * 1000U)
finsihedCycleSucessfully();
/* sleep always at least one second */
if (secondsToSleep <= 0) {
secondsToSleep = (unsigned long) (UINT64_MAX / SECOND2USECOND_FACTOR);
if (secondsToSleep < 0) {
secondsToSleep = 1;
}
esp_sleep_enable_timer_wakeup((secondsToSleep * SECOND2USECOND_FACTOR));
#undef SECOND2USECOND_FACTOR
esp_sleep_enable_timer_wakeup((secondsToSleep * 1000U * 1000U));
if (aliveWasRead())
{
delay(1000);
@@ -360,35 +354,68 @@ void readPowerSwitchedSensors()
Plant plant = mPlants[i];
switch (plant.getSensorMode())
{
case FREQUENCY_MOD_RESISTANCE_PROBE:
case FREQUENCY_MOD_RESISTANCE_PROBE: {
Serial << "Plant " << i << " measurement: " << mPlants[i].getCurrentMoistureRaw() << " hz " << mPlants[i].getCurrentMoisturePCT() << "%" << endl;
break;
case ANALOG_RESISTANCE_PROBE :
}
case ANALOG_RESISTANCE_PROBE : {
Serial << "Plant " << i << " measurement: " << mPlants[i].getCurrentMoistureRaw() << " mV " << mPlants[i].getCurrentMoisturePCT() << "%" << endl;
break;
default:
case NONE:
break;
}
case NONE : {
}
}
}
#ifdef ANALOG_WATER
Serial << "Analog water measurement " << WATERSENSOR_CYCLE << " cycles.." << endl;
Serial.flush();
/* Read analog Water sensor*/
for(int i=0; i < WATERSENSOR_CYCLE; i++)
Wire.begin(SENSOR_TANK_SDA, SENSOR_TANK_SCL);
// Source: https://www.st.com/resource/en/datasheet/vl53l0x.pdf
tankSensor.setAddress(0x52);
tankSensor.setBus(&Wire);
delay(50);
Serial << "Distance sensor init" << endl;
long start = millis();
bool distanceReady = false;
while ((start + WATERSENSOR_TIMEOUT) > millis())
{
int value = analogRead(SENSOR_TANK_ANALOG);
Serial << "Round " << i << " measurement: " << value << " mV " << endl;
waterRawSensor.add(value);
delay(7);
if (tankSensor.init())
{
distanceReady = true;
break;
}
else
{
delay(200);
}
}
if (distanceReady)
{
waterRawSensor.clear();
tankSensor.setSignalRateLimit(0.1);
// increase laser pulse periods (defaults are 14 and 10 PCLKs)
tankSensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
tankSensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
tankSensor.setMeasurementTimingBudget(200000);
Serial << "Distance sensor measuring" << endl;
for (int readCnt = 0; readCnt < WATERSENSOR_CYCLE; readCnt++)
{
if (!tankSensor.timeoutOccurred())
{
uint16_t distance = tankSensor.readRangeSingleMillimeters();
if (distance < MAX_TANK_DEPTH)
{
waterRawSensor.add(distance);
}
}
delay(50);
}
Serial << "Distance sensor " << waterRawSensor.getMedian() << " mm" << endl;
}
else
{
log(LOG_LEVEL_WARN, LOG_TANKSENSOR_FAIL_DETECT, LOG_TANKSENSOR_FAIL_DETECT_CODE);
}
Serial << "Analog water measurement done" << endl;
#else
Serial << "Analog water measurement deactivated" << endl;
#endif
Serial.flush();
/* deactivate the sensors */
digitalWrite(OUTPUT_ENABLE_SENSOR, LOW);
@@ -404,12 +431,12 @@ void onHomieEvent(const HomieEvent &event)
case HomieEventType::SENDING_STATISTICS:
break;
case HomieEventType::MQTT_READY:
if (vmSensorsRead)
if (mSensorsRead)
{
Serial.printf("Timeout occured... too late!\r\n");
return;
}
vmSensorsRead = true; // MQTT is working, deactivate timeout logic
mSensorsRead = true; // MQTT is working, deactivate timeout logic
configTime(UTC_OFFSET_DE, UTF_OFFSET_DE_DST, ntpServer.get());
startMQTTRoundtripTest();
@@ -420,7 +447,7 @@ void onHomieEvent(const HomieEvent &event)
mPlants[i].deactivatePump();
}
otaRunning = true;
vmDownloadMode = true;
mDownloadMode = true;
break;
case HomieEventType::OTA_SUCCESSFUL:
digitalWrite(OUTPUT_ENABLE_SENSOR, LOW);
@@ -437,21 +464,12 @@ int determineNextPump(bool isLowLight)
int pumpToUse = -1;
for (int i = 0; i < MAX_PLANTS; i++)
{
Plant plant = mPlants[i];
switch (plant.getSensorMode())
{
case FREQUENCY_MOD_RESISTANCE_PROBE:
log(LOG_LEVEL_DEBUG,
String("Plant " + String(i) + " measurement: " + String(plant.getCurrentMoistureRaw()) + " hz " + String(plant.getCurrentMoisturePCT()) + "%"),
LOG_DEBUG_CODE);
break;
}
bool wateralarm = consecutiveWateringPlant[i] >= pumpIneffectiveWarning.get();
if (wateralarm)
{
log(LOG_LEVEL_ERROR, String(String(i) + " Plant still dry after " + String(consecutiveWateringPlant[i]) + " watering attempts"), LOG_PUMP_INEFFECTIVE);
}
Plant plant = mPlants[i];
if (!plant.isPumpTriggerActive())
{
plant.publishState(PLANTSTATE_NUM_DEACTIVATED, PLANTSTATE_STR_DEACTIVATED);
@@ -512,7 +530,7 @@ int determineNextPump(bool isLowLight)
}
else
{
if (vmDownloadMode)
if (mDownloadMode)
{
plant.publishState(PLANTSTATE_NUM_ACTIVE_SUPESSED, PLANTSTATE_STR_ACTIVE_SUPESSED);
}
@@ -572,15 +590,15 @@ bool aliveHandler(const HomieRange &range, const String &value)
if (value.equals("ON") || value.equals("On") || value.equals("1"))
{
vmDownloadMode = true;
mDownloadMode = true;
}
else
{
if (vmDownloadMode)
if (mDownloadMode)
{
esp_restart();
}
vmDownloadMode = false;
mDownloadMode = false;
}
return true;
@@ -657,11 +675,11 @@ void initPumpLogic()
pcnt_counter_resume(unit);
#endif
pumpStartTime = millis();
pumpTarget = millis() + (mPlants[vmPumpToRun].getPumpDuration() * 1000);
pumpTarget = millis() + (mPlants[pumpToRun].getPumpDuration() * 1000);
#ifdef FLOWMETER_PIN
log(LOG_LEVEL_INFO, "Starting pump " + String(pumpToRun) + " for " + String(mPlants[pumpToRun].getPumpDuration()) + "s or " + String(pumpTargetMl) + "ml", LOG_PUMP_STARTED_CODE);
#else
log(LOG_LEVEL_INFO, "Starting pump " + String(vmPumpToRun) + " for " + String(mPlants[vmPumpToRun].getPumpDuration()) + "s", LOG_PUMP_STARTED_CODE);
log(LOG_LEVEL_INFO, "Starting pump " + String(pumpToRun) + " for " + String(mPlants[pumpToRun].getPumpDuration()) + "s", LOG_PUMP_STARTED_CODE);
#endif
@@ -671,7 +689,7 @@ void initPumpLogic()
delay(100);
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 1);
mPlants[vmPumpToRun].activatePump();
mPlants[pumpToRun].activatePump();
}
void pumpActiveLoop()
@@ -682,7 +700,7 @@ void pumpActiveLoop()
{
initPumpLogic();
pumpStarted = true;
rtcLastWateringPlant[vmPumpToRun] = getCurrentTime();
rtcLastWateringPlant[pumpToRun] = getCurrentTime();
}
bool mqttUpdateTick = false;
@@ -724,12 +742,12 @@ void pumpActiveLoop()
if (millis() > pumpTarget)
{
mPlants[vmPumpToRun].setProperty("watertime").send(String(duration));
mPlants[pumpToRun].setProperty("watertime").send(String(duration));
targetReached = true;
}
else if (mqttUpdateTick)
{
mPlants[vmPumpToRun].setProperty("watertime").send(String(duration));
mPlants[pumpToRun].setProperty("watertime").send(String(duration));
}
if (targetReached)
@@ -737,11 +755,11 @@ void pumpActiveLoop()
// disable all
digitalWrite(OUTPUT_ENABLE_PUMP, LOW);
mPlants[vmPumpToRun].deactivatePump();
mPlants[pumpToRun].deactivatePump();
// disable loop, to prevent multi processing
pumpStarted = false;
// if runtime is larger than cooldown, else it would run continously
rtcLastWateringPlant[vmPumpToRun] = getCurrentTime();
rtcLastWateringPlant[pumpToRun] = getCurrentTime();
espDeepSleep(true);
}
}
@@ -773,11 +791,6 @@ void safeSetup()
digitalWrite(OUTPUT_ENABLE_PUMP, LOW);
pinMode(OUTPUT_ENABLE_SENSOR, OUTPUT);
digitalWrite(OUTPUT_ENABLE_SENSOR, LOW);
#ifdef ANALOG_WATER
pinMode(SENSOR_TANK_ANALOG, INPUT);
#endif
static_assert(HomieInternals::MAX_CONFIG_SETTING_SIZE >= MAX_CONFIG_SETTING_ITEMS, "Limits.hpp not adjusted MAX_CONFIG_SETTING_ITEMS");
if (HomieInternals::MAX_CONFIG_SETTING_SIZE < MAX_CONFIG_SETTING_ITEMS)
@@ -806,6 +819,9 @@ void safeSetup()
deepSleepNightTime.setDefaultValue(600);
ntpServer.setDefaultValue("pool.ntp.org");
/* waterLevelMax 1000 */ /* 100cm in mm */
waterLevelMin.setDefaultValue(50); /* 5cm in mm */
waterLevelWarn.setDefaultValue(500); /* 50cm in mm */
waterLevelVol.setDefaultValue(5000); /* 5l in ml */
lipoSensorAddr.setDefaultValue("");
waterSensorAddr.setDefaultValue("");
@@ -832,39 +848,24 @@ void safeSetup()
{
mPlants[i].initSensors();
}
readPowerSwitchedSensors();
Serial << "Reading Homie Config..." << endl;
Homie.setup();
/************************* Start One-Wire bus ***************/
int tempInitStartTime = millis();
uint8_t sensorCount = 0U;
/* Required to read the temperature at least once */
for(int i=0;
((sensorCount == 0 || !battery.isFound()) && millis() < tempInitStartTime + TEMPERATUR_TIMEOUT);
i++)
while ((sensorCount == 0 || !battery.isFound()) && millis() < tempInitStartTime + TEMPERATUR_TIMEOUT)
{
sensors.begin();
battery.begin();
sensorCount = sensors.getDS18Count();
if (i > 1)
{
Serial << "DS18S20 count: " << sensorCount << ", battery is found: " << battery.isFound() << " ( loop: " << i << " )" << endl;
}
delay(100);
delay(50);
}
readOneWireSensors();
mBatteryVoltage = battery.getVoltage(BATTSENSOR_INDEX_BATTERY);
if ( ((int) (mBatteryVoltage * 100)) >= ((int) (VOLT_SENSORS_BATT * 100)) )
{
/* read all sensors with additional power source */
readPowerSwitchedSensors();
}
/* Start Homie and Wifi */
Serial << "Reading Homie Config..." << endl;
Homie.setup();
Serial << "DS18S20 count: " << sensorCount << " found in " << (millis() - tempInitStartTime) << " ms" << endl;
Serial.flush();
/* Measure temperature TODO idea: move this into setup */
@@ -873,23 +874,6 @@ void safeSetup()
sensors.setResolution(DS18B20_RESOLUTION);
sensors.requestTemperatures();
}
else
{
Serial << "NO SENSOR FOUND! " << endl;
Serial << " N N OOO SSSS EEEEE N N SSSS OOO RRRR FFFFF OOO U U N N DDDD !" << endl;
Serial << " NN N O O S E NN N S O O R R F O O U U NN N D D !" << endl;
Serial << " N N N O O SSS EEEE N N N SSS O O RRRR FFFF O O U U N N N D D !" << endl;
Serial << " N NN O O S E N NN S O O R R F O O U U N NN D D !" << endl;
Serial << " N N OOO SSSS EEEEE N N SSSS OOO R R F OOO UUU N N DDDD !" << endl;
Serial << "" << endl;
Serial << "" << endl;
Serial << FIRMWARE_NAME << " " FIRMWARE_VERSIONNMUMBER << endl;
Serial << "" << endl;
Serial << "Is expected to run on the following board:" << endl;
Serial << FIRMWARE_VERSION << endl;
Serial.flush();
}
mConfigured = Homie.isConfigured();
if (mConfigured)
@@ -963,9 +947,8 @@ void safeSetup()
delay(100);
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 1);
Serial.println("Initial Setup. Start Accesspoint...");
vmDownloadMode = true;
mDownloadMode = true;
}
can_setup();
stayAlive.advertise("alive").setName("Alive").setDatatype(NUMBER_TYPE).settable(aliveHandler);
setupFinishedTimestamp = millis();
}
@@ -1000,7 +983,7 @@ void selfTest()
if (selfTestPumpRun >= 0 && selfTestPumpRun < MAX_PLANTS)
{
Serial << "self test mode pump deactivate " << vmPumpToRun << endl;
Serial << "self test mode pump deactivate " << pumpToRun << endl;
Serial.flush();
mPlants[selfTestPumpRun].deactivatePump();
}
@@ -1032,7 +1015,7 @@ void loop()
{
Homie.loop();
/* Toggel Senor LED to visualize mode 3 */
if (vmDownloadMode)
if (mDownloadMode)
{
if (nextBlink < millis())
{
@@ -1057,9 +1040,9 @@ void loop()
else
{
unsigned long timeSinceSetup = millis() - setupFinishedTimestamp;
if ((timeSinceSetup > MQTT_TIMEOUT) && (!vmSensorsRead))
if ((timeSinceSetup > MQTT_TIMEOUT) && (!mSensorsRead))
{
vmSensorsRead = true;
mSensorsRead = true;
/* Disable Wifi and put modem into sleep mode */
WiFi.mode(WIFI_OFF);
Serial << "Wifi mode set to " << WIFI_OFF << " mqqt was no reached within " << timeSinceSetup << "ms , fallback to offline mode " << endl;
@@ -1069,19 +1052,17 @@ void loop()
}
/** Timeout always stopping the ESP -> no endless power consumption */
if (millis() > ESP_STALE_TIMEOUT && !vmDownloadMode)
if (millis() > ESP_STALE_TIMEOUT && !mDownloadMode)
{
Serial << (millis() / 1000) << "not terminated watchdog reset" << endl;
Serial.flush();
esp_restart();
}
if (vmPumpToRun != -1)
if (pumpToRun != -1)
{
pumpActiveLoop();
}
can_loop();
}
/***
@@ -1101,8 +1082,9 @@ void plantcontrol()
readOneWireSensors();
Serial << "W : " << waterRawSensor.getAverage() << " mm " << endl;
Serial << "W : " << waterRawSensor.getAverage() << " mm (" << String(waterLevelMax.get() - waterRawSensor.getAverage()) << " mm left)" << endl;
mBatteryVoltage = battery.getVoltage(BATTSENSOR_INDEX_BATTERY);
float chipTemp = battery.getTemperature();
Serial << "Chip Temperatur " << chipTemp << " °C " << endl;
@@ -1111,58 +1093,34 @@ void plantcontrol()
/* Publish water values, if available */
if (waterRawSensor.getCount() > 0)
{
if (!isnan(waterRawSensor.getAverage()))
float remaining = (waterLevelMax.get() - waterRawSensor.getAverage());
float actualDifference = waterLevelMax.get() - waterLevelMin.get();
float ratio = remaining/actualDifference;
sensorWater.setProperty("useable").send(String(actualDifference));
if (!isnan(remaining))
{
/* measuring the distance from top -> smaller value means more water: */
long averageWater = waterRawSensor.getAverage();
if (averageWater < ESP_ADC_MAX) {
long percentage = (averageWater * averageWater);
percentage = percentage / 570000;
/* Add offset */
if (percentage > 0)
{
percentage += 4;
}
sensorWater.setProperty("remaining").send(String(percentage));
} else {
sensorWater.setProperty("remaining").send(String("100"));
}
sensorWater.setProperty("raw").send(String(waterRawSensor.getAverage()));
sensorWater.setProperty("remaining").send(String(ratio*100));
}
if (!isnan(waterRawSensor.getAverage()))
{
sensorWater.setProperty("distance").send(String(waterRawSensor.getAverage()));
}
}
if ( ((int) (mBatteryVoltage * 100)) < ((int) (VOLT_MIN_BATT * 100)) )
{
sensorLipo.setProperty("percent").send("0");
}
else
{
sensorLipo.setProperty("percent").send(String(100 * (((mBatteryVoltage - VOLT_MIN_BATT) / (VOLT_MAX_BATT - VOLT_MIN_BATT)))));
}
if (battery.isFound()) {
sensorLipo.setProperty("volt").send(String(mBatteryVoltage));
sensorLipo.setProperty("current").send(String(battery.getCurrent()));
sensorLipo.setProperty("Ah").send(String(battery.getAh()));
sensorLipo.setProperty("ICA").send(String(battery.getICA()));
sensorLipo.setProperty("DCA").send(String(battery.getDCA()));
sensorLipo.setProperty("CCA").send(String(battery.getCCA()));
if (mSolarVoltage < SOLAR_MAX_VOLTAGE_POSSIBLE) {
sensorSolar.setProperty("volt").send(String(mSolarVoltage));
} else {
log(LOG_LEVEL_INFO, String("Ignore unrealistc sun voltage" + String(mSolarVoltage) +"V"), LOG_SOLAR_CHARGER_MISSING);
}
sensorTemp.setProperty(TEMPERATUR_SENSOR_CHIP).send(String(chipTemp));
sensorLipo.setProperty("percent").send(String(100 * mBatteryVoltage / VOLT_MAX_BATT));
sensorLipo.setProperty("volt").send(String(mBatteryVoltage));
sensorLipo.setProperty("current").send(String(battery.getCurrent()));
sensorLipo.setProperty("Ah").send(String(battery.getAh()));
sensorLipo.setProperty("ICA").send(String(battery.getICA()));
sensorLipo.setProperty("DCA").send(String(battery.getDCA()));
sensorLipo.setProperty("CCA").send(String(battery.getCCA()));
if (mSolarVoltage < SOLAR_MAX_VOLTAGE_POSSIBLE) {
sensorSolar.setProperty("volt").send(String(mSolarVoltage));
} else {
log(LOG_LEVEL_ERROR, String("No battery or sun sensor found"), LOG_SOLAR_CHARGER_MISSING);
log(LOG_LEVEL_INFO, String("Ignore unrealistc sun voltage" + String(mSolarVoltage) +"V"), LOG_SOLAR_CHARGER_MISSING);
}
/* Publish 1-wire sensor status on failure */
if (sensors.getDS18Count() <= 1) {
log(LOG_LEVEL_ERROR, String("Found " + String(sensors.getDS18Count()) + " DS18B20 sensors"), LOG_SENSOR_MISSING_ERROR_CODE);
}
sensorTemp.setProperty(TEMPERATUR_SENSOR_CHIP).send(String(chipTemp));
}
else
{
@@ -1170,7 +1128,7 @@ void plantcontrol()
Serial.flush();
}
bool isLowLight = (mSolarVoltage <= SOLAR_CHARGE_MIN_VOLTAGE);
bool isLowLight = (mSolarVoltage <= SOLAR_CHARGE_MAX_VOLTAGE);
#if defined(TIMED_LIGHT_PIN)
bool shouldLight = determineTimedLightState(isLowLight);
@@ -1182,30 +1140,30 @@ bool isLowLight = (mSolarVoltage <= SOLAR_CHARGE_MIN_VOLTAGE);
#endif // TIMED_LIGHT_PIN
bool isLiquid = (waterTemp > 5.0f);
bool isLiquid = waterTemp > 5;
bool hasWater = true; // By default activate the pump
if (waterRawSensor.getCount() > 0)
{
//surface of water is still nearer the sensor than required to cover the pumps
hasWater = waterRawSensor.getAverage() > WATER_LEVEL_MINIMUM;
}
if (mBatteryVoltage >= VOLT_SENSORS_BATT)
{
// FIXME no water warning message
vmPumpToRun = determineNextPump(isLowLight);
hasWater = waterRawSensor.getAverage() < waterLevelMin.get();
if (waterRawSensor.getAverage() > waterLevelMax.get()) {
log(LOG_LEVEL_ERROR, LOG_PUMP_FULLTANK_MESSAGE, LOG_PUMP_FULLTANK_CODE);
hasWater = true;
}
}
// FIXME no water warning message
pumpToRun = determineNextPump(isLowLight);
// early aborts
if (vmPumpToRun != -1)
if (pumpToRun != -1)
{
if(isLiquid){
if (hasWater)
{
if (vmDownloadMode)
if (mDownloadMode)
{
log(LOG_LEVEL_INFO, LOG_PUMP_AND_DOWNLOADMODE, LOG_PUMP_AND_DOWNLOADMODE_CODE);
vmPumpToRun = -1;
pumpToRun = -1;
} else {
/* Pump can be used :) */
}
@@ -1213,18 +1171,18 @@ bool isLowLight = (mSolarVoltage <= SOLAR_CHARGE_MIN_VOLTAGE);
else
{
log(LOG_LEVEL_ERROR, LOG_PUMP_BUTNOTANK_MESSAGE, LOG_PUMP_BUTNOTANK_CODE);
vmPumpToRun = -1;
pumpToRun = -1;
}
}
else
{
log(LOG_LEVEL_ERROR, LOG_VERY_COLD_WATER, LOG_VERY_COLD_WATER_CODE);
vmPumpToRun = -1;
pumpToRun = -1;
}
}
// go directly to sleep, skipping the pump loop
if (vmPumpToRun == -1)
if (pumpToRun == -1)
{
espDeepSleep();
}
+18
View File
@@ -0,0 +1,18 @@
[build]
target = "xtensa-esp32-espidf"
[target.xtensa-esp32-espidf]
linker = "ldproxy"
runner = "espflash flash --monitor --baud 921600 --partition-table partitions.csv" # Select this runner for espflash v2.x.x
#runner = "cargo runner"
rustflags = [ "--cfg", "espidf_time64"] # Extending time_t for ESP IDF 5: https://github.com/esp-rs/rust/issues/110
[unstable]
build-std = ["std", "panic_abort"]
[env]
MCU="esp32"
# Note: this variable is not used by the pio builder (`cargo build --features pio`)
ESP_IDF_VERSION = "v5.1.1"
CHRONO_TZ_TIMEZONE_FILTER="UTC|Europe/Berlin"
CARGO_WORKSPACE_DIR = { value = "", relative = true }
+8
View File
@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
+6
View File
@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/plant-ctrl2.iml" filepath="$PROJECT_DIR$/.idea/plant-ctrl2.iml" />
</modules>
</component>
</project>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="EMPTY_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
+84
View File
@@ -0,0 +1,84 @@
[package]
name = "plant-ctrl2"
version = "0.1.0"
authors = ["Empire Phoenix"]
edition = "2021"
resolver = "2"
rust-version = "1.71"
[profile.release]
# Explicitly disable LTO which the Xtensa codegen backend has issues
#lto = "thin"
opt-level = "s"
strip = false
#codegen-units = 1
debug = true
overflow-checks = true
panic = "unwind"
incremental = true
[profile.dev]
# Explicitly disable LTO which the Xtensa codegen backend has issues
#lto = "thin"
opt-level = "s"
strip = false
#codegen-units = 1
debug = true
overflow-checks = true
panic = "unwind"
incremental = true
[package.metadata.cargo_runner]
# The string `$TARGET_FILE` will be replaced with the path from cargo.
command = [
"cargo",
"espflash",
"save-image",
"--chip",
"esp32",
"image.bin"
]
[package.metadata.espflash]
partition_table = "partitions.csv"
[features]
default = ["std", "embassy", "esp-idf-svc/native"]
pio = ["esp-idf-svc/pio"]
std = ["alloc", "esp-idf-svc/binstart", "esp-idf-svc/std"]
alloc = ["esp-idf-svc/alloc"]
nightly = ["esp-idf-svc/nightly"]
experimental = ["esp-idf-svc/experimental"]
embassy = ["esp-idf-svc/embassy-sync", "esp-idf-svc/critical-section", "esp-idf-svc/embassy-time-driver"]
[dependencies]
log = { version = "0.4", default-features = false }
esp-idf-svc = { version = "0.47.3", default-features = false }
serde = { version = "1.0.192", features = ["derive"] }
average = { version = "0.14.1" , features = ["std"] }
#esp32 = "0.28.0"
bit_field = "0.10.2"
ds18b20 = "0.1.1"
embedded-svc = { version = "0.26.4", features = ["experimental"] }
esp-idf-hal = "0.42.5"
esp-idf-sys = { version = "0.33.7", features = ["binstart", "native"] }
esp-ota = "0.2.0"
esp_idf_build = "0.1.3"
chrono = { version = "0.4.23", default-features = false , features = ["iana-time-zone"] }
chrono-tz = {version="0.8.0", default-features = false , features = [ "filter-by-regex" ]}
embedded-hal = "0.2.7"
#shift-register-driver = "0.1.1"
one-wire-bus = "0.1.1"
anyhow = { version = "1.0.75", features = ["std", "backtrace"] }
schemars = "0.8.16"
heapless = { version = "0.7", features = ["serde"] }
serde_json = "1.0.108"
strum = { version = "0.25.0", features = ["derive"] }
once_cell = "1.19.0"
#?bq34z100 required
[build-dependencies]
embuild = "0.31.3"
vergen = { version = "8.2.6", features = ["build", "git", "gitcl"] }
+25
View File
@@ -0,0 +1,25 @@
use std::process::Command;
use vergen::EmitBuilder;
fn main() {
println!("cargo:rerun-if-changed=./src/src_webpack");
Command::new("rm")
.arg("./src/webserver/bundle.js")
.output()
.expect("failed to execute process");
let output = Command::new("npx")
.arg("webpack")
.current_dir("./src_webpack")
.output()
.expect("failed to execute process");
println!("status: {}", output.status);
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
assert!(output.status.success());
embuild::espidf::sysenv::output();
let _ = EmitBuilder::builder().all_git().emit();
}
+6
View File
@@ -0,0 +1,6 @@
nvs, data, nvs, , 16k,
otadata, data, ota, , 8k,
phy_init, data, phy, , 4k,
ota_0, app, ota_0, , 1792K,
ota_1, app, ota_1, , 1792K,
storage, data, spiffs, , 400K,
1 nvs data nvs 16k
2 otadata data ota 8k
3 phy_init data phy 4k
4 ota_0 app ota_0 1792K
5 ota_1 app ota_1 1792K
6 storage data spiffs 400K
+3
View File
@@ -0,0 +1,3 @@
[toolchain]
channel = "nightly"
+10
View File
@@ -0,0 +1,10 @@
# Rust often needs a bit of an extra main task stack size compared to C (the default is 3K)
CONFIG_ESP_MAIN_TASK_STACK_SIZE=20000
# Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default).
# This allows to use 1 ms granuality for thread sleeps (10 ms by default).
CONFIG_FREERTOS_HZ=1000
# Workaround for https://github.com/espressif/esp-idf/issues/7631
#CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
#CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=n
+18
View File
@@ -0,0 +1,18 @@
cargo install cargo-generate
cargo install ldproxy
cargo install espup
cargo install espflash
cargo install cargo-espflash
cargo generate esp-rs/esp-idf-template cargo
export PATH="$PATH:$HOME/.cargo/bin"
espup install
rustup toolchain link esp ~/.rustup/toolchains/esp/
cargo install ldproxy
cargo espflash save-image --chip esp32 image.bin
esptool.py --chip ESP32-C3 elf2image --output my-app.bin target/release/my-app
$ espflash save-image ESP32-C3 target/release/my-app my-app.bin
+85
View File
@@ -0,0 +1,85 @@
use std::fmt;
use serde::{Deserialize, Serialize};
use crate::PLANT_COUNT;
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct Config {
pub mqtt_url: heapless::String<128>,
pub base_topic: heapless::String<64>,
pub max_consecutive_pump_count: u8,
pub tank_allow_pumping_if_sensor_error: bool,
pub tank_sensor_enabled: bool,
pub tank_useable_ml: u32,
pub tank_warn_percent: u8,
pub tank_empty_mv: f32,
pub tank_full_mv: f32,
pub night_lamp_hour_start: u8,
pub night_lamp_hour_end: u8,
pub night_lamp_only_when_dark: bool,
pub plants: [Plant; PLANT_COUNT],
}
impl Default for Config {
fn default() -> Self {
Self {
base_topic: "plant/one".into(),
mqtt_url: "mqtt://192.168.1.1:1883".into(),
tank_allow_pumping_if_sensor_error: true,
tank_sensor_enabled: true,
tank_warn_percent: 50,
night_lamp_hour_start: 21,
night_lamp_hour_end: 2,
night_lamp_only_when_dark: true,
plants: [Plant::default(); PLANT_COUNT],
max_consecutive_pump_count: 15,
tank_useable_ml: 5000,
tank_empty_mv: 0.1,
tank_full_mv: 3.3,
}
}
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
pub enum Mode {
OFF,
TargetMoisture,
TimerOnly,
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
pub struct Plant {
pub mode: Mode,
pub target_moisture: u8,
pub pump_time_s: u16,
pub pump_cooldown_min: u16,
pub pump_hour_start: u8,
pub pump_hour_end: u8,
}
impl Default for Plant {
fn default() -> Self {
Self {
target_moisture: 40,
pump_time_s: 60,
pump_cooldown_min: 60,
pump_hour_start: 8,
pump_hour_end: 20,
mode: Mode::OFF,
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct WifiConfig {
pub ssid: heapless::String<32>,
pub password: Option<heapless::String<64>>,
}
impl fmt::Display for WifiConfig {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "({}, ****)", self.ssid)
}
}
+4
View File
@@ -0,0 +1,4 @@
#![allow(dead_code)]
extern crate embedded_hal as hal;
pub mod sipo;
+446
View File
@@ -0,0 +1,446 @@
use std::{
env,
sync::{atomic::AtomicBool, Arc, Mutex},
};
use anyhow::Result;
use chrono::{Datelike, Duration, NaiveDateTime, Timelike};
use chrono_tz::Europe::Berlin;
use esp_idf_hal::delay::Delay;
use esp_idf_sys::{esp_restart, uxTaskGetStackHighWaterMark, vTaskDelay};
use esp_ota::rollback_and_reboot;
use log::error;
use once_cell::sync::Lazy;
use plant_hal::{CreatePlantHal, PlantCtrlBoard, PlantCtrlBoardInteraction, PlantHal, PLANT_COUNT};
use serde::{Deserialize, Serialize};
use crate::{
config::{Config, WifiConfig},
webserver::webserver::{httpd, httpd_initial},
};
mod config;
pub mod plant_hal;
const MOIST_SENSOR_MAX_FREQUENCY: u32 = 5200; // 60kHz (500Hz margin)
const MOIST_SENSOR_MIN_FREQUENCY: u32 = 500; // 0.5kHz (500Hz margin)
const FROM: (f32, f32) = (
MOIST_SENSOR_MIN_FREQUENCY as f32,
MOIST_SENSOR_MAX_FREQUENCY as f32,
);
const TO: (f32, f32) = (0_f32, 100_f32);
mod webserver {
pub mod webserver;
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
enum OnlineMode {
Offline,
Wifi,
SnTp,
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
enum WaitType {
InitialConfig,
FlashError,
NormalConfig,
StayAlive,
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq, Default)]
struct PlantState {
a: u8,
b: u8,
p: u8,
after_p: u8,
dry: bool,
active: bool,
pump_error: bool,
not_effective: bool,
cooldown: bool,
no_water: bool,
}
fn wait_infinity(wait_type: WaitType, reboot_now: Arc<AtomicBool>) -> ! {
let delay = match wait_type {
WaitType::InitialConfig => 250_u32,
WaitType::FlashError => 100_u32,
WaitType::NormalConfig => 500_u32,
WaitType::StayAlive => 1000_u32,
};
let led_count = match wait_type {
WaitType::InitialConfig => 8,
WaitType::FlashError => 8,
WaitType::NormalConfig => 4,
WaitType::StayAlive => 2,
};
loop {
unsafe {
//do not trigger watchdog
for i in 0..8 {
BOARD_ACCESS.lock().unwrap().fault(i, i < led_count);
}
BOARD_ACCESS.lock().unwrap().general_fault(true);
vTaskDelay(delay);
BOARD_ACCESS.lock().unwrap().general_fault(false);
for i in 0..8 {
BOARD_ACCESS.lock().unwrap().fault(i, false);
}
vTaskDelay(delay);
if wait_type == WaitType::StayAlive
&& !STAY_ALIVE.load(std::sync::atomic::Ordering::Relaxed)
{}
if reboot_now.load(std::sync::atomic::Ordering::Relaxed) {
println!("Rebooting");
esp_restart();
}
}
}
}
pub static BOARD_ACCESS: Lazy<Mutex<PlantCtrlBoard>> = Lazy::new(|| PlantHal::create().unwrap());
pub static STAY_ALIVE: Lazy<AtomicBool> = Lazy::new(|| AtomicBool::new(false));
fn map_range(from_range: (f32, f32), to_range: (f32, f32), s: f32) -> f32 {
to_range.0 + (s - from_range.0) * (to_range.1 - to_range.0) / (from_range.1 - from_range.0)
}
fn main() -> Result<()> {
// It is necessary to call this function once. Otherwise some patches to the runtime
// implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71
esp_idf_svc::sys::link_patches();
// Bind the log crate to the ESP Logging facilities
esp_idf_svc::log::EspLogger::initialize_default();
if esp_idf_sys::CONFIG_MAIN_TASK_STACK_SIZE < 20000 {
error!(
"stack too small: {} bail!",
esp_idf_sys::CONFIG_MAIN_TASK_STACK_SIZE
);
return Ok(());
}
log::info!("Startup Rust");
let git_hash = env!("VERGEN_GIT_DESCRIBE");
println!("Version useing git has {}", git_hash);
let mut partition_state: embedded_svc::ota::SlotState = embedded_svc::ota::SlotState::Unknown;
// match esp_idf_svc::ota::EspOta::new() {
// Ok(ota) => {
// match ota.get_running_slot(){
// Ok(slot) => {
// partition_state = slot.state;
// println!(
// "Booting from {} with state {:?}",
// slot.label, partition_state
// );
// },
// Err(err) => {
// println!("Error getting running slot {}", err);
// },
// }
// },
// Err(err) => {
// println!("Error obtaining ota info {}", err);
// },
// }
println!("Board hal init");
let mut board: std::sync::MutexGuard<'_, PlantCtrlBoard<'_>> = BOARD_ACCESS.lock().unwrap();
println!("Mounting filesystem");
board.mount_file_system()?;
let free_space = board.file_system_size()?;
println!(
"Mounted, total space {} used {} free {}",
free_space.total_size, free_space.used_size, free_space.free_size
);
let time = board.time();
let mut cur = match time {
Ok(cur) => cur,
Err(err) => {
log::error!("time error {}", err);
NaiveDateTime::from_timestamp_millis(0).unwrap().and_utc()
}
};
//check if we know the time current > 2020
if cur.year() < 2020 {
if board.is_day() {
//assume TZ safe times ;)
cur = *cur.with_hour(15).get_or_insert(cur);
} else {
cur = *cur.with_hour(3).get_or_insert(cur);
}
}
println!("cur is {}", cur);
if board.is_config_reset() {
board.general_fault(true);
println!("Reset config is pressed, waiting 5s");
for i in 0..25 {
board.general_fault(true);
Delay::new_default().delay_ms(50);
board.general_fault(false);
Delay::new_default().delay_ms(50);
}
if board.is_config_reset() {
println!("Reset config is still pressed, deleting configs and reboot");
match board.remove_configs() {
Ok(case) => {
println!("Succeeded in deleting config {}", case);
}
Err(err) => {
println!("Could not remove config files, system borked {}", err);
//terminate main app and freeze
wait_infinity(WaitType::FlashError, Arc::new(AtomicBool::new(false)));
}
}
} else {
board.general_fault(false);
}
}
let mut online_mode = OnlineMode::Offline;
let wifi_conf = board.get_wifi();
let wifi: WifiConfig;
match wifi_conf {
Ok(conf) => {
wifi = conf;
}
Err(err) => {
if board.is_wifi_config_file_existant() {
match partition_state {
embedded_svc::ota::SlotState::Invalid
| embedded_svc::ota::SlotState::Unverified => {
println!("Config seem to be unparsable after upgrade, reverting");
rollback_and_reboot()?;
}
_ => {}
}
}
println!("Missing wifi config, entering initial config mode {}", err);
board.wifi_ap().unwrap();
//config upload will trigger reboot!
drop(board);
let reboot_now = Arc::new(AtomicBool::new(false));
let _webserver = httpd_initial(reboot_now.clone());
wait_infinity(WaitType::InitialConfig, reboot_now.clone());
}
};
println!("attempting to connect wifi");
match board.wifi(&wifi.ssid, wifi.password.as_deref(), 10000) {
Ok(_) => {
online_mode = OnlineMode::Wifi;
}
Err(_) => {
println!("Offline mode");
board.general_fault(true);
}
}
if online_mode == OnlineMode::Wifi {
match board.sntp(1000 * 120) {
Ok(new_time) => {
cur = new_time;
online_mode = OnlineMode::SnTp;
}
Err(err) => {
println!("sntp error: {}", err);
board.general_fault(true);
}
}
println!("Running logic at utc {}", cur);
let europe_time = cur.with_timezone(&Berlin);
println!("Running logic at europe/berlin {}", europe_time);
}
let config: Config;
match board.get_config() {
Ok(valid) => {
config = valid;
}
Err(err) => {
println!("Missing normal config, entering config mode {}", err);
//config upload will trigger reboot!
drop(board);
let reboot_now = Arc::new(AtomicBool::new(false));
let _webserver = httpd(reboot_now.clone());
wait_infinity(WaitType::NormalConfig, reboot_now.clone());
}
}
//do mqtt before config check, as mqtt might configure
if online_mode == OnlineMode::SnTp {
match board.mqtt(&config) {
Ok(_) => {
println!("Mqtt connection ready");
}
Err(err) => {
println!("Could not connect mqtt due to {}", err);
}
}
}
match board.battery_state() {
Ok(_state) => {}
Err(err) => {
board.general_fault(true);
println!("Could not read battery state, assuming low power {}", err);
}
}
let mut enough_water = true;
if config.tank_sensor_enabled {
let tank_value = board.tank_sensor_mv();
match tank_value {
Ok(tank_raw) => {
//FIXME clear
let percent = map_range(
(config.tank_empty_mv, config.tank_full_mv),
(0_f32, 100_f32),
tank_raw.into(),
);
let left_ml = ((percent / 100_f32) * config.tank_useable_ml as f32) as u32;
println!(
"Tank sensor returned mv {} as {}% leaving {} ml useable",
tank_raw, percent as u8, left_ml
);
if config.tank_warn_percent > percent as u8 {
board.general_fault(true);
println!(
"Low water, current percent is {}, minimum warn level is {}",
percent as u8, config.tank_warn_percent
);
//FIXME warn here
}
if config.tank_warn_percent <= 0 {
enough_water = false;
}
}
Err(_) => {
board.general_fault(true);
if !config.tank_allow_pumping_if_sensor_error {
enough_water = false;
}
//set tank sensor state to fault
}
}
}
let plantstate = [PlantState {
..Default::default()
}; PLANT_COUNT];
for plant in 0..PLANT_COUNT {
let mut state = plantstate[plant];
//return mapf(mMoisture_raw.getMedian(), MOIST_SENSOR_MIN_FRQ, MOIST_SENSOR_MAX_FRQ, 0, 100);
state.a = map_range(
FROM,
TO,
board.measure_moisture_hz(plant, plant_hal::Sensor::A)? as f32,
) as u8;
state.b = map_range(
FROM,
TO,
board.measure_moisture_hz(plant, plant_hal::Sensor::B)? as f32,
) as u8;
state.p = map_range(
FROM,
TO,
board.measure_moisture_hz(plant, plant_hal::Sensor::PUMP)? as f32,
) as u8;
let plant_config = config.plants[plant];
//FIXME how to average analyze whatever?
if state.a < plant_config.target_moisture || state.b < plant_config.target_moisture {
state.dry = true;
if !enough_water {
state.no_water = true;
}
}
let duration = Duration::minutes((60 * plant_config.pump_cooldown_min).into());
if (board.last_pump_time(plant)? + duration) > cur {
state.cooldown = true;
}
if state.dry {
let consecutive_pump_count = board.consecutive_pump_count(plant) + 1;
board.store_consecutive_pump_count(plant, consecutive_pump_count);
if consecutive_pump_count > config.max_consecutive_pump_count.into() {
state.not_effective = true;
board.fault(plant, true);
}
} else {
board.store_consecutive_pump_count(plant, 0);
}
//TODO update mqtt state here!
}
if (STAY_ALIVE.load(std::sync::atomic::Ordering::Relaxed)) {
drop(board);
let reboot_now = Arc::new(AtomicBool::new(false));
let _webserver = httpd(reboot_now.clone());
wait_infinity(WaitType::StayAlive, reboot_now.clone());
}
'eachplant: for plant in 0..PLANT_COUNT {
let mut state = plantstate[plant];
if (state.dry && !state.cooldown) {
println!("Trying to pump with pump {} now", plant);
let plant_config = config.plants[plant];
board.any_pump(true)?;
board.store_last_pump_time(plant, cur);
board.pump(plant, true)?;
board.last_pump_time(plant)?;
state.active = true;
unsafe { vTaskDelay(plant_config.pump_time_s.into()) };
state.after_p = map_range(
FROM,
TO,
board.measure_moisture_hz(plant, plant_hal::Sensor::PUMP)? as f32,
) as u8;
if state.after_p < state.p + 5 {
state.pump_error = true;
board.fault(plant, true);
}
break 'eachplant;
}
}
/*
//check if during light time
//lightstate += out of worktime
//check battery level
//lightstate += battery empty
//check solar level if config requires
//lightstate += stillday
//if no preventing lightstate, enable light
//lightstate = active
//keep webserver in scope
let webserver = httpd(true);
let delay = Delay::new_default();
loop {
//let freertos do shit
delay.delay_ms(1001);
}
*/
//deepsleep here?
Ok(())
}
//error codes
//error_reading_config_after_upgrade
//error_no_config_after_upgrade
//error_tank_sensor_fault

Some files were not shown because too many files have changed in this diff Show More