35 Commits

Author SHA1 Message Date
0f77ac163a css fixes 2025-01-03 00:48:34 +01:00
1927449c1d adust pcb to new 3.3 software improvements 2024-12-30 20:19:37 +01:00
58b63fc8ee further components and bootstrap initial 2024-12-20 03:29:29 +01:00
5fedbec433 progress new ui 2024-12-17 01:39:47 +01:00
74f9c17461 adjust rust code to new config file, fix bq34z100 flasher 2024-12-16 02:15:03 +01:00
c89a617d9d made ui more modular 2024-12-16 00:31:59 +01:00
92299665b6 typescript changes 2024-12-14 01:24:31 +01:00
8bd2cb72d0 initial mvc concept 2024-12-11 21:01:11 +01:00
4a8e0188b3 add dev mode support 2024-12-04 21:38:21 +01:00
4c19d757c6 allow list get put delete of files 2024-11-23 00:39:36 +01:00
3d17ba67ff fix probe on wrong pin 2024-11-23 00:39:17 +01:00
9f249af430 initial file browser work 2024-11-20 01:14:39 +01:00
8218c4b9a6 config stuff 2024-11-19 18:05:51 +01:00
bfcf5e150c move to central config, make TZ compile time const, confgureable later! 2024-11-13 22:04:47 +01:00
7957cf4003 rust mutex issue 2024-10-23 18:17:18 +02:00
171bd19458 battery board 1.0 2024-09-01 18:08:28 +02:00
21e5f86945 battery board 2024-09-01 15:07:41 +02:00
c7a0e3b264 added rtc module header 2024-08-27 00:34:10 +02:00
b297994b6e add usb, update pcb 2024-08-26 01:25:00 +02:00
4dafa0abfb split battery board 2024-08-25 23:02:58 +02:00
c428ee6294 fix upload 2024-08-12 21:17:50 +02:00
7415e74643 fix upload
# Conflicts:
#	rust/src/webserver/webserver.rs
2024-08-12 21:17:16 +02:00
ca26f090fa fix for read line 2024-08-12 19:46:56 +02:00
66e276f15e firmware streaming 2024-08-11 19:17:12 +02:00
65e5d0d753 firmware streaming 2024-08-11 19:08:30 +02:00
3ece894592 add initial flashing of batery and 3.1 adjustments 2024-07-31 20:45:06 +02:00
f0e0781100 flashstream example 2024-07-15 21:34:59 +02:00
fe4b57808d fix pinnames 2024-07-05 19:54:42 +02:00
60947059e8 npn transitors are wrongly pinned 2024-07-05 19:54:34 +02:00
d2fb6b8411 adjustments for 3.0 pcb 2024-06-18 20:34:35 +02:00
4d92e0c2a6 more stack for json, more json for mqtt 2024-06-10 23:40:50 +02:00
b57eb2513c more json 2024-06-10 21:37:58 +02:00
3f98a321fc mqtt now uses more json to reduce message count 2024-06-10 21:10:46 +02:00
27858948e5 also disable warning light at start 2024-06-08 21:13:26 +02:00
e87012cc9c keep fault alive actually :) 2024-06-08 00:27:12 +02:00
124 changed files with 240845 additions and 41676 deletions

1
.gitignore vendored
View File

@@ -8,5 +8,6 @@ target
Cargo.lock
node_modules/
rust/src/webserver/bundle.js
rust/src/webserver/index.html
rust/build/
rust/image.bin

View File

@@ -0,0 +1,3 @@
battery_board-backups/
bom/
fp-info-cache

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,83 @@
{
"board": {
"active_layer": 36,
"active_layer_preset": "",
"auto_track_width": false,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "battery_board.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View File

@@ -0,0 +1,689 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"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.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"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.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
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.0
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [
"silk_over_copper|180609610|75440001|acdccf16-c559-46ce-9367-ee415ce6455a|00000000-0000-0000-0000-000000000000"
],
"meta": {
"version": 2
},
"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": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"holes_co_located": "warning",
"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": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"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",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.4,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"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,
2.0,
4.0,
5.0,
10.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,
"drill": 0.0
},
{
"diameter": 0.5,
"drill": 1.5
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "battery_board.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"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": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "",
"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
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
},
{
"group_by": false,
"label": "Availability",
"name": "Availability",
"show": false
},
{
"group_by": false,
"label": "Check_prices",
"name": "Check_prices",
"show": false
},
{
"group_by": false,
"label": "Description_1",
"name": "Description_1",
"show": false
},
{
"group_by": false,
"label": "LCSC_PART_NUMBER",
"name": "LCSC_PART_NUMBER",
"show": false
},
{
"group_by": false,
"label": "MF",
"name": "MF",
"show": false
},
{
"group_by": false,
"label": "MP",
"name": "MP",
"show": false
},
{
"group_by": false,
"label": "Package",
"name": "Package",
"show": false
},
{
"group_by": false,
"label": "Price",
"name": "Price",
"show": false
},
{
"group_by": false,
"label": "Purchase-URL",
"name": "Purchase-URL",
"show": false
},
{
"group_by": false,
"label": "SnapEDA_Link",
"name": "SnapEDA_Link",
"show": false
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"name": "",
"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,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"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": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"ngspice": {
"fix_include_paths": true,
"meta": {
"version": 0
},
"model_mode": 4,
"workbook_filename": ""
},
"page_layout_descr_file": "",
"plot_directory": "",
"spice_current_sheet_as_root": false,
"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
},
"sheets": [
[
"c27f19cf-4e70-4fd0-869e-d38d3638d9bf",
"Root"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1 @@
{"EXTRA_LAYERS": "", "EXTEND_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}

View File

@@ -0,0 +1,4 @@
(fp_lib_table
(version 7)
(lib (name "kicad-stuff")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff")(options "")(descr ""))
)

View File

@@ -0,0 +1,337 @@
(footprint "AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "Connector XT30 Vertical PCB Male, https://www.tme.eu/en/Document/4acc913878197f8c2e30d4b8cdc47230/XT30UPB%20SPEC.pdf")
(tags "RC Connector XT30")
(property "Reference" "REF**"
(at 2.5 -4 0)
(layer "F.SilkS")
(uuid "f7510d54-dcb1-4c3b-b842-cd250a98370c")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical"
(at 2.5 4 0)
(layer "F.Fab")
(uuid "c5a8a60c-4ea1-4401-a30c-34d36be61c07")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "8fb27306-c085-4316-b554-4ba9be794054")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "74b71861-05d2-4229-8e81-25952aaaef7e")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "a1d16ecc-7e64-48c4-b772-a9255380960d")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_line
(start -2.71 -1.41)
(end -2.71 1.41)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "e96c6ad2-9ca6-4df1-b35b-76e090d7ff4e")
)
(fp_line
(start -2.71 -1.41)
(end -1.01 -2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "0784d204-0a48-4a2b-8085-50e1ff7a1493")
)
(fp_line
(start -2.71 1.41)
(end -1.01 2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "db750970-e424-4a8e-a882-20a90baabffc")
)
(fp_line
(start -1.01 -2.71)
(end 7.71 -2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "9f23420e-db87-438c-a708-676a0616966e")
)
(fp_line
(start -1.01 2.71)
(end 7.71 2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "2ba574e3-9de5-4d7d-9777-e19e6fa702e7")
)
(fp_line
(start 7.71 -2.71)
(end 7.71 2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "2018cc6b-6115-4763-8b7c-54b60affbda7")
)
(fp_rect
(start -6.3 -2.71)
(end 7.71 2.7)
(stroke
(width 0.1)
(type default)
)
(fill none)
(layer "F.SilkS")
(uuid "11aac399-c862-4b67-9828-087abeea5b1b")
)
(fp_line
(start -3.1 -1.8)
(end -3.1 1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "06ae69d8-1372-4524-8b1a-27a2f062f1c5")
)
(fp_line
(start -3.1 -1.8)
(end -1.4 -3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "ae869a92-c688-4f2b-82ca-0578106a035a")
)
(fp_line
(start -3.1 1.8)
(end -1.4 3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "cac6d927-6ba1-4095-825b-f94ee0d7abe9")
)
(fp_line
(start -1.4 -3.1)
(end 8.1 -3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "fb4fa373-5492-4717-a9fe-7b69f4c53ba0")
)
(fp_line
(start -1.4 3.1)
(end 8.1 3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "70296c77-546d-44a2-b5d3-e6dc58cf713b")
)
(fp_line
(start 8.1 -3.1)
(end 8.1 3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "64764a09-de32-4f35-b54a-17e44810370f")
)
(fp_line
(start -2.6 -1.3)
(end -2.6 1.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "8d7ee7cb-5dda-453f-aa9a-6420c87f1b8e")
)
(fp_line
(start -2.6 -1.3)
(end -0.9 -2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "2fa3ad90-36bb-4374-95ed-e44e50c7e385")
)
(fp_line
(start -2.6 1.3)
(end -0.9 2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "2e4f8556-ffc2-4791-91da-e68c3513337e")
)
(fp_line
(start -0.9 -2.6)
(end 7.6 -2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "cb9cd8af-1997-41db-b9fe-8982960ac6db")
)
(fp_line
(start -0.9 2.6)
(end 7.6 2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "ea8a6c02-e974-4677-a854-a0891c323245")
)
(fp_line
(start 7.6 -2.6)
(end 7.6 2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "c66f305c-0d56-4591-bc02-23252ad20321")
)
(fp_text user "-"
(at -4 0 0)
(layer "F.SilkS")
(uuid "c119570a-6846-48dc-9422-0b5665ab2df6")
(effects
(font
(size 1.5 1.5)
(thickness 0.15)
)
)
)
(fp_text user "+"
(at 9 0 0)
(layer "F.SilkS")
(uuid "d6ab678c-47f7-47e0-869b-ef3b9dbd1ba9")
(effects
(font
(size 1.5 1.5)
(thickness 0.15)
)
)
)
(fp_text user "${REFERENCE}"
(at 2.5 0 0)
(layer "F.Fab")
(uuid "a70efd12-1491-4664-ae98-5b2b7f52a502")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" thru_hole rect
(at 0 0)
(size 3 3)
(drill 1.8)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "3a0f3b23-814b-4df9-a02c-3d9fed9e23c9")
)
(pad "2" thru_hole circle
(at 5 0)
(size 3 3)
(drill 1.8)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "d897d74a-a13b-47cf-9806-eb8a75fe8d08")
)
(pad "3" thru_hole circle
(at -3.9 -1)
(size 1.524 1.524)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "02a8c3fc-d75c-47a4-a907-f9191ff19e2c")
)
(pad "4" thru_hole circle
(at -3.9 1)
(size 1.524 1.524)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "2000b5b8-f7c9-40a8-9010-65c16d2aefce")
)
(model "${KICAD8_3DMODEL_DIR}/Connector_AMASS.3dshapes/AMASS_XT30UPB-M_1x02_P5.0mm_Vertical.wrl"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

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,133 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 13.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1325px"
height="675px" viewBox="0 0 1325 675" enable-background="new 0 0 1325 675" xml:space="preserve">
<g id="back">
<rect width="1325" height="675"/>
</g>
<g id="logo">
<g>
<path fill="#FFFFFF" d="M109.818,477.621H75.827v34.299h33.992v-11.638l12.612,2.614v6.409c0,4.956-0.932,8.331-2.794,10.126
c-1.864,1.794-5.409,2.691-10.639,2.691H76.647c-5.264,0-8.818-0.897-10.664-2.691c-1.846-1.795-2.769-5.17-2.769-10.126v-28.558
c0-4.922,0.923-8.287,2.769-10.1c1.846-1.812,5.4-2.717,10.664-2.717h32.351c5.229,0,8.775,0.905,10.639,2.717
c1.862,1.813,2.794,5.178,2.794,10.1v5.127l-12.612,2V477.621z"/>
<path fill="#FFFFFF" d="M148.424,522.123v-54.191h12.612v21.02h39.375v-21.02h12.715v54.191h-12.715v-23.328h-39.375v23.328
H148.424z"/>
<path fill="#FFFFFF" d="M230.456,522.123l30.659-54.191h12.151l31.069,54.191h-14.15l-6.511-11.844h-34.351l-6.306,11.844H230.456
z M254.706,500.487h23.738l-11.689-22.046L254.706,500.487z"/>
<path fill="#FFFFFF" d="M318.793,480.748c0-4.922,0.923-8.287,2.769-10.1c1.846-1.812,5.4-2.717,10.664-2.717h39.888
c5.263,0,8.818,0.905,10.664,2.717c1.846,1.813,2.769,5.178,2.769,10.1v28.558c0,4.956-0.923,8.331-2.769,10.126
c-1.846,1.794-5.401,2.691-10.664,2.691h-39.888c-5.264,0-8.818-0.897-10.664-2.691c-1.846-1.795-2.769-5.17-2.769-10.126V480.748
z M331.405,511.92h41.58v-34.299h-41.58V511.92z"/>
<path fill="#FFFFFF" d="M459.066,477.416h-35.479v11.639h33.787c5.297,0,8.877,0.905,10.741,2.717
c1.863,1.813,2.794,5.178,2.794,10.1v7.435c0,4.922-0.932,8.289-2.794,10.101c-1.863,1.812-5.443,2.717-10.741,2.717h-33.479
c-5.298,0-8.878-0.905-10.741-2.717c-1.863-1.812-2.794-5.179-2.794-10.101v-1.487l11.125-2.307v6.408h38.298v-12.355h-33.787
c-5.264,0-8.818-0.905-10.664-2.717s-2.769-5.179-2.769-10.101v-5.999c0-4.922,0.923-8.287,2.769-10.1
c1.846-1.812,5.4-2.717,10.664-2.717h30.762c5.092,0,8.604,0.871,10.536,2.614c1.931,1.743,2.897,4.837,2.897,9.28v1.127
l-11.125,2.615V477.416z"/>
<path fill="#FFFFFF" d="M537.714,522.123v-54.191h12.612v54.191H537.714z"/>
<path fill="#FFFFFF" d="M577.909,522.123v-54.191h10.203l25.532,32.761l24.968-32.761h10.1v54.191h-11.689v-33.479
c0-0.649,0.042-1.47,0.128-2.461c0.084-0.991,0.196-2.103,0.333-3.333c-0.684,1.402-1.282,2.556-1.794,3.461
c-0.513,0.906-0.974,1.649-1.384,2.229l-20.354,27.07h-2.512l-20.405-27.172c-0.752-1.025-1.393-1.991-1.923-2.897
c-0.53-0.905-0.966-1.785-1.307-2.64c0.103,1.127,0.179,2.152,0.231,3.076c0.051,0.922,0.077,1.812,0.077,2.666v33.479H577.909z"
/>
<path fill="#FFFFFF" d="M714.748,480.748c0-4.922,0.923-8.287,2.769-10.1c1.846-1.812,5.4-2.717,10.664-2.717h39.888
c5.263,0,8.818,0.905,10.664,2.717c1.846,1.813,2.769,5.178,2.769,10.1v28.558c0,4.956-0.923,8.331-2.769,10.126
c-1.846,1.794-5.401,2.691-10.664,2.691h-5.845l6.819,13.945h-12.51l-6.102-13.945h-22.251c-5.264,0-8.818-0.897-10.664-2.691
c-1.846-1.795-2.769-5.17-2.769-10.126V480.748z M727.36,511.92h18.56l-5.024-11.74l9.126-3.691l7.332,15.432h11.586v-34.299
H727.36V511.92z"/>
<path fill="#FFFFFF" d="M820.67,467.932v43.988h35.939v-43.988h12.562v41.374c0,4.956-0.923,8.331-2.769,10.126
c-1.846,1.794-5.401,2.691-10.664,2.691H821.49c-5.229,0-8.776-0.897-10.639-2.691c-1.863-1.795-2.794-5.17-2.794-10.126v-41.374
H820.67z"/>
<path fill="#FFFFFF" d="M884.244,522.123l30.659-54.191h12.151l31.068,54.191h-14.15l-6.511-11.844h-34.351l-6.307,11.844H884.244
z M908.494,500.487h23.738l-11.689-22.046L908.494,500.487z"/>
<path fill="#FFFFFF" d="M975.556,522.123v-54.191h34.863c9.946,0,17.594,2.324,22.943,6.973
c5.349,4.648,8.023,11.245,8.023,19.789c0,5.06-1.043,9.613-3.128,13.664c-2.085,4.05-5.023,7.237-8.818,9.562
c-2.357,1.47-5.289,2.538-8.792,3.204c-3.504,0.667-7.99,1-13.458,1H975.556z M988.168,511.92h16.304
c8.682,0,14.834-1.35,18.457-4.05c3.622-2.699,5.435-7.16,5.435-13.382c0-5.537-1.505-9.731-4.512-12.586
c-3.008-2.854-7.452-4.281-13.33-4.281h-22.354V511.92z"/>
<path fill="#FFFFFF" d="M1064.509,522.123v-54.191h46.348c4.307,0,7.425,0.829,9.356,2.486c1.931,1.658,2.896,4.332,2.896,8.023
v12.715c0,3.658-0.966,6.324-2.896,7.998c-1.932,1.675-5.05,2.512-9.356,2.512h-7.075l25.02,20.457h-18.098l-21.842-20.457
h-11.945v20.457H1064.509z M1105.268,477.313h-28.352v15.073h28.352c2.188,0,3.683-0.315,4.486-0.948
c0.803-0.632,1.205-1.751,1.205-3.358v-6.512c0-1.571-0.402-2.674-1.205-3.307C1108.95,477.63,1107.455,477.313,1105.268,477.313z
"/>
<path fill="#FFFFFF" d="M1134.594,522.123l30.659-54.191h12.151l31.068,54.191h-14.15l-6.511-11.844h-34.351l-6.307,11.844
H1134.594z M1158.844,500.487h23.738l-11.689-22.046L1158.844,500.487z"/>
<path fill="#FFFFFF" d="M1244.003,477.621v44.502h-12.612v-44.502h-24.865v-9.689h62.445v9.689H1244.003z"/>
<path fill="#FFFFFF" d="M71.188,626.523l-17.29-44.902h10.79l11.385,30.119l11.937-30.119h7.307l12.149,30.119l10.875-30.119
h9.346l-17.332,44.902h-7.052l-12.362-31.053l-12.532,31.053H71.188z"/>
<path fill="#FFFFFF" d="M151.73,626.523l-17.29-44.902h10.79l11.385,30.119l11.937-30.119h7.307l12.149,30.119l10.875-30.119
h9.346l-17.332,44.902h-7.052l-12.362-31.053l-12.532,31.053H151.73z"/>
<path fill="#FFFFFF" d="M232.273,626.523l-17.29-44.902h10.79l11.385,30.119l11.937-30.119h7.307l12.149,30.119l10.875-30.119
h9.346l-17.332,44.902h-7.052l-12.362-31.053l-12.532,31.053H232.273z"/>
<path fill="#FFFFFF" d="M303.301,613.057h1.572c0.765,0,1.302,0.22,1.614,0.659c0.312,0.439,0.467,1.281,0.467,2.527v7.052
c0,1.359-0.17,2.237-0.51,2.634s-1.388,0.595-3.144,0.595h-7.774c-0.765,0-1.303-0.227-1.614-0.68
c-0.312-0.453-0.467-1.303-0.467-2.549v-7.052c0-1.331,0.17-2.194,0.51-2.591s1.387-0.596,3.144-0.596H303.301z"/>
<path fill="#FFFFFF" d="M363.75,589.65h-28.165v28.42h28.165v-9.644l10.45,2.167v5.31c0,4.106-0.772,6.903-2.315,8.39
c-1.544,1.487-4.482,2.23-8.815,2.23h-26.805c-4.361,0-7.307-0.743-8.836-2.23c-1.529-1.486-2.294-4.283-2.294-8.39v-23.661
c0-4.078,0.765-6.868,2.294-8.369s4.475-2.252,8.836-2.252h26.805c4.333,0,7.271,0.751,8.815,2.252
c1.543,1.501,2.315,4.291,2.315,8.369v4.248l-10.45,1.656V589.65z"/>
<path fill="#FFFFFF" d="M433.418,589.65h-28.165v28.42h28.165v-9.644l10.45,2.167v5.31c0,4.106-0.772,6.903-2.315,8.39
c-1.544,1.487-4.482,2.23-8.815,2.23h-26.805c-4.361,0-7.307-0.743-8.836-2.23c-1.529-1.486-2.294-4.283-2.294-8.39v-23.661
c0-4.078,0.765-6.868,2.294-8.369s4.475-2.252,8.836-2.252h26.805c4.333,0,7.271,0.751,8.815,2.252
c1.543,1.501,2.315,4.291,2.315,8.369v4.248l-10.45,1.656V589.65z"/>
<path fill="#FFFFFF" d="M503.086,589.65h-28.165v28.42h28.165v-9.644l10.45,2.167v5.31c0,4.106-0.772,6.903-2.315,8.39
c-1.544,1.487-4.482,2.23-8.815,2.23h-26.805c-4.361,0-7.307-0.743-8.836-2.23c-1.529-1.486-2.294-4.283-2.294-8.39v-23.661
c0-4.078,0.765-6.868,2.294-8.369s4.475-2.252,8.836-2.252h26.805c4.333,0,7.271,0.751,8.815,2.252
c1.543,1.501,2.315,4.291,2.315,8.369v4.248l-10.45,1.656V589.65z"/>
<path fill="#FFFFFF" d="M527.768,607.832v-8.963h20.263v8.963H527.768z"/>
<path fill="#FFFFFF" d="M563.706,626.523v-44.902h8.454l21.155,27.146l20.688-27.146h8.369v44.902h-9.686v-27.74
c0-0.537,0.035-1.217,0.106-2.039c0.071-0.82,0.163-1.741,0.276-2.761c-0.567,1.161-1.062,2.117-1.487,2.867
c-0.425,0.751-0.807,1.367-1.147,1.849l-16.865,22.43h-2.082l-16.907-22.516c-0.623-0.85-1.154-1.649-1.593-2.399
c-0.439-0.75-0.801-1.479-1.083-2.188c0.085,0.936,0.149,1.785,0.191,2.549c0.043,0.766,0.064,1.502,0.064,2.209v27.74H563.706z"
/>
<path fill="#FFFFFF" d="M635.753,626.523l25.403-44.902h10.068l25.742,44.902h-11.725l-5.395-9.813h-28.462l-5.225,9.813H635.753z
M655.846,608.597h19.668l-9.686-18.267L655.846,608.597z"/>
<path fill="#FFFFFF" d="M711.326,626.523v-44.902h7.137l31.605,26.466c1.076,0.878,2.024,1.706,2.846,2.485s1.572,1.579,2.252,2.4
c-0.17-2.521-0.283-4.305-0.34-5.354c-0.057-1.047-0.085-1.854-0.085-2.421v-23.577h9.388v44.902h-7.137l-32.965-27.74
c-0.793-0.707-1.486-1.345-2.081-1.911s-1.147-1.147-1.657-1.741c0.142,1.388,0.248,2.697,0.319,3.929
c0.07,1.232,0.106,2.302,0.106,3.208v24.256H711.326z"/>
<path fill="#FFFFFF" d="M786.941,626.523v-44.902h7.137l31.605,26.466c1.076,0.878,2.024,1.706,2.846,2.485s1.572,1.579,2.252,2.4
c-0.17-2.521-0.283-4.305-0.34-5.354c-0.057-1.047-0.085-1.854-0.085-2.421v-23.577h9.388v44.902h-7.137l-32.965-27.74
c-0.793-0.707-1.486-1.345-2.081-1.911s-1.147-1.147-1.657-1.741c0.142,1.388,0.248,2.697,0.319,3.929
c0.07,1.232,0.106,2.302,0.106,3.208v24.256H786.941z"/>
<path fill="#FFFFFF" d="M862.642,626.523v-44.902h10.45v17.418h32.625v-17.418h10.535v44.902h-10.535v-19.328h-32.625v19.328
H862.642z"/>
<path fill="#FFFFFF" d="M939.19,626.523v-44.902h45.964v7.646h-35.514v10.025h20.73v7.646h-20.73v11.131h35.938v8.453H939.19z"/>
<path fill="#FFFFFF" d="M1004.866,626.523v-44.902h10.45v44.902H1004.866z"/>
<path fill="#FFFFFF" d="M1038.17,626.523v-44.902h8.453l21.156,27.146l20.688-27.146h8.369v44.902h-9.686v-27.74
c0-0.537,0.035-1.217,0.105-2.039c0.07-0.82,0.163-1.741,0.276-2.761c-0.566,1.161-1.062,2.117-1.487,2.867
c-0.424,0.751-0.807,1.367-1.146,1.849l-16.865,22.43h-2.081l-16.907-22.516c-0.623-0.85-1.154-1.649-1.593-2.399
c-0.439-0.75-0.801-1.479-1.083-2.188c0.084,0.936,0.148,1.785,0.19,2.549c0.043,0.766,0.063,1.502,0.063,2.209v27.74H1038.17z"/>
<path fill="#FFFFFF" d="M1124.83,613.057h1.572c0.764,0,1.302,0.22,1.613,0.659s0.468,1.281,0.468,2.527v7.052
c0,1.359-0.17,2.237-0.51,2.634s-1.388,0.595-3.144,0.595h-7.773c-0.766,0-1.304-0.227-1.615-0.68s-0.467-1.303-0.467-2.549
v-7.052c0-1.331,0.17-2.194,0.51-2.591s1.388-0.596,3.144-0.596H1124.83z"/>
<path fill="#FFFFFF" d="M1147.601,626.523v-44.902h28.887c8.241,0,14.577,1.927,19.01,5.777c4.433,3.853,6.648,9.318,6.648,16.398
c0,4.191-0.864,7.965-2.591,11.32c-1.729,3.356-4.164,5.997-7.307,7.923c-1.955,1.218-4.383,2.103-7.286,2.655
c-2.903,0.552-6.62,0.828-11.151,0.828H1147.601z M1158.051,618.07h13.509c7.193,0,12.291-1.119,15.293-3.356
s4.503-5.933,4.503-11.087c0-4.588-1.246-8.064-3.738-10.43c-2.492-2.364-6.174-3.547-11.045-3.547h-18.521V618.07z"/>
<path fill="#FFFFFF" d="M1221.304,626.523v-44.902h45.964v7.646h-35.514v10.025h20.73v7.646h-20.73v11.131h35.938v8.453H1221.304z
"/>
</g>
<g>
<polygon fill="#FFFFFF" points="1050.25,150.292 1050.25,100.292 1000.25,100.292 1000.25,49.792 799.75,49.792 799.75,100.25
749.75,100.25 749.75,349.791 799.75,349.791 799.75,400.292 1000.25,400.292 1000.25,349.791 1050.25,349.791 1050.25,300.292
950.25,300.292 950.25,349.791 849.75,349.791 849.75,100.292 950.25,100.292 950.25,150.292 "/>
</g>
<g>
<path fill="#FFFFFF" d="M1100.25,49.792v174.75h175V49.792H1100.25z M1251,124.042h-24.75v25h-50.75v24.75h75.5v25.125h-125.75
v-25.125h25.25v-24.75h25v-25h50.75v-25h-75.75v25h-25.25v-25h25.25v-25.25h75.75v25.25H1251V124.042z"/>
</g>
<g>
<polygon fill="#FFFFFF" points="700.25,150.292 700.25,100.292 650.25,100.292 650.25,49.792 449.75,49.792 449.75,100.25
399.75,100.25 399.75,349.791 449.75,349.791 449.75,400.292 650.25,400.292 650.25,349.791 700.25,349.791 700.25,300.292
600.25,300.292 600.25,349.791 499.75,349.791 499.75,100.292 600.25,100.292 600.25,150.292 "/>
</g>
<g>
<polygon fill="#FFFFFF" points="350.25,150.292 350.25,100.292 300.25,100.292 300.25,49.792 99.75,49.792 99.75,100.25
49.75,100.25 49.75,349.791 99.75,349.791 99.75,400.292 300.25,400.292 300.25,349.791 350.25,349.791 350.25,300.292
250.25,300.292 250.25,349.791 149.75,349.791 149.75,100.292 250.25,100.292 250.25,150.292 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,9 @@
EESchema-DOCLIB Version 2.0
#
$CMP CN61CN33
D Microprocessor Reset (active-low) Circuit, SOT-23
K reset supervisor
F http://www.ti.com/lit/ds/symlink/lm809.pdf
$ENDCMP
#
#End Doc Library

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,67 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# CN61CN33
#
DEF CN61CN33 U 0 20 Y Y 1 F N
F0 "U" 100 500 50 H V C CNN
F1 "CN61CN33" 200 400 50 H V C CNN
F2 "Package_TO_SOT_SMD:SOT-23" 300 100 50 H I C CNN
F3 "" 300 100 50 H I C CNN
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
S 200 300 -200 -300 0 1 10 f
X RESET 1 0 -400 100 U 50 50 1 1 O
X GND 2 300 0 100 L 50 50 1 1 W
X VCC 3 0 400 100 D 50 50 1 1 W
ENDDRAW
ENDDEF
#
# DS2438
#
DEF DS2438 U 0 40 Y Y 1 F N
F0 "U" 0 0 50 H V C CNN
F1 "DS2438" 0 0 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S -450 -100 500 -1200 0 1 0 f
X GND 1 -550 -250 100 R 50 50 1 1 W
X Vsens+ 2 -550 -500 100 R 50 50 1 1 U
X Vsense- 3 -550 -750 100 R 50 50 1 1 U
X Vad 4 -550 -1000 100 R 50 50 1 1 I
X Vdd 5 600 -1000 100 L 50 50 1 1 W
X NC 6 600 -750 100 L 50 50 1 1 U
X NC 7 600 -500 100 L 50 50 1 1 U
X DQ 8 600 -250 100 L 50 50 1 1 B
ENDDRAW
ENDDEF
#
# DW01
#
DEF DW01 IC 0 40 Y Y 1 L N
F0 "IC" 850 300 50 H V L BNN
F1 "DW01" 850 200 50 H V L BNN
F2 "SOT95P280X135-6N" 0 0 50 H I L BNN
F3 "" 0 0 50 H I L BNN
F4 "1.35mm" 0 0 50 H I L BNN "HEIGHT"
F5 "ic" 0 0 50 H I L BNN "DESCRIPTION"
F6 "DW01" 0 0 50 H I L BNN "MANUFACTURER_PART_NUMBER"
F7 "Slkor" 0 0 50 H I L BNN "MANUFACTURER_NAME"
DRAW
P 2 0 0 10 200 100 200 -300 N
P 2 0 0 10 200 100 800 100 N
P 2 0 0 10 800 -300 200 -300 N
P 2 0 0 10 800 -300 800 100 N
X OD 1 0 0 200 R 40 40 0 0 B
X CSI 2 0 -100 200 R 40 40 0 0 B
X OC 3 0 -200 200 R 40 40 0 0 B
X TD 4 1000 -200 200 L 40 40 0 0 B
X VDD 5 1000 -100 200 L 40 40 0 0 B
X VSS 6 1000 0 200 L 40 40 0 0 B
ENDDRAW
ENDDEF
#
#End Library

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,154 @@
(module DPAK457P991X255-3N (layer F.Cu) (tedit 5F5CEF39)
(descr "")
(fp_text reference REF** (at -2.825 -4.635 0) (layer F.SilkS)
(effects (font (size 1.0 1.0) (thickness 0.015)))
)
(fp_text value DPAK457P991X255-3N (at 5.43 5.365 0) (layer F.Fab)
(effects (font (size 1.0 1.0) (thickness 0.015)))
)
(fp_poly
(pts
(xy -0.265 -2.555)
(xy 0.855 -2.555)
(xy 0.855 -1.405)
(xy -0.265 -1.405)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 1.085 -2.555)
(xy 2.205 -2.555)
(xy 2.205 -1.405)
(xy 1.085 -1.405)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 2.435 -2.555)
(xy 3.555 -2.555)
(xy 3.555 -1.405)
(xy 2.435 -1.405)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 3.785 -2.555)
(xy 4.905 -2.555)
(xy 4.905 -1.405)
(xy 3.785 -1.405)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 3.785 -1.235)
(xy 4.905 -1.235)
(xy 4.905 -0.085)
(xy 3.785 -0.085)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 3.785 0.085)
(xy 4.905 0.085)
(xy 4.905 1.235)
(xy 3.785 1.235)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 3.785 1.405)
(xy 4.905 1.405)
(xy 4.905 2.555)
(xy 3.785 2.555)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 2.435 -1.235)
(xy 3.555 -1.235)
(xy 3.555 -0.085)
(xy 2.435 -0.085)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 2.435 0.085)
(xy 3.555 0.085)
(xy 3.555 1.235)
(xy 2.435 1.235)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 2.435 1.405)
(xy 3.555 1.405)
(xy 3.555 2.555)
(xy 2.435 2.555)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 1.085 -1.235)
(xy 2.205 -1.235)
(xy 2.205 -0.085)
(xy 1.085 -0.085)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 1.085 0.085)
(xy 2.205 0.085)
(xy 2.205 1.235)
(xy 1.085 1.235)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy 1.085 1.405)
(xy 2.205 1.405)
(xy 2.205 2.555)
(xy 1.085 2.555)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy -0.265 -1.235)
(xy 0.855 -1.235)
(xy 0.855 -0.085)
(xy -0.265 -0.085)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy -0.265 0.085)
(xy 0.855 0.085)
(xy 0.855 1.235)
(xy -0.265 1.235)
) (layer F.Paste) (width 0.01)
)
(fp_poly
(pts
(xy -0.265 1.405)
(xy 0.855 1.405)
(xy 0.855 2.555)
(xy -0.265 2.555)
) (layer F.Paste) (width 0.01)
)
(fp_line (start 3.875 -3.365) (end -2.345 -3.365) (layer F.SilkS) (width 0.127))
(fp_line (start -2.345 -3.365) (end -2.345 3.365) (layer F.SilkS) (width 0.127))
(fp_line (start -2.345 3.365) (end 3.875 3.365) (layer F.SilkS) (width 0.127))
(fp_line (start 3.875 3.365) (end 3.875 -3.365) (layer F.Fab) (width 0.127))
(fp_line (start 3.875 -3.365) (end -2.345 -3.365) (layer F.Fab) (width 0.127))
(fp_line (start -2.345 -3.365) (end -2.345 3.365) (layer F.Fab) (width 0.127))
(fp_line (start -2.345 3.365) (end 3.875 3.365) (layer F.Fab) (width 0.127))
(fp_circle (center -6.015 -2.285) (end -5.915 -2.285) (layer F.SilkS) (width 0.2))
(fp_circle (center -6.015 -2.285) (end -5.915 -2.285) (layer F.Fab) (width 0.2))
(fp_line (start -5.815 -3.615) (end 5.815 -3.615) (layer F.CrtYd) (width 0.05))
(fp_line (start 5.815 -3.615) (end 5.815 3.615) (layer F.CrtYd) (width 0.05))
(fp_line (start 5.815 3.615) (end -5.815 3.615) (layer F.CrtYd) (width 0.05))
(fp_line (start -5.815 3.615) (end -5.815 -3.615) (layer F.CrtYd) (width 0.05))
(pad 1 smd rect (at -4.45 -2.285) (size 2.22 0.96) (layers F.Cu F.Mask F.Paste))
(pad 3 smd rect (at -4.45 2.285) (size 2.22 0.96) (layers F.Cu F.Mask F.Paste))
(pad 4 smd rect (at 2.32 0.0) (size 6.49 5.63) (layers F.Cu F.Mask))
)

View File

@@ -0,0 +1,9 @@
EESchema-DOCLIB Version 2.0
#
$CMP SR04M-2-HeaderConn_01x04_Female
D Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)
K connector
F ~
$ENDCMP
#
#End Doc Library

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,124 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# ESP32-DEVKITC-32D
#
DEF ESP32-DEVKITC-32D U 0 40 Y Y 1 L N
F0 "U" -601 1026 50 H V L BNN
F1 "ESP32-DEVKITC-32D" -601 -1101 50 H V L BNN
F2 "MODULE_ESP32-DEVKITC-32D" 0 0 50 H I L BNN
F3 "4" 0 0 50 H I L BNN
F4 "Espressif Systems" 0 0 50 H I L BNN
DRAW
P 2 0 0 10 -600 -1000 -600 1000 N
P 2 0 0 10 -600 1000 600 1000 N
P 2 0 0 10 600 -1000 -600 -1000 N
P 2 0 0 10 600 1000 600 -1000 N
X 3V3 1 -800 900 200 R 40 40 0 0 W
X IO26 10 -800 0 200 R 40 40 0 0 B
X IO27 11 -800 -100 200 R 40 40 0 0 B
X IO14 12 -800 -200 200 R 40 40 0 0 B
X IO12 13 -800 -300 200 R 40 40 0 0 B
X GND1 14 -800 -400 200 R 40 40 0 0 W
X IO13 15 -800 -500 200 R 40 40 0 0 B
X SD2 16 -800 -600 200 R 40 40 0 0 B
X SD3 17 -800 -700 200 R 40 40 0 0 B
X CMD 18 -800 -800 200 R 40 40 0 0 B
X EXT_5V 19 -800 -900 200 R 40 40 0 0 W
X EN 2 -800 800 200 R 40 40 0 0 I
X GND3 20 800 900 200 L 40 40 0 0 W
X IO23 21 800 800 200 L 40 40 0 0 B
X IO22 22 800 700 200 L 40 40 0 0 B
X TXD0 23 800 600 200 L 40 40 0 0 O
X RXD0 24 800 500 200 L 40 40 0 0 I
X IO21 25 800 400 200 L 40 40 0 0 B
X GND2 26 800 300 200 L 40 40 0 0 W
X IO19 27 800 200 200 L 40 40 0 0 B
X IO18 28 800 100 200 L 40 40 0 0 B
X IO5 29 800 0 200 L 40 40 0 0 B
X SENSOR_VP 3 -800 700 200 R 40 40 0 0 I
X IO17 30 800 -100 200 L 40 40 0 0 B
X IO16 31 800 -200 200 L 40 40 0 0 B
X IO4 32 800 -300 200 L 40 40 0 0 B
X IO0 33 800 -400 200 L 40 40 0 0 B
X IO2 34 800 -500 200 L 40 40 0 0 B
X IO15 35 800 -600 200 L 40 40 0 0 B
X SD1 36 800 -700 200 L 40 40 0 0 B
X SD0 37 800 -800 200 L 40 40 0 0 B
X CLK 38 800 -900 200 L 40 40 0 0 I C
X SENSOR_VN 4 -800 600 200 R 40 40 0 0 I
X IO34 5 -800 500 200 R 40 40 0 0 B
X IO35 6 -800 400 200 R 40 40 0 0 B
X IO32 7 -800 300 200 R 40 40 0 0 B
X IO33 8 -800 200 200 R 40 40 0 0 B
X IO25 9 -800 100 200 R 40 40 0 0 B
ENDDRAW
ENDDEF
#
# SL2300
#
DEF SL2300 Q 0 40 Y Y 1 F N
F0 "Q" 0 0 50 H V C CNN
F1 "SL2300" 300 0 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
C 15 0 110 1 1 10 N
C 50 -70 10 1 1 0 F
C 50 70 10 1 1 0 F
P 2 1 1 0 -40 0 -150 0 N
P 2 1 1 10 -40 75 -40 -75 N
P 2 1 1 10 -20 -50 -20 -90 N
P 2 1 1 10 -20 20 -20 -20 N
P 2 1 1 10 -20 90 -20 50 N
P 2 1 1 0 50 100 50 70 N
P 3 1 1 0 50 -100 50 0 -20 0 N
P 4 1 1 0 -20 -70 80 -70 80 70 -20 70 N
P 4 1 1 0 -10 0 30 15 30 -15 -10 0 F
P 4 1 1 0 60 20 65 15 95 15 100 10 N
P 4 1 1 0 80 15 65 -10 95 -10 80 15 N
X G 1 -250 0 100 R 50 50 1 1 I
X S 2 50 -200 100 U 50 50 1 1 P
X D 3 50 200 100 D 50 50 1 1 P
ENDDRAW
ENDDEF
#
# SR04M-2
#
DEF SR04M-2 H 0 40 Y Y 1 F N
F0 "H" 250 1100 50 H V C CNN
F1 "SR04M-2" 300 -850 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S -900 1050 1650 -800 0 1 10 N
ENDDRAW
ENDDEF
#
# SR04M-2-HeaderConn_01x04_Female
#
DEF SR04M-2-HeaderConn_01x04_Female J 0 40 Y N 1 F N
F0 "J" 0 200 50 H V C CNN
F1 "SR04M-2-HeaderConn_01x04_Female" 0 -300 50 H V C CNN
F2 "ESP32:SR04M-2PinHeader_1x04_P2.54mm_Vertical" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
X VCC 1 -200 100 150 R 50 50 1 1 W
X RX 2 -200 0 150 R 50 50 1 1 I
X TX 3 -200 -100 150 R 50 50 1 1 O
X GND 4 -200 -200 150 R 50 50 1 1 W
ENDDRAW
ENDDEF
#
#End Library

View File

@@ -0,0 +1,65 @@
(module MODULE_ESP32-DEVKITC-32D (layer F.Cu) (tedit 5F565126)
(fp_text reference REF** (at -10.829175 -28.446045) (layer F.SilkS)
(effects (font (size 1.000386 1.000386) (thickness 0.015)))
)
(fp_text value MODULE_ESP32-DEVKITC-32D (at 1.24136 28.294535) (layer F.Fab)
(effects (font (size 1.001047 1.001047) (thickness 0.015)))
)
(fp_circle (center -14.6 -19.9) (end -14.46 -19.9) (layer F.Fab) (width 0.28))
(fp_circle (center -14.6 -19.9) (end -14.46 -19.9) (layer F.Fab) (width 0.28))
(fp_line (start -14.2 27.5) (end -14.2 -27.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 14.2 27.5) (end -14.2 27.5) (layer F.CrtYd) (width 0.05))
(fp_line (start 14.2 -27.4) (end 14.2 27.5) (layer F.CrtYd) (width 0.05))
(fp_line (start -14.2 -27.4) (end 14.2 -27.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 13.95 27.25) (end -13.95 27.25) (layer F.SilkS) (width 0.127))
(fp_line (start 13.95 -27.15) (end 13.95 27.25) (layer F.SilkS) (width 0.127))
(fp_line (start -13.95 -27.15) (end 13.95 -27.15) (layer F.SilkS) (width 0.127))
(fp_line (start -13.95 27.25) (end -13.95 -27.15) (layer F.SilkS) (width 0.127))
(fp_line (start -13.95 27.25) (end -13.95 -27.15) (layer F.Fab) (width 0.127))
(fp_line (start 13.95 27.25) (end -13.95 27.25) (layer F.Fab) (width 0.127))
(fp_line (start 13.95 -27.15) (end 13.95 27.25) (layer F.Fab) (width 0.127))
(fp_line (start -13.95 -27.15) (end 13.95 -27.15) (layer F.Fab) (width 0.127))
(pad 1 thru_hole rect (at -12.7 -19.76) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 2 thru_hole circle (at -12.7 -17.22) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 19 thru_hole circle (at -12.7 25.96) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 3 thru_hole circle (at -12.7 -14.68) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 4 thru_hole circle (at -12.7 -12.14) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 5 thru_hole circle (at -12.7 -9.6) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 6 thru_hole circle (at -12.7 -7.06) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 7 thru_hole circle (at -12.7 -4.52) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 8 thru_hole circle (at -12.7 -1.98) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 9 thru_hole circle (at -12.7 0.56) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 10 thru_hole circle (at -12.7 3.1) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 11 thru_hole circle (at -12.7 5.64) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 12 thru_hole circle (at -12.7 8.18) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 13 thru_hole circle (at -12.7 10.72) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 14 thru_hole circle (at -12.7 13.26) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 15 thru_hole circle (at -12.7 15.8) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 16 thru_hole circle (at -12.7 18.34) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 17 thru_hole circle (at -12.7 20.88) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 18 thru_hole circle (at -12.7 23.42) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 20 thru_hole circle (at 12.7 -19.76) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 21 thru_hole circle (at 12.7 -17.22) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 22 thru_hole circle (at 12.7 -14.68) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 23 thru_hole circle (at 12.7 -12.14) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 24 thru_hole circle (at 12.7 -9.6) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 25 thru_hole circle (at 12.7 -7.06) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 26 thru_hole circle (at 12.7 -4.52) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 27 thru_hole circle (at 12.7 -1.98) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 28 thru_hole circle (at 12.7 0.56) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 29 thru_hole circle (at 12.7 3.1) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 30 thru_hole circle (at 12.7 5.64) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 31 thru_hole circle (at 12.7 8.18) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 32 thru_hole circle (at 12.7 10.72) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 33 thru_hole circle (at 12.7 13.26) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 34 thru_hole circle (at 12.7 15.8) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 35 thru_hole circle (at 12.7 18.34) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 36 thru_hole circle (at 12.7 20.88) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 37 thru_hole circle (at 12.7 23.42) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(pad 38 thru_hole circle (at 12.7 25.96) (size 1.56 1.56) (drill 1.04) (layers *.Cu *.Mask))
(model ${KIPRJMOD}/kicad-stuff/ESP32-DEVKITC-32D--3DModel-STEP-56544.STEP
(offset (xyz 0 -3 1.5))
(scale (xyz 1 1 1))
(rotate (xyz -90 0 0))
)
)

View File

@@ -0,0 +1,43 @@
(module SR04M-2PinHeader_1x04_P2.54mm_Vertical (layer F.Cu) (tedit 5FC1448F)
(descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row")
(tags "Through hole pin header THT 1x04 2.54mm single row")
(fp_text reference REF** (at 0 -2.33) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value SR04M-2PinHeader_1x04_P2.54mm_Vertical (at 0 9.95) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.8 9.4) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.8 9.4) (end 1.8 9.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.8 -1.8) (end -1.8 9.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start 1.33 1.27) (end 1.33 8.95) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 1.27) (end -1.33 8.95) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 8.95) (end 1.33 8.95) (layer F.SilkS) (width 0.12))
(fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start -1.27 8.89) (end -1.27 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 8.89) (end -1.27 8.89) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 -1.27) (end 1.27 8.89) (layer F.Fab) (width 0.1))
(fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0 -17.5) (end 10 -17.5) (layer F.SilkS) (width 0.12))
(fp_line (start 10 -17.5) (end 10 23.5) (layer F.SilkS) (width 0.12))
(fp_line (start 10 23.5) (end -10 23.5) (layer F.SilkS) (width 0.12))
(fp_line (start -10 23.5) (end -10 -17.5) (layer F.SilkS) (width 0.12))
(fp_line (start -10 -17.5) (end 0.5 -17.5) (layer F.SilkS) (width 0.12))
(fp_poly (pts (xy 8.81 6.27) (xy 3.81 6.27) (xy 3.81 1.27) (xy 8.81 1.27)) (layer F.Fab) (width 0.1))
(fp_text user %R (at 0 3.81 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
(pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
(pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
(pad 4 thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)

View File

@@ -0,0 +1 @@
<!DOCTYPE HTML><html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="0; url=https://www.snapeda.com/about/import/#"> <script type="text/javascript">window.location.href="https://www.snapeda.com/about/import/#" </script> <title>Page Redirection</title> </head> <body> If you are not redirected automatically, follow this <a href="https://www.snapeda.com/about/import/#">link to the import guide</a>. </body></html>

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,27 @@
EESchema-LIBRARY Version 2.3
#encoding utf-8
#(c) SnapEDA 2016 (snapeda.com)
#This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA) with Design Exception 1.0
#
# LP38690DT-3.3
#
DEF LP38690DT-3.3 U 0 40 Y Y 1 L N
F0 "U" -400 200 50 H V L BNN
F1 "LP38690DT-3.3" -400 -300 50 H V L BNN
F2 "DPAK457P991X255-3N" 0 0 50 H I L BNN
F3 "IPC-7351B" 0 0 50 H I L BNN
F4 "Texas Instruments" 0 0 50 H I L BNN
F5 "M" 0 0 50 H I L BNN
F6 "2.55mm" 0 0 50 H I L BNN
DRAW
P 2 0 0 6 -400 200 -400 -200 N
P 2 0 0 6 -400 -200 400 -200 N
P 2 0 0 6 400 -200 400 200 N
P 2 0 0 6 400 200 -400 200 N
X IN 3 -600 100 200 R 40 40 0 0 I
X OUT 1 600 100 200 L 40 40 0 0 O
X GND 4 600 -100 200 L 40 40 0 0 W
ENDDRAW
ENDDEF
#
# End Library

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

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,31 @@
EESchema-LIBRARY Version 2.3
#encoding utf-8
#(c) SnapEDA 2016 (snapeda.com)
#This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA) with Design Exception 1.0
#
# SX1308
#
DEF SX1308 U 0 40 Y Y 1 L N
F0 "U" -700 800 50 H V L BNN
F1 "SX1308" -701 701 50 H V L BNN
F2 "SOT-23-6" 0 0 50 H I L BNN
F3 "" 0 0 50 H I L BNN
DRAW
P 2 0 0 10 -700 600 0 600 N
P 2 0 0 10 0 600 0 -300 N
P 2 0 0 10 0 -300 -700 -300 N
P 2 0 0 10 -700 -300 -700 600 N
P 2 0 0 10 -543 7 -443 7 N
P 2 0 0 10 -443 7 -445 66 N
P 2 0 0 10 -445 66 -345 66 N
T 0 -428 -2 32 0 0 0 ON/OFF Normal 0 L B
X SW 1 200 500 200 L 40 40 0 0 B
X FB 3 200 -100 200 L 40 40 0 0 B
X IN 5 -900 500 200 R 40 40 0 0 B
X EN 4 -900 100 200 R 40 40 0 0 B
X GND 2 -900 -200 200 R 40 40 0 0 B
X N/C 6 200 200 200 L 40 40 0 0 B
ENDDRAW
ENDDEF
#
# End Library

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

View File

@@ -0,0 +1,42 @@
EESchema-LIBRARY Version 2.3 Date: 21-02-2013 11:13:20
#encoding utf-8
#
# ds2438az+
#
DEF ds2438az+ U 0 10 Y Y 1 L N
F0 "U" 1200 400 60 H V C CNN
F1 "ds2438az+" 1200 300 60 H V C CNN
F2 "21-0041B_8_MXM" 1200 240 60 H I C CNN
F3 "~" 0 0 60 H V C CNN
$FPLIST
21-0041B_8_MXM
21-0041B_8_MXM-M
21-0041B_8_MXM-L
$ENDFPLIST
DRAW
X GND 1 0 0 300 R 59 59 1 1 W
X VSENS+ 2 0 -100 300 R 59 59 1 1 I
X VSENS- 3 0 -200 300 R 59 59 1 1 I
X VAD 4 0 -300 300 R 59 59 1 1 I
X VDD 5 2400 -300 300 L 59 59 1 1 W
X NC 6 2400 -200 300 L 59 59 1 1 N
X NC 7 2400 -100 300 L 59 59 1 1 N
X DQ 8 2400 0 300 L 59 59 1 1 B
P 2 1 1 5 280 -100 238 -80 N
P 2 1 1 5 280 -100 238 -120 N
P 2 1 1 5 280 -200 238 -180 N
P 2 1 1 5 280 -200 238 -220 N
P 2 1 1 5 280 -300 238 -280 N
P 2 1 1 5 280 -300 238 -320 N
P 2 1 1 5 2120 0 2162 20 N
P 2 1 1 5 2120 0 2162 -20 N
P 2 1 1 5 2182 20 2223 0 N
P 2 1 1 5 2182 -20 2223 0 N
P 2 1 1 5 300 200 300 -500 N
P 2 1 1 5 300 -500 2100 -500 N
P 2 1 1 5 2100 -500 2100 200 N
P 2 1 1 5 2100 200 300 200 N
ENDDRAW
ENDDEF
#
#End Library

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,111 @@
(kicad_symbol_lib
(version 20211014)
(generator https://github.com/uPesy/easyeda2kicad.py)
(symbol "UX-144S-ACP5"
(in_bom yes)
(on_board yes)
(property
"Reference"
"USB"
(id 0)
(at 0 11.43 0)
(effects (font (size 1.27 1.27) ) )
)
(property
"Value"
"UX-144S-ACP5"
(id 1)
(at 0 -8.89 0)
(effects (font (size 1.27 1.27) ) )
)
(property
"Footprint"
"easyeda2kicad:MINI-USB-SMD_UX-144S-ACP5"
(id 2)
(at 0 -11.43 0)
(effects (font (size 1.27 1.27) ) hide)
)
(property
"Datasheet"
"https://lcsc.com/product-detail/USB-Connectors_XUNPU-UX-144S-ACP5_C720611.html"
(id 3)
(at 0 -13.97 0)
(effects (font (size 1.27 1.27) ) hide)
)
(property
"LCSC Part"
"C720611"
(id 5)
(at 0 -16.51 0)
(effects (font (size 1.27 1.27) ) hide)
)
(symbol "UX-144S-ACP5_0_1"
(rectangle
(start -7.62 8.89)
(end 7.62 -6.35)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type background))
)
(circle
(center -6.35 7.62)
(radius 0.38)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(pin unspecified line
(at 10.16 5.08 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at 10.16 2.54 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at 10.16 -0.00 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at 10.16 -2.54 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 -3.81 0)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 -1.27 0)
(length 2.54)
(name "ID" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 1.27 0)
(length 2.54)
(name "D+" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 3.81 0)
(length 2.54)
(name "D-" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 6.35 0)
(length 2.54)
(name "VBUS" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
)
)
)

View File

@@ -0,0 +1,256 @@
(footprint "MINI-USB-SMD_UX-144S-ACP5"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 0 -6.85 0)
(layer "F.SilkS")
(uuid "e22138c6-3cb3-4e3c-ba92-a1710585cb5a")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "MINI-USB-SMD_UX-144S-ACP5"
(at 0 6.85 0)
(layer "F.Fab")
(uuid "858a2627-e471-4bfb-9d6c-fd1b80f75161")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "e47c3973-5f77-49a7-9761-9ae10304f142")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "26eeaf8e-5561-47b5-8bd4-deeb0ff6028a")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "df698dc1-8038-47dd-b09b-19d65b3be886")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -4.7 1.67)
(end -4.7 -1.47)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "03440d98-e390-4a02-b4b0-b92205207476")
)
(fp_line
(start -4.7 5.84)
(end -4.7 4.03)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "dba5fb97-b84e-4a41-85a6-f4fdb2339977")
)
(fp_line
(start -4.7 5.84)
(end 4.7 5.84)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "e9634972-07de-4463-b72c-20fdc7e82f51")
)
(fp_line
(start -2.08 -3.56)
(end -3.22 -3.56)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "dc5e02c5-dbda-406e-be24-d4fd6d4d39b2")
)
(fp_line
(start 3.22 -3.56)
(end 2.08 -3.56)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "e1775f8a-42ad-41b1-8e07-5553a0c1f786")
)
(fp_line
(start 4.7 1.67)
(end 4.7 -1.47)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "b21655b3-f4bd-4a22-9260-c998017c187d")
)
(fp_line
(start 4.7 5.84)
(end 4.7 4.03)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "b8716775-fa34-44c7-9a12-b008ee829381")
)
(fp_circle
(center -2.2 -0.1)
(end -2.01 -0.1)
(stroke
(width 0.38)
(type solid)
)
(fill none)
(layer "Cmts.User")
(uuid "de63054b-d560-446e-acd5-3d574530415b")
)
(fp_circle
(center 2.2 -0.1)
(end 2.39 -0.1)
(stroke
(width 0.38)
(type solid)
)
(fill none)
(layer "Cmts.User")
(uuid "81ac27ac-99bd-4e20-acf0-7bd310da8d42")
)
(fp_circle
(center -4.67 -3.46)
(end -4.64 -3.46)
(stroke
(width 0.06)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "fd695e98-9e3b-4a37-8976-4cf48758b0bb")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "ebb3e71d-8b4f-4e74-a06c-fa75e65fb5ea")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "" smd circle
(at -2.2 -0.1)
(size 1 1)
(layers "F.Paste")
(uuid "bd4630f6-b596-42aa-a67b-d92affdad121")
)
(pad "" smd circle
(at 2.2 -0.1)
(size 1 1)
(layers "F.Paste")
(uuid "5600899a-4eef-439b-b910-bd9b182b3af5")
)
(pad "1" smd rect
(at -1.6 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "335fc2d7-32d6-4034-8537-3e4ecdbb698e")
)
(pad "2" smd rect
(at -0.8 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "ad9d26c5-067e-4461-a7de-8849dc9b3d7a")
)
(pad "3" smd rect
(at 0 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "07c2e01e-14f9-40a4-a86a-be138db1f386")
)
(pad "4" smd rect
(at 0.8 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "d6db4c4a-622f-481f-9577-0021a75fe066")
)
(pad "5" smd rect
(at 1.6 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "775ff58f-f278-4d45-878f-eb1e67ee5746")
)
(pad "6" smd rect
(at -4.17 -2.65)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "b5e05f8a-9ee3-4e04-b21c-09af79a7cad4")
)
(pad "7" smd rect
(at -4.17 2.85)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "3fd2e9c6-b2e3-46a8-9255-7cd472742419")
)
(pad "8" smd rect
(at 4.17 2.85)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "1d175ab4-356e-4f51-b58d-b305fd7c0af9")
)
(pad "9" smd rect
(at 4.17 -2.65)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "875b3383-2651-4a80-aa85-613ada3fbbba")
)
(model "${KIPRJMOD}/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.step"
(offset
(xyz 0 -1.25 2)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View File

@@ -0,0 +1,13 @@
# For PCBs designed using KiCAD: http://www.kicad-pcb.org/
# Temporary files
*.000
*.bak
*.bck
*.kicad_pcb-bak
# Netlist files (exported from Eeschema)
*.net
# Autorouter files (exported from Pcbnew)
.dsn

View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 kubabu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,12 @@
# misc_footprints
Library of KiCad footprints with various parts
==============================================
Modules:
* TP4056 Li-Ion cell charger module with BMS: DW01 + 8205S for protection
* XL6009 DC-DC step-up (boost) voltage converter
* MT3608 DC-DC step-up (boost) voltage converter
* MP1584 DC-DC step-down (buck) voltage converter
Parts:
* 18650 one-cell casket
* Nokia N95 battery connector

View File

@@ -0,0 +1,43 @@
import os
import sys
dir_path = None
# Gerber files generated by Kicad are content- compatible with those
# made in EAGLE but naming convention is different, which can be problematic
# Renaming GERBERS to EAGLE convention eg. enables OSHPark to parse them
# Remember to megre PTH and NPTH drillings to one .drl file
EAGLE_counterparts = {
"-F.Cu.gbr": ".GTL", # Top Layer
"-B.Cu.gbr": ".GBL", # Bottom Layer
"-F.Mask.gbr": ".GTS", # Top Soldermask
"-B.Mask.gbr": ".GBS", # Bottom Soldermask
"-F.SilkS.gbr": ".GTO", # Top Silkscreen
"-B.SilkS.gbr": ".GBO", # Bottom Silkscreen
# "": ".G2L",
# "": ".G3L",
"-Edge.Cuts.gbr": ".GKO", # Board Outline
".drl": ".XLN" # Drills
}
def eaglize_file(filename):
for k_format in EAGLE_counterparts.keys():
if filename.endswith(k_format):
k = filename.rfind(k_format)
new_filename = filename[:k] + EAGLE_counterparts[k_format]
os.rename(filename, new_filename)
return new_filename
if __name__ == "__main__":
try:
dir_path = sys.argv[1]
except IndexError:
dir_path = '.'
for root, dirs, files in os.walk(dir_path):
for file_name in files:
eaglize_file(file_name)

View File

@@ -0,0 +1,37 @@
(module 16850_cell_casket (layer F.Cu) (tedit 55D20D10)
(fp_text reference REF** (at 38.7 -6.45) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value 16850_cell_casket (at 19.812 -11.684) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 49.5 -3) (end 44.5 0) (layer F.SilkS) (width 0.15))
(fp_line (start 49.5 -3) (end 55.5 0) (layer F.SilkS) (width 0.15))
(fp_line (start 76.5 -3.5) (end 76.5 3.5) (layer F.SilkS) (width 0.15))
(fp_line (start 76.5 3.5) (end 1.5 3.5) (layer F.SilkS) (width 0.15))
(fp_line (start 1.5 3.5) (end 1.5 -3.5) (layer F.SilkS) (width 0.15))
(fp_line (start 1.5 -3.5) (end 76.5 -3.5) (layer F.SilkS) (width 0.15))
(fp_line (start 55.5 0) (end 49.5 3) (layer F.SilkS) (width 0.15))
(fp_line (start 49.5 3) (end 44.5 0) (layer F.SilkS) (width 0.15))
(fp_text user BLM (at 49.9 0.1) (layer F.SilkS)
(effects (font (size 3 2) (thickness 0.15)))
)
(fp_text user 18650 (at 27.5 0) (layer F.SilkS)
(effects (font (size 2 2) (thickness 0.15)))
)
(fp_line (start 60.5 0) (end 62.5 0) (layer F.SilkS) (width 0.15))
(fp_circle (center 61.5 0) (end 63 -0.5) (layer F.SilkS) (width 0.15))
(fp_line (start 18 -1) (end 18 1) (layer F.SilkS) (width 0.15))
(fp_line (start 17 0) (end 19 0) (layer F.SilkS) (width 0.15))
(fp_circle (center 18 0) (end 19 -1) (layer F.SilkS) (width 0.15))
(fp_circle (center 67 0) (end 67 -2) (layer F.SilkS) (width 0.15))
(fp_circle (center 11 0) (end 11 -2) (layer F.SilkS) (width 0.15))
(fp_circle (center 67 0) (end 66.8 -1.5) (layer F.SilkS) (width 0.15))
(fp_circle (center 11 0) (end 10.8 -1.5) (layer F.SilkS) (width 0.15))
(fp_line (start 0 10.45) (end 0 -10.45) (layer F.SilkS) (width 0.15))
(fp_line (start 78 10.45) (end 0 10.45) (layer F.SilkS) (width 0.15))
(fp_line (start 78 -10.45) (end 78 10.45) (layer F.SilkS) (width 0.15))
(fp_line (start 0 -10.45) (end 78 -10.45) (layer F.SilkS) (width 0.15))
(pad 2 thru_hole rect (at 77.474 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS))
(pad 1 thru_hole rect (at 0.504 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS))
)

View File

@@ -0,0 +1,48 @@
(module 4056E_LiIon_loader (layer F.Cu) (tedit 569E29C6)
(fp_text reference M1 (at -1.266 1.13) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value 4056E_Loader_prot (at 0.66 -3.46) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.29 8.5) (end 12.7 8.5) (layer F.SilkS) (width 0.15))
(fp_line (start -13.3 -8.5) (end 12.7 -8.5) (layer F.SilkS) (width 0.15))
(fp_line (start -13.77 3.36) (end -13.77 -3.19) (layer F.SilkS) (width 0.15))
(fp_text user microUSB (at -9.438 0.086 180) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.756 3.388) (end -13.248 3.388) (layer F.SilkS) (width 0.15))
(fp_line (start -13.248 3.388) (end -12.994 2.88) (layer F.SilkS) (width 0.15))
(fp_line (start -12.994 2.88) (end -12.74 2.88) (layer F.SilkS) (width 0.15))
(fp_line (start -13.756 -3.216) (end -13.248 -3.216) (layer F.SilkS) (width 0.15))
(fp_line (start -13.248 -3.216) (end -12.994 -2.708) (layer F.SilkS) (width 0.15))
(fp_line (start -12.994 -2.708) (end -8.168 -2.708) (layer F.SilkS) (width 0.15))
(fp_line (start -8.168 -2.708) (end -8.168 2.88) (layer F.SilkS) (width 0.15))
(fp_line (start -8.168 2.88) (end -12.74 2.88) (layer F.SilkS) (width 0.15))
(fp_text user B- (at 10.674 1.29) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user B+ (at 10.674 -2.012) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user OUT- (at 7.19 6.556) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user OUT+ (at 6.87 -6.348) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user IN- (at -6.9 6.76) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user IN+ (at -7.43 -6.13) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.296 8.5) (end -13.296 -8.5) (layer F.SilkS) (width 0.15))
(fp_line (start 12.706 -8.5) (end 12.706 8.5) (layer F.SilkS) (width 0.15))
(pad 1 thru_hole rect (at -11 -6.5) (size 3 3) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 2 thru_hole rect (at -11 6.5) (size 3 3) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 6 thru_hole rect (at 11 7) (size 2.5 2.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 5 thru_hole rect (at 11 -7) (size 2.5 2.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 3 thru_hole rect (at 11 -3.75) (size 2.5 2.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 4 thru_hole rect (at 11 3.75) (size 2.5 2.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
)

View File

@@ -0,0 +1,48 @@
(module 4056E_LiIon_loader_SMT (layer F.Cu) (tedit 569E2953)
(fp_text reference M1 (at -1.266 1.13) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value 4056E_Loader_prot (at 0.66 -3.46) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.29 8.5) (end 12.7 8.5) (layer F.SilkS) (width 0.15))
(fp_line (start -13.3 -8.5) (end 12.7 -8.5) (layer F.SilkS) (width 0.15))
(fp_line (start -13.87 3.26) (end -13.87 -3.29) (layer F.SilkS) (width 0.15))
(fp_text user microUSB (at -9.538 -0.014 180) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.856 3.288) (end -13.348 3.288) (layer F.SilkS) (width 0.15))
(fp_line (start -13.348 3.288) (end -13.094 2.78) (layer F.SilkS) (width 0.15))
(fp_line (start -13.094 2.78) (end -12.84 2.78) (layer F.SilkS) (width 0.15))
(fp_line (start -13.856 -3.316) (end -13.348 -3.316) (layer F.SilkS) (width 0.15))
(fp_line (start -13.348 -3.316) (end -13.094 -2.808) (layer F.SilkS) (width 0.15))
(fp_line (start -13.094 -2.808) (end -8.268 -2.808) (layer F.SilkS) (width 0.15))
(fp_line (start -8.268 -2.808) (end -8.268 2.78) (layer F.SilkS) (width 0.15))
(fp_line (start -8.268 2.78) (end -12.84 2.78) (layer F.SilkS) (width 0.15))
(fp_text user B- (at 10.674 1.29) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user B+ (at 10.674 -2.012) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user OUT- (at 7.19 6.556) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user OUT+ (at 6.87 -6.348) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user IN- (at -6.9 6.76) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user IN+ (at -7.43 -6.13) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.296 8.5) (end -13.296 -8.5) (layer F.SilkS) (width 0.15))
(fp_line (start 12.706 -8.5) (end 12.706 8.5) (layer F.SilkS) (width 0.15))
(pad 1 smd rect (at -11 -6.75) (size 3 3) (layers F.Cu F.Paste F.Mask))
(pad 2 smd rect (at -11 6.75) (size 3 3) (layers F.Cu F.Paste F.Mask))
(pad 6 smd rect (at 11 7) (size 3 2.5) (layers F.Cu F.Paste F.Mask))
(pad 5 smd rect (at 11 -7) (size 3 2.5) (layers F.Cu F.Paste F.Mask))
(pad 3 smd rect (at 11 -3.75) (size 3 2.5) (layers F.Cu F.Paste F.Mask))
(pad 4 smd rect (at 11 3.75) (size 3 2.5) (layers F.Cu F.Paste F.Mask))
)

View File

@@ -0,0 +1,48 @@
(module 4056E_LiIon_loader_prot (layer F.Cu) (tedit 55D73003)
(fp_text reference M1 (at -1.266 1.13) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value 4056E_Loader_prot (at 0.66 -3.46) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.29 8.27) (end 12.7 8.27) (layer F.SilkS) (width 0.15))
(fp_line (start -13.3 -8.88) (end 12.7 -8.87) (layer F.SilkS) (width 0.15))
(fp_line (start -13.87 2.96) (end -13.87 -3.59) (layer F.SilkS) (width 0.15))
(fp_text user microUSB (at -9.538 -0.314 180) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.856 2.988) (end -13.348 2.988) (layer F.SilkS) (width 0.15))
(fp_line (start -13.348 2.988) (end -13.094 2.48) (layer F.SilkS) (width 0.15))
(fp_line (start -13.094 2.48) (end -12.84 2.48) (layer F.SilkS) (width 0.15))
(fp_line (start -13.856 -3.616) (end -13.348 -3.616) (layer F.SilkS) (width 0.15))
(fp_line (start -13.348 -3.616) (end -13.094 -3.108) (layer F.SilkS) (width 0.15))
(fp_line (start -13.094 -3.108) (end -8.268 -3.108) (layer F.SilkS) (width 0.15))
(fp_line (start -8.268 -3.108) (end -8.268 2.48) (layer F.SilkS) (width 0.15))
(fp_line (start -8.268 2.48) (end -12.84 2.48) (layer F.SilkS) (width 0.15))
(fp_text user B- (at 10.674 1.29) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user B+ (at 10.674 -2.012) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user OUT- (at 7.19 6.556) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user OUT+ (at 6.87 -6.348) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user IN- (at -6.9 6.76) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user IN+ (at -7.43 -6.13) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -13.296 8.275) (end -13.296 -8.87) (layer F.SilkS) (width 0.15))
(fp_line (start 12.706 -8.87) (end 12.706 8.275) (layer F.SilkS) (width 0.15))
(pad 1 thru_hole rect (at -10.76 -6.51) (size 2.1 2.1) (drill 1) (layers *.Cu *.Mask F.SilkS))
(pad 2 thru_hole rect (at -10.76 6.37) (size 2.1 2.1) (drill 1) (layers *.Cu *.Mask F.SilkS))
(pad 6 thru_hole rect (at 10.7 6.37) (size 2.1 2.1) (drill 1.2) (layers *.Cu *.Mask F.SilkS))
(pad 5 thru_hole rect (at 10.7 -6.33) (size 2.1 2.1) (drill 1.2) (layers *.Cu *.Mask F.SilkS))
(pad 3 thru_hole rect (at 10.7 -3.79) (size 2.1 2.1) (drill 1.2) (layers *.Cu *.Mask F.SilkS))
(pad 4 thru_hole rect (at 10.7 3.83) (size 2.1 2.1) (drill 0.762) (layers *.Cu *.Mask F.SilkS))
)

View File

@@ -0,0 +1,51 @@
(module BatteryHolder_Keystone_1042_1x18650 (layer F.Cu) (tedit 5F8201AB)
(descr "Battery holder for 18650 cylindrical cells http://www.keyelco.com/product.cfm/product_id/918")
(tags "18650 Keystone 1042 Li-ion")
(attr smd)
(fp_text reference REF** (at 0 -11.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value BatteryHolder_Keystone_1042_1x18650 (at 0 11.3) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -42.5 -4.75) (end -42.5 -7.25) (layer F.SilkS) (width 0.12))
(fp_line (start -43.75 -6) (end -41.25 -6) (layer F.SilkS) (width 0.12))
(fp_line (start -39.03 3.68) (end -43.5 3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start -43.5 3.68) (end -43.5 -3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start -43.5 -3.68) (end -39.03 -3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start 43.5 -3.68) (end 39.03 -3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start 39.03 3.68) (end 43.5 3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start -39.03 -10.83) (end -39.03 -3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start -39.03 10.83) (end -39.03 3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start 39.03 -10.83) (end 39.03 -3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start -39.03 -10.83) (end 39.03 -10.83) (layer F.CrtYd) (width 0.05))
(fp_line (start -39.03 10.83) (end 39.03 10.83) (layer F.CrtYd) (width 0.05))
(fp_line (start 38.53 -10.33) (end 38.53 10.33) (layer F.Fab) (width 0.1))
(fp_line (start -33.3675 -10.33) (end 38.53 -10.33) (layer F.Fab) (width 0.1))
(fp_line (start 43.75 -6) (end 41.25 -6) (layer F.SilkS) (width 0.12))
(fp_line (start -38.53 -5.1675) (end -38.53 10.33) (layer F.Fab) (width 0.1))
(fp_line (start -38.53 10.33) (end 38.53 10.33) (layer F.Fab) (width 0.1))
(fp_line (start 38.64 -3.44) (end 38.64 -10.42) (layer F.SilkS) (width 0.12))
(fp_line (start 38.64 -10.44) (end -38.64 -10.44) (layer F.SilkS) (width 0.12))
(fp_line (start -38.64 -10.44) (end -38.64 -3.44) (layer F.SilkS) (width 0.12))
(fp_line (start 38.64 3.44) (end 38.64 10.44) (layer F.SilkS) (width 0.12))
(fp_line (start 38.64 10.44) (end -38.64 10.44) (layer F.SilkS) (width 0.12))
(fp_line (start -38.64 10.44) (end -38.64 3.44) (layer F.SilkS) (width 0.12))
(fp_text user %R (at 0 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 39.03 10.83) (end 39.03 3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start 43.5 3.68) (end 43.5 -3.68) (layer F.CrtYd) (width 0.05))
(fp_line (start -38.64 -3.44) (end -43 -3.44) (layer F.SilkS) (width 0.12))
(fp_line (start -33.3675 -10.33) (end -38.53 -5.1675) (layer F.Fab) (width 0.1))
(pad "" np_thru_hole circle (at -35.93 -8) (size 2.39 2.39) (drill 2.39) (layers *.Cu *.Mask))
(pad "" np_thru_hole circle (at -27.6 8) (size 3.45 3.45) (drill 3.45) (layers *.Cu *.Mask))
(pad "" np_thru_hole circle (at 27.6 -8) (size 3.45 3.45) (drill 3.45) (layers *.Cu *.Mask))
(pad 2 thru_hole rect (at 39.33 0) (size 7.34 6.35) (drill 2) (layers *.Cu *.Mask))
(pad 1 thru_hole rect (at -39.33 0) (size 7.34 6.35) (drill 2) (layers *.Cu *.Mask))
(model ${KISYS3DMOD}/Battery.3dshapes/BatteryHolder_Keystone_1042_1x18650.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)

View File

@@ -0,0 +1,89 @@
(module MP1584_buck_module (layer F.Cu) (tedit 55D1F7A1)
(fp_text reference REF** (at 5.08 0.762) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value MP1584_buck_module (at 0.635 9.144) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 3.302 4.318) (end 1.016 6.096) (layer F.SilkS) (width 0.15))
(fp_line (start -6.096 4.318) (end 3.302 4.318) (layer F.SilkS) (width 0.15))
(fp_line (start 3.302 4.318) (end 1.016 2.54) (layer F.SilkS) (width 0.15))
(fp_line (start -1.524 -1.778) (end -1.016 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -1.016 -1.778) (end -1.016 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -1.016 2.286) (end -1.524 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -1.524 2.286) (end -1.524 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -1.524 2.794) (end -1.778 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -1.778 2.794) (end -1.778 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -1.778 2.286) (end -2.794 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -2.794 2.286) (end -2.794 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -2.794 2.794) (end -3.048 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -3.048 2.794) (end -3.048 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -3.048 2.286) (end -4.064 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -4.064 2.286) (end -4.064 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -4.064 2.794) (end -4.318 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -4.318 2.794) (end -4.318 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -4.318 2.286) (end -5.334 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -5.334 2.286) (end -5.334 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -5.334 2.794) (end -5.588 2.794) (layer F.SilkS) (width 0.15))
(fp_line (start -5.588 2.794) (end -5.588 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -5.588 2.286) (end -6.096 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -6.096 2.286) (end -6.096 2.032) (layer F.SilkS) (width 0.15))
(fp_line (start -2.794 -1.778) (end -1.778 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -4.064 -1.778) (end -3.048 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -5.334 -1.778) (end -4.318 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -1.778 -1.778) (end -1.778 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -1.778 -2.286) (end -1.524 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -3.048 -1.778) (end -3.048 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -3.048 -2.286) (end -2.794 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -4.318 -1.778) (end -4.318 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -4.318 -2.286) (end -4.064 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -6.096 2.032) (end -6.096 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -6.096 -1.778) (end -5.842 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -5.842 -1.778) (end -5.588 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -5.588 -1.778) (end -5.588 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -5.588 -2.286) (end -5.334 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -1.524 -1.778) (end -1.524 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -2.794 -2.286) (end -2.794 -1.778) (layer F.SilkS) (width 0.15))
(fp_line (start -4.064 -1.778) (end -4.064 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -5.334 -1.778) (end -5.334 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start 10.033 0.508) (end 8.509 0.508) (layer F.SilkS) (width 0.15))
(fp_line (start 8.509 0.508) (end 9.271 0.508) (layer F.SilkS) (width 0.15))
(fp_line (start 9.271 0.508) (end 9.271 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start 9.271 -2.286) (end 9.271 -0.508) (layer F.SilkS) (width 0.15))
(fp_line (start 9.271 -0.508) (end 8.509 -0.508) (layer F.SilkS) (width 0.15))
(fp_line (start 8.509 -0.508) (end 10.033 -0.508) (layer F.SilkS) (width 0.15))
(fp_line (start -2.159 -7.62) (end -2.159 -5.334) (layer F.SilkS) (width 0.15))
(fp_line (start -4.191 -7.62) (end -4.191 -5.334) (layer F.SilkS) (width 0.15))
(fp_line (start -4.191 -5.334) (end -2.159 -6.604) (layer F.SilkS) (width 0.15))
(fp_line (start -2.159 -6.604) (end -4.191 -7.62) (layer F.SilkS) (width 0.15))
(fp_line (start 6.223 -6.604) (end 1.397 -6.604) (layer F.SilkS) (width 0.15))
(fp_line (start 1.397 -6.604) (end 1.397 -0.508) (layer F.SilkS) (width 0.15))
(fp_line (start 1.397 -0.508) (end 6.985 -0.508) (layer F.SilkS) (width 0.15))
(fp_line (start 6.985 -0.508) (end 6.985 -6.604) (layer F.SilkS) (width 0.15))
(fp_line (start 6.985 -6.604) (end 6.223 -6.604) (layer F.SilkS) (width 0.15))
(fp_line (start 6.223 -7.62) (end 7.239 -7.62) (layer F.SilkS) (width 0.15))
(fp_circle (center 6.731 -7.62) (end 7.239 -7.874) (layer F.SilkS) (width 0.15))
(fp_line (start 6.731 7.112) (end 6.731 8.128) (layer F.SilkS) (width 0.15))
(fp_line (start 6.223 7.62) (end 7.239 7.62) (layer F.SilkS) (width 0.15))
(fp_circle (center 6.731 7.62) (end 7.239 7.874) (layer F.SilkS) (width 0.15))
(fp_line (start 7.493 8.382) (end 7.493 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start 7.493 2.286) (end 11.049 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start 11.049 -2.286) (end 7.493 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start 7.493 -2.286) (end 7.493 -8.382) (layer F.SilkS) (width 0.15))
(fp_line (start -11.049 2.286) (end -7.493 2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -7.493 2.286) (end -7.493 8.382) (layer F.SilkS) (width 0.15))
(fp_line (start -7.493 -8.382) (end -7.493 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -7.493 -2.286) (end -11.049 -2.286) (layer F.SilkS) (width 0.15))
(fp_line (start -11.049 -8.382) (end 11.049 -8.382) (layer F.SilkS) (width 0.15))
(fp_line (start 11.049 -8.382) (end 11.049 8.382) (layer F.SilkS) (width 0.15))
(fp_line (start 11.049 8.382) (end -11.049 8.382) (layer F.SilkS) (width 0.15))
(fp_line (start -11.049 8.382) (end -11.049 -8.382) (layer F.SilkS) (width 0.15))
(pad 2 thru_hole circle (at -9.271 -6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
(pad 1 thru_hole rect (at -9.271 6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
(pad 3 thru_hole circle (at 9.271 -6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
(pad 4 thru_hole rect (at 9.271 6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
(pad 3 thru_hole rect (at 9.271 -4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
(pad 2 thru_hole rect (at -9.271 -4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
(pad 1 thru_hole circle (at -9.271 4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
(pad 4 thru_hole circle (at 9.271 4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS))
)

View File

@@ -0,0 +1,36 @@
(module MT3608_module (layer F.Cu) (tedit 569D6CFB)
(fp_text reference M2 (at 0.25 6 180) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value DC_DC_boost_module (at 0 -1 180) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VOUT- (at -16 6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VIN+ (at 14 -6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VIN- (at 14 6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VOUT+ (at -16 -6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -8 -7) (end -8 -4) (layer F.SilkS) (width 0.15))
(fp_line (start -4.5 -7) (end -4.5 -4) (layer F.SilkS) (width 0.15))
(fp_line (start -4.5 -4) (end -8 -5.5) (layer F.SilkS) (width 0.15))
(fp_line (start -8 -5.5) (end -4.5 -7) (layer F.SilkS) (width 0.15))
(fp_arc (start -17 -6) (end -19.5 -6) (angle 90) (layer F.SilkS) (width 0.15))
(fp_arc (start 14 -6) (end 14 -8.5) (angle 90) (layer F.SilkS) (width 0.15))
(fp_arc (start 14 6) (end 16.5 6) (angle 90) (layer F.SilkS) (width 0.15))
(fp_arc (start -17 6) (end -17 8.5) (angle 90) (layer F.SilkS) (width 0.15))
(fp_line (start -17 8.5) (end 14 8.5) (layer F.SilkS) (width 0.15))
(fp_line (start 14 -8.5) (end -17 -8.5) (layer F.SilkS) (width 0.15))
(fp_line (start 16.5 6) (end 16.5 -6) (layer F.SilkS) (width 0.15))
(fp_line (start -19.5 -6) (end -19.5 6) (layer F.SilkS) (width 0.15))
(pad 1 thru_hole rect (at 14 -3.2 180) (size 5 3.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 2 thru_hole rect (at 14 3.25 180) (size 5 3.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 3 thru_hole rect (at -17 3.25 180) (size 5 3.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 4 thru_hole rect (at -17 -3.25 180) (size 5 3.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
)

View File

@@ -0,0 +1,39 @@
(module MT3608_module_SMT (layer F.Cu) (tedit 569D6C5F)
(fp_text reference M2 (at 0.25 6 180) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value DC_DC_boost_module (at 0 -1 180) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VOUT- (at -16 6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VIN+ (at 14 -6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VIN- (at 14 6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user VOUT+ (at -16 -6.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -8 -7) (end -8 -4) (layer F.SilkS) (width 0.15))
(fp_line (start -4.5 -7) (end -4.5 -4) (layer F.SilkS) (width 0.15))
(fp_line (start -4.5 -4) (end -8 -5.5) (layer F.SilkS) (width 0.15))
(fp_line (start -8 -5.5) (end -4.5 -7) (layer F.SilkS) (width 0.15))
(fp_arc (start -17 -6) (end -19.5 -6) (angle 90) (layer F.SilkS) (width 0.15))
(fp_arc (start 14 -6) (end 14 -8.5) (angle 90) (layer F.SilkS) (width 0.15))
(fp_arc (start 14 6) (end 16.5 6) (angle 90) (layer F.SilkS) (width 0.15))
(fp_arc (start -17 6) (end -17 8.5) (angle 90) (layer F.SilkS) (width 0.15))
(fp_line (start -17 8.5) (end 14 8.5) (layer F.SilkS) (width 0.15))
(fp_line (start 14 -8.5) (end -17 -8.5) (layer F.SilkS) (width 0.15))
(fp_line (start 16.5 6) (end 16.5 -6) (layer F.SilkS) (width 0.15))
(fp_line (start -19.5 -6) (end -19.5 6) (layer F.SilkS) (width 0.15))
(pad "" thru_hole circle (at -7.75 5) (size 2.1 2.1) (drill 2) (layers *.Cu *.Mask F.SilkS))
(pad "" thru_hole circle (at -5.5 2.5) (size 2.1 2.1) (drill 2) (layers *.Cu *.Mask F.SilkS))
(pad "" thru_hole circle (at -10.5 2.5) (size 2.1 2.1) (drill 2) (layers *.Cu *.Mask F.SilkS))
(pad 1 smd rect (at 14 -3.2 180) (size 5 3.5) (layers F.Cu F.Paste F.Mask))
(pad 2 smd rect (at 14 3.25 180) (size 5 3.5) (layers F.Cu F.Paste F.Mask))
(pad 3 smd rect (at -17 3.25 180) (size 5 3.5) (layers F.Cu F.Paste F.Mask))
(pad 4 smd rect (at -17 -3.25 180) (size 5 3.5) (layers F.Cu F.Paste F.Mask))
)

View File

@@ -0,0 +1,14 @@
(module N95_battery_connector (layer F.Cu) (tedit 569FD4EC)
(fp_text reference CON** (at -0.5 6) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value N95_battery_connector (at 0.5 -6) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 2.5 -4.5) (end -3 -4.5) (layer F.SilkS) (width 0.15))
(fp_line (start -3 -4.5) (end -3 4.5) (layer F.SilkS) (width 0.15))
(fp_line (start -3 4.5) (end 2.5 4.5) (layer F.SilkS) (width 0.15))
(pad 2 smd rect (at 0 0) (size 5.5 1.5) (layers F.Cu F.Paste F.Mask))
(pad 3 smd rect (at 0 -3.5) (size 5.5 1.5) (layers F.Cu F.Paste F.Mask))
(pad 1 smd rect (at 0 3.5) (size 5.5 1.5) (layers F.Cu F.Paste F.Mask))
)

View File

@@ -0,0 +1,21 @@
(module SOT-23-6 (layer F.Cu) (tedit 5FBEB024)
(descr "")
(fp_text reference REF** (at 0.0762369 -0.0794385 900) (layer F.SilkS)
(effects (font (size 0.600290551181 0.600290551181) (thickness 0.015)))
)
(fp_text value SOT-23-6 (at 0 0) (layer F.Fab)
(effects (font (size 0.787401574803 0.787401574803) (thickness 0.015)))
)
(fp_line (start 0.7 -1.5) (end 0.7 1.5) (layer F.SilkS) (width 0.1524))
(fp_line (start 0.7 1.5) (end -0.7 1.5) (layer F.SilkS) (width 0.1524))
(fp_line (start -0.7 1.5) (end -0.7 -1.5) (layer F.SilkS) (width 0.1524))
(fp_line (start -0.7 -1.5) (end 0.7 -1.5) (layer F.SilkS) (width 0.1524))
(fp_circle (center -1.2 -1.7) (end -0.9764 -1.7) (layer F.SilkS) (width 0.1524))
(pad 2 smd rect (at -1.35 0.0) (size 1.0 0.55) (layers F.Cu F.Mask F.Paste))
(pad 1 smd rect (at -1.35 -0.95) (size 1.0 0.55) (layers F.Cu F.Mask F.Paste))
(pad 3 smd rect (at -1.35 0.95) (size 1.0 0.55) (layers F.Cu F.Mask F.Paste))
(pad 4 smd rect (at 1.35 0.95) (size 1.0 0.55) (layers F.Cu F.Mask F.Paste))
(pad 6 smd rect (at 1.35 -0.95) (size 1.0 0.55) (layers F.Cu F.Mask F.Paste))
(pad 5 smd rect (at 1.35 0.0) (size 1.0 0.55) (layers F.Cu F.Mask F.Paste))
)

View File

@@ -0,0 +1,30 @@
(module SOT95P280X135-6N (layer F.Cu) (tedit 5FAC25EE)
(descr "<b>SOT2-23-6</b><br>")
(fp_text reference REF** (at 0.0 0.0 0) (layer F.SilkS)
(effects (font (size 1.0 1.0) (thickness 0.015)))
)
(fp_text value SOT95P280X135-6N (at 0.0 0.0 0) (layer F.Fab)
(effects (font (size 1.0 1.0) (thickness 0.015)))
)
(fp_line (start -2.125 -1.835) (end 2.125 -1.835) (layer F.Fab) (width 0.05))
(fp_line (start 2.125 -1.835) (end 2.125 1.835) (layer F.Fab) (width 0.05))
(fp_line (start 2.125 1.835) (end -2.125 1.835) (layer F.Fab) (width 0.05))
(fp_line (start -2.125 1.835) (end -2.125 -1.835) (layer F.Fab) (width 0.05))
(fp_line (start -0.8 -1.46) (end 0.8 -1.46) (layer F.Fab) (width 0.1))
(fp_line (start 0.8 -1.46) (end 0.8 1.46) (layer F.Fab) (width 0.1))
(fp_line (start 0.8 1.46) (end -0.8 1.46) (layer F.Fab) (width 0.1))
(fp_line (start -0.8 1.46) (end -0.8 -1.46) (layer F.Fab) (width 0.1))
(fp_line (start -0.8 -0.51) (end 0.15 -1.46) (layer F.Fab) (width 0.1))
(fp_line (start -0.275 -1.46) (end 0.275 -1.46) (layer F.SilkS) (width 0.2))
(fp_line (start 0.275 -1.46) (end 0.275 1.46) (layer F.SilkS) (width 0.2))
(fp_line (start 0.275 1.46) (end -0.275 1.46) (layer F.SilkS) (width 0.2))
(fp_line (start -0.275 1.46) (end -0.275 -1.46) (layer F.SilkS) (width 0.2))
(fp_line (start -1.875 -1.6) (end -0.625 -1.6) (layer F.SilkS) (width 0.2))
(pad 1 smd rect (at -1.25 -0.95) (size 1.25 0.6) (layers F.Cu F.Mask F.Paste))
(pad 2 smd rect (at -1.25 0.0) (size 1.25 0.6) (layers F.Cu F.Mask F.Paste))
(pad 3 smd rect (at -1.25 0.95) (size 1.25 0.6) (layers F.Cu F.Mask F.Paste))
(pad 4 smd rect (at 1.25 0.95) (size 1.25 0.6) (layers F.Cu F.Mask F.Paste))
(pad 5 smd rect (at 1.25 0.0) (size 1.25 0.6) (layers F.Cu F.Mask F.Paste))
(pad 6 smd rect (at 1.25 -0.95) (size 1.25 0.6) (layers F.Cu F.Mask F.Paste))
)

View File

@@ -0,0 +1,55 @@
(module XL6009_module (layer F.Cu) (tedit 56419D18)
(fp_text reference M2 (at -38.375 -16.125) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value DC_DC_boost_module (at -22.9 -7.075) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_circle (center -6.604 -2.54) (end -5.842 -0.508) (layer F.SilkS) (width 0.15))
(fp_circle (center -6.604 -2.54) (end -6.604 -1.016) (layer F.SilkS) (width 0.15))
(fp_circle (center -36.576 -18.542) (end -37.084 -20.574) (layer F.SilkS) (width 0.15))
(fp_circle (center -36.576 -18.542) (end -36.576 -20.066) (layer F.SilkS) (width 0.15))
(fp_line (start -11.176 -19.05) (end -11.176 -14.986) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -19.05) (end -15.24 -14.986) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -14.986) (end -11.176 -17.018) (layer F.SilkS) (width 0.15))
(fp_line (start -11.176 -17.018) (end -15.24 -19.05) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -17.526) (end -29.972 -18.542) (layer F.SilkS) (width 0.15))
(fp_circle (center -30.48 -18.034) (end -29.972 -18.542) (layer F.SilkS) (width 0.15))
(fp_line (start -31.496 -19.558) (end -31.496 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -31.496 -16.002) (end -30.988 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -16.002) (end -30.988 -16.51) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -16.51) (end -22.86 -16.51) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -16.51) (end -22.86 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -16.002) (end -22.352 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -22.352 -16.002) (end -22.352 -19.558) (layer F.SilkS) (width 0.15))
(fp_line (start -22.352 -19.558) (end -31.496 -19.558) (layer F.SilkS) (width 0.15))
(fp_line (start -41.148 -7.874) (end -35.052 -7.874) (layer F.SilkS) (width 0.15))
(fp_line (start -35.052 -7.874) (end -35.052 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -35.052 -12.446) (end -36.576 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -36.576 -13.97) (end -39.624 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -39.624 -13.97) (end -41.148 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -41.148 -12.446) (end -41.148 -7.874) (layer F.SilkS) (width 0.15))
(fp_line (start -0.508 -12.446) (end -0.508 -6.858) (layer F.SilkS) (width 0.15))
(fp_line (start -0.508 -6.858) (end -7.62 -6.858) (layer F.SilkS) (width 0.15))
(fp_line (start -7.62 -6.858) (end -7.62 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -7.62 -12.446) (end -5.588 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -5.588 -13.97) (end -2.54 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -2.54 -13.97) (end -0.508 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -0.762) (end -33.02 -0.762) (layer F.SilkS) (width 0.15))
(fp_line (start -33.02 -0.762) (end -34.036 -0.762) (layer F.SilkS) (width 0.15))
(fp_line (start -34.036 -0.762) (end -34.036 -11.938) (layer F.SilkS) (width 0.15))
(fp_line (start -34.036 -11.938) (end -22.86 -11.938) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -11.938) (end -22.86 -10.414) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -10.922) (end -22.86 -0.762) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -0.762) (end -30.988 -0.762) (layer F.SilkS) (width 0.15))
(fp_circle (center -38.1 -10.922) (end -35.56 -12.446) (layer F.SilkS) (width 0.15))
(fp_circle (center -4.064 -10.414) (end -1.016 -11.938) (layer F.SilkS) (width 0.15))
(fp_line (start 0 0) (end -43.18 0) (layer F.SilkS) (width 0.15))
(fp_line (start -43.18 0) (end -43.18 -21.082) (layer F.SilkS) (width 0.15))
(fp_line (start 0 0) (end 0 -21.082) (layer F.SilkS) (width 0.15))
(fp_line (start -43.18 -21.082) (end 0 -21.082) (layer F.SilkS) (width 0.15))
(pad 1 thru_hole rect (at -41.3258 -19.1516) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS))
(pad 2 thru_hole rect (at -41.3258 -1.9812) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS))
(pad 3 thru_hole rect (at -1.8542 -1.9812) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS))
(pad 4 thru_hole rect (at -1.8542 -19.1262) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS))
)

View File

@@ -0,0 +1,58 @@
(module XL6009_module_SMT (layer F.Cu) (tedit 569E2A66)
(fp_text reference M2 (at -38.375 -16.125) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value DC_DC_boost_module (at -22.9 -7.075) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_circle (center -6.604 -2.54) (end -5.842 -0.508) (layer F.SilkS) (width 0.15))
(fp_circle (center -6.604 -2.54) (end -6.604 -1.016) (layer F.SilkS) (width 0.15))
(fp_circle (center -36.576 -18.542) (end -37.084 -20.574) (layer F.SilkS) (width 0.15))
(fp_circle (center -36.576 -18.542) (end -36.576 -20.066) (layer F.SilkS) (width 0.15))
(fp_line (start -11.176 -19.05) (end -11.176 -14.986) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -19.05) (end -15.24 -14.986) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 -14.986) (end -11.176 -17.018) (layer F.SilkS) (width 0.15))
(fp_line (start -11.176 -17.018) (end -15.24 -19.05) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -17.526) (end -29.972 -18.542) (layer F.SilkS) (width 0.15))
(fp_circle (center -30.48 -18.034) (end -29.972 -18.542) (layer F.SilkS) (width 0.15))
(fp_line (start -31.496 -19.558) (end -31.496 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -31.496 -16.002) (end -30.988 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -16.002) (end -30.988 -16.51) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -16.51) (end -22.86 -16.51) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -16.51) (end -22.86 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -16.002) (end -22.352 -16.002) (layer F.SilkS) (width 0.15))
(fp_line (start -22.352 -16.002) (end -22.352 -19.558) (layer F.SilkS) (width 0.15))
(fp_line (start -22.352 -19.558) (end -31.496 -19.558) (layer F.SilkS) (width 0.15))
(fp_line (start -41.148 -7.874) (end -35.052 -7.874) (layer F.SilkS) (width 0.15))
(fp_line (start -35.052 -7.874) (end -35.052 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -35.052 -12.446) (end -36.576 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -36.576 -13.97) (end -39.624 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -39.624 -13.97) (end -41.148 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -41.148 -12.446) (end -41.148 -7.874) (layer F.SilkS) (width 0.15))
(fp_line (start -0.508 -12.446) (end -0.508 -6.858) (layer F.SilkS) (width 0.15))
(fp_line (start -0.508 -6.858) (end -7.62 -6.858) (layer F.SilkS) (width 0.15))
(fp_line (start -7.62 -6.858) (end -7.62 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -7.62 -12.446) (end -5.588 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -5.588 -13.97) (end -2.54 -13.97) (layer F.SilkS) (width 0.15))
(fp_line (start -2.54 -13.97) (end -0.508 -12.446) (layer F.SilkS) (width 0.15))
(fp_line (start -30.988 -0.762) (end -33.02 -0.762) (layer F.SilkS) (width 0.15))
(fp_line (start -33.02 -0.762) (end -34.036 -0.762) (layer F.SilkS) (width 0.15))
(fp_line (start -34.036 -0.762) (end -34.036 -11.938) (layer F.SilkS) (width 0.15))
(fp_line (start -34.036 -11.938) (end -22.86 -11.938) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -11.938) (end -22.86 -10.414) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -10.922) (end -22.86 -0.762) (layer F.SilkS) (width 0.15))
(fp_line (start -22.86 -0.762) (end -30.988 -0.762) (layer F.SilkS) (width 0.15))
(fp_circle (center -38.1 -10.922) (end -35.56 -12.446) (layer F.SilkS) (width 0.15))
(fp_circle (center -4.064 -10.414) (end -1.016 -11.938) (layer F.SilkS) (width 0.15))
(fp_line (start 0 0) (end -43.18 0) (layer F.SilkS) (width 0.15))
(fp_line (start -43.18 0) (end -43.18 -21.082) (layer F.SilkS) (width 0.15))
(fp_line (start 0 0) (end 0 -21.082) (layer F.SilkS) (width 0.15))
(fp_line (start -43.18 -21.082) (end 0 -21.082) (layer F.SilkS) (width 0.15))
(pad "" thru_hole circle (at -25.2 -18) (size 1.5 1.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad "" thru_hole circle (at -27.8 -18) (size 1.5 1.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
(pad 1 smd rect (at -41.3258 -19.1516) (size 3.8 4) (layers F.Cu F.Paste F.Mask))
(pad 2 smd rect (at -41.3258 -1.9812) (size 3.8 4) (layers F.Cu F.Paste F.Mask))
(pad 3 smd rect (at -1.8542 -1.9812) (size 3.8 4) (layers F.Cu F.Paste F.Mask))
(pad 4 smd rect (at -1.8542 -19.1262) (size 3.8 4) (layers F.Cu F.Paste F.Mask))
(pad "" thru_hole circle (at -30.3 -18) (size 1.5 1.5) (drill 1.25) (layers *.Cu *.Mask F.SilkS))
)

View File

@@ -0,0 +1,94 @@
(module 21-0041B_8_MXM (layer F.Cu)
(fp_text reference REF** (at 0 0) (layer F.SilkS)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text value 21-0041B_8_MXM (at 0 0) (layer F.SilkS)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "Copyright 2016 Accelerated Designs. All rights reserved." (at 0 0) (layer Cmts.User)
(effects (font (size .127 .127) (thickness .002)))
)
(fp_text user "*" (at -2.97815 -3.5814) (layer F.SilkS)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "*" (at -1.6129 -2.4257) (layer F.Fab)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "0.05in/1.27mm" (at -5.77215 -1.27) (layer Dwgs.User)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "0.021in/0.533mm" (at 5.77215 -1.905) (layer Dwgs.User)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "0.214in/5.448mm" (at 0 -4.9149) (layer Dwgs.User)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "0.058in/1.46mm" (at -2.72415 4.9149) (layer Dwgs.User)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "*" (at -2.97815 -3.5814) (layer F.SilkS)
(effects (font (size 1 1) (thickness .15)))
)
(fp_text user "*" (at -1.6129 -2.4257) (layer F.Fab)
(effects (font (size 1 1) (thickness .15)))
)
(fp_line (start -1.9939 -1.6637) (end -1.9939 -2.1463) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 -2.1463) (end -3.0988 -2.1463) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 -2.1463) (end -3.0988 -1.6637) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 -1.6637) (end -1.9939 -1.6637) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 -.3937) (end -1.9939 -.8763) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 -.8763) (end -3.0988 -.8763) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 -.8763) (end -3.0988 -.3937) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 -.3937) (end -1.9939 -.3937) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 .8763) (end -1.9939 .3937) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 .3937) (end -3.0988 .3937) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 .3937) (end -3.0988 .8763) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 .8763) (end -1.9939 .8763) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 2.1463) (end -1.9939 1.6637) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 1.6637) (end -3.0988 1.6637) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 1.6637) (end -3.0988 2.1463) (layer F.Fab) (width .1524))
(fp_line (start -3.0988 2.1463) (end -1.9939 2.1463) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 1.6637) (end 1.9939 2.1463) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 2.1463) (end 3.0988 2.1463) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 2.1463) (end 3.0988 1.6637) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 1.6637) (end 1.9939 1.6637) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 .3937) (end 1.9939 .8763) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 .8763) (end 3.0988 .8763) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 .8763) (end 3.0988 .3937) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 .3937) (end 1.9939 .3937) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 -.8763) (end 1.9939 -.3937) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 -.3937) (end 3.0988 -.3937) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 -.3937) (end 3.0988 -.8763) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 -.8763) (end 1.9939 -.8763) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 -2.1463) (end 1.9939 -1.6637) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 -1.6637) (end 3.0988 -1.6637) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 -1.6637) (end 3.0988 -2.1463) (layer F.Fab) (width .1524))
(fp_line (start 3.0988 -2.1463) (end 1.9939 -2.1463) (layer F.Fab) (width .1524))
(fp_line (start -2.1209 2.6289) (end 2.1209 2.6289) (layer F.SilkS) (width .1524))
(fp_line (start 2.1209 -2.6289) (end -2.1209 -2.6289) (layer F.SilkS) (width .1524))
(fp_line (start -1.9939 2.5019) (end 1.9939 2.5019) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 2.5019) (end 1.9939 -2.5019) (layer F.Fab) (width .1524))
(fp_line (start 1.9939 -2.5019) (end -1.9939 -2.5019) (layer F.Fab) (width .1524))
(fp_line (start -1.9939 -2.5019) (end -1.9939 2.5019) (layer F.Fab) (width .1524))
(fp_line (start -3.7084 2.4257) (end -3.7084 -2.4257) (layer F.CrtYd) (width .1524))
(fp_line (start -3.7084 -2.4257) (end -2.2479 -2.4257) (layer F.CrtYd) (width .1524))
(fp_line (start -2.2479 -2.4257) (end -2.2479 -2.7559) (layer F.CrtYd) (width .1524))
(fp_line (start -2.2479 -2.7559) (end 2.2479 -2.7559) (layer F.CrtYd) (width .1524))
(fp_line (start 2.2479 -2.7559) (end 2.2479 -2.4257) (layer F.CrtYd) (width .1524))
(fp_line (start 2.2479 -2.4257) (end 3.7084 -2.4257) (layer F.CrtYd) (width .1524))
(fp_line (start 3.7084 -2.4257) (end 3.7084 2.4257) (layer F.CrtYd) (width .1524))
(fp_line (start 3.7084 2.4257) (end 2.2479 2.4257) (layer F.CrtYd) (width .1524))
(fp_line (start 2.2479 2.4257) (end 2.2479 2.7559) (layer F.CrtYd) (width .1524))
(fp_line (start 2.2479 2.7559) (end -2.2479 2.7559) (layer F.CrtYd) (width .1524))
(fp_line (start -2.2479 2.7559) (end -2.2479 2.4257) (layer F.CrtYd) (width .1524))
(fp_line (start -2.2479 2.4257) (end -3.7084 2.4257) (layer F.CrtYd) (width .1524))
(fp_arc (start 0 -2.5019) (end .3048 -2.5019) (angle 180)(layer F.Fab) (width .1524))
(pad 1 smd rect (at -2.72415 -1.905) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
(pad 2 smd rect (at -2.72415 -.635) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
(pad 3 smd rect (at -2.72415 .635) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
(pad 4 smd rect (at -2.72415 1.905) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
(pad 5 smd rect (at 2.72415 1.905) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
(pad 6 smd rect (at 2.72415 .635) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
(pad 7 smd rect (at 2.72415 -.635) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
(pad 8 smd rect (at 2.72415 -1.905) (size 1.4605 .5334) (layers F.Cu F.Paste F.Mask))
)

View File

@@ -0,0 +1,6 @@
(sym_lib_table
(version 7)
(lib (name "easyeda2kicad")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/easyeda2kicad.kicad_sym")(options "")(descr ""))
(lib (name "BQ34Z100PWR-G1")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/BQ34Z100PWR-G1.kicad_sym")(options "")(descr ""))
(lib (name "ESP32-DEVKITC-32D")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/ESP32/ESP32-DEVKITC-32D.kicad_sym")(options "")(descr ""))
)

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"board": {
"active_layer": 36,
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": false,
"hidden_netclasses": [],
@@ -68,7 +68,7 @@
39,
40
],
"visible_layers": "ffc7055_fffffff8",
"visible_layers": "ffc35ba_ffffffff",
"zone_display_mode": 1
},
"git": {

View File

@@ -58,32 +58,14 @@
"width": 0.0
}
],
"drc_exclusions": [
"footprint_symbol_mismatch|177050000|59025000|a624af3d-bffa-4ff7-9554-e16d3c677f69|00000000-0000-0000-0000-000000000000",
"footprint_symbol_mismatch|237580000|53970000|c9d8d35b-26b7-4992-9d25-be9130d57b1a|00000000-0000-0000-0000-000000000000",
"footprint_symbol_mismatch|256580000|49370000|b33af7ef-63da-4a51-8d8a-183cadd974de|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|09cad967-1882-4dd3-8900-445282e228e5|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|20ab85c0-b3f3-4826-a86d-065fee01e11f|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|3da9717d-9800-42f9-97d1-56d23bf085aa|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|444aab2b-3a9b-444e-b60c-b5b5ff830942|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|6b067fd3-d374-4937-8779-958994d9163b|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|9839c562-7672-4ea8-a74d-bea83ae26677|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|9ce2df19-edf4-40d2-8e85-8c33008b8df0|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|a8ab716a-cd1e-4842-ad8e-3d6d1db9770b|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|aaf09ae3-4ace-49d7-a050-44cb4c93d63b|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|af55e8a2-ba8d-462e-807f-99ca5906f801|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|c36efd78-869f-40e7-86fc-97e5ed683fec|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|d668fda0-e4be-4e1f-95b8-8cd59a67cb21|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|d99401c6-2b75-46f7-8616-cdd7755709ee|00000000-0000-0000-0000-000000000000",
"net_conflict|177050000|59025000|f1fd5816-e8bd-4ba6-9d53-54b58d25e2dc|00000000-0000-0000-0000-000000000000"
],
"drc_exclusions": [],
"meta": {
"filename": "board_design_settings.json",
"version": 2
},
"rule_severities": {
"annular_width": "ignore",
"clearance": "error",
"clearance": "warning",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
@@ -98,6 +80,7 @@
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
@@ -463,8 +446,8 @@
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"pin_to_pin": "ignore",
"power_pin_not_driven": "ignore",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
@@ -1069,6 +1052,7 @@
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
@@ -1238,13 +1222,19 @@
"label": "Description",
"name": "Description",
"show": false
},
{
"group_by": false,
"label": "LCSC Part",
"name": "LCSC Part",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"name": "",
"sort_asc": true,
"sort_field": "LCSC_PART_NUMBER"
"sort_field": "Value"
},
"connection_grid_size": 50.0,
"drawing": {
@@ -1280,7 +1270,7 @@
"meta": {
"version": 0
},
"model_mode": 0,
"model_mode": 4,
"workbook_filename": ""
},
"page_layout_descr_file": "",

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -5,4 +5,5 @@
(lib (name "kicad-stuff")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff")(options "")(descr ""))
(lib (name "board")(type "KiCad")(uri "${KIPRJMOD}/")(options "")(descr ""))
(lib (name "esp32c6")(type "KiCad")(uri "${KIPRJMOD}/esp32c6")(options "")(descr ""))
(lib (name "easyeda2kicad")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/easyeda2kicad.pretty")(options "")(descr ""))
)

View File

@@ -0,0 +1,337 @@
(footprint "AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "Connector XT30 Vertical PCB Male, https://www.tme.eu/en/Document/4acc913878197f8c2e30d4b8cdc47230/XT30UPB%20SPEC.pdf")
(tags "RC Connector XT30")
(property "Reference" "REF**"
(at 2.5 -4 0)
(layer "F.SilkS")
(uuid "f7510d54-dcb1-4c3b-b842-cd250a98370c")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "AMASS_XT30UPB+DATA-M_1x02_P5.0mm_Vertical"
(at 2.5 4 0)
(layer "F.Fab")
(uuid "c5a8a60c-4ea1-4401-a30c-34d36be61c07")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "8fb27306-c085-4316-b554-4ba9be794054")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "74b71861-05d2-4229-8e81-25952aaaef7e")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "a1d16ecc-7e64-48c4-b772-a9255380960d")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_line
(start -2.71 -1.41)
(end -2.71 1.41)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "e96c6ad2-9ca6-4df1-b35b-76e090d7ff4e")
)
(fp_line
(start -2.71 -1.41)
(end -1.01 -2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "0784d204-0a48-4a2b-8085-50e1ff7a1493")
)
(fp_line
(start -2.71 1.41)
(end -1.01 2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "db750970-e424-4a8e-a882-20a90baabffc")
)
(fp_line
(start -1.01 -2.71)
(end 7.71 -2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "9f23420e-db87-438c-a708-676a0616966e")
)
(fp_line
(start -1.01 2.71)
(end 7.71 2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "2ba574e3-9de5-4d7d-9777-e19e6fa702e7")
)
(fp_line
(start 7.71 -2.71)
(end 7.71 2.71)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "2018cc6b-6115-4763-8b7c-54b60affbda7")
)
(fp_rect
(start -6.3 -2.71)
(end 7.71 2.7)
(stroke
(width 0.1)
(type default)
)
(fill none)
(layer "F.SilkS")
(uuid "11aac399-c862-4b67-9828-087abeea5b1b")
)
(fp_line
(start -3.1 -1.8)
(end -3.1 1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "06ae69d8-1372-4524-8b1a-27a2f062f1c5")
)
(fp_line
(start -3.1 -1.8)
(end -1.4 -3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "ae869a92-c688-4f2b-82ca-0578106a035a")
)
(fp_line
(start -3.1 1.8)
(end -1.4 3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "cac6d927-6ba1-4095-825b-f94ee0d7abe9")
)
(fp_line
(start -1.4 -3.1)
(end 8.1 -3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "fb4fa373-5492-4717-a9fe-7b69f4c53ba0")
)
(fp_line
(start -1.4 3.1)
(end 8.1 3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "70296c77-546d-44a2-b5d3-e6dc58cf713b")
)
(fp_line
(start 8.1 -3.1)
(end 8.1 3.1)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "64764a09-de32-4f35-b54a-17e44810370f")
)
(fp_line
(start -2.6 -1.3)
(end -2.6 1.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "8d7ee7cb-5dda-453f-aa9a-6420c87f1b8e")
)
(fp_line
(start -2.6 -1.3)
(end -0.9 -2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "2fa3ad90-36bb-4374-95ed-e44e50c7e385")
)
(fp_line
(start -2.6 1.3)
(end -0.9 2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "2e4f8556-ffc2-4791-91da-e68c3513337e")
)
(fp_line
(start -0.9 -2.6)
(end 7.6 -2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "cb9cd8af-1997-41db-b9fe-8982960ac6db")
)
(fp_line
(start -0.9 2.6)
(end 7.6 2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "ea8a6c02-e974-4677-a854-a0891c323245")
)
(fp_line
(start 7.6 -2.6)
(end 7.6 2.6)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "c66f305c-0d56-4591-bc02-23252ad20321")
)
(fp_text user "-"
(at -4 0 0)
(layer "F.SilkS")
(uuid "c119570a-6846-48dc-9422-0b5665ab2df6")
(effects
(font
(size 1.5 1.5)
(thickness 0.15)
)
)
)
(fp_text user "+"
(at 9 0 0)
(layer "F.SilkS")
(uuid "d6ab678c-47f7-47e0-869b-ef3b9dbd1ba9")
(effects
(font
(size 1.5 1.5)
(thickness 0.15)
)
)
)
(fp_text user "${REFERENCE}"
(at 2.5 0 0)
(layer "F.Fab")
(uuid "a70efd12-1491-4664-ae98-5b2b7f52a502")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" thru_hole rect
(at 0 0)
(size 3 3)
(drill 1.8)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "3a0f3b23-814b-4df9-a02c-3d9fed9e23c9")
)
(pad "2" thru_hole circle
(at 5 0)
(size 3 3)
(drill 1.8)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "d897d74a-a13b-47cf-9806-eb8a75fe8d08")
)
(pad "3" thru_hole circle
(at -3.9 -1)
(size 1.524 1.524)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "02a8c3fc-d75c-47a4-a907-f9191ff19e2c")
)
(pad "4" thru_hole circle
(at -3.9 1)
(size 1.524 1.524)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "2000b5b8-f7c9-40a8-9010-65c16d2aefce")
)
(model "${KICAD8_3DMODEL_DIR}/Connector_AMASS.3dshapes/AMASS_XT30UPB-M_1x02_P5.0mm_Vertical.wrl"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,111 @@
(kicad_symbol_lib
(version 20211014)
(generator https://github.com/uPesy/easyeda2kicad.py)
(symbol "UX-144S-ACP5"
(in_bom yes)
(on_board yes)
(property
"Reference"
"USB"
(id 0)
(at 0 11.43 0)
(effects (font (size 1.27 1.27) ) )
)
(property
"Value"
"UX-144S-ACP5"
(id 1)
(at 0 -8.89 0)
(effects (font (size 1.27 1.27) ) )
)
(property
"Footprint"
"easyeda2kicad:MINI-USB-SMD_UX-144S-ACP5"
(id 2)
(at 0 -11.43 0)
(effects (font (size 1.27 1.27) ) hide)
)
(property
"Datasheet"
"https://lcsc.com/product-detail/USB-Connectors_XUNPU-UX-144S-ACP5_C720611.html"
(id 3)
(at 0 -13.97 0)
(effects (font (size 1.27 1.27) ) hide)
)
(property
"LCSC Part"
"C720611"
(id 5)
(at 0 -16.51 0)
(effects (font (size 1.27 1.27) ) hide)
)
(symbol "UX-144S-ACP5_0_1"
(rectangle
(start -7.62 8.89)
(end 7.62 -6.35)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type background))
)
(circle
(center -6.35 7.62)
(radius 0.38)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(pin unspecified line
(at 10.16 5.08 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at 10.16 2.54 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at 10.16 -0.00 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at 10.16 -2.54 180)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 -3.81 0)
(length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 -1.27 0)
(length 2.54)
(name "ID" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 1.27 0)
(length 2.54)
(name "D+" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 3.81 0)
(length 2.54)
(name "D-" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin unspecified line
(at -10.16 6.35 0)
(length 2.54)
(name "VBUS" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
)
)
)

View File

@@ -0,0 +1,256 @@
(footprint "MINI-USB-SMD_UX-144S-ACP5"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 0 -6.85 0)
(layer "F.SilkS")
(uuid "e22138c6-3cb3-4e3c-ba92-a1710585cb5a")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "MINI-USB-SMD_UX-144S-ACP5"
(at 0 6.85 0)
(layer "F.Fab")
(uuid "858a2627-e471-4bfb-9d6c-fd1b80f75161")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "e47c3973-5f77-49a7-9761-9ae10304f142")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "26eeaf8e-5561-47b5-8bd4-deeb0ff6028a")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "df698dc1-8038-47dd-b09b-19d65b3be886")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -4.7 1.67)
(end -4.7 -1.47)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "03440d98-e390-4a02-b4b0-b92205207476")
)
(fp_line
(start -4.7 5.84)
(end -4.7 4.03)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "dba5fb97-b84e-4a41-85a6-f4fdb2339977")
)
(fp_line
(start -4.7 5.84)
(end 4.7 5.84)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "e9634972-07de-4463-b72c-20fdc7e82f51")
)
(fp_line
(start -2.08 -3.56)
(end -3.22 -3.56)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "dc5e02c5-dbda-406e-be24-d4fd6d4d39b2")
)
(fp_line
(start 3.22 -3.56)
(end 2.08 -3.56)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "e1775f8a-42ad-41b1-8e07-5553a0c1f786")
)
(fp_line
(start 4.7 1.67)
(end 4.7 -1.47)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "b21655b3-f4bd-4a22-9260-c998017c187d")
)
(fp_line
(start 4.7 5.84)
(end 4.7 4.03)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "b8716775-fa34-44c7-9a12-b008ee829381")
)
(fp_circle
(center -2.2 -0.1)
(end -2.01 -0.1)
(stroke
(width 0.38)
(type solid)
)
(fill none)
(layer "Cmts.User")
(uuid "de63054b-d560-446e-acd5-3d574530415b")
)
(fp_circle
(center 2.2 -0.1)
(end 2.39 -0.1)
(stroke
(width 0.38)
(type solid)
)
(fill none)
(layer "Cmts.User")
(uuid "81ac27ac-99bd-4e20-acf0-7bd310da8d42")
)
(fp_circle
(center -4.67 -3.46)
(end -4.64 -3.46)
(stroke
(width 0.06)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "fd695e98-9e3b-4a37-8976-4cf48758b0bb")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "ebb3e71d-8b4f-4e74-a06c-fa75e65fb5ea")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "" smd circle
(at -2.2 -0.1)
(size 1 1)
(layers "F.Paste")
(uuid "bd4630f6-b596-42aa-a67b-d92affdad121")
)
(pad "" smd circle
(at 2.2 -0.1)
(size 1 1)
(layers "F.Paste")
(uuid "5600899a-4eef-439b-b910-bd9b182b3af5")
)
(pad "1" smd rect
(at -1.6 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "335fc2d7-32d6-4034-8537-3e4ecdbb698e")
)
(pad "2" smd rect
(at -0.8 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "ad9d26c5-067e-4461-a7de-8849dc9b3d7a")
)
(pad "3" smd rect
(at 0 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "07c2e01e-14f9-40a4-a86a-be138db1f386")
)
(pad "4" smd rect
(at 0.8 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "d6db4c4a-622f-481f-9577-0021a75fe066")
)
(pad "5" smd rect
(at 1.6 -2.85)
(size 0.5 1.7)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "775ff58f-f278-4d45-878f-eb1e67ee5746")
)
(pad "6" smd rect
(at -4.17 -2.65)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "b5e05f8a-9ee3-4e04-b21c-09af79a7cad4")
)
(pad "7" smd rect
(at -4.17 2.85)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "3fd2e9c6-b2e3-46a8-9255-7cd472742419")
)
(pad "8" smd rect
(at 4.17 2.85)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "1d175ab4-356e-4f51-b58d-b305fd7c0af9")
)
(pad "9" smd rect
(at 4.17 -2.65)
(size 1.45 1.9)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "875b3383-2651-4a80-aa85-613ada3fbbba")
)
(model "${KIPRJMOD}/kicad-stuff/easyeda2kicad.3dshapes/MINI-USB-SMD_UX-144S-ACP5.step"
(offset
(xyz 0 -1.25 2)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

Binary file not shown.

1342
board/production/netlist.ipc Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -9,4 +9,5 @@
(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 ""))
(lib (name "ESP32-C6-WROOM-1-N8")(type "KiCad")(uri "${KIPRJMOD}/esp32c6/ESP32-C6-WROOM-1-N8.kicad_sym")(options "")(descr ""))
(lib (name "easyeda2kicad")(type "KiCad")(uri "${KIPRJMOD}/kicad-stuff/easyeda2kicad.kicad_sym")(options "")(descr ""))
)

View File

@@ -4,11 +4,14 @@ target = "riscv32imac-esp-espidf"
[target.riscv32imac-esp-espidf]
linker = "ldproxy"
# runner = "espflash flash --monitor --partition-table partitions.csv -b no-reset" # Select this runner for espflash v2.x.x
# runner = "espflash flash --monitor --baud 921600 --partition-table partitions.csv -b no-reset" # Select this runner for espflash v2.x.x
# runner = espflash erase-parts otadata
#runner = "espflash flash --monitor --baud 921600 --partition-table partitions.csv -b no-reset" # Select this runner in case of usb ttl
runner = "espflash flash --monitor --baud 921600 --partition-table partitions.csv" # Select this runner for espflash v2.x.x
#runner = "cargo runner"
#runner = "espflash flash --monitor --partition-table partitions.csv -b no-reset" # create upgrade image file for webupload
# runner = espflash erase-parts otadata //ensure flash is clean
runner = "cargo runner"
rustflags = [ "--cfg", "espidf_time64"] # Extending time_t for ESP IDF 5: https://github.com/esp-rs/rust/issues/110
[unstable]

View File

@@ -8,7 +8,7 @@ rust-version = "1.71"
[profile.dev]
# Explicitly disable LTO which the Xtensa codegen backend has issues
lto = false
lto = true
strip = false
debug = true
overflow-checks = true
@@ -37,7 +37,6 @@ 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"]
@@ -46,37 +45,51 @@ 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 }
serde = { version = "1.0.192", features = ["derive"] }
average = { version = "0.14.1" , features = ["std"] }
#esp32 = "0.28.0"
bit_field = "0.10.2"
#ESP stuff
embedded-svc = { version = "0.28.0", features = ["experimental"] }
esp-idf-hal = "0.44.1"
esp-idf-sys = { version = "0.35.0", features = ["binstart", "native"] }
esp-idf-svc = { version = "0.49.1", default-features = false }
embedded-hal = "1.0.0"
heapless = { version = "0.8", features = ["serde"] }
embedded-hal-bus = { version = "0.2.0", features = ["std"] }
#Hardware additional driver
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-svc = { version = "0.48.0", default-features = false }
esp_idf_build = "0.1.3"
bq34z100 = { version = "0.3.0", features = ["flashstream"] }
one-wire-bus = "0.1.1"
ds323x = "0.5.1"
#pure code dependencies
log = { version = "0.4", default-features = false }
once_cell = "1.19.0"
anyhow = { version = "1.0.75", features = ["std", "backtrace"] }
average = { version = "0.14.1" , features = ["std"] }
bit_field = "0.10.2"
strum = { version = "0.26.1", features = ["derive"] }
measurements = "0.11.0"
schemars = "0.8.16"
#json
serde = { version = "1.0.192", features = ["derive"] }
serde_json = "1.0.108"
#timezone
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"
eeprom24x = "0.7.2"
url = "2.5.3"
[patch.crates-io]
#esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal.git" }
esp-idf-hal = { git = "https://github.com/empirephoenix/esp-idf-hal.git" }
#esp-idf-hal = { git = "https://github.com/empirephoenix/esp-idf-hal.git" }
#esp-idf-sys = { git = "https://github.com/empirephoenix/esp-idf-sys.git" }
#esp-idf-sys = { git = "https://github.com/esp-rs/esp-idf-sys.git" }
#esp-idf-svc = { git = "https://github.com/esp-rs/esp-idf-svc.git" }
ds323x = { git = "https://github.com/empirephoenix/ds323x-rs.git" }
#bq34z100 = { path = "../../bq34z100_rust" }
[build-dependencies]
embuild = "0.31.3"
embuild = "0.32.0"
vergen = { version = "8.2.6", features = ["build", "git", "gitcl"] }

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,197 @@
;--------------------------------------------------------
;Verify Existing Firmware Version
;--------------------------------------------------------
W: AA 00 01 00
C: AA 00 01 00
W: AA 00 02 00
C: AA 00 02 00
;--------------------------------------------------------
;Unseal device
;--------------------------------------------------------
W: AA 00 14 04
W: AA 00 72 36
W: AA 00 FF FF
W: AA 00 FF FF
X: 1000
;--------------------------------------------------------
;Go To ROM Mode
;--------------------------------------------------------
W: AA 00 00 0F
X: 1000
;--------------------------------------------------------
;Data Block
;--------------------------------------------------------
W: 16 00 03 00 00
W: 16 64 03 00
X: 20
C: 16 66 00
W: 16 00 02 00 00 00 EA FF 33 FA FA 33 B5 FB 33 95 FE 33 AD FE 33 FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F 02 02 3F 58 CB 33 C3 A0 08 1F 00 00 00 00 00 FF AA 0E FB A7 0E FF A6 0E FF A1 0E FF A0 0E FE A3 0E 54 A2 0E DE FF 3A 67 FF 3A E2 FF 33 FF AF 0E
W: 16 64 3D 38
X: 2
C: 16 66 00
W: 16 00 02 01 00 00 01 4F 03 3F 11 0C D9 FF 30 E0 FF 35 2F 10 0C E0 FF 35 FF FF 23 E3 AF 04 E2 BF 04 D1 FF 36 E2 A0 04 E3 A1 04 00 C7 02 01 C6 02 E5 AF 04 E3 BF 01 E4 AF 04 E2 BF 01 FF AC 0E E1 1C 04 8A FF 31 E2 A0 04 E3 A1 04 02 AB 18 7F 2B 0E FF 1B 0E BF FF 32 FC FA 0E FB AF 0C 02 2B 18 FF 1B 0E 98 FF 36
W: 16 64 AE 2C
X: 2
C: 16 66 00
W: 16 00 05
W: 16 64 05 00
X: 170
C: 16 66 00
C: 16 04 0A 91 AF DC
W: 16 00 0C 00 00 00 83 DE
W: 16 64 6D 01
X: 400
C: 16 66 00
W: 16 00 0A 00 00 00 7F 71 20 5C 94 08 98 C0 FB 50 00 00 00 00 13 88 51 F6 C9 F4 14 52 09 21 32 6D 00 00 00 00 D0 7E
W: 16 64 D1 0A
X: 2
C: 16 66 00
W: 16 00 0A 01 00 00 17 DF 00 00 17 F3 00 00 3A 36 FD 91 00 25 30 01 00 EF 05 11 05 01 00 00 10 01 00 3C 00 50 3C 00
W: 16 64 43 06
X: 2
C: 16 66 00
W: 16 00 0A 02 00 00 64 3C 00 20 03 E8 00 00 04 10 68 FE D5 FB 95 00 02 00 14 03 E8 01 00 01 F4 00 1E 00 3C 0E 10 00
W: 16 64 05 08
X: 2
C: 16 66 00
W: 16 00 0A 03 00 00 0A 46 05 32 01 0F 01 F4 00 64 46 50 0A 0E D8 0E 99 01 90 00 64 19 00 01 00 14 00 01 00 14 03 23
W: 16 64 88 05
X: 2
C: 16 66 00
W: 16 00 0A 04 00 00 07 08 25 5A 32 0F 64 60 00 A0 0B B8 00 C8 28 01 F4 00 00 00 00 00 00 00 00 00 00 43 80 04 00 00
W: 16 64 B0 05
X: 2
C: 16 66 00
W: 16 00 0A 05 00 00 0F 00 2A 04 0A 7D 00 00 01 0A FE 76 E7 54 00 28 03 E8 02 01 2C F0 00 01 07 10 63 10 48 10 2D 10
W: 16 64 DF 06
X: 2
C: 16 66 00
W: 16 00 0A 06 00 00 15 0F FC 0F E6 0F D0 0F BC 0F A8 0F 96 0F 84 0F 74 0F 65 0F 56 0F 45 0F 30 0F 1C 0F 09 0E F9 0E
W: 16 64 05 09
X: 2
C: 16 66 00
W: 16 00 0A 07 00 00 EF 0E E6 0E DF 0E D8 0E D3 0E CF 0E CB 0E CA 0E C9 0E C7 0E C2 0E B8 0E AC 0E 9A 0E 85 0E 7B 0E
W: 16 64 04 0D
X: 2
C: 16 66 00
W: 16 00 0A 08 00 00 75 0E 56 0E 30 0D AB 0A 69 FF 2B FF 41 FF 56 FF 61 FF 67 FF 3B FF 16 FF 21 FF 21 FE EB FE B5 FE
W: 16 64 02 12
X: 2
C: 16 66 00
W: 16 00 0A 09 00 00 7F FE 5E FE 7F FE E8 00 02 00 9A 00 2E FF E2 FF CD FF B7 FF A1 FF 77 FF 36 FE DA FE 62 FC F3 FA
W: 16 64 EA 15
X: 2
C: 16 66 00
W: 16 00 0A 0A 00 00 B3 F8 ED F7 7C F7 3B F7 B2 F7 FC F8 32 F8 F7 F9 F0 F9 B0 F9 18 EC 9D 4D C0 FF 65 FF AC FF 98 FF
W: 16 64 E4 18
X: 2
C: 16 66 00
W: 16 00 0A 0B 00 00 75 FF BB FF 82 FF 93 FF BB FF D5 FF E4 FF CE FF AD 00 80 FF 73 00 00 FF 16 FE EC FE ED FE DC FE
W: 16 64 F5 17
X: 2
C: 16 66 00
W: 16 00 0A 0C 00 00 F3 FF 09 FE F7 FE AC FE 9E FE C6 FE DA FE DC FE 8E FF 75 00 00 00 00 01 C2 00 32 FF CE 02 26 64
W: 16 64 10 13
X: 2
C: 16 66 00
W: 16 00 0A 0D 00 00 7B 20 00 00 60 7E 00 00 00 00 64 00 19 00 64 28 63 5F 64 62 00 64 00 1E 00 B4 00 64 00 F0 00 FA
W: 16 64 A5 07
X: 2
C: 16 66 00
W: 16 00 0A 0E 00 00 11 10 10 68 41 D9 AF 37 00 00 00 01 00 14 00 00 0A F0 00 0A 05 00 32 01 C2 14 14 00 00 3C 00 4B
W: 16 64 73 05
X: 2
C: 16 66 00
W: 16 00 0A 0F 00 00 00 28 00 3C 3C 01 90 36 72 04 14 FF FF FF FF 01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10 04
W: 16 64 02 0E
X: 2
C: 16 66 00
W: 16 00 0A 10 00 00 01 2C 00 C8 00 00 00 00 00 A0 00 AF 00 00 0A 64 01 00 3C 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 09 03
X: 2
C: 16 66 00
W: 16 00 0A 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 1B 00
X: 2
C: 16 66 00
W: 16 00 0A 12 00 00 02 26 02 01 F4 02 58 02 02 26 0E 00 00 00 00 00 00 00 00 00 00 00 00 01 00 DC 84 E5 5F 00 00 0E
W: 16 64 80 04
X: 2
C: 16 66 00
W: 16 00 0A 13 00 00 10 00 00 00 01 00 00 03 84 64 03 E8 15 18 FE 70 10 68 10 68 10 04 0A 32 1E 00 0A 2D 37 01 01 01
W: 16 64 6E 05
X: 2
C: 16 66 00
W: 16 00 0A 14 00 00 0B 62 71 33 34 7A 31 30 30 2D 47 31 0B 54 65 78 61 73 20 49 6E 73 74 2E 04 4C 49 4F 4E 00 96 00
W: 16 64 DB 08
X: 2
C: 16 66 00
W: 16 00 0A 15 00 00 AF 00 4B 00 64 0A F0 02 0B 54 10 CC 02 10 68 64 01 03 05 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 9B 04
X: 2
C: 16 66 00
W: 16 00 0A 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF
W: 16 64 13 0D
X: 2
C: 16 66 00
W: 16 00 0A 17 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
W: 16 64 01 20
X: 2
C: 16 66 00
W: 16 00 0A 18 00 00 FF 55 00 69 00 64 00 71 00 8F 00 62 00 61 00 6C 00 59 00 56 00 55 00 57 00 5A 00 6E 02 87 05 DC
W: 16 64 FF 07
X: 2
C: 16 66 00
W: 16 00 0A 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 23 00
X: 2
C: 16 66 00
W: 16 00 0A 1A 00 00 FF FF 00 69 00 64 00 71 00 8F 00 62 00 61 00 6C 00 59 00 56 00 55 00 57 00 5A 00 6E 02 87 05 DC
W: 16 64 AB 08
X: 2
C: 16 66 00
W: 16 00 0A 1B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 25 00
X: 2
C: 16 66 00
W: 16 00 0A 1C 00 00 64 3C 00 20 03 E8 00 00 04 10 68 FE D5 FB 95 00 02 00 14 03 E8 01 00 01 F4 00 1E 00 3C 0E 10 00
W: 16 64 1F 08
X: 2
C: 16 66 00
W: 16 00 0A 1D 00 00 0A 46 05 32 01 0F 01 F4 00 64 46 50 0A 0E D8 0E 99 01 90 00 64 19 00 01 00 14 00 01 00 14 03 23
W: 16 64 A2 05
X: 2
C: 16 66 00
W: 16 00 0A 1E 00 00 FF FF FF FF 00 00 00 01 FF FF FF FD FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
W: 16 64 0B 1C
X: 2
C: 16 66 00
W: 16 00 0A 1F 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
W: 16 64 09 20
X: 2
C: 16 66 00
W: 16 00 08
W: 16 64 08 00
X: 2
C: 16 66 00
C: 16 04 5B 67
W: 16 00 05
W: 16 64 05 00
X: 170
C: 16 66 00
C: 16 04 0A 91 AF DC
W: 16 00 01 00 00 05 54 54 15
W: 16 64 C3 00
X: 20
C: 16 66 00
W: 16 00 05
W: 16 64 05 00
X: 170
C: 16 66 00
C: 16 04 5F E5 84 DC
;--------------------------------------------------------
;Execute Flash Code
;--------------------------------------------------------
W: 16 00 0F
W: 16 64 0F 00
X: 4000

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
# 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
CONFIG_ESP_MAIN_TASK_STACK_SIZE=50000
# 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).

View File

@@ -1,58 +1,77 @@
use std::{fmt, str::FromStr};
use std::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 struct NetworkConfig {
pub ap_ssid: heapless::String<32>,
pub ssid: Option<heapless::String<32>>,
pub password: Option<heapless::String<64>>,
pub mqtt_url: Option<heapless::String<128>>,
pub base_topic: Option<heapless::String<64>>,
}
impl Default for NetworkConfig {
fn default() -> Self {
Self {
ap_ssid: heapless::String::from_str("PlantCtrl Init").unwrap(),
ssid: None,
password: None,
mqtt_url: None,
base_topic: None,
}
}
}
pub tank_allow_pumping_if_sensor_error: bool,
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct NightLampConfig {
pub night_lamp_hour_start: u8,
pub night_lamp_hour_end: u8,
pub night_lamp_only_when_dark: bool,
}
impl Default for NightLampConfig {
fn default() -> Self {
Self {
night_lamp_hour_start: 19,
night_lamp_hour_end: 2,
night_lamp_only_when_dark: true,
}
}
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct TankConfig {
pub tank_sensor_enabled: bool,
pub tank_allow_pumping_if_sensor_error: 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 {
impl Default for TankConfig {
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_sensor_enabled: false,
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,
tank_useable_ml: 50000,
tank_warn_percent: 40,
tank_empty_percent: 5,
tank_full_percent: 95,
}
}
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
pub enum Mode {
OFF,
TargetMoisture,
TimerOnly,
TimerAndDeadzone,
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
pub struct PlantControllerConfig {
pub network: NetworkConfig,
pub tank: TankConfig,
pub night_lamp: NightLampConfig,
pub plants: [PlantConfig; PLANT_COUNT],
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
pub struct Plant {
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct PlantConfig {
pub mode: Mode,
pub target_moisture: u8,
pub pump_time_s: u16,
@@ -60,31 +79,27 @@ pub struct Plant {
pub pump_hour_start: u8,
pub pump_hour_end: u8,
pub sensor_b: bool,
pub sensor_p: bool,
pub max_consecutive_pump_count: u8,
}
impl Default for Plant {
impl Default for PlantConfig {
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,
target_moisture: 40,
pump_time_s: 30,
pump_cooldown_min: 60,
pump_hour_start: 9,
pump_hour_end: 20,
sensor_b: false,
sensor_p: false,
max_consecutive_pump_count: 10,
}
}
}
#[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)
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum Mode {
OFF,
TargetMoisture,
TimerOnly,
TimerAndDeadzone,
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2050
rust/src/webserver/bootstrap-grid.css vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,95 +0,0 @@
<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>

View File

@@ -1,37 +0,0 @@
<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

@@ -5,17 +5,21 @@ use std::{
sync::{atomic::AtomicBool, Arc},
};
use crate::{espota::OtaUpdate, BOARD_ACCESS};
use esp_idf_svc::io::BufRead;
use crate::{
espota::OtaUpdate, get_version, map_range_moisture, plant_hal::FileInfo, BOARD_ACCESS,
};
use anyhow::bail;
use chrono::DateTime;
use core::result::Result::Ok;
use embedded_svc::http::Method;
use esp_idf_svc::http::server::{Configuration, EspHttpServer};
use esp_idf_hal::delay::Delay;
use esp_idf_svc::http::server::{Configuration, EspHttpConnection, EspHttpServer, Request};
use heapless::String;
use serde::{Deserialize, Serialize};
use url::Url;
use crate::{
config::{Config, WifiConfig},
plant_hal::PlantCtrlBoardInteraction,
};
use crate::config::PlantControllerConfig;
#[derive(Serialize, Debug)]
struct SSIDList<'a> {
@@ -23,9 +27,25 @@ struct SSIDList<'a> {
}
#[derive(Serialize, Debug)]
struct VersionInfo<'a> {
git_hash: &'a str,
build_time: &'a str,
struct FileList {
file: Vec<FileInfo>,
}
#[derive(Serialize, Debug)]
struct LoadData<'a> {
rtc: &'a str,
native: &'a str,
}
#[derive(Serialize, Debug)]
struct Moistures {
moisture_a: Vec<u8>,
moisture_b: Vec<u8>,
}
#[derive(Deserialize, Debug)]
struct SetTime<'a> {
time: &'a str,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
@@ -33,260 +53,509 @@ 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
fn write_time(
request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut buf = [0_u8; 3072];
let read = request.read(&mut buf)?;
let actual_data = &buf[0..read];
println!("Raw data {}", from_utf8(actual_data)?);
let time: SetTime = serde_json::from_slice(actual_data)?;
let parsed = DateTime::parse_from_rfc3339(time.time).map_err(|err| anyhow::anyhow!(err))?;
let mut board = BOARD_ACCESS.lock().unwrap();
board.set_rtc_time(&parsed.to_utc())?;
anyhow::Ok(None)
}
pub fn httpd(reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
let mut server = shared();
fn get_live_moisture(
_request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut board = BOARD_ACCESS.lock().unwrap();
server
.fn_handler("/", Method::Get, move |request| {
let mut response = request.into_ok_response()?;
response.write(include_bytes!("config.html"))?;
anyhow::Ok(())
})
.unwrap();
let mut a: Vec<u8> = Vec::new();
let mut b: Vec<u8> = Vec::new();
for plant in 0..8 {
let a_hz = board.measure_moisture_hz(plant, crate::plant_hal::Sensor::A)?;
let b_hz = board.measure_moisture_hz(plant, crate::plant_hal::Sensor::B)?;
let a_pct = map_range_moisture(a_hz as f32);
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())?;
}
match a_pct {
Ok(result) => {
a.push(result);
}
anyhow::Ok(())
})
.unwrap();
Err(_) => {
a.push(200);
}
}
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 b_pct = map_range_moisture(b_hz as f32);
match b_pct {
Ok(result) => {
b.push(result);
}
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(());
Err(_) => {
b.push(200);
}
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
}
}
let data = Moistures {
moisture_a: a,
moisture_b: b,
};
let json = serde_json::to_string(&data)?;
anyhow::Ok(Some(json))
}
pub fn shared() -> Box<EspHttpServer<'static>> {
fn get_data(
_request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut board = BOARD_ACCESS.lock().unwrap();
let native = board
.time()
.and_then(|t| Ok(t.to_rfc3339()))
.unwrap_or("error".to_string());
let rtc = board
.get_rtc_time()
.and_then(|t| Ok(t.to_rfc3339()))
.unwrap_or("error".to_string());
let data = LoadData {
rtc: rtc.as_str(),
native: native.as_str(),
};
let json = serde_json::to_string(&data)?;
anyhow::Ok(Some(json))
}
fn get_config(
_request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut board = BOARD_ACCESS.lock().unwrap();
let json = match board.get_config() {
Ok(config) => serde_json::to_string(&config)?,
Err(_) => serde_json::to_string(&PlantControllerConfig::default())?,
};
anyhow::Ok(Some(json))
}
fn set_config(
request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut buf = [0_u8; 3072];
let read = request.read(&mut buf)?;
let actual_data = &buf[0..read];
println!("Raw data {}", from_utf8(actual_data).unwrap());
let config: PlantControllerConfig = serde_json::from_slice(actual_data)?;
let mut board = BOARD_ACCESS.lock().unwrap();
board.set_config(&config)?;
anyhow::Ok(Some("saved".to_owned()))
}
fn get_battery_state(
_request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut board = BOARD_ACCESS.lock().unwrap();
let battery_state = board.get_battery_state();
let battery_json = serde_json::to_string(&battery_state)?;
anyhow::Ok(Some(battery_json))
}
fn get_version_web(
_request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
anyhow::Ok(Some(serde_json::to_string(&get_version())?))
}
fn pump_test(
request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut buf = [0_u8; 3072];
let read = request.read(&mut buf)?;
let pump_test: TestPump = serde_json::from_slice(&buf[0..read])?;
let mut board = BOARD_ACCESS.lock().unwrap();
board.test_pump(pump_test.pump)?;
anyhow::Ok(None)
}
fn wifi_scan(
_request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut board = BOARD_ACCESS.lock().unwrap();
let scan_result = board.wifi_scan()?;
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);
anyhow::Ok(Some(ssid_json))
}
fn list_files(
request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let filename = query_param(request.uri(), "filename").unwrap_or_default();
let board = BOARD_ACCESS.lock().unwrap();
let result = board.list_files(&filename);
let file_list_json = serde_json::to_string(&result)?;
return anyhow::Ok(Some(file_list_json));
}
fn ota(
request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> {
let mut ota = OtaUpdate::begin()?;
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)?;
total_read += read;
println!("received {read} bytes ota {total_read}");
let to_write = &buffer[0..read];
ota.write(to_write)?;
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 mut finalizer = ota.finalize()?;
println!("changing boot partition");
finalizer.set_as_boot_partition()?;
finalizer.restart();
}
fn flash_bq(filename: &str, dryrun: bool) -> anyhow::Result<()> {
let mut board = BOARD_ACCESS.lock().unwrap();
let mut toggle = true;
let delay = Delay::new(1);
let file_handle = board.get_file_handle(filename, false)?;
let mut reader = std::io::BufRead::lines(std::io::BufReader::with_capacity(512, file_handle));
let mut line = 0;
loop {
board.general_fault(toggle);
toggle = !toggle;
delay.delay_us(2);
line += 1;
match reader.next() {
Some(next) => {
let input = next?;
println!("flashing bq34z100 dryrun:{dryrun} line {line} payload: {input}");
match board.flash_bq34_z100(&input, dryrun) {
Ok(_) => {
println!("ok")
}
Err(err) => {
bail!(
"Error flashing bq34z100 in dryrun: {dryrun} line: {line} error: {err}"
)
}
}
}
None => break,
}
}
println!("Finished flashing file {line} lines processed");
board.general_fault(false);
return anyhow::Ok(());
}
fn query_param(uri: &str, param_name: &str) -> Option<std::string::String> {
println!("{uri} get {param_name}");
let parsed = Url::parse(&format!("http://127.0.0.1/{uri}")).unwrap();
let value = parsed.query_pairs().filter(|it| it.0 == param_name).next();
match value {
Some(found) => {
return Some(found.1.into_owned());
}
None => return None,
}
}
pub fn httpd(_reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
let server_config = Configuration {
stack_size: 8192,
stack_size: 32768,
..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())?;
handle_error_to500(request, get_version_web)
})
.unwrap();
server
.fn_handler("/battery", Method::Get, |request| {
handle_error_to500(request, get_battery_state)
})
.unwrap();
server
.fn_handler("/time", Method::Get, |request| {
handle_error_to500(request, get_data)
})
.unwrap();
server
.fn_handler("/moisture", Method::Get, |request| {
handle_error_to500(request, get_live_moisture)
})
.unwrap();
server
.fn_handler("/time", Method::Post, |request| {
handle_error_to500(request, write_time)
})
.unwrap();
server
.fn_handler("/pumptest", Method::Post, |request| {
handle_error_to500(request, pump_test)
})
.unwrap();
server
.fn_handler("/boardtest", Method::Post, move |_| {
BOARD_ACCESS.lock().unwrap().test()
})
.unwrap();
server
.fn_handler("/wifiscan", Method::Post, move |request| {
handle_error_to500(request, wifi_scan)
})
.unwrap();
server
.fn_handler("/ota", Method::Post, |request| {
handle_error_to500(request, ota)
})
.unwrap();
server
.fn_handler("/ota", Method::Options, |request| {
cors_response(request, 200, "")
})
.unwrap();
server
.fn_handler("/get_config", Method::Get, move |request| {
handle_error_to500(request, get_config)
})
.unwrap();
server
.fn_handler("/set_config", Method::Post, move |request| {
handle_error_to500(request, set_config)
})
.unwrap();
server
.fn_handler("/files", Method::Get, move |request| {
handle_error_to500(request, list_files)
})
.unwrap();
server
.fn_handler("/file", Method::Get, move |request| {
let filename = query_param(request.uri(), "filename").unwrap();
let file_handle = BOARD_ACCESS
.lock()
.unwrap()
.get_file_handle(&filename, false);
match file_handle {
Ok(mut file_handle) => {
let headers = [("Access-Control-Allow-Origin", "*")];
let mut response = request.into_response(200, None, &headers)?;
const BUFFER_SIZE: usize = 512;
let mut buffer: [u8; BUFFER_SIZE] = [0; BUFFER_SIZE];
let mut total_read: usize = 0;
loop {
let read = std::io::Read::read(&mut file_handle, &mut buffer)?;
total_read += read;
println!(
"sending {read} bytes of {total_read} for file {}",
&filename
);
let to_write = &buffer[0..read];
response.write(to_write)?;
println!("wrote {read} bytes of {total_read} for file {filename}");
if read == 0 {
break;
}
}
drop(file_handle);
response.flush()?;
}
Err(err) => {
//todo set headers here for filename to be error
let error_text = err.to_string();
println!("error handling get file {}", error_text);
cors_response(request, 500, &error_text)?;
}
}
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/bundle.js", Method::Get, |request| {
.fn_handler("/file", Method::Post, move |mut request| {
let filename = query_param(request.uri(), "filename").unwrap();
let file_handle = BOARD_ACCESS
.lock()
.unwrap()
.get_file_handle(&filename, true);
match file_handle {
Ok(mut file_handle) => {
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)?;
total_read += read;
println!("sending {read} bytes of {total_read} for upload {filename}");
let to_write = &buffer[0..read];
std::io::Write::write(&mut file_handle, to_write)?;
println!("wrote {read} bytes of {total_read} for upload {filename}");
if read == 0 {
break;
}
}
cors_response(request, 200, &format!("saved {total_read} bytes"))?;
}
Err(err) => {
//todo set headers here for filename to be error
let error_text = err.to_string();
println!("error handling get file {}", error_text);
cors_response(request, 500, &error_text)?;
}
}
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/file", Method::Delete, move |request| {
let filename = query_param(request.uri(), "filename").unwrap();
let copy = filename.clone();
let board = BOARD_ACCESS.lock().unwrap();
match board.delete_file(&filename) {
Ok(_) => {
let info = format!("Deleted file {copy}");
cors_response(request, 200, &info)?;
}
Err(err) => {
let info = format!("Could not delete file {copy} {err:?}");
cors_response(request, 400, &info)?;
}
}
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/flashbattery", Method::Post, move |request| {
let filename = query_param(request.uri(),"filename").unwrap();
let dryrun = true;
match flash_bq(&filename, false) {
Ok(_) => {
if !dryrun {
match flash_bq(&filename, true) {
Ok(_) => {
cors_response(request, 200, "Sucessfully flashed bq34z100")?;
},
Err(err) => {
let info = format!("Could not flash bq34z100, could be bricked now! {filename} {err:?}");
cors_response(request, 500, &info)?;
},
}
} else {
cors_response(request, 200, "Sucessfully processed bq34z100")?;
}
},
Err(err) => {
let info = format!("Could not process firmware file for, bq34z100, refusing to flash! {filename} {err:?}");
cors_response(request, 500, &info)?;
},
};
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/", Method::Get, move |request| {
let mut response = request.into_ok_response()?;
response.write(include_bytes!("bundle.js"))?;
response.write(include_bytes!("index.html"))?;
anyhow::Ok(())
})
.unwrap();
server
.fn_handler("/favicon.ico", Method::Get, |request| {
let mut response = request.into_ok_response()?;
response.write(include_bytes!("favicon.ico"))?;
request
.into_ok_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()?;
.fn_handler("/bundle.js", Method::Get, |request| {
request
.into_ok_response()?
.write(include_bytes!("bundle.js"))?;
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)?;
.fn_handler("/bootstrap-grid.css", Method::Get, |request| {
let headers = [
("Access-Control-Allow-Origin", "*"),
("Access-Control-Allow-Headers", "*"),
("Content-Type", "text/css")
];
request.into_response(200, None, &headers)?.write(include_bytes!("bootstrap-grid.css"))?;
anyhow::Ok(())
})
.unwrap();
server
}
fn cors_response(
request: Request<&mut EspHttpConnection>,
status: u16,
body: &str,
) -> Result<(), anyhow::Error> {
let headers = [
("Access-Control-Allow-Origin", "*"),
("Access-Control-Allow-Headers", "*"),
];
let mut response = request.into_response(status, None, &headers)?;
response.write(body.as_bytes())?;
response.flush()?;
return anyhow::Ok(());
}
type AnyhowHandler =
fn(&mut Request<&mut EspHttpConnection>) -> Result<Option<std::string::String>, anyhow::Error>;
fn handle_error_to500(
mut request: Request<&mut EspHttpConnection>,
chain: AnyhowHandler,
) -> Result<(), anyhow::Error> {
let error = chain(&mut request);
match error {
Ok(answer) => match answer {
Some(json) => {
cors_response(request, 200, &json)?;
}
None => {
cors_response(request, 200, "")?;
}
},
Err(err) => {
let error_text = err.to_string();
println!("error handling process {}", error_text);
cors_response(request, 500, &error_text)?;
}
}
return anyhow::Ok(());
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,16 @@
{
"devDependencies": {
"html-webpack-harddisk-plugin": "^2.0.0",
"html-webpack-plugin": "^5.6.3",
"raw-loader": "^4.0.2",
"ts-loader": "^9.5.1",
"typescript": "^5.3.3",
"webpack": "^5.89.0",
"webpack-cli": "^5.1.4"
"webpack": "^5.97.1",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.1.0"
},
"dependencies": {
"copy-webpack-plugin": "^12.0.2",
"source-map-loader": "^4.0.1"
}
}

2050
rust/src_webpack/public/bootstrap-grid.css vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,79 @@
interface NetworkConfig {
ap_ssid: string,
ssid: string,
password: string,
mqtt_url: string,
base_topic: string
}
interface NightLampConfig {
night_lamp_hour_start: number,
night_lamp_hour_end: number,
night_lamp_only_when_dark: boolean,
}
interface TankConfig {
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,
}
interface PlantControllerConfig {
network: NetworkConfig,
tank: TankConfig,
night_lamp: NightLampConfig,
plants: PlantConfig[]
}
interface PlantConfig {
mode: string,
target_moisture: number,
pump_time_s: number,
pump_cooldown_min: number,
pump_hour_start: number,
pump_hour_end: number,
sensor_b: boolean,
max_consecutive_pump_count: number,
}
interface SSIDList {
ssids: [string]
}
interface TestPump {
pump: number
}
interface SetTime {
time: string
}
interface GetTime {
rtc: string,
native: string
}
interface Moistures {
moisture_a: [number],
moisture_b: [number],
}
interface VersionInfo {
git_hash: string,
build_time: string
}
interface BatteryState {
temperature: string
voltage_milli_volt: string,
current_milli_ampere: string,
cycle_count: string,
design_milli_ampere: string,
remaining_milli_ampere: string,
state_of_charge: string,
state_of_health: string
}

View File

@@ -0,0 +1,42 @@
<div class="row">
<div class="col-12" style="text-align: center; font-weight: bold;">
Battery:
</div>
<div style="display: block; right: 8px; position: absolute;">
<input id="battery_auto_refresh" type="checkbox">
</div>
</div>
<div class="row">
<span class="col-7">V:</span>
<div class="col-5" id="battery_voltage_milli_volt" style="text-wrap: nowrap"></div>
</div>
<div class="row">
<span class="col-7">mA:</span>
<div class="col-5" id="battery_current_milli_ampere" style="text-wrap: nowrap"></div>
</div>
<div class="row">
<span class="col-7">Cycles:</span>
<div class="col-5" id="battery_cycle_count" style="text-wrap: nowrap"></div>
</div>
<div class="row">
<span class="col-7">design mA:</span>
<div class="col-5" id="battery_design_milli_ampere" style="text-wrap: nowrap"></div>
</div>
<div class="row">
<span class="col-7">remaining mA:</span>
<div class="col-5" id="battery_remaining_milli_ampere" style="text-wrap: nowrap"></div>
</div>
<div class="row">
<span class="col-7">charge %:</span>
<div class="col-5" id="battery_state_of_charge" style="text-wrap: nowrap"></div>
</div>
<div class="row">
<span class="col-7">health %:</span>
<div class="col-5" id="battery_state_of_health" style="text-wrap: nowrap"></div>
</div>
<div class="row">
<span class="col-7">Temp °C:</span>
<div class="col-5" id="battery_temperature" style="text-wrap: nowrap"></div>
</div>

View File

@@ -0,0 +1,69 @@
import { Controller } from "./main";
export class BatteryView{
voltage_milli_volt: HTMLSpanElement;
current_milli_ampere: HTMLSpanElement;
cycle_count: HTMLSpanElement;
design_milli_ampere: HTMLSpanElement;
remaining_milli_ampere: HTMLSpanElement;
state_of_charge: HTMLSpanElement;
state_of_health: HTMLSpanElement;
temperature: HTMLSpanElement;
auto_refresh: HTMLInputElement;
timer: NodeJS.Timeout | undefined;
controller: Controller;
constructor (controller:Controller) {
(document.getElementById("batteryview") as HTMLElement).innerHTML = require("./batteryview.html")
this.voltage_milli_volt = document.getElementById("battery_voltage_milli_volt") as HTMLSpanElement;
this.current_milli_ampere = document.getElementById("battery_current_milli_ampere") as HTMLSpanElement;
this.cycle_count = document.getElementById("battery_cycle_count") as HTMLSpanElement;
this.design_milli_ampere = document.getElementById("battery_design_milli_ampere") as HTMLSpanElement;
this.remaining_milli_ampere = document.getElementById("battery_remaining_milli_ampere") as HTMLSpanElement;
this.state_of_charge = document.getElementById("battery_state_of_charge") as HTMLSpanElement;
this.state_of_health = document.getElementById("battery_state_of_health") as HTMLSpanElement;
this.temperature = document.getElementById("battery_temperature") as HTMLSpanElement;
this.auto_refresh = document.getElementById("battery_auto_refresh") as HTMLInputElement;
this.controller = controller
this.auto_refresh.onchange = () => {
if(this.timer){
clearTimeout(this.timer)
}
if(this.auto_refresh.checked){
controller.updateBatteryData()
}
}
}
update(batterystate: BatteryState|null){
if (batterystate == null) {
this.voltage_milli_volt.innerText = "N/A"
this.current_milli_ampere.innerText = "N/A"
this.cycle_count.innerText = "N/A"
this.design_milli_ampere.innerText = "N/A"
this.remaining_milli_ampere.innerText = "N/A"
this.state_of_charge.innerText = "N/A"
this.state_of_health.innerText = "N/A"
this.temperature.innerText = "N/A"
} else {
this.voltage_milli_volt.innerText = String(+batterystate.voltage_milli_volt/1000)
this.current_milli_ampere.innerText = batterystate.current_milli_ampere
this.cycle_count.innerText = batterystate.cycle_count
this.design_milli_ampere.innerText = batterystate.design_milli_ampere
this.remaining_milli_ampere.innerText = batterystate.remaining_milli_ampere
this.state_of_charge.innerText = batterystate.state_of_charge
this.state_of_health.innerText = batterystate.state_of_health
this.temperature.innerText = String(+batterystate.temperature / 100)
}
if(this.auto_refresh.checked){
this.timer = setTimeout(this.controller.updateBatteryData, 1000);
} else {
if(this.timer){
clearTimeout(this.timer)
}
}
}
}

View File

@@ -1,347 +0,0 @@
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()
}

View File

@@ -0,0 +1,127 @@
<link rel="stylesheet" href="bootstrap-grid.css">
<style>
.progressPane {
display: block;
position: fixed;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
top: 0;
left: 0;
background-color: lightgrey;
opacity: 0.8;
}
.progressPaneCenter {
display: inline-block;
margin-top: 48%;
position: absolute;
height: 4%;
width: 50%;
margin-left: 25%;
margin-right: 25%;
}
.progress {
height: 1.5em;
width: 100%;
background-color: #c9c9c9;
position: relative;
}
.progress:after {
content: attr(data-label);
font-size: 0.8em;
position: absolute;
text-align: center;
top: 5px;
left: 0;
right: 0;
}
.progress .value {
background-color: #7cc4ff;
display: inline-block;
height: 100%;
}
.progress .valueIndeterminate {
background-color: #7cc4ff;
display: inline-block;
height: 100%;
animation: indeterminateAnimation 1s infinite linear;
transform-origin: 0% 50%;
}
@keyframes indeterminateAnimation {
0% {
transform: translateX(0%) scaleX(0.5);
}
50% {
transform: translateX(50%) scaleX(0.5);
}
100% {
transform: translateX(0%) scaleX(0.5);
}
}
</style>
<div class="container-xl">
<div class="row">
<div id="firmwareview" class="container col-12 col-lg-4"
style="border-width: 1px; border-style: solid; padding: 8px;">
</div>
<div id="timeview" class="container col-12 col-lg-4" style="border-style: solid; border-width: 1px; padding: 8px;">
</div>
<div id="batteryview" class="container col-12 col-lg-4"
style="border-style: solid; border-width: 1px; padding: 8px;">
</div>
</div>
<div class="row">
<div id="network_view" class="container col-12 col-sm-6 col-lg-4"
style="border-style: solid; border-width: 1px; padding: 8px;">
</div>
<div id="lightview" class="container col-12 col-sm-6 col-lg-4"
style="border-style: solid; border-width: 1px; padding: 16px;">
</div>
<div id="tankview" class="container col-12 col-lg-4" style="border-style: solid; border-width: 1px; padding: 16px;">
</div>
</div>
<h2>config</h2>
<h3>Plants:</h3>
<button id="measure_moisture">Measure Moisture</button>
<div id="plants" class="row"></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>
</div>
<div id="progressPane" class="progressPane">
<div class="progressPaneCenter">
<div id="progressPaneBar" class="progress" data-label="50% Complete">
<span id="progressPaneSpan" class="value" style="width:100%;"></span>
</div>
</div>
</div>

View File

@@ -0,0 +1,261 @@
declare var PUBLIC_URL: string;
console.log("Url is " + PUBLIC_URL);
document.body.innerHTML = require('./main.html') as string;
import { TimeView } from "./timeview";
import { PlantView, PlantViews } from "./plant";
import { NetworkConfigView } from "./network";
import { NightLampView } from "./nightlightview";
import { TankConfigView } from "./tankview";
import { SubmitView } from "./submitView";
import { ProgressView } from "./progress";
import { OTAView } from "./ota";
import { BatteryView } from "./batteryview";
export class Controller {
updateRTCData() {
fetch(PUBLIC_URL + "/time")
.then(response => response.json())
.then(json => json as GetTime)
.then(time => {
controller.timeView.update(time.native, time.rtc)
})
.catch(error => {
controller.timeView.update("n/a","n/a")
console.log(error);
});
}
updateBatteryData() {
fetch(PUBLIC_URL + "/battery")
.then(response => response.json())
.then(json => json as BatteryState)
.then(battery => {
controller.batteryView.update(battery)
})
.catch(error => {
controller.batteryView.update(null)
console.log(error);
});
}
uploadNewFirmware(file: File) {
var current = 0;
var max = 100;
controller.progressview.addProgress("ota_upload", (current/max) *100 , "Uploading firmeware ("+current+"/" + max+")")
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress", event => {
current = event.loaded/1000;
max = event.total/1000;
controller.progressview.addProgress("ota_upload", (current/max) *100 , "Uploading firmeware ("+current+"/" + max+")")
}, false);
ajax.addEventListener("load", () => {
//TODO wait for reboot here!
controller.progressview.removeProgress("ota_upload")
}, false);
ajax.addEventListener("error", () => {
alert("Error ota")
controller.progressview.removeProgress("ota_upload")
}, false);
ajax.addEventListener("abort", () => {
alert("abort ota")
controller.progressview.removeProgress("ota_upload")
}, false);
ajax.open("POST", PUBLIC_URL + "/ota");
ajax.send(file);
}
version() {
controller.progressview.addIndeterminate("version", "Getting buildVersion")
fetch(PUBLIC_URL + "/version")
.then(response => response.json())
.then(json => json as VersionInfo)
.then(versionInfo => {
controller.progressview.removeProgress("version")
controller.firmWareView.setVersion(versionInfo);
})
}
downloadConfig() {
controller.progressview.addIndeterminate("get_config", "Downloading Config")
fetch(PUBLIC_URL + "/get_config")
.then(response => response.json())
.then(loaded => {
var currentConfig = loaded as PlantControllerConfig;
this.setConfig(currentConfig);
//sync json view initially
this.configChanged();
controller.progressview.removeProgress("get_config")
})
}
uploadConfig(json: string, statusCallback: (status: string) => void) {
controller.progressview.addIndeterminate("set_config", "Uploading Config")
fetch(PUBLIC_URL + "/set_config", {
method: "POST",
body: json,
})
.then(response => response.text())
.then(text => statusCallback(text))
controller.progressview.removeProgress("set_config")
}
syncRTCFromBrowser(){
controller.progressview.addIndeterminate("write_rtc", "Writing RTC")
var value: SetTime = {
time: new Date().toISOString()
}
var pretty = JSON.stringify(value, undefined, 1);
fetch(PUBLIC_URL + "/time", {
method: "POST",
body: pretty
}).then(
_ => controller.progressview.removeProgress("write_rtc")
)
}
configChanged() {
const current = controller.getConfig();
var pretty = JSON.stringify(current, undefined, 1);
console.log(pretty)
controller.submitView.setJson(pretty);
}
testPlant(plantId: number) {
let counter = 0
let limit = 30
controller.progressview.addProgress("test_pump", counter/limit*100, "Testing pump " + (plantId+1) + " for " + (limit-counter)+"s")
let timerId: string | number | NodeJS.Timeout | undefined
function updateProgress(){
counter++;
controller.progressview.addProgress("test_pump", counter/limit*100, "Testing pump " + (plantId+1) + " for " + (limit-counter)+"s")
timerId = setTimeout(updateProgress, 1000);
}
timerId = setTimeout(updateProgress, 1000);
var body: TestPump = {
pump: plantId
}
var pretty = JSON.stringify(body, undefined, 1);
fetch(PUBLIC_URL + "/pumptest", {
method: "POST",
body: pretty
})
.then(response => response.text())
.then(
text => {
clearTimeout(timerId);
controller.progressview.removeProgress("test_pump");
}
)
}
getConfig(): PlantControllerConfig{
return {
network: controller.networkView.getConfig(),
tank: controller.tankView.getConfig(),
night_lamp: controller.nightLampView.getConfig(),
plants: controller.plantViews.getConfig()
}
}
scanWifi() {
let counter = 0
let limit = 5
controller.progressview.addProgress("scan_ssid", counter/limit*100, "Scanning for SSIDs for " + (limit-counter)+"s")
let timerId: string | number | NodeJS.Timeout | undefined
function updateProgress(){
counter++;
controller.progressview.addProgress("scan_ssid", counter/limit*100, "Scanning for SSIDs for " + (limit-counter)+"s")
timerId = setTimeout(updateProgress, 1000);
}
timerId = setTimeout(updateProgress, 1000);
var ajax = new XMLHttpRequest();
ajax.responseType = 'json';
ajax.onreadystatechange = () => {
if (ajax.readyState === 4) {
clearTimeout(timerId);
controller.progressview.removeProgress("scan_ssid");
this.networkView.setScanResult(ajax.response as SSIDList)
}
};
ajax.onerror = (evt) => {
clearTimeout(timerId);
controller.progressview.removeProgress("scan_ssid");
alert("Failed to start see console")
}
ajax.open("POST", PUBLIC_URL + "/wifiscan");
ajax.send();
}
setConfig(current: PlantControllerConfig) {
this.tankView.setConfig(current.tank);
this.networkView.setConfig(current.network);
this.nightLampView.setConfig(current.night_lamp);
this.plantViews.setConfig(current.plants);
}
measure_moisture (){
let counter = 0
let limit = 2
controller.progressview.addProgress("measure_moisture", counter/limit*100, "Measure Moisture " + (limit-counter)+"s")
let timerId: string | number | NodeJS.Timeout | undefined
function updateProgress(){
counter++;
controller.progressview.addProgress("measure_moisture", counter/limit*100, "Measure Moisture " + (limit-counter)+"s")
timerId = setTimeout(updateProgress, 1000);
}
timerId = setTimeout(updateProgress, 1000);
fetch(PUBLIC_URL + "/moisture")
.then(response => response.json())
.then(json => json as Moistures)
.then(time => {
controller.plantViews.update(time.moisture_a, time.moisture_b)
clearTimeout(timerId);
controller.progressview.removeProgress("measure_moisture");
})
.catch(error => {
clearTimeout(timerId);
controller.progressview.removeProgress("measure_moisture");
console.log(error);
});
}
readonly timeView: TimeView;
readonly plantViews: PlantViews;
readonly networkView: NetworkConfigView;
readonly tankView: TankConfigView;
readonly nightLampView: NightLampView;
readonly submitView: SubmitView;
readonly firmWareView : OTAView;
readonly progressview: ProgressView;
readonly batteryView: BatteryView;
constructor() {
this.timeView = new TimeView(this)
this.plantViews = new PlantViews(this)
this.networkView = new NetworkConfigView(this, PUBLIC_URL)
this.tankView = new TankConfigView(this)
this.batteryView = new BatteryView(this)
this.nightLampView = new NightLampView(this)
this.submitView = new SubmitView(this)
this.firmWareView = new OTAView(this)
this.progressview = new ProgressView(this)
}
}
const controller = new Controller();
controller.updateRTCData();
controller.updateBatteryData();
controller.downloadConfig();
//controller.measure_moisture();
controller.version();

View File

@@ -0,0 +1,32 @@
<h2>Basic network</h2>
Api Redirection to:
<span id="remote_ip">remote ip</span>
<br>
AccessPoint Mode (or fallback)
<br>
<label for="ap_ssid">AP SSID:</label>
<input type="text" id="ap_ssid" list="ssidlist">
<br>
<br>
Station Mode:
<br>
<label for="ssid">SSID:</label>
<input type="text" id="ssid" list="ssidlist"> <input type="button" id="scan" value="Scan">
<datalist id="ssidlist">
<option value="Not scanned yet">
</datalist>
<br>
<label for="ssid">Password:</label>
<input type="text" id="password">
<br>
<br>
Mqtt Reporting
<br>
<div>
MQTT Url
<input type="text" id="mqtt_url" placeholder="mqtt://192.168.1.1:1883">
</div>
<div>
Base Topic
<input type="text" id="base_topic" placeholder="plants/one">
</div>

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