Compare commits

...

65 Commits

Author SHA1 Message Date
e7e38e9fca add single pump test mode to config page 2024-04-06 21:14:56 +02:00
1f71b94238 changes 2024-03-27 21:10:37 +01:00
b4ad668620 fix palntstate not correctly calculated 2024-03-09 15:21:52 +01:00
869a581242 delay messages to reduce mqtt issues (sender to fast) improve mqtt debugging 2024-03-02 14:43:52 +01:00
e070c802d5 show build version in html 2024-03-02 14:01:48 +01:00
34066ee463 more stack slightly improved debugging 2024-03-02 13:21:12 +01:00
3110f25d80 Merge branch 'feature/12v' of https://git.mannheim.ccc.de/C3MA/PlantCtrl into feature/12v 2024-02-24 16:26:01 +01:00
5be6197f8c after pump fast restart cycle 2024-02-24 16:25:56 +01:00
27bde9cc87 fix tank calculation, update bq34 driver 2024-02-21 22:30:03 +01:00
3e31b4c041 Merge branch 'feature/12v' of ssh://git.mannheim.ccc.de:1337/C3MA/PlantCtrl into feature/12v 2024-02-21 20:00:40 +01:00
c6ef614221 doc erase-parts 2024-02-21 19:57:36 +01:00
bfee21796a fix rollback and windows build 2024-02-21 15:36:26 +01:00
57a0971c4b also print mode to mqtt 2024-02-17 18:43:36 +01:00
556e64740a allow build to run on windows as well 2024-02-17 18:40:11 +01:00
9d1a807805 allow to selectivly enable redundant sensors 2024-02-17 17:25:50 +01:00
680d1c3aaf fix rtc storage 2024-02-15 23:00:05 +01:00
060a1cc32d proceed with bq34z100 extraction 2024-02-02 21:35:04 +01:00
541f7e4471 Also ignore rust folder 2024-01-25 13:31:44 +01:00
7ea1486e2c made most battery code ready to work 2024-01-22 23:13:52 +01:00
b933516062 fix for bq34z100 led mode, added i2c header 2024-01-22 23:13:37 +01:00
b533739aa4 bq34z100 code improvements 2024-01-21 06:11:06 +01:00
12463c557b add i2c initial and pull configs 2024-01-17 21:25:01 +01:00
9473466feb set mppt output voltage to be less agressive 2024-01-10 19:49:57 +01:00
b5b5b25238 main pump handler 2024-01-09 00:16:13 +01:00
b9ec3247af clippy 2024-01-07 14:34:45 +01:00
a30dbe0759 go to stay alive 2024-01-07 14:33:02 +01:00
5724088780 remove boardaccess arc and replace with static lazy 2023-12-27 20:00:06 +01:00
4c02b99ea7 webserver improvements 2023-12-27 17:33:11 +01:00
1e40e2e3ba move to typescript, testmode, shiftregister revival 2023-12-23 01:59:00 +01:00
fd823217aa fix for reset of shift register 2023-12-23 01:56:07 +01:00
2541c83ebe more javascript shit 2023-12-22 17:26:00 +01:00
58801f870e initial config changes 2023-12-22 01:35:08 +01:00
066b3ec24f play with config page 2023-12-19 10:45:56 +01:00
303bdd131f fix reverse protection diodes 2023-12-19 10:45:22 +01:00
5d6871250e wifi config file handling added 2023-12-12 03:46:53 +01:00
e43538ec8a free size handling 2023-12-07 02:50:50 +01:00
fb0ad6b1dc file write test 2023-12-07 02:33:17 +01:00
f0f0e9f27e adjustments 2023-12-04 00:41:29 +01:00
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
dd949a1be1 partition table 2023-11-29 18:28:09 +01:00
a9ab4ee99b fixes 2023-11-29 18:27:55 +01:00
8bfa27612d config start 2023-11-29 18:27:40 +01:00
55369e46a8 adjusted partitions 2023-11-29 18:27:23 +01:00
b2e5ccccee adjusted runner 2023-11-29 18:27:15 +01:00
031e8de99f use vergen 2023-11-27 01:07:07 +01:00
d35b814047 adjust compile stuff 2023-11-27 00:05:09 +01:00
0a0ac6babf added chrono-tz filter 2023-11-23 22:50:17 +01:00
b268466b89 adjustments 2023-11-21 23:45:15 +01:00
3c409ea339 proceeed further 2023-11-21 01:05:12 +01:00
825d389a8c design 2023-11-20 02:24:14 +01:00
17db1b8a45 adjust folder to be shorter 2023-11-20 01:46:19 +01:00
2092354bc9 ignore netlist 2023-11-20 00:14:29 +01:00
ae8ff86c1a rust init 2023-11-20 00:05:47 +01:00
ec67450a0a finalize layout for comparator 2023-11-01 22:44:32 +01:00
f72135a2b3 finalize 2023-10-26 23:08:03 +02:00
ba0fa2e732 added bettry manager 2023-10-26 07:49:56 +02:00
d3d6ad8ffb added batterymanagemt 2023-10-22 20:06:27 +02:00
ca74a716b7 updated layout 2023-10-22 01:20:17 +02:00
ba9fc2432b changes 2023-10-21 21:59:41 +02:00
fd08921bba layouted further 2023-10-16 01:10:03 +02:00
33082b7481 add charging circuit 2023-10-15 13:16:44 +02:00
8cc9b9d492 layouting continued 2023-10-11 00:01:17 +02:00
928dce949d Signed-off-by: Empire <empirephoenix@yahoo.de> 2023-10-10 20:20:48 +02:00
5f20ec17d0 12v layout tests 2023-09-27 00:55:39 +02:00
bdd9a17757 initial bus design 2023-09-26 01:20:07 +02:00
111 changed files with 323102 additions and 130841 deletions

11
.gitignore vendored
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/build/
rust/image.bin

46
board/4435.kicad_mod Normal file
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
board/CN3306.kicad_sym Normal file
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
board/CN3795.kicad_sym Normal file
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)))
)
)
)
)
)

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
{
"board": {
"active_layer": 0,
"active_layer": 39,
"active_layer_preset": "",
"auto_track_width": true,
"auto_track_width": false,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
@ -64,10 +64,18 @@
33,
34,
35,
36
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
"visible_layers": "ffdfffe_ffffffff",
"zone_display_mode": 1
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "PlantCtrlESP32.kicad_prl",

View File

@ -3,14 +3,17 @@
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
@ -21,22 +24,22 @@
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.09999999999999999,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"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,11 +48,16 @@
"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": [],
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"filename": "board_design_settings.json",
@ -58,32 +66,44 @@
"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_symbol_mismatch": "warning",
"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,34 +112,107 @@
"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_copper_edge_clearance": 0.024999999999999998,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.025,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 1,
"min_silk_clearance": 0.0,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.19999999999999998,
"min_via_annular_width": 0.049999999999999996,
"min_via_diameter": 0.39999999999999997,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.2,
"min_track_width": 0.2,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.4,
"solder_mask_to_copper_clearance": 0.005,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"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
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
@ -134,9 +227,16 @@
"drill": 3.0
}
],
"zones_allow_external_fillets": false,
"zones_allow_external_fillets": true,
"zones_use_no_outline": true
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
@ -329,7 +429,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 +445,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 +467,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,76 +484,631 @@
},
{
"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": {
"gencad": "",
"idf": "",
"netlist": "PlantCtrlESP32.net",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"name": "Grouped By Value",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
@ -467,6 +1122,11 @@
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.25,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 0.0,
"text_offset_ratio": 0.08
},
@ -492,6 +1152,7 @@
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
@ -499,7 +1160,7 @@
"sheets": [
[
"c26e8d55-0b6e-4c4e-b7c8-b1fed973201c",
""
"Root"
]
],
"text_variables": {}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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

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

View File

@ -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
board/bom/ibom.html Normal file

File diff suppressed because one or more lines are too long

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 ""))
)

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*

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

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

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*

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

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*

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*

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*

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*

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

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*

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

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.

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

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))))
)
)
)
)

View File

@ -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))))
)
)
)
)

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))))
)
)
)
)

View File

@ -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))
)

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))
)

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))))
)
)
)
)

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

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 ""))
)

20
rust/.cargo/config.toml Normal file
View File

@ -0,0 +1,20 @@
[build]
target = "xtensa-esp32-espidf"
[target.xtensa-esp32-espidf]
linker = "ldproxy"
#runner = "espflash flash --monitor --partition-table partitions.csv" # Select this runner for espflash v2.x.x
# runner = espflash erase-parts otadata
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
rust/.idea/.gitignore vendored Normal file
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

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
rust/.idea/modules.xml Normal file
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>

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
rust/.idea/vcs.xml Normal file
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>

83
rust/Cargo.toml Normal file
View File

@ -0,0 +1,83 @@
[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.48.0", 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.27.0", features = ["experimental"] }
esp-idf-hal = "0.43.0"
esp-idf-sys = { version = "0.34.0", features = ["binstart", "native"] }
esp_idf_build = "0.1.3"
chrono = { version = "0.4.23", default-features = false , features = ["iana-time-zone" , "alloc"] }
chrono-tz = {version="0.8.0", default-features = false , features = [ "filter-by-regex" ]}
embedded-hal = "1.0.0"
one-wire-bus = "0.1.1"
anyhow = { version = "1.0.75", features = ["std", "backtrace"] }
schemars = "0.8.16"
heapless = { version = "0.8", features = ["serde"] }
serde_json = "1.0.108"
strum = { version = "0.26.1", features = ["derive"] }
once_cell = "1.19.0"
measurements = "0.11.0"
bq34z100 = "0.2.1"
[build-dependencies]
embuild = "0.31.3"
vergen = { version = "8.2.6", features = ["build", "git", "gitcl"] }

42
rust/build.rs Normal file
View File

@ -0,0 +1,42 @@
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()
.unwrap();
match Command::new("cmd").spawn() {
Ok(_) => {
println!("Assuming build on windows");
let output = Command::new("cmd")
.arg("/K")
.arg("npx")
.arg("webpack")
.current_dir("./src_webpack")
.output()
.unwrap();
println!("status: {}", output.status);
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
assert!(output.status.success());
}
Err(_) => {
println!("Assuming build on linux");
let output = Command::new("npx")
.arg("webpack")
.current_dir("./src_webpack")
.output()
.unwrap();
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().all_build().emit();
}

6
rust/partitions.csv Normal file
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
rust/rust-toolchain.toml Normal file
View File

@ -0,0 +1,3 @@
[toolchain]
channel = "nightly"
toolchain = "esp"

8
rust/sdkconfig.defaults Normal file
View File

@ -0,0 +1,8 @@
# 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=25000
# 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
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y

18
rust/setup.txt Normal file
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

90
rust/src/config.rs Normal file
View File

@ -0,0 +1,90 @@
use std::{fmt, str::FromStr};
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_percent: u8,
pub tank_full_percent: u8,
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: heapless::String::from_str("plant/one").unwrap(),
mqtt_url: heapless::String::from_str("mqtt://192.168.1.1:1883").unwrap(),
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_percent: 0_u8,
tank_full_percent: 100_u8,
}
}
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
pub enum Mode {
OFF,
TargetMoisture,
TimerOnly,
TimerAndDeadzone,
}
#[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,
pub sensor_b: bool,
pub sensor_p: bool,
}
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,
sensor_b: false,
sensor_p: false,
}
}
}
#[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)
}
}

266
rust/src/espota.rs Normal file
View File

@ -0,0 +1,266 @@
use core::fmt;
use core::mem;
use core::ptr;
use esp_idf_sys::{
esp_ota_abort, esp_ota_begin, esp_ota_end, esp_ota_get_next_update_partition, esp_ota_handle_t,
esp_ota_mark_app_invalid_rollback_and_reboot, esp_ota_mark_app_valid_cancel_rollback,
esp_ota_set_boot_partition, esp_ota_write, esp_partition_t, esp_restart, ESP_ERR_FLASH_OP_FAIL,
ESP_ERR_FLASH_OP_TIMEOUT, ESP_ERR_INVALID_ARG, ESP_ERR_INVALID_SIZE, ESP_ERR_INVALID_STATE,
ESP_ERR_NOT_FOUND, ESP_ERR_NO_MEM, ESP_ERR_OTA_PARTITION_CONFLICT, ESP_ERR_OTA_ROLLBACK_FAILED,
ESP_ERR_OTA_ROLLBACK_INVALID_STATE, ESP_ERR_OTA_SELECT_INFO_INVALID,
ESP_ERR_OTA_VALIDATE_FAILED, ESP_FAIL, ESP_OK, OTA_SIZE_UNKNOWN,
};
pub type Result<T> = core::result::Result<T, Error>;
/// An error that can happen during ESP OTA operations.
#[derive(Debug)]
pub struct Error {
kind: ErrorKind,
}
impl Error {
pub(crate) fn from_kind(kind: ErrorKind) -> Self {
Self { kind }
}
/// Returns the kind of error as an enum, that can be matched on.
pub fn kind(&self) -> ErrorKind {
self.kind
}
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.kind.fmt(f)
}
}
impl std::error::Error for Error {}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[non_exhaustive]
pub enum ErrorKind {
/// No suitable partition for writing OTA update to found.
NoOtaPartition,
/// Cannot allocate memory for OTA operation.
AllocFailed,
/// Rollback enabled, but the currently running application is still pending. The currently
/// running application must confirm itself before downloading and flashing a new app.
InvalidRollbackState,
/// First byte of image contains invalid app image magic byte.
InvalidMagicByte,
/// Flash write operation timed out.
FlashTimeout,
/// Flash write operation failed.
FlashFailed,
/// OTA data partition has invalid contents.
InvalidOtaPartitionData,
/// The [`OtaUpdate`] handle was finalized before any app image was written to it.
NothingWritten,
/// OTA image is invalid (either not a valid app image, or - if secure boot is enabled - signature failed to verify.)
InvalidImage,
/// If flash encryption is enabled, this result indicates an internal error writing the final encrypted bytes to flash.
WritingEncryptedFailed,
/// The rollback failed.
RollbackFailed,
/// The rollback is not possible due to flash does not have any apps.
RollbackFailedNoApps,
}
impl fmt::Display for ErrorKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
use ErrorKind::*;
match self {
NoOtaPartition => "No suitable partition for writing OTA update to found",
AllocFailed => "Cannot allocate memory for OTA operation",
InvalidRollbackState => {
"Rollback enabled, but the currently running application is still pending"
}
InvalidMagicByte => "First byte of image contains invalid app image magic byte",
FlashTimeout => "Flash write operation timed out",
FlashFailed => "Flash write operation failed",
InvalidOtaPartitionData => "OTA data partition has invalid contents",
NothingWritten => "OtaUpdate was never written to",
InvalidImage => "OTA image is invalid",
WritingEncryptedFailed => "Internal error writing the final encrypted bytes to flash",
RollbackFailed => "The rollback failed",
RollbackFailedNoApps => {
"The rollback is not possible due to flash does not have any apps"
}
}
.fmt(f)
}
}
/// Represents an ongoing OTA update.
///
/// Dropping this object before calling [`finalize`](OtaUpdate::finalize) will abort the update.
#[derive(Debug)]
pub struct OtaUpdate {
partition: *const esp_partition_t,
ota_handle: esp_ota_handle_t,
}
impl OtaUpdate {
/// Starts an OTA update to the next OTA compatible partition.
///
/// Finds next partition round-robin, starting from the current running partition.
/// The entire partition is erased.
pub fn begin() -> Result<Self> {
let partition = unsafe { esp_ota_get_next_update_partition(ptr::null()) };
if partition.is_null() {
return Err(Error::from_kind(ErrorKind::NoOtaPartition));
}
let mut ota_handle = 0;
match unsafe { esp_ota_begin(partition, OTA_SIZE_UNKNOWN as usize, &mut ota_handle) } {
ESP_OK => Ok(()),
ESP_ERR_INVALID_ARG => panic!("Invalid partition or out_handle"),
ESP_ERR_NO_MEM => Err(Error::from_kind(ErrorKind::AllocFailed)),
ESP_ERR_OTA_PARTITION_CONFLICT => Err(Error::from_kind(ErrorKind::NoOtaPartition)),
ESP_ERR_NOT_FOUND => panic!("Partition argument not found in partition table"),
ESP_ERR_OTA_SELECT_INFO_INVALID => {
Err(Error::from_kind(ErrorKind::InvalidOtaPartitionData))
}
ESP_ERR_INVALID_SIZE => panic!("Partition doesnt fit in configured flash size"),
ESP_ERR_FLASH_OP_TIMEOUT => Err(Error::from_kind(ErrorKind::FlashTimeout)),
ESP_ERR_FLASH_OP_FAIL => Err(Error::from_kind(ErrorKind::FlashFailed)),
ESP_ERR_OTA_ROLLBACK_INVALID_STATE => {
Err(Error::from_kind(ErrorKind::InvalidRollbackState))
}
code => panic!("Unexpected esp_ota_begin return code: {}", code),
}?;
Ok(Self {
partition,
ota_handle,
})
}
/// Write app image data to partition.
///
/// This method can be called multiple times as data is received during the OTA operation.
/// Data is written sequentially to the partition.
///
/// The format of the app image can be read about in the main README and crate documentation.
pub fn write(&mut self, app_image_chunk: &[u8]) -> Result<()> {
let chunk_ptr = app_image_chunk.as_ptr() as *const _;
let chunk_len = app_image_chunk.len();
match unsafe { esp_ota_write(self.ota_handle, chunk_ptr, chunk_len) } {
ESP_OK => Ok(()),
ESP_ERR_INVALID_ARG => panic!("Invalid OTA handle"),
ESP_ERR_OTA_VALIDATE_FAILED => Err(Error::from_kind(ErrorKind::InvalidMagicByte)),
ESP_ERR_FLASH_OP_TIMEOUT => Err(Error::from_kind(ErrorKind::FlashTimeout)),
ESP_ERR_FLASH_OP_FAIL => Err(Error::from_kind(ErrorKind::FlashFailed)),
ESP_ERR_OTA_SELECT_INFO_INVALID => {
Err(Error::from_kind(ErrorKind::InvalidOtaPartitionData))
}
code => panic!("Unexpected esp_ota_write return code: {code}"),
}
}
/// Finish OTA update and validate newly written app image.
///
/// Unless you also call [`set_as_boot_partition`](CompletedOtaUpdate::set_as_boot_partition) the new app will not
/// start.
pub fn finalize(self) -> Result<CompletedOtaUpdate> {
match unsafe { esp_ota_end(self.ota_handle) } {
ESP_OK => Ok(()),
ESP_ERR_NOT_FOUND => panic!("Invalid OTA handle"),
ESP_ERR_INVALID_ARG => Err(Error::from_kind(ErrorKind::NothingWritten)),
ESP_ERR_OTA_VALIDATE_FAILED => Err(Error::from_kind(ErrorKind::InvalidImage)),
ESP_ERR_INVALID_STATE => Err(Error::from_kind(ErrorKind::WritingEncryptedFailed)),
code => panic!("Unexpected esp_ota_end return code: {code}"),
}?;
let partition = self.partition;
mem::forget(self);
Ok(CompletedOtaUpdate { partition })
}
/// Returns a raw pointer to the partition that the new app is/will be written to.
pub fn raw_partition(&self) -> *const esp_partition_t {
self.partition
}
}
impl Drop for OtaUpdate {
fn drop(&mut self) {
#[cfg(feature = "log")]
log::debug!("Aborting OTA update");
let abort_result_code = unsafe { esp_ota_abort(self.ota_handle) };
if abort_result_code != ESP_OK {
#[cfg(feature = "log")]
log::error!(
"Aborting the OTA update returned an unexpected code: {}",
abort_result_code
)
}
}
}
pub struct CompletedOtaUpdate {
partition: *const esp_partition_t,
}
impl CompletedOtaUpdate {
/// Sets the boot partition to the newly flashed OTA partition.
pub fn set_as_boot_partition(&mut self) -> Result<()> {
match unsafe { esp_ota_set_boot_partition(self.partition) } {
ESP_OK => Ok(()),
ESP_ERR_INVALID_ARG => panic!("Invalid partition sent to esp_ota_set_boot_partition"),
ESP_ERR_OTA_VALIDATE_FAILED => Err(Error::from_kind(ErrorKind::InvalidImage)),
ESP_ERR_NOT_FOUND => panic!("OTA data partition not found"),
ESP_ERR_FLASH_OP_TIMEOUT => Err(Error::from_kind(ErrorKind::FlashTimeout)),
ESP_ERR_FLASH_OP_FAIL => Err(Error::from_kind(ErrorKind::FlashFailed)),
code => panic!("Unexpected esp_ota_set_boot_partition code: {}", code),
}
}
/// Restarts the CPU. If [`set_as_boot_partition`](CompletedOtaUpdate::set_as_boot_partition) was
/// called and completed successfully, the CPU will boot into the newly written app.
///
/// After successful restart, CPU reset reason will be SW_CPU_RESET. Peripherals
/// (except for WiFi, BT, UART0, SPI1, and legacy timers) are not reset.
pub fn restart(self) -> ! {
unsafe { esp_restart() }
}
/// Returns a raw pointer to the partition that the new app was written to.
pub fn raw_partition(&self) -> *const esp_partition_t {
self.partition
}
}
/// Call this function to indicate that the running app is working well.
///
/// Should be called (at least) the first time a new app starts up after
/// being flashed.
pub fn mark_app_valid() {
match unsafe { esp_ota_mark_app_valid_cancel_rollback() } {
ESP_OK => (),
code => panic!(
"Unexpected esp_ota_mark_app_valid_cancel_rollback code: {}",
code
),
}
}
/// Call this function to roll back to the previously workable app with reboot.
///
/// If rolling back failed, it returns an error, otherwise this function never returns,
/// as the CPU is rebooting.
pub fn rollback_and_reboot() -> Result<core::convert::Infallible> {
match unsafe { esp_ota_mark_app_invalid_rollback_and_reboot() } {
ESP_FAIL => Err(Error::from_kind(ErrorKind::RollbackFailed)),
ESP_ERR_OTA_ROLLBACK_FAILED => Err(Error::from_kind(ErrorKind::RollbackFailedNoApps)),
code => panic!(
"Unexpected esp_ota_mark_app_invalid_rollback_and_reboot code: {}",
code
),
}
}

4
rust/src/lib.rs Normal file
View File

@ -0,0 +1,4 @@
#![allow(dead_code)]
extern crate embedded_hal as hal;
pub mod sipo;

1190
rust/src/main.rs Normal file

File diff suppressed because it is too large Load Diff

1048
rust/src/plant_hal.rs Normal file

File diff suppressed because it is too large Load Diff

153
rust/src/sipo.rs Normal file
View File

@ -0,0 +1,153 @@
//! Serial-in parallel-out shift register
use core::cell::RefCell;
use core::mem::{self, MaybeUninit};
use std::convert::Infallible;
use hal::digital::OutputPin;
trait ShiftRegisterInternal {
fn update(&self, index: usize, command: bool) -> Result<(), ()>;
}
/// Output pin of the shift register
pub struct ShiftRegisterPin<'a> {
shift_register: &'a dyn ShiftRegisterInternal,
index: usize,
}
impl<'a> ShiftRegisterPin<'a> {
fn new(shift_register: &'a dyn ShiftRegisterInternal, index: usize) -> Self {
ShiftRegisterPin {
shift_register,
index,
}
}
}
impl embedded_hal::digital::ErrorType for ShiftRegisterPin<'_> {
type Error = Infallible;
}
impl OutputPin for ShiftRegisterPin<'_> {
fn set_low(&mut self) -> Result<(), Infallible> {
self.shift_register.update(self.index, false).unwrap();
Ok(())
}
fn set_high(&mut self) -> Result<(), Infallible> {
self.shift_register.update(self.index, true).unwrap();
Ok(())
}
}
macro_rules! ShiftRegisterBuilder {
($name: ident, $size: expr) => {
/// Serial-in parallel-out shift register
pub struct $name<Pin1, Pin2, Pin3>
where
Pin1: OutputPin,
Pin2: OutputPin,
Pin3: OutputPin,
{
clock: RefCell<Pin1>,
latch: RefCell<Pin2>,
data: RefCell<Pin3>,
output_state: RefCell<[bool; $size]>,
}
impl<Pin1, Pin2, Pin3> ShiftRegisterInternal for $name<Pin1, Pin2, Pin3>
where
Pin1: OutputPin,
Pin2: OutputPin,
Pin3: OutputPin,
{
/// Sets the value of the shift register output at `index` to value `command`
fn update(&self, index: usize, command: bool) -> Result<(), ()> {
self.output_state.borrow_mut()[index] = command;
let output_state = self.output_state.borrow();
self.latch.borrow_mut().set_low().map_err(|_e| ())?;
for i in 1..=output_state.len() {
if output_state[output_state.len() - i] {
self.data.borrow_mut().set_high().map_err(|_e| ())?;
} else {
self.data.borrow_mut().set_low().map_err(|_e| ())?;
}
self.clock.borrow_mut().set_high().map_err(|_e| ())?;
self.clock.borrow_mut().set_low().map_err(|_e| ())?;
}
self.latch.borrow_mut().set_high().map_err(|_e| ())?;
Ok(())
}
}
impl<Pin1, Pin2, Pin3> $name<Pin1, Pin2, Pin3>
where
Pin1: OutputPin,
Pin2: OutputPin,
Pin3: OutputPin,
{
/// Creates a new SIPO shift register from clock, latch, and data output pins
pub fn new(clock: Pin1, latch: Pin2, data: Pin3) -> Self {
$name {
clock: RefCell::new(clock),
latch: RefCell::new(latch),
data: RefCell::new(data),
output_state: RefCell::new([false; $size]),
}
}
/// Get embedded-hal output pins to control the shift register outputs
pub fn decompose(&self) -> [ShiftRegisterPin; $size] {
// Create an uninitialized array of `MaybeUninit`. The `assume_init` is
// safe because the type we are claiming to have initialized here is a
// bunch of `MaybeUninit`s, which do not require initialization.
let mut pins: [MaybeUninit<ShiftRegisterPin>; $size] =
unsafe { MaybeUninit::uninit().assume_init() };
// Dropping a `MaybeUninit` does nothing, so if there is a panic during this loop,
// we have a memory leak, but there is no memory safety issue.
for (index, elem) in pins.iter_mut().enumerate() {
elem.write(ShiftRegisterPin::new(self, index));
}
// Everything is initialized. Transmute the array to the
// initialized type.
unsafe { mem::transmute::<_, [ShiftRegisterPin; $size]>(pins) }
}
/// Consume the shift register and return the original clock, latch, and data output pins
pub fn release(self) -> (Pin1, Pin2, Pin3) {
let Self {
clock,
latch,
data,
output_state: _,
} = self;
(clock.into_inner(), latch.into_inner(), data.into_inner())
}
}
};
}
ShiftRegisterBuilder!(ShiftRegister8, 8);
ShiftRegisterBuilder!(ShiftRegister16, 16);
ShiftRegisterBuilder!(ShiftRegister24, 24);
ShiftRegisterBuilder!(ShiftRegister32, 32);
ShiftRegisterBuilder!(ShiftRegister40, 40);
ShiftRegisterBuilder!(ShiftRegister48, 48);
ShiftRegisterBuilder!(ShiftRegister56, 56);
ShiftRegisterBuilder!(ShiftRegister64, 64);
ShiftRegisterBuilder!(ShiftRegister72, 72);
ShiftRegisterBuilder!(ShiftRegister80, 80);
ShiftRegisterBuilder!(ShiftRegister88, 88);
ShiftRegisterBuilder!(ShiftRegister96, 96);
ShiftRegisterBuilder!(ShiftRegister104, 104);
ShiftRegisterBuilder!(ShiftRegister112, 112);
ShiftRegisterBuilder!(ShiftRegister120, 120);
ShiftRegisterBuilder!(ShiftRegister128, 128);
/// 8 output serial-in parallel-out shift register
pub type ShiftRegister<Pin1, Pin2, Pin3> = ShiftRegister8<Pin1, Pin2, Pin3>;

View File

@ -0,0 +1,95 @@
<html>
<body>
<input type="button" id="test" value="Test">
<h2>Current Firmware</h2>
<div>
<div id="firmware_buildtime">Buildtime loading</div>
<div id="firmware_githash">Build githash loading</div>
</div>
<h2>firmeware OTA v3</h2>
<form id="upload_form" method="post">
<input type="file" name="file1" id="file1"><br>
<progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
<h3 id="status"></h3>
<h3 id="answer"></h3>
<p id="loaded_n_total"></p>
</form>
<h2>config</h2>
<div id="configform">
<h3>Mqtt:</h3>
<div>
<input type="text" id="mqtt_url">
MQTT Url
</div>
<div>
<input type="text" id="base_topic">
Base Topic
</div>
<h3>Tank:</h3>
<div>
<input type="checkbox" id="tank_sensor_enabled">
Enable Tank Sensor
</div>
<div>
<input type="checkbox" id="tank_allow_pumping_if_sensor_error">
Allow Pumping if Sensor Error
</div>
<div>
<input type="number" min="2" max="500000" id="tank_useable_ml">
Tank Size mL
</div>
<div>
<input type="number" min="1" max="500000" id="tank_warn_percent">
Tank Warn Percent (mapped in relation to empty and full)
</div>
<div>
<input type="number" min="0" max="100" id="tank_empty_percent">
Tank Empty Percent (% max move)
</div>
<div>
<input type="number" min="0" max="100" id="tank_full_percent">
Tank Full Percent (% max move)
</div>
<h3>Light:</h3>
<div>
Start
<select type="time" id="night_lamp_time_start">
</select>
Stop
<select type="time" id="night_lamp_time_end">
</select>
</div>
<div>
<input type="checkbox" id="night_lamp_only_when_dark">
Light only when dark
</div>
<h3>Plants:</h3>
<div>
<input type="number" min="2" max="100" id="max_consecutive_pump_count">
Max consecutive pump count:
</div>
<div id="plants"></div>
</div>
<button id="submit">Submit</button>
<div id="submit_status"></div>
<br>
<textarea id="json" cols=50 rows=10></textarea>
<script src="bundle.js"></script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,37 @@
<html>
<body>
<input type="button" id="test" value="Test">
<h2>Current Firmware</h2>
<div>
<div id="firmware_buildtime">Buildtime loading</div>
<div id="firmware_githash">Build githash loading</div>
</div>
<div>
<h2>firmeware OTA v3</h2>
<form id="upload_form" method="post">
<input type="file" name="file1" id="file1"><br>
<progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
<h3 id="status"></h3>
<h3 id="answer"></h3>
<p id="loaded_n_total"></p>
</form>
</div>
<div>
<h2>WIFI</h2>
<input type="button" id="scan" value="Scan">
<br>
<label for="ssid">SSID:</label>
<input type="text" id="ssid" list="ssidlist">
<datalist id="ssidlist">
<option value="Not scanned yet">
</datalist>
<label for="ssid">Password:</label>
<input type="text" id="password">
<input type="button" id="save" value="Save & Restart">
<div id="wifistatus"></div>
<br>
</div>
<script src="bundle.js"></script>
</body>
</html>

View File

@ -0,0 +1,291 @@
//offer ota and config mode
use std::{
str::from_utf8,
sync::{atomic::AtomicBool, Arc},
};
use crate::{espota::OtaUpdate, BOARD_ACCESS};
use core::result::Result::Ok;
use embedded_svc::http::Method;
use esp_idf_svc::http::server::{Configuration, EspHttpServer};
use heapless::String;
use serde::{Deserialize, Serialize};
use crate::{
config::{Config, WifiConfig},
plant_hal::PlantCtrlBoardInteraction,
};
#[derive(Serialize, Debug)]
struct SSIDList<'a> {
ssids: Vec<&'a String<32>>,
}
#[derive(Serialize, Debug)]
struct VersionInfo<'a> {
git_hash: &'a str,
build_time: &'a str
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct TestPump{
pump: usize
}
pub fn httpd_initial(reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
let mut server = shared();
server
.fn_handler("/", Method::Get, move |request| {
let mut response = request.into_ok_response()?;
response.write(include_bytes!("initial_config.html"))?;
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/wifiscan", Method::Post, move |request| {
let mut response = request.into_ok_response()?;
let mut board = BOARD_ACCESS.lock().unwrap();
match board.wifi_scan() {
Err(error) => {
response.write(format!("Error scanning wifi: {}", error).as_bytes())?;
}
Ok(scan_result) => {
let mut ssids: Vec<&String<32>> = Vec::new();
scan_result.iter().for_each(|s| ssids.push(&s.ssid));
let ssid_json = serde_json::to_string(&SSIDList { ssids })?;
println!("Sending ssid list {}", &ssid_json);
response.write(ssid_json.as_bytes())?;
}
}
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/wifisave", Method::Post, move |mut request| {
let mut buf = [0_u8; 2048];
let read = request.read(&mut buf);
if read.is_err() {
let error_text = read.unwrap_err().to_string();
println!("Could not parse wificonfig {}", error_text);
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return anyhow::Ok(());
}
let actual_data = &buf[0..read.unwrap()];
println!("raw {:?}", actual_data);
println!("Raw data {}", from_utf8(actual_data).unwrap());
let wifi_config: Result<WifiConfig, serde_json::Error> =
serde_json::from_slice(actual_data);
if wifi_config.is_err() {
let error_text = wifi_config.unwrap_err().to_string();
println!("Could not parse wificonfig {}", error_text);
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return anyhow::Ok(());
}
let mut board = BOARD_ACCESS.lock().unwrap();
board.set_wifi(&wifi_config.unwrap())?;
let mut response = request.into_status_response(202)?;
response.write("saved".as_bytes())?;
reboot_now.store(true, std::sync::atomic::Ordering::Relaxed);
anyhow::Ok(())
})
.unwrap();
server
}
pub fn httpd(reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
let mut server = shared();
server
.fn_handler("/", Method::Get, move |request| {
let mut response = request.into_ok_response()?;
response.write(include_bytes!("config.html"))?;
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/get_config", Method::Get, move |request| {
let mut response = request.into_ok_response()?;
let mut board = BOARD_ACCESS.lock().unwrap();
match board.get_config() {
Ok(config) => {
let config_json = serde_json::to_string(&config)?;
response.write(config_json.as_bytes())?;
}
Err(_) => {
let config_json = serde_json::to_string(&Config::default())?;
response.write(config_json.as_bytes())?;
}
}
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/set_config", Method::Post, move |mut request| {
let mut buf = [0_u8; 3072];
let read = request.read(&mut buf);
if read.is_err() {
let error_text = read.unwrap_err().to_string();
println!("Could not parse config {}", error_text);
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return anyhow::Ok(());
}
let actual_data = &buf[0..read.unwrap()];
println!("Raw data {}", from_utf8(actual_data).unwrap());
let config: Result<Config, serde_json::Error> = serde_json::from_slice(actual_data);
if config.is_err() {
let error_text = config.unwrap_err().to_string();
println!("Could not parse config {}", error_text);
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return Ok(());
}
let mut board = BOARD_ACCESS.lock().unwrap();
board.set_config(&config.unwrap())?;
let mut response = request.into_status_response(202)?;
response.write("saved".as_bytes())?;
reboot_now.store(true, std::sync::atomic::Ordering::Relaxed);
Ok(())
})
.unwrap();
server
}
pub fn shared() -> Box<EspHttpServer<'static>> {
let server_config = Configuration {
stack_size: 8192,
..Default::default()
};
let mut server: Box<EspHttpServer<'static>> =
Box::new(EspHttpServer::new(&server_config).unwrap());
server
.fn_handler("/version", Method::Get, |request| {
let mut response = request.into_ok_response()?;
let git_hash = env!("VERGEN_GIT_DESCRIBE");
let build_time = env!("VERGEN_BUILD_TIMESTAMP");
let version_info = VersionInfo{
git_hash,
build_time,
};
let version_info_json = serde_json::to_string(&version_info)?;
response.write(version_info_json.as_bytes())?;
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/bundle.js", Method::Get, |request| {
let mut response = request.into_ok_response()?;
response.write(include_bytes!("bundle.js"))?;
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/favicon.ico", Method::Get, |request| {
let mut response = request.into_ok_response()?;
response.write(include_bytes!("favicon.ico"))?;
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/ota", Method::Post, |mut request| {
let ota = OtaUpdate::begin();
if ota.is_err() {
let error_text = ota.unwrap_err().to_string();
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return anyhow::Ok(());
}
let mut ota = ota.unwrap();
println!("start ota");
//having a larger buffer is not really faster, requires more stack and prevents the progress bar from working ;)
const BUFFER_SIZE: usize = 512;
let mut buffer: [u8; BUFFER_SIZE] = [0; BUFFER_SIZE];
let mut total_read: usize = 0;
loop {
let read = request.read(&mut buffer).unwrap();
total_read += read;
println!("received {read} bytes ota {total_read}");
let to_write = &buffer[0..read];
let write_result = ota.write(to_write);
if write_result.is_err() {
let error_text = write_result.unwrap_err().to_string();
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return Ok(());
}
println!("wrote {read} bytes ota {total_read}");
if read == 0 {
break;
}
}
println!("finish ota");
let partition = ota.raw_partition();
println!("finalizing and changing boot partition to {partition:?}");
let finalizer = ota.finalize();
if finalizer.is_err() {
let error_text = finalizer.err().unwrap().to_string();
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return Ok(());
}
let mut finalizer = finalizer.unwrap();
println!("changing boot partition");
finalizer.set_as_boot_partition().unwrap();
finalizer.restart();
})
.unwrap();
server
.fn_handler("/boardtest", Method::Post, move |_| {
let mut board = BOARD_ACCESS.lock().unwrap();
board.test()?;
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/pumptest", Method::Post, |mut request| {
let mut buf = [0_u8; 3072];
let read = request.read(&mut buf);
if read.is_err() {
let error_text = read.unwrap_err().to_string();
println!("Could not parse testrequest {}", error_text);
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return anyhow::Ok(());
}
let actual_data = &buf[0..read.unwrap()];
println!("Raw data {}", from_utf8(actual_data).unwrap());
let pump_test: Result<TestPump, serde_json::Error> = serde_json::from_slice(actual_data);
if pump_test.is_err() {
let error_text = pump_test.unwrap_err().to_string();
println!("Could not parse TestPump {}", error_text);
request
.into_status_response(500)?
.write(error_text.as_bytes())?;
return Ok(());
}
let mut board = BOARD_ACCESS.lock().unwrap();
board.test_pump(pump_test.unwrap().pump)?;
anyhow::Ok(())
})
.unwrap();
server
}

1540
rust/src_webpack/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
{
"devDependencies": {
"ts-loader": "^9.5.1",
"typescript": "^5.3.3",
"webpack": "^5.89.0",
"webpack-cli": "^5.1.4"
},
"dependencies": {
"source-map-loader": "^4.0.1"
}
}

View File

@ -0,0 +1,347 @@
interface PlantConfig {
mqtt_url: string,
base_topic: string,
tank_sensor_enabled: boolean,
tank_allow_pumping_if_sensor_error: boolean,
tank_useable_ml: number,
tank_warn_percent: number,
tank_empty_percent: number,
tank_full_percent: number,
night_lamp_hour_start: number,
night_lamp_hour_end: number,
night_lamp_only_when_dark: boolean,
max_consecutive_pump_count: number,
plants: {
mode: string,
target_moisture: number,
pump_time_s: number,
pump_cooldown_min: number,
pump_hour_start: number,
pump_hour_end: number,
sensor_b: boolean,
sensor_p: boolean
}[]
}
interface TestPump{
pump: number
}
let plants = document.getElementById("plants") as HTMLInputElement;
let fromWrapper = (() => {
let plantcount = 0;
function addTimeOptions(select: HTMLSelectElement) {
for (let i = 0; i < 24; i++) {
let option = document.createElement("option");
option.innerText = i.toString();
select.appendChild(option);
}
}
let mqtt_url = document.getElementById("mqtt_url") as HTMLInputElement;
mqtt_url.onchange = updateJson
let base_topic = document.getElementById("base_topic") as HTMLInputElement;
base_topic.onchange = updateJson
let max_consecutive_pump_count = document.getElementById("max_consecutive_pump_count") as HTMLInputElement;
max_consecutive_pump_count.onchange = updateJson
let tank_useable_ml = document.getElementById("tank_useable_ml") as HTMLInputElement;
tank_useable_ml.onchange = updateJson
let tank_empty_percent = document.getElementById("tank_empty_percent") as HTMLInputElement;
tank_empty_percent.onchange = updateJson
let tank_full_percent = document.getElementById("tank_full_percent") as HTMLInputElement;
tank_full_percent.onchange = updateJson
let tank_warn_percent = document.getElementById("tank_warn_percent") as HTMLInputElement;
tank_warn_percent.onchange = updateJson
let tank_sensor_enabled = document.getElementById("tank_sensor_enabled") as HTMLInputElement;
tank_sensor_enabled.onchange = updateJson
let tank_allow_pumping_if_sensor_error = document.getElementById("tank_allow_pumping_if_sensor_error") as HTMLInputElement;
tank_allow_pumping_if_sensor_error.onchange = updateJson
let night_lamp_only_when_dark = document.getElementById("night_lamp_only_when_dark") as HTMLInputElement;
night_lamp_only_when_dark.onchange = updateJson
let night_lamp_time_start = document.getElementById("night_lamp_time_start") as HTMLSelectElement;
night_lamp_time_start.onchange = updateJson
addTimeOptions(night_lamp_time_start);
let night_lamp_time_end = document.getElementById("night_lamp_time_end") as HTMLSelectElement;
night_lamp_time_end.onchange = updateJson
addTimeOptions(night_lamp_time_end);
let json = document.getElementById('json') as HTMLInputElement
function createForm(current: PlantConfig) {
for (let i = 0; i < current.plants.length; i++) {
let plant = document.createElement("div");
plants.appendChild(plant);
let header = document.createElement("h4");
header.textContent = "Plant " + (i + 1);
plant.appendChild(header);
{
let holder = document.createElement("div");
plant.appendChild(holder);
let testButton = document.createElement("button");
testButton.innerText = "Test";
testButton.id = "plant_" + i + "_test";
testButton.onclick = function (){
var body:TestPump = {
pump: i
}
var pretty = JSON.stringify(body, undefined, 1);
fetch("/pumptest", {
method :"POST",
body: pretty
})
.then(response => response.text())
.then(text => submit_status.innerText = text)
};
holder.appendChild(testButton);
let br = document.createElement("br");
holder.appendChild(br);
let inputf = document.createElement("select");
inputf.id = "plant_" + i + "_mode";
inputf.onchange = updateJson;
holder.appendChild(inputf)
let optionOff = document.createElement("option");
optionOff.value = "OFF";
optionOff.innerText = "Off";
inputf.appendChild(optionOff);
let optionTargetMoisture = document.createElement("option");
optionTargetMoisture.value = "TargetMoisture";
optionTargetMoisture.innerText = "Target Moisture";
inputf.appendChild(optionTargetMoisture);
let optionTimerOnly = document.createElement("option");
optionTimerOnly.value = "TimerOnly";
optionTimerOnly.innerText = "Timer";
inputf.appendChild(optionTimerOnly);
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Mode"
}
{
let holder = document.createElement("div");
plant.appendChild(holder);
let inputf = document.createElement("input");
inputf.id = "plant_" + i + "_target_moisture";
inputf.onchange = updateJson;
inputf.type = "number";
inputf.min = "0";
inputf.max = "100";
holder.appendChild(inputf)
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Target Moisture"
}
{
let holder = document.createElement("div");
plant.appendChild(holder);
let input = document.createElement("input");
input.id = "plant_" + i + "_pump_time_s";
input.onchange = updateJson;
input.type = "number";
input.min = "0";
input.max = "600";
holder.appendChild(input)
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Pump Time (s)"
}
{
let holder = document.createElement("div");
plant.appendChild(holder);
let input = document.createElement("input");
input.id = "plant_" + i + "_pump_cooldown_min";
input.onchange = updateJson;
input.type = "number";
input.min = "0";
input.max = "600";
holder.appendChild(input)
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Pump Cooldown (m)"
}
{
let holder = document.createElement("div");
plant.appendChild(holder);
let input = document.createElement("select");
input.id = "plant_" + i + "_pump_hour_start";
addTimeOptions(input);
input.onchange = updateJson;
holder.appendChild(input)
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Pump Hour Start"
}
{
let holder = document.createElement("div");
plant.appendChild(holder);
let input = document.createElement("select");
input.id = "plant_" + i + "_pump_hour_end";
addTimeOptions(input);
input.onchange = updateJson;
holder.appendChild(input)
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Pump Hour End"
}
{
let holder = document.createElement("div");
plant.appendChild(holder);
let input = document.createElement("input");
input.id = "plant_" + i + "_sensor_b";
input.type = "checkbox";
input.onchange = updateJson;
holder.appendChild(input)
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Sensor B installed"
}
{
let holder = document.createElement("div");
plant.appendChild(holder);
let input = document.createElement("input");
input.id = "plant_" + i + "_sensor_p";
input.type = "checkbox";
input.onchange = updateJson;
holder.appendChild(input)
let text = document.createElement("span");
holder.appendChild(text)
text.innerHTML += "Sensor P installed"
}
}
sync(current);
}
function sync(current: PlantConfig) {
plantcount = current.plants.length
mqtt_url.value = current.mqtt_url;
base_topic.value = current.base_topic;
max_consecutive_pump_count.value = current.max_consecutive_pump_count.toString();
tank_useable_ml.disabled = !current.tank_sensor_enabled;
tank_warn_percent.disabled = !current.tank_sensor_enabled;
tank_sensor_enabled.checked = current.tank_sensor_enabled;
tank_allow_pumping_if_sensor_error.checked = current.tank_allow_pumping_if_sensor_error;
tank_useable_ml.value = current.tank_useable_ml.toString();
tank_warn_percent.value = current.tank_warn_percent.toString();
tank_empty_percent.value = current.tank_empty_percent.toString();
tank_full_percent.value = current.tank_full_percent.toString();
night_lamp_time_start.value = current.night_lamp_hour_start.toString();
night_lamp_time_end.value = current.night_lamp_hour_end.toString();
for (let i = 0; i < current.plants.length; i++) {
let plant_mode = document.getElementById("plant_" + i + "_mode") as HTMLSelectElement;
plant_mode.value = current.plants[i].mode;
let plant_target_moisture = document.getElementById("plant_" + i + "_target_moisture") as HTMLInputElement;
plant_target_moisture.value = current.plants[i].target_moisture.toString();
let plant_pump_time_s = document.getElementById("plant_" + i + "_pump_time_s") as HTMLInputElement;
plant_pump_time_s.value = current.plants[i].pump_time_s.toString();
let plant_pump_cooldown_min = document.getElementById("plant_" + i + "_pump_cooldown_min") as HTMLInputElement;
plant_pump_cooldown_min.value = current.plants[i].pump_cooldown_min.toString();
let plant_pump_hour_start = document.getElementById("plant_" + i + "_pump_hour_start") as HTMLInputElement;
plant_pump_hour_start.value = current.plants[i].pump_hour_start.toString();
let plant_pump_hour_end = document.getElementById("plant_" + i + "_pump_hour_end") as HTMLInputElement;
plant_pump_hour_end.value = current.plants[i].pump_hour_end.toString();
let plant_sensor_b = document.getElementById("plant_" + i + "_sensor_b") as HTMLInputElement;
plant_sensor_b.checked = current.plants[i].sensor_b;
let plant_sensor_p = document.getElementById("plant_" + i + "_sensor_p") as HTMLInputElement;
plant_sensor_p.checked = current.plants[i].sensor_p;
}
}
function updateJson() {
var current: PlantConfig = {
max_consecutive_pump_count: +max_consecutive_pump_count.value,
mqtt_url: mqtt_url.value,
base_topic: base_topic.value,
tank_allow_pumping_if_sensor_error: tank_allow_pumping_if_sensor_error.checked,
tank_sensor_enabled: tank_sensor_enabled.checked,
tank_useable_ml: +tank_useable_ml.value,
tank_warn_percent: +tank_warn_percent.value,
tank_empty_percent: +tank_empty_percent.value,
tank_full_percent: +tank_full_percent.value,
night_lamp_hour_start: +night_lamp_time_start.value,
night_lamp_hour_end: +night_lamp_time_end.value,
night_lamp_only_when_dark: night_lamp_only_when_dark.checked,
plants: []
}
for (let i = 0; i < plantcount; i++) {
console.log("Adding plant " + i)
let plant_mode = document.getElementById("plant_" + i + "_mode") as HTMLSelectElement;
let plant_target_moisture = document.getElementById("plant_" + i + "_target_moisture") as HTMLInputElement;
let plant_pump_time_s = document.getElementById("plant_" + i + "_pump_time_s") as HTMLInputElement;
let plant_pump_cooldown_min = document.getElementById("plant_" + i + "_pump_cooldown_min") as HTMLInputElement;
let plant_pump_hour_start = document.getElementById("plant_" + i + "_pump_hour_start") as HTMLInputElement;
let plant_pump_hour_end = document.getElementById("plant_" + i + "_pump_hour_end") as HTMLInputElement;
let plant_sensor_b = document.getElementById("plant_" + i + "_sensor_b") as HTMLInputElement;
let plant_sensor_p = document.getElementById("plant_" + i + "_sensor_p") as HTMLInputElement;
current.plants[i] = {
mode: plant_mode.value,
target_moisture: +plant_target_moisture.value,
pump_time_s: +plant_pump_time_s.value,
pump_cooldown_min: +plant_pump_cooldown_min.value,
pump_hour_start: +plant_pump_hour_start.value,
pump_hour_end: +plant_pump_hour_end.value,
sensor_b: plant_sensor_b.checked,
sensor_p: plant_sensor_p.checked
}
}
sync(current);
console.log(current);
var pretty = JSON.stringify(current, undefined, 1);
json.value = pretty;
}
let submitFormBtn = document.getElementById("submit") as HTMLButtonElement
let submit_status = document.getElementById("submit_status")
if (submitFormBtn) {
submitFormBtn.onclick = function (){
updateJson()
fetch("/set_config", {
method :"POST",
body: json.value
})
.then(response => response.text())
.then(text => submit_status.innerText = text)
};
}
fetch("/get_config")
.then(response => response.json())
.then(json => { createForm(json as PlantConfig); }
)
})
if (plants) {
fromWrapper()
}

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