Initial commit

This commit is contained in:
Martin Linkwitz - NUC
2026-04-02 14:25:39 +02:00
commit ae80aacfa9
170 changed files with 190713 additions and 0 deletions

154
Belegung Schütze.txt Normal file
View File

@@ -0,0 +1,154 @@
# Belegung Schütze
# Ids
* SW_FLUR = 0XD238
* SW_ANBAU = 0x87A9
* SW_WOHNZIMMER = 0x87CA
* UP_WOHNZIMMER_TUER = 0x051F
* UP_WOHNZIMMER_TERASSE = 0x05df
* UP_FLUR_EINGANG = 0x0769
* UP_BUERO = 0x1177
* UP_FLUR_BUERO = 0x05A1
* UP_FLUR_KUECHE = 0x01EF
* UP_KINDERZIMMER = 0x0196
* UP_FLUR_ELTERN = 0x0632
* UP_ELTERN = 0x08AE
* UP_KUECHE_FLUR = 0x07F5
* UP_KUECHE_BAD = 0x0585
## Offene Ideen
1. Stromzähler anzapfen und Messen
2. Gartenbeleuchtung -> 2tes Schütz im Garten
3. Klingel einbinden -> ebenfalls oben klingeln können
4. Tür von oben öffnen können.
4. Audio-Streaming
5. Garage -> Auto da, Garagentür
6. Küchenlicht an Arbeitsplatte
7. Küchenlicht von Küchentisch?
8. Automatischer Öffner Türe oben
9. Temperatursensoren einbinden in jeden Raum
## Wohnzimmer
1. Garten
2. Flur1 am Büro
3. Büro
4. Nachtlicht Vögel
5. Wohnzimmer1
6. Wohnzimmer2
7. Rollo Runter Wohnzimmer
8. Rollo Hoch Wohnzimmer
## Flur
1. ---
2. Licht Schlafzimmer
3. Licht Linus
4. Rollo hoch Linus
5. Rollo runter Linus
6. Flur2 am Eingang
## Anbau
1. Kabüffchen
2. Unterlicht Küche
3. Licht Küche
4. Badezimmer
# Unterputz IDs
## Linus Zimmer
Id: 0x0196
Belegung:
|---+---| |-------|
| 3 | 4 |--| 8 |
|---+---| |-------|
| 4 | 1 |
|---+---|
| 7 |
|-------|
# Wohnzimmer Türe
Id: 0x051F
|-------|
| - |
+---+---|
| 3 | 2 |
|---+---|
| 1 |
|---+---|
| O O |
+-------+
## Küche Badezimmer
Id: 0x0585
Belegung:
|---+---| |-------|
| 1 |--| 3 |
|---+---| |-------|
| 2 |
|---+---|
| O O |
|-------|+
## Küche Flur
Id: 0x07F5
Belegung:
|---+---|
| 1 |
|---+---|
| 2 |
|---+---|
| |
|-------|
## Flur eingang
Id: 0x0769
Belegung:
|---+---|
| 1 |
|---+---|
| 2 |
|---+---|
| |
|-------|
## Büro
Id: 0x1177
Belegung:
|---+---|
| 1 |
|---+---|
## Flur-Büro
Id: 0x05A1
Belegung:
|---+---|
| 1 |
|---+---|
## Flur-Küche
Id: 0x01EF
Belegung:
|---+---|
| 1 |
|---+---|

View File

@@ -0,0 +1,2 @@
(kicad_pcb (version 20211014) (generator pcbnew)
)

View File

@@ -0,0 +1,130 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"shapes": 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": [
"vias",
"footprint_text",
"footprint_anchors",
"ratsnest",
"grid",
"footprints_front",
"footprints_back",
"footprint_values",
"footprint_references",
"tracks",
"drc_errors",
"drawing_sheet",
"bitmaps",
"pads",
"zones",
"drc_warnings",
"locked_item_shadows",
"conflict_shadows",
"shapes"
],
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "MeyCan2025l.kicad_prl",
"version": 5
},
"net_inspector_panel": {
"col_hidden": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
],
"col_order": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"col_widths": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"custom_group_rules": [],
"expanded_rows": [],
"filter_by_net_name": true,
"filter_by_netclass": true,
"filter_text": "",
"group_by_constraint": false,
"group_by_netclass": false,
"show_unconnected_nets": false,
"show_zero_pad_nets": false,
"sort_ascending": true,
"sorting_column": 0
},
"open_jobsets": [],
"project": {
"files": []
},
"schematic": {
"selection_filter": {
"graphics": true,
"images": true,
"labels": true,
"lockedItems": false,
"otherItems": true,
"pins": true,
"symbols": true,
"text": true,
"wires": true
}
}
}

View File

@@ -0,0 +1,424 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.1,
"copper_line_width": 0.2,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"other_line_width": 0.15,
"silk_line_width": 0.15,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"rules": {
"min_copper_edge_clearance": 0.0,
"solder_mask_clearance": 0.0,
"solder_mask_min_width": 0.0
},
"track_widths": [],
"via_dimensions": []
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_pairs": [],
"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",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
"lib_symbol_mismatch": "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",
"same_local_global_label": "warning",
"similar_label_and_power": "warning",
"similar_labels": "warning",
"similar_power": "warning",
"simulation_model_issue": "ignore",
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "MeyCan2025l.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.25,
"via_diameter": 0.8,
"via_drill": 0.4
}
],
"meta": {
"version": 4
},
"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": "${PROJECTNAME}.csv",
"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": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "Default Editing",
"sort_asc": true,
"sort_field": "Referenz"
},
"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": "",
"page_layout_descr_file": "",
"plot_directory": "",
"space_save_all_events": true,
"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": [],
"text_variables": {}
}

View File

@@ -0,0 +1,5 @@
(kicad_sch (version 20211123) (generator eeschema)
(paper "A4")
(lib_symbols)
(symbol_instances)
)

File diff suppressed because it is too large Load Diff

209
Meycad-B_Cu.gbr Normal file
View File

@@ -0,0 +1,209 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Copper,L2,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,ComponentPad*%
%ADD10C,2.400000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD11R,2.400000X2.400000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD12R,1.600000X1.600000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD13O,1.600000X1.600000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD14C,1.600000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD15R,1.000000X1.000000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD16O,1.000000X1.000000*%
%TD*%
%TA.AperFunction,Conductor*%
%ADD17C,0.250000*%
%TD*%
G04 APERTURE END LIST*
D10*
%TO.P,J1,4,Pin_4*%
%TO.N,Net-(J1-Pad4)*%
X116220000Y-100900000D03*
%TO.P,J1,3,Pin_3*%
%TO.N,Net-(J1-Pad3)*%
X112720000Y-100900000D03*
%TO.P,J1,2,Pin_2*%
%TO.N,+5V*%
X109220000Y-100900000D03*
D11*
%TO.P,J1,1,Pin_1*%
%TO.N,GNDREF*%
X105720000Y-100900000D03*
%TD*%
D12*
%TO.P,A1,1,D1/TX*%
%TO.N,unconnected-(A1-Pad1)*%
X87630000Y-83810000D03*
D13*
%TO.P,A1,2,D0/RX*%
%TO.N,unconnected-(A1-Pad2)*%
X90170000Y-83810000D03*
%TO.P,A1,3,~{RESET}*%
%TO.N,unconnected-(A1-Pad3)*%
X92710000Y-83810000D03*
%TO.P,A1,4,GND*%
%TO.N,GNDREF*%
X95250000Y-83810000D03*
%TO.P,A1,5,D2*%
%TO.N,unconnected-(A1-Pad5)*%
X97790000Y-83810000D03*
%TO.P,A1,6,D3*%
%TO.N,unconnected-(A1-Pad6)*%
X100330000Y-83810000D03*
%TO.P,A1,7,D4*%
%TO.N,unconnected-(A1-Pad7)*%
X102870000Y-83810000D03*
%TO.P,A1,8,D5*%
%TO.N,unconnected-(A1-Pad8)*%
X105410000Y-83810000D03*
%TO.P,A1,9,D6*%
%TO.N,unconnected-(A1-Pad9)*%
X107950000Y-83810000D03*
%TO.P,A1,10,D7*%
%TO.N,unconnected-(A1-Pad10)*%
X110490000Y-83810000D03*
%TO.P,A1,11,D8*%
%TO.N,unconnected-(A1-Pad11)*%
X113030000Y-83810000D03*
%TO.P,A1,12,D9*%
%TO.N,unconnected-(A1-Pad12)*%
X115570000Y-83810000D03*
%TO.P,A1,13,D10*%
%TO.N,Net-(A1-Pad13)*%
X118110000Y-83810000D03*
%TO.P,A1,14,D11*%
%TO.N,Net-(A1-Pad14)*%
X120650000Y-83810000D03*
%TO.P,A1,15,D12*%
%TO.N,Net-(A1-Pad15)*%
X123190000Y-83810000D03*
%TO.P,A1,16,D13*%
%TO.N,Net-(A1-Pad16)*%
X123190000Y-68570000D03*
%TO.P,A1,17,3V3*%
%TO.N,unconnected-(A1-Pad17)*%
X120650000Y-68570000D03*
%TO.P,A1,18,AREF*%
%TO.N,unconnected-(A1-Pad18)*%
X118110000Y-68570000D03*
%TO.P,A1,19,A0*%
%TO.N,unconnected-(A1-Pad19)*%
X115570000Y-68570000D03*
%TO.P,A1,20,A1*%
%TO.N,unconnected-(A1-Pad20)*%
X113030000Y-68570000D03*
%TO.P,A1,21,A2*%
%TO.N,unconnected-(A1-Pad21)*%
X110490000Y-68570000D03*
%TO.P,A1,22,A3*%
%TO.N,unconnected-(A1-Pad22)*%
X107950000Y-68570000D03*
%TO.P,A1,23,A4*%
%TO.N,unconnected-(A1-Pad23)*%
X105410000Y-68570000D03*
%TO.P,A1,24,A5*%
%TO.N,unconnected-(A1-Pad24)*%
X102870000Y-68570000D03*
%TO.P,A1,25,A6*%
%TO.N,unconnected-(A1-Pad25)*%
X100330000Y-68570000D03*
%TO.P,A1,26,A7*%
%TO.N,unconnected-(A1-Pad26)*%
X97790000Y-68570000D03*
%TO.P,A1,27,+5V*%
%TO.N,Net-(A1-Pad27)*%
X95250000Y-68570000D03*
%TO.P,A1,28,~{RESET}*%
%TO.N,unconnected-(A1-Pad28)*%
X92710000Y-68570000D03*
%TO.P,A1,29,GND*%
%TO.N,GNDREF*%
X90170000Y-68570000D03*
%TO.P,A1,30,VIN*%
%TO.N,unconnected-(A1-Pad30)*%
X87630000Y-68570000D03*
%TD*%
D12*
%TO.P,C1,1*%
%TO.N,GNDREF*%
X91440000Y-93980000D03*
D14*
%TO.P,C1,2*%
%TO.N,Net-(C1-Pad2)*%
X93940000Y-93980000D03*
%TD*%
D15*
%TO.P,JP1,1,A*%
%TO.N,Net-(J1-Pad4)*%
X96520000Y-99060000D03*
D16*
%TO.P,JP1,2,B*%
%TO.N,Net-(JP1-Pad2)*%
X96520000Y-97790000D03*
%TD*%
D12*
%TO.P,C2,1*%
%TO.N,GNDREF*%
X94020000Y-88900000D03*
D14*
%TO.P,C2,2*%
%TO.N,Net-(C2-Pad2)*%
X96520000Y-88900000D03*
%TD*%
D17*
%TO.N,Net-(A1-Pad27)*%
X117555311Y-91440000D02*
X120650000Y-94534689D01*
X120650000Y-94534689D02*
X120650000Y-99060000D01*
X106680000Y-88900000D02*
X109220000Y-91440000D01*
X109220000Y-91440000D02*
X117555311Y-91440000D01*
X106690000Y-88890000D02*
X106680000Y-88900000D01*
X106690000Y-87645000D02*
X106690000Y-88890000D01*
X105425000Y-87645000D02*
X106690000Y-87645000D01*
X104140000Y-86360000D02*
X105425000Y-87645000D01*
X99060000Y-86360000D02*
X104140000Y-86360000D01*
X97780000Y-87640000D02*
X99060000Y-86360000D01*
X97780000Y-93985000D02*
X97780000Y-87640000D01*
X106690000Y-80010000D02*
X106690000Y-87645000D01*
X95250000Y-68570000D02*
X106690000Y-80010000D01*
X99060000Y-63500000D02*
X101600000Y-63500000D01*
X95250000Y-67310000D02*
X99060000Y-63500000D01*
X95250000Y-68570000D02*
X95250000Y-67310000D01*
%TD*%
M02*

87
Meycad-B_Mask.gbr Normal file
View File

@@ -0,0 +1,87 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Bot*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,2.100000*%
%ADD11C,2.400000*%
%ADD12R,2.400000X2.400000*%
%ADD13R,1.600000X1.600000*%
%ADD14O,1.600000X1.600000*%
%ADD15C,1.600000*%
%ADD16R,1.000000X1.000000*%
%ADD17O,1.000000X1.000000*%
G04 APERTURE END LIST*
D10*
%TO.C,REF\u002A\u002A*%
X109220000Y-58420000D03*
%TD*%
D11*
%TO.C,J1*%
X116220000Y-100900000D03*
X112720000Y-100900000D03*
X109220000Y-100900000D03*
D12*
X105720000Y-100900000D03*
%TD*%
D13*
%TO.C,A1*%
X87630000Y-83810000D03*
D14*
X90170000Y-83810000D03*
X92710000Y-83810000D03*
X95250000Y-83810000D03*
X97790000Y-83810000D03*
X100330000Y-83810000D03*
X102870000Y-83810000D03*
X105410000Y-83810000D03*
X107950000Y-83810000D03*
X110490000Y-83810000D03*
X113030000Y-83810000D03*
X115570000Y-83810000D03*
X118110000Y-83810000D03*
X120650000Y-83810000D03*
X123190000Y-83810000D03*
X123190000Y-68570000D03*
X120650000Y-68570000D03*
X118110000Y-68570000D03*
X115570000Y-68570000D03*
X113030000Y-68570000D03*
X110490000Y-68570000D03*
X107950000Y-68570000D03*
X105410000Y-68570000D03*
X102870000Y-68570000D03*
X100330000Y-68570000D03*
X97790000Y-68570000D03*
X95250000Y-68570000D03*
X92710000Y-68570000D03*
X90170000Y-68570000D03*
X87630000Y-68570000D03*
%TD*%
D13*
%TO.C,C1*%
X91440000Y-93980000D03*
D15*
X93940000Y-93980000D03*
%TD*%
D16*
%TO.C,JP1*%
X96520000Y-99060000D03*
D17*
X96520000Y-97790000D03*
%TD*%
D13*
%TO.C,C2*%
X94020000Y-88900000D03*
D15*
X96520000Y-88900000D03*
%TD*%
M02*

15
Meycad-B_Paste.gbr Normal file
View File

@@ -0,0 +1,15 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

71
Meycad-B_Silkscreen.gbr Normal file
View File

@@ -0,0 +1,71 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Legend,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.150000*%
G04 APERTURE END LIST*
D10*
X124086666Y-63285714D02*
X123705714Y-63285714D01*
X123943809Y-62952380D02*
X123943809Y-63809523D01*
X123896190Y-63904761D01*
X123800952Y-63952380D01*
X123705714Y-63952380D01*
X122991428Y-63904761D02*
X123086666Y-63952380D01*
X123277142Y-63952380D01*
X123372380Y-63904761D01*
X123420000Y-63809523D01*
X123420000Y-63428571D01*
X123372380Y-63333333D01*
X123277142Y-63285714D01*
X123086666Y-63285714D01*
X122991428Y-63333333D01*
X122943809Y-63428571D01*
X122943809Y-63523809D01*
X123420000Y-63619047D01*
X122562857Y-63904761D02*
X122467619Y-63952380D01*
X122277142Y-63952380D01*
X122181904Y-63904761D01*
X122134285Y-63809523D01*
X122134285Y-63761904D01*
X122181904Y-63666666D01*
X122277142Y-63619047D01*
X122420000Y-63619047D01*
X122515238Y-63571428D01*
X122562857Y-63476190D01*
X122562857Y-63428571D01*
X122515238Y-63333333D01*
X122420000Y-63285714D01*
X122277142Y-63285714D01*
X122181904Y-63333333D01*
X121848571Y-63285714D02*
X121467619Y-63285714D01*
X121705714Y-62952380D02*
X121705714Y-63809523D01*
X121658095Y-63904761D01*
X121562857Y-63952380D01*
X121467619Y-63952380D01*
X120420000Y-63047619D02*
X120372380Y-63000000D01*
X120277142Y-62952380D01*
X120039047Y-62952380D01*
X119943809Y-63000000D01*
X119896190Y-63047619D01*
X119848571Y-63142857D01*
X119848571Y-63238095D01*
X119896190Y-63380952D01*
X120467619Y-63952380D01*
X119848571Y-63952380D01*
M02*

37
Meycad-Edge_Cuts.gbr Normal file
View File

@@ -0,0 +1,37 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Profile,NP*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.100000*%
%TD*%
G04 APERTURE END LIST*
D10*
X119380000Y-60960000D02*
X124460000Y-60960000D01*
X119380000Y-58420000D02*
X119380000Y-60960000D01*
X134620001Y-81280000D02*
G75*
G03*
X134620001Y-81280000I-1J0D01*
G01*
X124460001Y-104140000D02*
G75*
G03*
X124460001Y-104140000I-1J0D01*
G01*
X132619430Y-81280000D02*
G75*
G03*
X132619430Y-81280000I-25000000J0D01*
G01*
M02*

2571
Meycad-F_Cu.gbr Normal file

File diff suppressed because it is too large Load Diff

154
Meycad-F_Mask.gbr Normal file
View File

@@ -0,0 +1,154 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Top*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 Aperture macros list*
%AMRoundRect*
0 Rectangle with rounded corners*
0 $1 Rounding radius*
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
0 Add a 4 corners polygon primitive as box body*
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
0 Add four circle primitives for the rounded corners*
1,1,$1+$1,$2,$3*
1,1,$1+$1,$4,$5*
1,1,$1+$1,$6,$7*
1,1,$1+$1,$8,$9*
0 Add four rect primitives between the rounded corners*
20,1,$1+$1,$2,$3,$4,$5,0*
20,1,$1+$1,$4,$5,$6,$7,0*
20,1,$1+$1,$6,$7,$8,$9,0*
20,1,$1+$1,$8,$9,$2,$3,0*%
G04 Aperture macros list end*
%ADD10C,2.100000*%
%ADD11R,2.275000X2.200000*%
%ADD12RoundRect,0.150000X0.587500X0.150000X-0.587500X0.150000X-0.587500X-0.150000X0.587500X-0.150000X0*%
%ADD13R,0.950000X2.800000*%
%ADD14RoundRect,0.100000X-0.100000X-0.200000X0.100000X-0.200000X0.100000X0.200000X-0.100000X0.200000X0*%
%ADD15RoundRect,0.135000X0.185000X-0.135000X0.185000X0.135000X-0.185000X0.135000X-0.185000X-0.135000X0*%
%ADD16RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
%ADD17C,2.400000*%
%ADD18R,2.400000X2.400000*%
%ADD19R,1.600000X1.600000*%
%ADD20O,1.600000X1.600000*%
%ADD21C,1.600000*%
%ADD22R,1.000000X1.000000*%
%ADD23O,1.000000X1.000000*%
G04 APERTURE END LIST*
D10*
%TO.C,REF\u002A\u002A*%
X109220000Y-58420000D03*
%TD*%
D11*
%TO.C,Y1*%
X114300000Y-88900000D03*
X109125000Y-88900000D03*
%TD*%
D12*
%TO.C,U3*%
X122857500Y-100010000D03*
X122857500Y-98110000D03*
X120982500Y-99060000D03*
%TD*%
D13*
%TO.C,U2*%
X124220000Y-88040000D03*
X122680000Y-88040000D03*
X121160000Y-88040000D03*
X119620000Y-88040000D03*
X119620000Y-94840000D03*
X121160000Y-94840000D03*
X122680000Y-94840000D03*
X124220000Y-94840000D03*
%TD*%
D14*
%TO.C,U1*%
X110785000Y-95380000D03*
X111435000Y-95380000D03*
X112085000Y-95380000D03*
X112735000Y-95380000D03*
X112735000Y-92580000D03*
X112085000Y-92580000D03*
X111435000Y-92580000D03*
X110785000Y-92580000D03*
%TD*%
D15*
%TO.C,R2*%
X99060000Y-102110000D03*
X99060000Y-101090000D03*
%TD*%
D16*
%TO.C,R1*%
X101090000Y-63500000D03*
X102110000Y-63500000D03*
%TD*%
D17*
%TO.C,J1*%
X116220000Y-100900000D03*
X112720000Y-100900000D03*
X109220000Y-100900000D03*
D18*
X105720000Y-100900000D03*
%TD*%
D19*
%TO.C,A1*%
X87630000Y-83810000D03*
D20*
X90170000Y-83810000D03*
X92710000Y-83810000D03*
X95250000Y-83810000D03*
X97790000Y-83810000D03*
X100330000Y-83810000D03*
X102870000Y-83810000D03*
X105410000Y-83810000D03*
X107950000Y-83810000D03*
X110490000Y-83810000D03*
X113030000Y-83810000D03*
X115570000Y-83810000D03*
X118110000Y-83810000D03*
X120650000Y-83810000D03*
X123190000Y-83810000D03*
X123190000Y-68570000D03*
X120650000Y-68570000D03*
X118110000Y-68570000D03*
X115570000Y-68570000D03*
X113030000Y-68570000D03*
X110490000Y-68570000D03*
X107950000Y-68570000D03*
X105410000Y-68570000D03*
X102870000Y-68570000D03*
X100330000Y-68570000D03*
X97790000Y-68570000D03*
X95250000Y-68570000D03*
X92710000Y-68570000D03*
X90170000Y-68570000D03*
X87630000Y-68570000D03*
%TD*%
D19*
%TO.C,C1*%
X91440000Y-93980000D03*
D21*
X93940000Y-93980000D03*
%TD*%
D22*
%TO.C,JP1*%
X96520000Y-99060000D03*
D23*
X96520000Y-97790000D03*
%TD*%
D19*
%TO.C,C2*%
X94020000Y-88900000D03*
D21*
X96520000Y-88900000D03*
%TD*%
M02*

82
Meycad-F_Paste.gbr Normal file
View File

@@ -0,0 +1,82 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 Aperture macros list*
%AMRoundRect*
0 Rectangle with rounded corners*
0 $1 Rounding radius*
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
0 Add a 4 corners polygon primitive as box body*
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
0 Add four circle primitives for the rounded corners*
1,1,$1+$1,$2,$3*
1,1,$1+$1,$4,$5*
1,1,$1+$1,$6,$7*
1,1,$1+$1,$8,$9*
0 Add four rect primitives between the rounded corners*
20,1,$1+$1,$2,$3,$4,$5,0*
20,1,$1+$1,$4,$5,$6,$7,0*
20,1,$1+$1,$6,$7,$8,$9,0*
20,1,$1+$1,$8,$9,$2,$3,0*%
G04 Aperture macros list end*
%ADD10R,2.275000X2.200000*%
%ADD11RoundRect,0.150000X0.587500X0.150000X-0.587500X0.150000X-0.587500X-0.150000X0.587500X-0.150000X0*%
%ADD12R,0.950000X2.800000*%
%ADD13RoundRect,0.100000X-0.100000X-0.200000X0.100000X-0.200000X0.100000X0.200000X-0.100000X0.200000X0*%
%ADD14RoundRect,0.135000X0.185000X-0.135000X0.185000X0.135000X-0.185000X0.135000X-0.185000X-0.135000X0*%
%ADD15RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
G04 APERTURE END LIST*
D10*
%TO.C,Y1*%
X114300000Y-88900000D03*
X109125000Y-88900000D03*
%TD*%
D11*
%TO.C,U3*%
X122857500Y-100010000D03*
X122857500Y-98110000D03*
X120982500Y-99060000D03*
%TD*%
D12*
%TO.C,U2*%
X124220000Y-88040000D03*
X122680000Y-88040000D03*
X121160000Y-88040000D03*
X119620000Y-88040000D03*
X119620000Y-94840000D03*
X121160000Y-94840000D03*
X122680000Y-94840000D03*
X124220000Y-94840000D03*
%TD*%
D13*
%TO.C,U1*%
X110785000Y-95380000D03*
X111435000Y-95380000D03*
X112085000Y-95380000D03*
X112735000Y-95380000D03*
X112735000Y-92580000D03*
X112085000Y-92580000D03*
X111435000Y-92580000D03*
X110785000Y-92580000D03*
%TD*%
D14*
%TO.C,R2*%
X99060000Y-102110000D03*
X99060000Y-101090000D03*
%TD*%
D15*
%TO.C,R1*%
X101090000Y-63500000D03*
X102110000Y-63500000D03*
%TD*%
M02*

493
Meycad-F_Silkscreen.gbr Normal file
View File

@@ -0,0 +1,493 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
%TF.CreationDate,2022-05-25T07:35:57+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Legend,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-05-25 07:35:57*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.150000*%
%ADD11C,0.120000*%
%ADD12C,0.100000*%
G04 APERTURE END LIST*
D10*
%TO.C,REF\u002A\u002A*%
X107886666Y-55672380D02*
X107553333Y-55196190D01*
X107315238Y-55672380D02*
X107315238Y-54672380D01*
X107696190Y-54672380D01*
X107791428Y-54720000D01*
X107839047Y-54767619D01*
X107886666Y-54862857D01*
X107886666Y-55005714D01*
X107839047Y-55100952D01*
X107791428Y-55148571D01*
X107696190Y-55196190D01*
X107315238Y-55196190D01*
X108315238Y-55148571D02*
X108648571Y-55148571D01*
X108791428Y-55672380D02*
X108315238Y-55672380D01*
X108315238Y-54672380D01*
X108791428Y-54672380D01*
X109553333Y-55148571D02*
X109220000Y-55148571D01*
X109220000Y-55672380D02*
X109220000Y-54672380D01*
X109696190Y-54672380D01*
X110220000Y-54672380D02*
X110220000Y-54910476D01*
X109981904Y-54815238D02*
X110220000Y-54910476D01*
X110458095Y-54815238D01*
X110077142Y-55100952D02*
X110220000Y-54910476D01*
X110362857Y-55100952D01*
X110981904Y-54672380D02*
X110981904Y-54910476D01*
X110743809Y-54815238D02*
X110981904Y-54910476D01*
X111220000Y-54815238D01*
X110839047Y-55100952D02*
X110981904Y-54910476D01*
X111124761Y-55100952D01*
%TO.C,Y1*%
X111236309Y-91026190D02*
X111236309Y-91502380D01*
X110902976Y-90502380D02*
X111236309Y-91026190D01*
X111569642Y-90502380D01*
X112426785Y-91502380D02*
X111855357Y-91502380D01*
X112141071Y-91502380D02*
X112141071Y-90502380D01*
X112045833Y-90645238D01*
X111950595Y-90740476D01*
X111855357Y-90788095D01*
%TO.C,U3*%
X121158095Y-100912380D02*
X121158095Y-101721904D01*
X121205714Y-101817142D01*
X121253333Y-101864761D01*
X121348571Y-101912380D01*
X121539047Y-101912380D01*
X121634285Y-101864761D01*
X121681904Y-101817142D01*
X121729523Y-101721904D01*
X121729523Y-100912380D01*
X122110476Y-100912380D02*
X122729523Y-100912380D01*
X122396190Y-101293333D01*
X122539047Y-101293333D01*
X122634285Y-101340952D01*
X122681904Y-101388571D01*
X122729523Y-101483809D01*
X122729523Y-101721904D01*
X122681904Y-101817142D01*
X122634285Y-101864761D01*
X122539047Y-101912380D01*
X122253333Y-101912380D01*
X122158095Y-101864761D01*
X122110476Y-101817142D01*
%TO.C,U2*%
X125872380Y-92201904D02*
X126681904Y-92201904D01*
X126777142Y-92154285D01*
X126824761Y-92106666D01*
X126872380Y-92011428D01*
X126872380Y-91820952D01*
X126824761Y-91725714D01*
X126777142Y-91678095D01*
X126681904Y-91630476D01*
X125872380Y-91630476D01*
X125967619Y-91201904D02*
X125920000Y-91154285D01*
X125872380Y-91059047D01*
X125872380Y-90820952D01*
X125920000Y-90725714D01*
X125967619Y-90678095D01*
X126062857Y-90630476D01*
X126158095Y-90630476D01*
X126300952Y-90678095D01*
X126872380Y-91249523D01*
X126872380Y-90630476D01*
%TO.C,U1*%
X108712380Y-94741904D02*
X109521904Y-94741904D01*
X109617142Y-94694285D01*
X109664761Y-94646666D01*
X109712380Y-94551428D01*
X109712380Y-94360952D01*
X109664761Y-94265714D01*
X109617142Y-94218095D01*
X109521904Y-94170476D01*
X108712380Y-94170476D01*
X109712380Y-93170476D02*
X109712380Y-93741904D01*
X109712380Y-93456190D02*
X108712380Y-93456190D01*
X108855238Y-93551428D01*
X108950476Y-93646666D01*
X108998095Y-93741904D01*
%TO.C,R2*%
X98342380Y-101766666D02*
X97866190Y-102100000D01*
X98342380Y-102338095D02*
X97342380Y-102338095D01*
X97342380Y-101957142D01*
X97390000Y-101861904D01*
X97437619Y-101814285D01*
X97532857Y-101766666D01*
X97675714Y-101766666D01*
X97770952Y-101814285D01*
X97818571Y-101861904D01*
X97866190Y-101957142D01*
X97866190Y-102338095D01*
X97437619Y-101385714D02*
X97390000Y-101338095D01*
X97342380Y-101242857D01*
X97342380Y-101004761D01*
X97390000Y-100909523D01*
X97437619Y-100861904D01*
X97532857Y-100814285D01*
X97628095Y-100814285D01*
X97770952Y-100861904D01*
X98342380Y-101433333D01*
X98342380Y-100814285D01*
%TO.C,R1*%
X101433333Y-62782380D02*
X101100000Y-62306190D01*
X100861904Y-62782380D02*
X100861904Y-61782380D01*
X101242857Y-61782380D01*
X101338095Y-61830000D01*
X101385714Y-61877619D01*
X101433333Y-61972857D01*
X101433333Y-62115714D01*
X101385714Y-62210952D01*
X101338095Y-62258571D01*
X101242857Y-62306190D01*
X100861904Y-62306190D01*
X102385714Y-62782380D02*
X101814285Y-62782380D01*
X102100000Y-62782380D02*
X102100000Y-61782380D01*
X102004761Y-61925238D01*
X101909523Y-62020476D01*
X101814285Y-62068095D01*
%TO.C,J1*%
X110636666Y-96192380D02*
X110636666Y-96906666D01*
X110589047Y-97049523D01*
X110493809Y-97144761D01*
X110350952Y-97192380D01*
X110255714Y-97192380D01*
X111636666Y-97192380D02*
X111065238Y-97192380D01*
X111350952Y-97192380D02*
X111350952Y-96192380D01*
X111255714Y-96335238D01*
X111160476Y-96430476D01*
X111065238Y-96478095D01*
%TO.C,A1*%
X82716666Y-76904285D02*
X82716666Y-76428095D01*
X83002380Y-76999523D02*
X82002380Y-76666190D01*
X83002380Y-76332857D01*
X83002380Y-75475714D02*
X83002380Y-76047142D01*
X83002380Y-75761428D02*
X82002380Y-75761428D01*
X82145238Y-75856666D01*
X82240476Y-75951904D01*
X82288095Y-76047142D01*
%TO.C,C1*%
X92523333Y-90837142D02*
X92475714Y-90884761D01*
X92332857Y-90932380D01*
X92237619Y-90932380D01*
X92094761Y-90884761D01*
X91999523Y-90789523D01*
X91951904Y-90694285D01*
X91904285Y-90503809D01*
X91904285Y-90360952D01*
X91951904Y-90170476D01*
X91999523Y-90075238D01*
X92094761Y-89980000D01*
X92237619Y-89932380D01*
X92332857Y-89932380D01*
X92475714Y-89980000D01*
X92523333Y-90027619D01*
X93475714Y-90932380D02*
X92904285Y-90932380D01*
X93190000Y-90932380D02*
X93190000Y-89932380D01*
X93094761Y-90075238D01*
X92999523Y-90170476D01*
X92904285Y-90218095D01*
%TO.C,JP1*%
X95686666Y-100207380D02*
X95686666Y-100921666D01*
X95639047Y-101064523D01*
X95543809Y-101159761D01*
X95400952Y-101207380D01*
X95305714Y-101207380D01*
X96162857Y-101207380D02*
X96162857Y-100207380D01*
X96543809Y-100207380D01*
X96639047Y-100255000D01*
X96686666Y-100302619D01*
X96734285Y-100397857D01*
X96734285Y-100540714D01*
X96686666Y-100635952D01*
X96639047Y-100683571D01*
X96543809Y-100731190D01*
X96162857Y-100731190D01*
X97686666Y-101207380D02*
X97115238Y-101207380D01*
X97400952Y-101207380D02*
X97400952Y-100207380D01*
X97305714Y-100350238D01*
X97210476Y-100445476D01*
X97115238Y-100493095D01*
%TO.C,C2*%
X95103333Y-85757142D02*
X95055714Y-85804761D01*
X94912857Y-85852380D01*
X94817619Y-85852380D01*
X94674761Y-85804761D01*
X94579523Y-85709523D01*
X94531904Y-85614285D01*
X94484285Y-85423809D01*
X94484285Y-85280952D01*
X94531904Y-85090476D01*
X94579523Y-84995238D01*
X94674761Y-84900000D01*
X94817619Y-84852380D01*
X94912857Y-84852380D01*
X95055714Y-84900000D01*
X95103333Y-84947619D01*
X95484285Y-84947619D02*
X95531904Y-84900000D01*
X95627142Y-84852380D01*
X95865238Y-84852380D01*
X95960476Y-84900000D01*
X96008095Y-84947619D01*
X96055714Y-85042857D01*
X96055714Y-85138095D01*
X96008095Y-85280952D01*
X95436666Y-85852380D01*
X96055714Y-85852380D01*
D11*
%TO.C,Y1*%
X112962500Y-90050000D02*
X110462500Y-90050000D01*
X112962500Y-87750000D02*
X110462500Y-87750000D01*
X115637500Y-90000000D02*
X115637500Y-87800000D01*
%TO.C,U3*%
X121920000Y-100620000D02*
X121270000Y-100620000D01*
X121920000Y-97500000D02*
X121270000Y-97500000D01*
X121920000Y-100620000D02*
X123595000Y-100620000D01*
X121920000Y-97500000D02*
X122570000Y-97500000D01*
%TO.C,U2*%
X124920000Y-86640000D02*
X124920000Y-89440000D01*
X118920000Y-93440000D02*
X118420000Y-93440000D01*
X124920000Y-89440000D02*
X125320000Y-89440000D01*
X118420000Y-93440000D02*
X118420000Y-89440000D01*
X125320000Y-93440000D02*
X124920000Y-93440000D01*
X125320000Y-89440000D02*
X125320000Y-93440000D01*
X118420000Y-89440000D02*
X118920000Y-89440000D01*
D12*
%TO.C,U1*%
X113310000Y-92730000D02*
X113160000Y-92730000D01*
X110310000Y-95230000D02*
X110210000Y-95230000D01*
X113310000Y-95230000D02*
X113310000Y-92730000D01*
X113160000Y-95230000D02*
X113310000Y-95230000D01*
X110210000Y-95230000D02*
X110210000Y-92730000D01*
X110210000Y-92730000D02*
X110310000Y-92730000D01*
X110310000Y-95630000D02*
X110310000Y-95230000D01*
D11*
%TO.C,R2*%
X98680000Y-101753641D02*
X98680000Y-101446359D01*
X99440000Y-101753641D02*
X99440000Y-101446359D01*
%TO.C,R1*%
X101446359Y-63120000D02*
X101753641Y-63120000D01*
X101446359Y-63880000D02*
X101753641Y-63880000D01*
%TO.C,J1*%
X114400000Y-100900000D02*
G75*
G03*
X114400000Y-100900000I-1680000J0D01*
G01*
X117900000Y-100900000D02*
G75*
G03*
X117900000Y-100900000I-1680000J0D01*
G01*
X110900000Y-100900000D02*
G75*
G03*
X110900000Y-100900000I-1680000J0D01*
G01*
X106586000Y-99459999D02*
G75*
G03*
X104830106Y-99474642I-866000J-1439999D01*
G01*
X104279999Y-100034000D02*
G75*
G03*
X104294642Y-101789894I1439999J-866000D01*
G01*
X107145000Y-101791000D02*
G75*
G03*
X107145504Y-100009807I-1425003J891000D01*
G01*
X105720000Y-102580000D02*
G75*
G03*
X106610264Y-102324721I3J1679990D01*
G01*
X104854000Y-102340000D02*
G75*
G03*
X105748674Y-102580099I866003J1440014D01*
G01*
X108245000Y-102081000D02*
X108151000Y-102174000D01*
X108075000Y-101841000D02*
X107946000Y-101969000D01*
X115075000Y-101841000D02*
X114946000Y-101969000D01*
X103670000Y-105060000D02*
X103670000Y-105700000D01*
X110290000Y-99625000D02*
X110196000Y-99719000D01*
X103670000Y-105700000D02*
X104070000Y-105700000D01*
X118030000Y-97740000D02*
X118030000Y-105460000D01*
X103910000Y-103900000D02*
X118030000Y-103900000D01*
X115245000Y-102081000D02*
X115151000Y-102174000D01*
X111575000Y-101841000D02*
X111446000Y-101969000D01*
X103910000Y-97740000D02*
X118030000Y-97740000D01*
X113790000Y-99625000D02*
X113696000Y-99719000D01*
X103910000Y-105460000D02*
X118030000Y-105460000D01*
X111745000Y-102081000D02*
X111651000Y-102174000D01*
X117495000Y-99831000D02*
X117366000Y-99959000D01*
X110495000Y-99831000D02*
X110366000Y-99959000D01*
X113995000Y-99831000D02*
X113866000Y-99959000D01*
X117290000Y-99625000D02*
X117196000Y-99719000D01*
X103910000Y-105000000D02*
X118030000Y-105000000D01*
X103910000Y-97740000D02*
X103910000Y-105460000D01*
%TO.C,A1*%
X83690000Y-85210000D02*
X86360000Y-85210000D01*
X127130000Y-67170000D02*
X83690000Y-67170000D01*
X124460000Y-69840000D02*
X124460000Y-67170000D01*
X88900000Y-82540000D02*
X86360000Y-82540000D01*
X86360000Y-82540000D02*
X86360000Y-85210000D01*
X124460000Y-82540000D02*
X124460000Y-85210000D01*
X127130000Y-85210000D02*
X127130000Y-67170000D01*
X88900000Y-82540000D02*
X124460000Y-82540000D01*
X83690000Y-67170000D02*
X83690000Y-85210000D01*
X88900000Y-82540000D02*
X88900000Y-85210000D01*
X88900000Y-85210000D02*
X127130000Y-85210000D01*
X86360000Y-69840000D02*
X86360000Y-67170000D01*
X86360000Y-69840000D02*
X124460000Y-69840000D01*
%TO.C,C1*%
X90377712Y-92420000D02*
X90377712Y-92870000D01*
X90152712Y-92645000D02*
X90602712Y-92645000D01*
X90570259Y-95040000D02*
G75*
G03*
X90570259Y-92920000I2119741J1060000D01*
G01*
%TO.C,JP1*%
X97630000Y-98300000D02*
X97630000Y-97095000D01*
X95410000Y-98300000D02*
X95410000Y-97095000D01*
X97630000Y-97095000D02*
X96827530Y-97095000D01*
X97630000Y-98300000D02*
X97083471Y-98300000D01*
X97630000Y-99060000D02*
X97630000Y-99820000D01*
X95956529Y-98300000D02*
X95410000Y-98300000D01*
X96212470Y-97095000D02*
X95410000Y-97095000D01*
X97630000Y-99820000D02*
X96520000Y-99820000D01*
%TO.C,C2*%
X92957712Y-87340000D02*
X92957712Y-87790000D01*
X92732712Y-87565000D02*
X93182712Y-87565000D01*
X93150259Y-89960000D02*
G75*
G03*
X93150259Y-87840000I2119741J1060000D01*
G01*
%TD*%
M02*

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

120
Meycad-job.gbrjob Normal file
View File

@@ -0,0 +1,120 @@
{
"Header": {
"GenerationSoftware": {
"Vendor": "KiCad",
"Application": "Pcbnew",
"Version": "(6.0.4)"
},
"CreationDate": "2022-05-25T07:35:57+02:00"
},
"GeneralSpecs": {
"ProjectId": {
"Name": "Meycad",
"GUID": "4d657963-6164-42e6-9b69-6361645f7063",
"Revision": "rev?"
},
"Size": {
"X": 52.1006,
"Y": 50.1
},
"LayerNumber": 2,
"BoardThickness": 1.6,
"Finish": "None"
},
"DesignRules": [
{
"Layers": "Outer",
"PadToPad": 0.2,
"PadToTrack": 0.2,
"TrackToTrack": 0.2,
"MinLineWidth": 0.25
}
],
"FilesAttributes": [
{
"Path": "Meycad-F_Cu.gbr",
"FileFunction": "Copper,L1,Top",
"FilePolarity": "Positive"
},
{
"Path": "Meycad-B_Cu.gbr",
"FileFunction": "Copper,L2,Bot",
"FilePolarity": "Positive"
},
{
"Path": "Meycad-F_Paste.gbr",
"FileFunction": "SolderPaste,Top",
"FilePolarity": "Positive"
},
{
"Path": "Meycad-B_Paste.gbr",
"FileFunction": "SolderPaste,Bot",
"FilePolarity": "Positive"
},
{
"Path": "Meycad-F_Silkscreen.gbr",
"FileFunction": "Legend,Top",
"FilePolarity": "Positive"
},
{
"Path": "Meycad-B_Silkscreen.gbr",
"FileFunction": "Legend,Bot",
"FilePolarity": "Positive"
},
{
"Path": "Meycad-F_Mask.gbr",
"FileFunction": "SolderMask,Top",
"FilePolarity": "Negative"
},
{
"Path": "Meycad-B_Mask.gbr",
"FileFunction": "SolderMask,Bot",
"FilePolarity": "Negative"
},
{
"Path": "Meycad-Edge_Cuts.gbr",
"FileFunction": "Profile",
"FilePolarity": "Positive"
}
],
"MaterialStackup": [
{
"Type": "Legend",
"Name": "Top Silk Screen"
},
{
"Type": "SolderPaste",
"Name": "Top Solder Paste"
},
{
"Type": "SolderMask",
"Name": "Top Solder Mask"
},
{
"Type": "Copper",
"Name": "F.Cu"
},
{
"Type": "Dielectric",
"Material": "FR4",
"Name": "F.Cu/B.Cu",
"Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
},
{
"Type": "Copper",
"Name": "B.Cu"
},
{
"Type": "SolderMask",
"Name": "Bottom Solder Mask"
},
{
"Type": "SolderPaste",
"Name": "Bottom Solder Paste"
},
{
"Type": "Legend",
"Name": "Bottom Silk Screen"
}
]
}

1511
Meycad.kicad_pcb Normal file

File diff suppressed because it is too large Load Diff

75
Meycad.kicad_prl Normal file
View File

@@ -0,0 +1,75 @@
{
"board": {
"active_layer": 36,
"active_layer_preset": "",
"auto_track_width": false,
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 1.0
},
"ratsnest_display_mode": 0,
"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,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36
],
"visible_layers": "0001030_ffffffff",
"zone_display_mode": 0
},
"meta": {
"filename": "Meycad.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

420
Meycad.kicad_pro Normal file
View File

@@ -0,0 +1,420 @@
{
"board": {
"design_settings": {
"defaults": {
"board_outline_line_width": 0.09999999999999999,
"copper_line_width": 0.19999999999999998,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"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.09999999999999999,
"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.15,
"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.0,
"height": 0.95,
"width": 0.8
},
"silk_line_width": 0.15,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.508
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"copper_edge_clearance": "error",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"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",
"zone_has_empty_net": "error",
"zones_intersect": "error"
},
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.0,
"min_copper_edge_clearance": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_silk_clearance": 0.0,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.19999999999999998,
"min_via_annular_width": 0.049999999999999996,
"min_via_diameter": 0.39999999999999997,
"solder_mask_clearance": 0.0,
"solder_mask_min_width": 0.0,
"use_height_for_length_calcs": true
},
"track_widths": [],
"via_dimensions": [],
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"layer_presets": []
},
"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_label_syntax": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "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",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "Meycad.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12.0,
"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.25,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6.0
}
],
"meta": {
"version": 2
},
"net_colors": null
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"specctra_dsn": "",
"step": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"drawing": {
"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,
"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,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_external_command": "spice \"%I\"",
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"9538e4ed-27e6-4c37-b989-9859dc0d49e8",
""
]
],
"text_variables": {}
}

2536
Meycad.kicad_sch Normal file

File diff suppressed because it is too large Load Diff

2698
Meycad.kicad_sch-bak Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Attach) - openHAB",
"request": "attach",
"hostName": "localhost",
"port": 5005,
"preLaunchTask": "Build"
}
]
}

View File

@@ -0,0 +1,149 @@
{
"version": "2.0.0",
"options": {
"env": {
"openhab_home": "C://source//openhab_runtime",
"openhab_runtime": "C://source//openhab_runtime//runtime",
"openhab_addons": "C://source//openhab_runtime//addons",
"openhab_logs": "C://source//openhab_runtime//userdata/logs",
"dist" : "org.openhab.binding.meycan-4.0.0-SNAPSHOT.jar"
}
},
"tasks": [
{
"label": "Start openHAB (Debug)",
"type": "shell",
"isBackground": true,
"command": "$openhab_home/start.sh debug",
"windows": {
"command": "& $env:openhab_home/start.bat debug"
},
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
},
{
"label": "Stop openHAB",
"type": "shell",
"command": "$openhab_runtime/bin/stop",
"windows": {
"command": "& $env:openhab_runtime/bin/stop.bat"
},
"problemMatcher": []
},
{
"label": "mvn Compile (Release)",
"type": "shell",
"command": "mvn",
"args": [
"clean",
"install"
],
"problemMatcher": []
},
{
"label": "mvn Compile (Online)",
"type": "shell",
"command": "mvn",
"args": [
"clean",
"install",
"-DskipChecks"
],
"problemMatcher": []
},
{
"label": "mvn Compile (Offline)",
"type": "shell",
"command": "mvn",
"args": [
"-o",
"clean",
"install",
"-DskipChecks"
],
"problemMatcher": []
},
{
"label": "Copy Distribution to Addons",
"type": "shell",
"command": "cp",
"args": [
"${workspaceFolder}/target/$dist",
"$openhab_addons"
],
"windows": {
"command": "copy",
"args": [
"${workspaceFolder}/target/$env:dist",
"$env:openhab_addons"
]
},
"dependsOn": [
"mvn Compile (Offline)"
],
"problemMatcher": []
},
{
"label": "Build",
"dependsOn": [
"Copy Distribution to Addons"
],
"problemMatcher": []
},
{
"label": "Tail events.log",
"type": "shell",
"command": "tail",
"args": [
"-n",
"50",
"-F",
"$openhab_logs/events.log"
],
"windows": {
"command": "Get-Content",
"args": [
"-Last",
"50",
"-Path",
"$env:openhab_logs/events.log",
"-Wait"
]
},
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
},
{
"label": "Tail openhab.log",
"type": "shell",
"command": "tail",
"args": [
"-n",
"50",
"-F",
"$openhab_logs/openhab.log"
],
"windows": {
"command": "Get-Content",
"args": [
"-Last",
"50",
"-Path",
"$env:openhab_logs/openhab.log",
"-Wait"
]
},
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
}
]
}

View File

@@ -0,0 +1,13 @@
This content is produced and maintained by the openHAB project.
* Project home: https://www.openhab.org
== Declared Project Licenses
This program and the accompanying materials are made available under the terms
of the Eclipse Public License 2.0 which is available at
https://www.eclipse.org/legal/epl-2.0/.
== Source Code
https://github.com/openhab/openhab-addons

View File

@@ -0,0 +1,94 @@
# MeyCan Binding
_Give some details about what this binding is meant for - a protocol, system, specific device._
_If possible, provide some resources like pictures (only PNG is supported currently), a video, etc. to give an impression of what can be done with this binding._
_You can place such resources into a `doc` folder next to this README.md._
_Put each sentence in a separate line to improve readability of diffs._
## Supported Things
_Please describe the different supported things / devices including their ThingTypeUID within this section._
_Which different types are supported, which models were tested etc.?_
_Note that it is planned to generate some part of this based on the XML files within ```src/main/resources/OH-INF/thing``` of your binding._
- `bridge`: Short description of the Bridge, if any
- `sample`: Short description of the Thing with the ThingTypeUID `sample`
## Discovery
_Describe the available auto-discovery features here._
_Mention for what it works and what needs to be kept in mind when using it._
## Binding Configuration
_If your binding requires or supports general configuration settings, please create a folder ```cfg``` and place the configuration file ```<bindingId>.cfg``` inside it._
_In this section, you should link to this file and provide some information about the options._
_The file could e.g. look like:_
```
# Configuration for the MeyCan Binding
#
# Default secret key for the pairing of the MeyCan Thing.
# It has to be between 10-40 (alphanumeric) characters.
# This may be changed by the user for security reasons.
secret=openHABSecret
```
_Note that it is planned to generate some part of this based on the information that is available within ```src/main/resources/OH-INF/binding``` of your binding._
_If your binding does not offer any generic configurations, you can remove this section completely._
## Thing Configuration
_Describe what is needed to manually configure a thing, either through the UI or via a thing-file._
_This should be mainly about its mandatory and optional configuration parameters._
_Note that it is planned to generate some part of this based on the XML files within ```src/main/resources/OH-INF/thing``` of your binding._
### `sample` Thing Configuration
| Name | Type | Description | Default | Required | Advanced |
|-----------------|---------|---------------------------------------|---------|----------|----------|
| hostname | text | Hostname or IP address of the device | N/A | yes | no |
| password | text | Password to access the device | N/A | yes | no |
| refreshInterval | integer | Interval the device is polled in sec. | 600 | no | yes |
## Channels
_Here you should provide information about available channel types, what their meaning is and how they can be used._
_Note that it is planned to generate some part of this based on the XML files within ```src/main/resources/OH-INF/thing``` of your binding._
| Channel | Type | Read/Write | Description |
|---------|--------|------------|-----------------------------|
| control | Switch | RW | This is the control channel |
## Full Example
_Provide a full usage example based on textual configuration files._
_*.things, *.items examples are mandatory as textual configuration is well used by many users._
_*.sitemap examples are optional._
### Thing Configuration
```java
Example thing configuration goes here.
```
### Item Configuration
```java
Example item configuration goes here.
```
### Sitemap Configuration
```perl
Optional Sitemap configuration goes here.
Remove this section, if not needed.
```
## Any custom content here!
_Feel free to add additional sections for whatever you think should also be mentioned about your binding!_

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.addons.reactor.bundles</artifactId>
<version>4.0.0-SNAPSHOT</version>
</parent>
<artifactId>org.openhab.binding.meycan</artifactId>
<name>openHAB Add-ons :: Bundles :: MeyCan Binding</name>
</project>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<features name="org.openhab.binding.meycan-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository>
<feature name="openhab-binding-meycan" description="MeyCan Binding" version="${project.version}">
<feature>openhab-runtime-base</feature>
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.meycan/${project.version}</bundle>
</feature>
</features>

View File

@@ -0,0 +1,34 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.meycan.internal;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.thing.ThingTypeUID;
/**
* The {@link MeyCanBindingConstants} class defines common constants, which are
* used across the whole binding.
*
* @author Martin Linkwitz - Initial contribution
*/
@NonNullByDefault
public class MeyCanBindingConstants {
private static final String BINDING_ID = "meycan";
// List of all Thing Type UIDs
public static final ThingTypeUID THING_TYPE_SAMPLE = new ThingTypeUID(BINDING_ID, "sample");
// List of all Channel ids
public static final String CHANNEL_1 = "channel1";
}

View File

@@ -0,0 +1,31 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.meycan.internal;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
* The {@link MeyCanConfiguration} class contains fields mapping thing configuration parameters.
*
* @author Martin Linkwitz - Initial contribution
*/
@NonNullByDefault
public class MeyCanConfiguration {
/**
* Sample configuration parameters. Replace with your own.
*/
public String hostname = "";
public String password = "";
public int refreshInterval = 600;
}

View File

@@ -0,0 +1,104 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.meycan.internal;
import static org.openhab.binding.meycan.internal.MeyCanBindingConstants.*;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingStatus;
import org.openhab.core.thing.binding.BaseThingHandler;
import org.openhab.core.types.Command;
import org.openhab.core.types.RefreshType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The {@link MeyCanHandler} is responsible for handling commands, which are
* sent to one of the channels.
*
* @author Martin Linkwitz - Initial contribution
*/
@NonNullByDefault
public class MeyCanHandler extends BaseThingHandler {
private final Logger logger = LoggerFactory.getLogger(MeyCanHandler.class);
private @Nullable MeyCanConfiguration config;
public MeyCanHandler(Thing thing) {
super(thing);
}
@Override
public void handleCommand(ChannelUID channelUID, Command command) {
if (CHANNEL_1.equals(channelUID.getId())) {
if (command instanceof RefreshType) {
// TODO: handle data refresh
}
// TODO: handle command
// Note: if communication with thing fails for some reason,
// indicate that by setting the status with detail information:
// updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
// "Could not control device at IP address x.x.x.x");
}
}
@Override
public void initialize() {
config = getConfigAs(MeyCanConfiguration.class);
// TODO: Initialize the handler.
// The framework requires you to return from this method quickly, i.e. any network access must be done in
// the background initialization below.
// Also, before leaving this method a thing status from one of ONLINE, OFFLINE or UNKNOWN must be set. This
// might already be the real thing status in case you can decide it directly.
// In case you can not decide the thing status directly (e.g. for long running connection handshake using WAN
// access or similar) you should set status UNKNOWN here and then decide the real status asynchronously in the
// background.
// set the thing status to UNKNOWN temporarily and let the background task decide for the real status.
// the framework is then able to reuse the resources from the thing handler initialization.
// we set this upfront to reliably check status updates in unit tests.
updateStatus(ThingStatus.UNKNOWN);
// Example for background initialization:
scheduler.execute(() -> {
boolean thingReachable = true; // <background task with long running initialization here>
// when done do:
if (thingReachable) {
updateStatus(ThingStatus.ONLINE);
} else {
updateStatus(ThingStatus.OFFLINE);
}
});
// These logging types should be primarily used by bindings
// logger.trace("Example trace message");
// logger.debug("Example debug message");
// logger.warn("Example warn message");
//
// Logging to INFO should be avoided normally.
// See https://www.openhab.org/docs/developer/guidelines.html#f-logging
// Note: When initialization can NOT be done set the status with more details for further
// analysis. See also class ThingStatusDetail for all available status details.
// Add a description to give user information to understand why thing does not work as expected. E.g.
// updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
// "Can not access device as username and/or password are invalid");
}
}

View File

@@ -0,0 +1,55 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.meycan.internal;
import static org.openhab.binding.meycan.internal.MeyCanBindingConstants.*;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingTypeUID;
import org.openhab.core.thing.binding.BaseThingHandlerFactory;
import org.openhab.core.thing.binding.ThingHandler;
import org.openhab.core.thing.binding.ThingHandlerFactory;
import org.osgi.service.component.annotations.Component;
/**
* The {@link MeyCanHandlerFactory} is responsible for creating things and thing
* handlers.
*
* @author Martin Linkwitz - Initial contribution
*/
@NonNullByDefault
@Component(configurationPid = "binding.meycan", service = ThingHandlerFactory.class)
public class MeyCanHandlerFactory extends BaseThingHandlerFactory {
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_SAMPLE);
@Override
public boolean supportsThingType(ThingTypeUID thingTypeUID) {
return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID);
}
@Override
protected @Nullable ThingHandler createHandler(Thing thing) {
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
if (THING_TYPE_SAMPLE.equals(thingTypeUID)) {
return new MeyCanHandler(thing);
}
return null;
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon:addon id="meycan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:addon="https://openhab.org/schemas/addon/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/addon/v1.0.0 https://openhab.org/schemas/addon-1.0.0.xsd">
<type>binding</type>
<name>MeyCan Binding</name>
<description>This is the binding for MeyCan.</description>
</addon:addon>

View File

@@ -0,0 +1,3 @@
# FIXME: please add all English translations to this file so the texts can be translated using Crowdin
# FIXME: to generate the content of this file run: mvn i18n:generate-default-translations
# FIXME: see also: https://www.openhab.org/docs/developer/utils/i18n.html

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="meycan"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<!-- Sample Thing Type -->
<thing-type id="sample">
<!-- Comment this in for Things which need a Bridge to function.
<supported-bridge-type-refs>
<bridge-type-ref id="MeyCanBridge" />
</supported-bridge-type-refs>
-->
<label>MeyCan Binding Thing</label>
<description>Sample thing for MeyCan Binding</description>
<channels>
<channel id="channel1" typeId="sample-channel"/>
</channels>
<config-description>
<parameter name="hostname" type="text" required="true">
<context>network-address</context>
<label>Hostname</label>
<description>Hostname or IP address of the device</description>
</parameter>
<parameter name="password" type="text" required="true">
<context>password</context>
<label>Password</label>
<description>Password to access the device</description>
</parameter>
<parameter name="refreshInterval" type="integer" unit="s" min="1">
<label>Refresh Interval</label>
<description>Interval the device is polled in sec.</description>
<default>600</default>
<advanced>true</advanced>
</parameter>
</config-description>
</thing-type>
<!-- Sample Channel Type -->
<channel-type id="sample-channel">
<item-type>Number:Temperature</item-type>
<label>Example Temperature</label><!-- Use uppercase words, except prepositions. 2-3 words, max 25 chars -->
<description>Sample channel for MeyCan Binding</description>
</channel-type>
</thing:thing-descriptions>

67
Software/Protocol.txt Normal file
View File

@@ -0,0 +1,67 @@
MeyCan: PROTOCOL
ArbitartionID:
|<-- 13 bits -->| |<-- 16 bits -->|
COMMAND DEVICE_ID
ABC 0x14 6A
COMMAND: The Command or data type transfered. -> 2^11 = 2048 Package-Types
DEVICE_ID: A unique id for the device within the CAN Network (Home) -> 2^18 bit = 65.536 devices allowed
Packages
---------------------------------
0xF00: HELLO->ADOPT
Payload:
2 bytes | Byte -> Software-Version (1.0)
2 bytes | Byte -> Hw Version (4.0)
1 bytes | DeviceTypeId
| 1: Switch
| 2: Switch + Rule
| 3: UP
0x050: Input Switch Triggered
-> Broadcast
---------------------------------
Payload:
1 byte| PinId -> Id of the pin of the local board.
1 byte| State -> 1 for Switched, 0 for Unswitched
0x055: Command Set Switch
-> Broadcast
---------------------------------
2 bytes | TargetDeviceId -> The id of the device to set the pin of
1 byte | PinId -> Idof the pin of the board
1 byte | state -> 1 to swtich on, 0 to switch off
0x010: Request Remote Pin State
-> Broadcast
---------------------------------
2 bytes | TargetDeviceId -> The id of the board to request the remote pin states from. This needs to be a control device (not UP)
1 byte | 0: Request
| 1: Response
DAT |
-- n Items of format ------------
* 2 byte: DeviceId
* 1 byte: The State
0x009: Debug
-> Debug Package
----------------------------------
some debug information
0xAA AudioStream #1
0xAB AudioStream #2
0xBA AudioStream #3
0xBB AudioStream #4
0xAAXX -> XX = Sequence Counter
0xY -> Reserve - Flag
|<-- 4 bits -->| |<-- 24 bits -->|
-> 3 Byte / Paket

Binary file not shown.

7
Software/Switch/.vscode/arduino.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"configuration": "pinout=48pin_standard,eeprom=keep,resetpin=reset,BOD=2v6,clock=internal_8MHz,bootloader=no_bootloader",
"board": "MegaCoreX:megaavr:809",
"sketch": "Switch.ino",
"port": "COM6",
"programmer": "jtag2updi"
}

View File

@@ -0,0 +1,540 @@
{
"version": 4,
"configurations": [
{
"name": "Arduino",
"compilerPath": "C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\bin\\avr-g++",
"compilerArgs": [
"-w",
"-std=gnu++17",
"-fpermissive",
"-fno-exceptions",
"-ffunction-sections",
"-fdata-sections",
"-fno-threadsafe-statics",
"-Wno-error=narrowing"
],
"intelliSenseMode": "gcc-x64",
"includePath": [
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles\\api\\deprecated",
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles",
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\variants\\48pin-standard",
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\libraries\\SPI\\src",
"C:\\Users\\Martin\\Documents\\Arduino\\libraries\\autowp-mcp2515",
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include",
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include-fixed",
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\avr\\include"
],
"forcedInclude": [
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles\\Arduino.h"
],
"cStandard": "c11",
"cppStandard": "c++17",
"defines": [
"F_CPU=8000000L",
"ARDUINO=10607",
"ARDUINO_AVR_ATmega809",
"ARDUINO_ARCH_MEGAAVR",
"__DBL_MIN_EXP__=(-125)",
"__HQ_FBIT__=15",
"__cpp_attributes=200809",
"__UINT_LEAST16_MAX__=0xffffU",
"__ATOMIC_ACQUIRE=2",
"__SFRACT_IBIT__=0",
"__FLT_MIN__=1.17549435e-38F",
"__GCC_IEC_559_COMPLEX=0",
"__BUILTIN_AVR_SLEEP=1",
"__BUILTIN_AVR_COUNTLSULLK=1",
"__cpp_aggregate_nsdmi=201304",
"__BUILTIN_AVR_COUNTLSULLR=1",
"__UFRACT_MAX__=0XFFFFP-16UR",
"__UINT_LEAST8_TYPE__=unsigned char",
"__DQ_FBIT__=63",
"__INTMAX_C(c)=c ## LL",
"__ULFRACT_FBIT__=32",
"__SACCUM_EPSILON__=0x1P-7HK",
"__CHAR_BIT__=8",
"__USQ_IBIT__=0",
"__UINT8_MAX__=0xff",
"__ACCUM_FBIT__=15",
"__WINT_MAX__=0x7fff",
"__FLT32_MIN_EXP__=(-125)",
"__cpp_static_assert=200410",
"__USFRACT_FBIT__=8",
"__ORDER_LITTLE_ENDIAN__=1234",
"__SIZE_MAX__=0xffffU",
"__WCHAR_MAX__=0x7fff",
"__LACCUM_IBIT__=32",
"__DBL_DENORM_MIN__=double(1.40129846e-45L)",
"__GCC_ATOMIC_CHAR_LOCK_FREE=1",
"__GCC_IEC_559=0",
"__FLT_EVAL_METHOD__=0",
"__BUILTIN_AVR_LLKBITS=1",
"__cpp_binary_literals=201304",
"__LLACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-47LLK",
"__GCC_ATOMIC_CHAR32_T_LOCK_FREE=1",
"__BUILTIN_AVR_HKBITS=1",
"__BUILTIN_AVR_BITSLLK=1",
"__FRACT_FBIT__=15",
"__BUILTIN_AVR_BITSLLR=1",
"__cpp_variadic_templates=200704",
"__UINT_FAST64_MAX__=0xffffffffffffffffULL",
"__SIG_ATOMIC_TYPE__=char",
"__BUILTIN_AVR_UHKBITS=1",
"__UACCUM_FBIT__=16",
"__DBL_MIN_10_EXP__=(-37)",
"__FINITE_MATH_ONLY__=0",
"__cpp_variable_templates=201304",
"__LFRACT_IBIT__=0",
"__GNUC_PATCHLEVEL__=0",
"__FLT32_HAS_DENORM__=1",
"__LFRACT_MAX__=0X7FFFFFFFP-31LR",
"__UINT_FAST8_MAX__=0xff",
"__has_include(STR)=__has_include__(STR)",
"__DEC64_MAX_EXP__=385",
"__INT8_C(c)=c",
"__INT_LEAST8_WIDTH__=8",
"__UINT_LEAST64_MAX__=0xffffffffffffffffULL",
"__SA_FBIT__=15",
"__SHRT_MAX__=0x7fff",
"__LDBL_MAX__=3.40282347e+38L",
"__FRACT_MAX__=0X7FFFP-15R",
"__UFRACT_FBIT__=16",
"__UFRACT_MIN__=0.0UR",
"__UINT_LEAST8_MAX__=0xff",
"__GCC_ATOMIC_BOOL_LOCK_FREE=1",
"__UINTMAX_TYPE__=long long unsigned int",
"__LLFRACT_EPSILON__=0x1P-63LLR",
"__BUILTIN_AVR_DELAY_CYCLES=1",
"__DEC32_EPSILON__=1E-6DF",
"__FLT_EVAL_METHOD_TS_18661_3__=0",
"__UINT32_MAX__=0xffffffffUL",
"__GXX_EXPERIMENTAL_CXX0X__=1",
"__ULFRACT_MAX__=0XFFFFFFFFP-32ULR",
"__TA_IBIT__=16",
"__LDBL_MAX_EXP__=128",
"__WINT_MIN__=(-__WINT_MAX__ - 1)",
"__INT_LEAST16_WIDTH__=16",
"__ULLFRACT_MIN__=0.0ULLR",
"__SCHAR_MAX__=0x7f",
"__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)",
"__INT64_C(c)=c ## LL",
"__DBL_DIG__=6",
"__GCC_ATOMIC_POINTER_LOCK_FREE=1",
"__AVR_HAVE_SPH__=1",
"__LLACCUM_MIN__=(-0X1P15LLK-0X1P15LLK)",
"__BUILTIN_AVR_KBITS=1",
"__BUILTIN_AVR_ABSK=1",
"__BUILTIN_AVR_ABSR=1",
"__SIZEOF_INT__=2",
"__SIZEOF_POINTER__=2",
"__GCC_ATOMIC_CHAR16_T_LOCK_FREE=1",
"__USACCUM_IBIT__=8",
"__USER_LABEL_PREFIX__",
"__STDC_HOSTED__=1",
"__LDBL_HAS_INFINITY__=1",
"__LFRACT_MIN__=(-0.5LR-0.5LR)",
"__HA_IBIT__=8",
"__FLT32_DIG__=6",
"__TQ_IBIT__=0",
"__FLT_EPSILON__=1.19209290e-7F",
"__GXX_WEAK__=1",
"__SHRT_WIDTH__=16",
"__USFRACT_IBIT__=0",
"__LDBL_MIN__=1.17549435e-38L",
"__FRACT_MIN__=(-0.5R-0.5R)",
"__AVR_SFR_OFFSET__=0x20",
"__DEC32_MAX__=9.999999E96DF",
"__cpp_threadsafe_static_init=200806",
"__DA_IBIT__=32",
"__INT32_MAX__=0x7fffffffL",
"__UQQ_FBIT__=8",
"__INT_WIDTH__=16",
"__SIZEOF_LONG__=4",
"__UACCUM_MAX__=0XFFFFFFFFP-16UK",
"__UINT16_C(c)=c ## U",
"__PTRDIFF_WIDTH__=16",
"__DECIMAL_DIG__=9",
"__LFRACT_EPSILON__=0x1P-31LR",
"__AVR_2_BYTE_PC__=1",
"__ULFRACT_MIN__=0.0ULR",
"__INTMAX_WIDTH__=64",
"__has_include_next(STR)=__has_include_next__(STR)",
"__BUILTIN_AVR_ULLRBITS=1",
"__LDBL_HAS_QUIET_NAN__=1",
"__ULACCUM_IBIT__=32",
"__UACCUM_EPSILON__=0x1P-16UK",
"__BUILTIN_AVR_SEI=1",
"__GNUC__=7",
"__ULLACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-48ULLK",
"__cpp_delegating_constructors=200604",
"__HQ_IBIT__=0",
"__BUILTIN_AVR_SWAP=1",
"__FLT_HAS_DENORM__=1",
"__SIZEOF_LONG_DOUBLE__=4",
"__BIGGEST_ALIGNMENT__=1",
"__STDC_UTF_16__=1",
"__UINT24_MAX__=16777215UL",
"__BUILTIN_AVR_NOP=1",
"__GNUC_STDC_INLINE__=1",
"__DQ_IBIT__=0",
"__FLT32_HAS_INFINITY__=1",
"__DBL_MAX__=double(3.40282347e+38L)",
"__ULFRACT_IBIT__=0",
"__cpp_raw_strings=200710",
"__INT_FAST32_MAX__=0x7fffffffL",
"__DBL_HAS_INFINITY__=1",
"__INT64_MAX__=0x7fffffffffffffffLL",
"__ACCUM_IBIT__=16",
"__DEC32_MIN_EXP__=(-94)",
"__BUILTIN_AVR_UKBITS=1",
"__INTPTR_WIDTH__=16",
"__BUILTIN_AVR_FMULSU=1",
"__LACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-31LK",
"__INT_FAST16_TYPE__=int",
"__LDBL_HAS_DENORM__=1",
"__BUILTIN_AVR_BITSK=1",
"__BUILTIN_AVR_BITSR=1",
"__cplusplus=201402L",
"__cpp_ref_qualifiers=200710",
"__DEC128_MAX__=9.999999999999999999999999999999999E6144DL",
"__INT_LEAST32_MAX__=0x7fffffffL",
"__USING_SJLJ_EXCEPTIONS__=1",
"__DEC32_MIN__=1E-95DF",
"__ACCUM_MAX__=0X7FFFFFFFP-15K",
"__DEPRECATED=1",
"__cpp_rvalue_references=200610",
"__DBL_MAX_EXP__=128",
"__USACCUM_EPSILON__=0x1P-8UHK",
"__WCHAR_WIDTH__=16",
"__FLT32_MAX__=3.40282347e+38F32",
"__DEC128_EPSILON__=1E-33DL",
"__SFRACT_MAX__=0X7FP-7HR",
"__FRACT_IBIT__=0",
"__PTRDIFF_MAX__=0x7fff",
"__UACCUM_MIN__=0.0UK",
"__UACCUM_IBIT__=16",
"__BUILTIN_AVR_NOPS=1",
"__BUILTIN_AVR_WDR=1",
"__FLT32_HAS_QUIET_NAN__=1",
"__GNUG__=7",
"__LONG_LONG_MAX__=0x7fffffffffffffffLL",
"__SIZEOF_SIZE_T__=2",
"__ULACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-32ULK",
"__cpp_rvalue_reference=200610",
"__cpp_nsdmi=200809",
"__SIZEOF_WINT_T__=2",
"__LONG_LONG_WIDTH__=64",
"__cpp_initializer_lists=200806",
"__FLT32_MAX_EXP__=128",
"__SA_IBIT__=16",
"__ULLACCUM_MIN__=0.0ULLK",
"__BUILTIN_AVR_ROUNDUHK=1",
"__BUILTIN_AVR_ROUNDUHR=1",
"__cpp_hex_float=201603",
"__GXX_ABI_VERSION=1011",
"__INT24_MAX__=8388607L",
"__UTA_FBIT__=48",
"__FLT_MIN_EXP__=(-125)",
"__USFRACT_MAX__=0XFFP-8UHR",
"__UFRACT_IBIT__=0",
"__BUILTIN_AVR_ROUNDFX=1",
"__BUILTIN_AVR_ROUNDULK=1",
"__BUILTIN_AVR_ROUNDULR=1",
"__cpp_lambdas=200907",
"__BUILTIN_AVR_COUNTLSLLK=1",
"__BUILTIN_AVR_COUNTLSLLR=1",
"__BUILTIN_AVR_ROUNDHK=1",
"__INT_FAST64_TYPE__=long long int",
"__BUILTIN_AVR_ROUNDHR=1",
"__DBL_MIN__=double(1.17549435e-38L)",
"__BUILTIN_AVR_COUNTLSK=1",
"__BUILTIN_AVR_ROUNDLK=1",
"__BUILTIN_AVR_COUNTLSR=1",
"__BUILTIN_AVR_ROUNDLR=1",
"__LACCUM_MIN__=(-0X1P31LK-0X1P31LK)",
"__ULLACCUM_FBIT__=48",
"__BUILTIN_AVR_LKBITS=1",
"__ULLFRACT_EPSILON__=0x1P-64ULLR",
"__DEC128_MIN__=1E-6143DL",
"__REGISTER_PREFIX__",
"__UINT16_MAX__=0xffffU",
"__DBL_HAS_DENORM__=1",
"__BUILTIN_AVR_ULKBITS=1",
"__ACCUM_MIN__=(-0X1P15K-0X1P15K)",
"__AVR_ARCH__=2",
"__SQ_IBIT__=0",
"__FLT32_MIN__=1.17549435e-38F32",
"__UINT8_TYPE__=unsigned char",
"__BUILTIN_AVR_ROUNDUK=1",
"__BUILTIN_AVR_ROUNDUR=1",
"__UHA_FBIT__=8",
"__NO_INLINE__=1",
"__SFRACT_MIN__=(-0.5HR-0.5HR)",
"__UTQ_FBIT__=128",
"__FLT_MANT_DIG__=24",
"__LDBL_DECIMAL_DIG__=9",
"__VERSION__=\"7.3.0\"",
"__UINT64_C(c)=c ## ULL",
"__ULLFRACT_FBIT__=64",
"__cpp_unicode_characters=200704",
"__FRACT_EPSILON__=0x1P-15R",
"__ULACCUM_MIN__=0.0ULK",
"__UDA_FBIT__=32",
"__cpp_decltype_auto=201304",
"__LLACCUM_EPSILON__=0x1P-47LLK",
"__GCC_ATOMIC_INT_LOCK_FREE=1",
"__FLT32_MANT_DIG__=24",
"__BUILTIN_AVR_BITSUHK=1",
"__BUILTIN_AVR_BITSUHR=1",
"__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__",
"__USFRACT_MIN__=0.0UHR",
"__BUILTIN_AVR_BITSULK=1",
"__ULLACCUM_IBIT__=16",
"__BUILTIN_AVR_BITSULR=1",
"__UQQ_IBIT__=0",
"__BUILTIN_AVR_LLRBITS=1",
"__SCHAR_WIDTH__=8",
"__BUILTIN_AVR_BITSULLK=1",
"__BUILTIN_AVR_BITSULLR=1",
"__INT32_C(c)=c ## L",
"__DEC64_EPSILON__=1E-15DD",
"__ORDER_PDP_ENDIAN__=3412",
"__DEC128_MIN_EXP__=(-6142)",
"__UHQ_FBIT__=16",
"__LLACCUM_FBIT__=47",
"__FLT32_MAX_10_EXP__=38",
"__BUILTIN_AVR_ROUNDULLK=1",
"__BUILTIN_AVR_ROUNDULLR=1",
"__INT_FAST32_TYPE__=long int",
"__BUILTIN_AVR_HRBITS=1",
"__UINT_LEAST16_TYPE__=unsigned int",
"__BUILTIN_AVR_UHRBITS=1",
"__INT16_MAX__=0x7fff",
"__SIZE_TYPE__=unsigned int",
"__UINT64_MAX__=0xffffffffffffffffULL",
"__UDQ_FBIT__=64",
"__INT8_TYPE__=signed char",
"__cpp_digit_separators=201309",
"__ELF__=1",
"__ULFRACT_EPSILON__=0x1P-32ULR",
"__LLFRACT_FBIT__=63",
"__FLT_RADIX__=2",
"__INT_LEAST16_TYPE__=int",
"__BUILTIN_AVR_ABSFX=1",
"__LDBL_EPSILON__=1.19209290e-7L",
"__UINTMAX_C(c)=c ## ULL",
"__INT24_MIN__=(-__INT24_MAX__-1)",
"__SACCUM_MAX__=0X7FFFP-7HK",
"__BUILTIN_AVR_ABSHR=1",
"__SIG_ATOMIC_MAX__=0x7f",
"__GCC_ATOMIC_WCHAR_T_LOCK_FREE=1",
"__cpp_sized_deallocation=201309",
"__SIZEOF_PTRDIFF_T__=2",
"__AVR=1",
"__BUILTIN_AVR_ABSLK=1",
"__BUILTIN_AVR_ABSLR=1",
"__LACCUM_EPSILON__=0x1P-31LK",
"__DEC32_SUBNORMAL_MIN__=0.000001E-95DF",
"__INT_FAST16_MAX__=0x7fff",
"__UINT_FAST32_MAX__=0xffffffffUL",
"__UINT_LEAST64_TYPE__=long long unsigned int",
"__USACCUM_MAX__=0XFFFFP-8UHK",
"__SFRACT_EPSILON__=0x1P-7HR",
"__FLT_HAS_QUIET_NAN__=1",
"__FLT_MAX_10_EXP__=38",
"__LONG_MAX__=0x7fffffffL",
"__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL",
"__FLT_HAS_INFINITY__=1",
"__cpp_unicode_literals=200710",
"__USA_FBIT__=16",
"__UINT_FAST16_TYPE__=unsigned int",
"__DEC64_MAX__=9.999999999999999E384DD",
"__INT_FAST32_WIDTH__=32",
"__BUILTIN_AVR_RBITS=1",
"__CHAR16_TYPE__=unsigned int",
"__PRAGMA_REDEFINE_EXTNAME=1",
"__SIZE_WIDTH__=16",
"__INT_LEAST16_MAX__=0x7fff",
"__DEC64_MANT_DIG__=16",
"__UINT_LEAST32_MAX__=0xffffffffUL",
"__SACCUM_FBIT__=7",
"__FLT32_DENORM_MIN__=1.40129846e-45F32",
"__GCC_ATOMIC_LONG_LOCK_FREE=1",
"__SIG_ATOMIC_WIDTH__=8",
"__INT_LEAST64_TYPE__=long long int",
"__INT16_TYPE__=int",
"__INT_LEAST8_TYPE__=signed char",
"__SQ_FBIT__=31",
"__DEC32_MAX_EXP__=97",
"__INT_FAST8_MAX__=0x7f",
"__INTPTR_MAX__=0x7fff",
"__QQ_FBIT__=7",
"__cpp_range_based_for=200907",
"__UTA_IBIT__=16",
"__AVR_ERRATA_SKIP__=1",
"__FLT32_MIN_10_EXP__=(-37)",
"__LDBL_MANT_DIG__=24",
"__SFRACT_FBIT__=7",
"__SACCUM_MIN__=(-0X1P7HK-0X1P7HK)",
"__DBL_HAS_QUIET_NAN__=1",
"__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)",
"AVR=1",
"__BUILTIN_AVR_FMULS=1",
"__cpp_return_type_deduction=201304",
"__INTPTR_TYPE__=int",
"__UINT16_TYPE__=unsigned int",
"__WCHAR_TYPE__=int",
"__SIZEOF_FLOAT__=4",
"__AVR__=1",
"__BUILTIN_AVR_INSERT_BITS=1",
"__USQ_FBIT__=32",
"__UINTPTR_MAX__=0xffffU",
"__INT_FAST64_WIDTH__=64",
"__DEC64_MIN_EXP__=(-382)",
"__cpp_decltype=200707",
"__FLT32_DECIMAL_DIG__=9",
"__INT_FAST64_MAX__=0x7fffffffffffffffLL",
"__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1",
"__FLT_DIG__=6",
"__UINT_FAST64_TYPE__=long long unsigned int",
"__BUILTIN_AVR_BITSHK=1",
"__BUILTIN_AVR_BITSHR=1",
"__INT_MAX__=0x7fff",
"__LACCUM_FBIT__=31",
"__USACCUM_MIN__=0.0UHK",
"__UHA_IBIT__=8",
"__INT64_TYPE__=long long int",
"__BUILTIN_AVR_BITSLK=1",
"__BUILTIN_AVR_BITSLR=1",
"__FLT_MAX_EXP__=128",
"__UTQ_IBIT__=0",
"__DBL_MANT_DIG__=24",
"__cpp_inheriting_constructors=201511",
"__BUILTIN_AVR_ULLKBITS=1",
"__INT_LEAST64_MAX__=0x7fffffffffffffffLL",
"__DEC64_MIN__=1E-383DD",
"__WINT_TYPE__=int",
"__UINT_LEAST32_TYPE__=long unsigned int",
"__SIZEOF_SHORT__=2",
"__ULLFRACT_IBIT__=0",
"__LDBL_MIN_EXP__=(-125)",
"__UDA_IBIT__=32",
"__WINT_WIDTH__=16",
"__INT_LEAST8_MAX__=0x7f",
"__LFRACT_FBIT__=31",
"__LDBL_MAX_10_EXP__=38",
"__ATOMIC_RELAXED=0",
"__DBL_EPSILON__=double(1.19209290e-7L)",
"__BUILTIN_AVR_BITSUK=1",
"__BUILTIN_AVR_BITSUR=1",
"__UINT8_C(c)=c",
"__INT_LEAST32_TYPE__=long int",
"__BUILTIN_AVR_URBITS=1",
"__SIZEOF_WCHAR_T__=2",
"__LLFRACT_MAX__=0X7FFFFFFFFFFFFFFFP-63LLR",
"__TQ_FBIT__=127",
"__INT_FAST8_TYPE__=signed char",
"__ULLACCUM_EPSILON__=0x1P-48ULLK",
"__BUILTIN_AVR_ROUNDK=1",
"__BUILTIN_AVR_ROUNDR=1",
"__UHQ_IBIT__=0",
"__LLACCUM_IBIT__=16",
"__FLT32_EPSILON__=1.19209290e-7F32",
"__DBL_DECIMAL_DIG__=9",
"__STDC_UTF_32__=1",
"__INT_FAST8_WIDTH__=8",
"__DEC_EVAL_METHOD__=2",
"__TA_FBIT__=47",
"__UDQ_IBIT__=0",
"__ORDER_BIG_ENDIAN__=4321",
"__cpp_runtime_arrays=198712",
"__WITH_AVRLIBC__=1",
"__UINT64_TYPE__=long long unsigned int",
"__ACCUM_EPSILON__=0x1P-15K",
"__UINT32_C(c)=c ## UL",
"__BUILTIN_AVR_COUNTLSUHK=1",
"__INTMAX_MAX__=0x7fffffffffffffffLL",
"__cpp_alias_templates=200704",
"__BUILTIN_AVR_COUNTLSUHR=1",
"__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__",
"__FLT_DENORM_MIN__=1.40129846e-45F",
"__LLFRACT_IBIT__=0",
"__INT8_MAX__=0x7f",
"__LONG_WIDTH__=32",
"__UINT_FAST32_TYPE__=long unsigned int",
"__CHAR32_TYPE__=long unsigned int",
"__BUILTIN_AVR_COUNTLSULK=1",
"__BUILTIN_AVR_COUNTLSULR=1",
"__FLT_MAX__=3.40282347e+38F",
"__cpp_constexpr=201304",
"__USACCUM_FBIT__=8",
"__BUILTIN_AVR_COUNTLSFX=1",
"__INT32_TYPE__=long int",
"__SIZEOF_DOUBLE__=4",
"__FLT_MIN_10_EXP__=(-37)",
"__UFRACT_EPSILON__=0x1P-16UR",
"__INT_LEAST32_WIDTH__=32",
"__BUILTIN_AVR_COUNTLSHK=1",
"__BUILTIN_AVR_COUNTLSHR=1",
"__INTMAX_TYPE__=long long int",
"__BUILTIN_AVR_ABSLLK=1",
"__BUILTIN_AVR_ABSLLR=1",
"__DEC128_MAX_EXP__=6145",
"__AVR_HAVE_16BIT_SP__=1",
"__ATOMIC_CONSUME=1",
"__GNUC_MINOR__=3",
"__INT_FAST16_WIDTH__=16",
"__UINTMAX_MAX__=0xffffffffffffffffULL",
"__DEC32_MANT_DIG__=7",
"__HA_FBIT__=7",
"__BUILTIN_AVR_COUNTLSLK=1",
"__BUILTIN_AVR_COUNTLSLR=1",
"__BUILTIN_AVR_CLI=1",
"__DBL_MAX_10_EXP__=38",
"__LDBL_DENORM_MIN__=1.40129846e-45L",
"__INT16_C(c)=c",
"__cpp_generic_lambdas=201304",
"__STDC__=1",
"__PTRDIFF_TYPE__=int",
"__LLFRACT_MIN__=(-0.5LLR-0.5LLR)",
"__BUILTIN_AVR_LRBITS=1",
"__ATOMIC_SEQ_CST=5",
"__DA_FBIT__=31",
"__UINT32_TYPE__=long unsigned int",
"__BUILTIN_AVR_ROUNDLLK=1",
"__UINTPTR_TYPE__=unsigned int",
"__BUILTIN_AVR_ROUNDLLR=1",
"__USA_IBIT__=16",
"__BUILTIN_AVR_ULRBITS=1",
"__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD",
"__DEC128_MANT_DIG__=34",
"__LDBL_MIN_10_EXP__=(-37)",
"__BUILTIN_AVR_COUNTLSUK=1",
"__BUILTIN_AVR_COUNTLSUR=1",
"__SIZEOF_LONG_LONG__=8",
"__ULACCUM_EPSILON__=0x1P-32ULK",
"__cpp_user_defined_literals=200809",
"__SACCUM_IBIT__=8",
"__GCC_ATOMIC_LLONG_LOCK_FREE=1",
"__LDBL_DIG__=6",
"__FLT_DECIMAL_DIG__=9",
"__UINT_FAST16_MAX__=0xffffU",
"__GCC_ATOMIC_SHORT_LOCK_FREE=1",
"__BUILTIN_AVR_ABSHK=1",
"__BUILTIN_AVR_FLASH_SEGMENT=1",
"__INT_LEAST64_WIDTH__=64",
"__ULLFRACT_MAX__=0XFFFFFFFFFFFFFFFFP-64ULLR",
"__UINT_FAST8_TYPE__=unsigned char",
"__USFRACT_EPSILON__=0x1P-8UHR",
"__ULACCUM_FBIT__=32",
"__QQ_IBIT__=0",
"__cpp_init_captures=201304",
"__ATOMIC_ACQ_REL=4",
"__ATOMIC_RELEASE=3",
"__BUILTIN_AVR_FMUL=1",
"USBCON"
]
}
]
}

232
Software/Switch/MeyCan.cpp Normal file
View File

@@ -0,0 +1,232 @@
#include "MeyCan.h";
#include <SPI.h>;
#include <mcp2515.h>;
PinState *MeyPin = NULL;
CanInterface *CanBusses = NULL;
uint16_t myDeviceId;
byte _deviceTypeId = 0;
byte _majorHardwareVersion = 0;
byte _minorHardwareVersion = 0;
void (*LocalPinChangedHandler)(can_frame *frame);
void SetupMeyPin(PinState *state) {
pinMode(state->pin_id, OUTPUT);
digitalWrite(state->pin_id, LOW);
state->pin_state = false;
}
void InitCanInterface(MCP2515 *interface, can_frame *frame) // can_frame is NULL. Reuse ForEach Method for smaller footprint
{
interface->reset();
interface->setBitrate(CAN_1000KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
interface->setNormalMode();
SendVersionPackage(interface);
}
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace)) {
CanBusses->ForEachInterface(handle);
}
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId) {
_majorHardwareVersion = majorHardwareVersion;
_minorHardwareVersion = minorHardwareVersion;
_deviceTypeId = deviceTypeId;
if (MeyPin != NULL)
;
MeyPin->ForEach(SetupMeyPin);
if (CanBusses != NULL) {
CanBusses->ForEach(InitCanInterface, NULL);
}
}
void AddCanInterface(byte pinId) {
MCP2515 *newCanInterface = new MCP2515(pinId);
CanInterface *canInterface = new CanInterface();
canInterface->interface = newCanInterface;
if (CanBusses == NULL)
CanBusses = canInterface;
else
CanBusses->AddCanInterface(canInterface);
}
void AddLocalPinChangedHandler(void (*localPinChangedHandler)(can_frame *frame)) {
LocalPinChangedHandler = localPinChangedHandler;
}
void SetDevicedId(byte high, byte low) {
myDeviceId = (high << 8) | low;
}
void SetMeyPin(byte meyPinId, byte pinId) {
PinState *newState = new PinState();
newState->Init(pinId, (byte)meyPinId);
if (MeyPin == NULL)
MeyPin = newState;
else
MeyPin->AddPinState(newState);
}
bool CheckPinStatus(PinState *state) {
if (!state->is_input)
return false;
bool newValue = ReadPin(state);
if (newValue != state->pin_state) {
delay(10);
newValue = ReadPin(state);
if (newValue != state->pin_state) {
state->pin_state = newValue;
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
}
}
return false;
}
void CheckMeyPinsTriggered() {
MeyPin->ForEach(CheckPinStatus);
}
bool ReadPin(PinState *state) {
return digitalRead(state->pin_id);
}
void HandleFrame(can_frame *frame, MCP2515 *source) {
CanBusses->ForEach(DoSendCanPkg, frame, source);
HandleTriggerMeypinCanPackage(frame);
}
void HandleTriggerMeypinCanPackage(can_frame *frame) {
if (GetPackageType(frame->can_id) == TRIGGER_SWITCH_CAN_ID) {
uint16_t adressedDeviceId = ((uint16_t)frame->data[0] << 8) | frame->data[1];
if (adressedDeviceId != myDeviceId) return;
byte meyPinId = frame->data[2];
bool state = frame->data[3] > 0;
PinState *adressedPin = MeyPin->Find(meyPinId);
if (adressedPin != NULL) {
if (adressedPin->is_input == true) {
pinMode(adressedPin->pin_id, OUTPUT);
adressedPin->is_input = false;
}
bool pinChanged = adressedPin->pin_state != state;
adressedPin->pin_state = state;
if (pinChanged) {
digitalWrite(adressedPin->pin_id, state);
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
}
}
}
}
byte CircularShift(byte b) {
return (b << 1) | (b >> 7 & 1);
}
uint16_t GetDeviceId(uint32_t canFrameId) {
return canFrameId & 0xFFFF;
}
uint16_t GetPackageType(uint32_t canFrameId) {
return (canFrameId / 0x10000) & 0xFFF;
}
uint32_t CreateCanId(uint16_t commandId) {
return ((((uint32_t)commandId) & 0xFFF) * 0x10000) | myDeviceId | CAN_EFF_FLAG;
}
void SendVersionPackage(MCP2515 *interface) {
can_frame toSend;
toSend.can_id = CreateCanId(HELP_PACKAGE_CAN_ID);
toSend.can_dlc = 5;
toSend.data[0] = SOFTWARE_VERSION_HIGH;
toSend.data[1] = SOFTWARE_VERSION_LOW;
toSend.data[2] = _majorHardwareVersion;
toSend.data[3] = _minorHardwareVersion;
toSend.data[4] = _deviceTypeId;
DoSendCanPkg(interface, &toSend);
}
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state) {
can_frame toSend;
toSend.can_id = CreateCanId(TRIGGER_SWITCH_CAN_ID);
toSend.can_dlc = 4;
toSend.data[0] = (targetCanId & 0xFF00) >> 8;
toSend.data[1] = targetCanId & 0xFF;
toSend.data[2] = pinId;
toSend.data[3] = state;
HandleFrame(&toSend, NULL);
}
void BroadcastDebugPackage(uint8_t length, byte *data) {
can_frame toSend;
toSend.can_id = CreateCanId(DEBUG_PKG_CAN_ID);
toSend.can_dlc = length;
for (int i = 0; i < length; i++) {
toSend.data[i] = data[i];
}
HandleFrame(&toSend, NULL);
}
void BroadcastDebugPackage(byte b0, byte b1) {
byte data[2];
data[0] = b0;
data[1] = b1;
BroadcastDebugPackage(2, data);
}
void BroadcastDebugPackage(byte b0, byte b1, byte b2) {
byte data[3];
data[0] = b0;
data[1] = b1;
data[2] = b2;
BroadcastDebugPackage(3, data);
}
void SendSwitchedTriggeredCanPackage(byte pinId, int state) {
can_frame toSend;
toSend.can_id = CreateCanId(SWITCH_TRIGGERED_CAN_ID);
toSend.can_dlc = 2;
toSend.data[0] = pinId;
toSend.data[1] = state;
DoSendCanPkg(&toSend);
if (LocalPinChangedHandler) {
LocalPinChangedHandler(&toSend);
}
}
void DoSendCanPkg(can_frame *frame) {
if (CanBusses != NULL)
CanBusses->ForEach(DoSendCanPkg, frame);
}
void DoSendCanPkg(MCP2515 *interface, can_frame *frame) {
byte cnt = 0;
while (interface->sendMessage(frame)) {
if (++cnt > 10) return;
}
}

139
Software/Switch/MeyCan.h Normal file
View File

@@ -0,0 +1,139 @@
#ifndef MEYCAN_H
#define MEYCAN_H
#include <SPI.h>
#include <mcp2515.h>
typedef struct CanInterface
{
MCP2515 *interface;
CanInterface *next = NULL;
void ForEachInterface(void (*handle)( MCP2515 *interface))
{
if (this->interface != NULL)
handle(this->interface);
if (this->next != NULL)
this->next->ForEachInterface(handle);
}
void ForEach(void (*handle)( MCP2515 *interface, can_frame *frame), can_frame *frame, MCP2515* exclude = NULL)
{
if (this->interface != NULL && this->interface != exclude)
handle(this->interface, frame);
if (this->next != NULL)
this->next->ForEach(handle, frame, exclude);
}
void AddCanInterface(CanInterface *newCanInterface)
{
if (next == NULL)
{
this->next = newCanInterface;
newCanInterface->next = NULL;
} else {
next->AddCanInterface(newCanInterface);
}
}
};
typedef struct PinState
{
int pin_id;
bool pin_state;
bool is_input;
byte meyPinId;
PinState *next = NULL;
PinState() {}
void Init(int pin_id, byte meyPinId)
{
this->pin_id = pin_id;
this->pin_state = true;
this->is_input = true;
this->meyPinId = meyPinId;
}
void AddPinState(PinState *nextPinState)
{
if (next == NULL)
{
this->next = nextPinState;
nextPinState->next = NULL;
} else {
next->AddPinState(nextPinState);
}
}
PinState* Find(byte meyPinId)
{
if (this->meyPinId == meyPinId)
return this;
if (this->next != NULL)
return this->next->Find(meyPinId);
return NULL;
}
void ForEach(void (*handle)(PinState *theState))
{
handle(this);
if (this->next != NULL)
this->next->ForEach(handle);
}
};
const byte SOFTWARE_VERSION_HIGH = 5;
const byte SOFTWARE_VERSION_LOW = 0;
const byte HARDWARE_VERSION_HIGH = 7;
const byte HARDWARE_VERSION_LOW = 0;
const uint16_t HELP_PACKAGE_CAN_ID = 0x0FFFUL;
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
const uint16_t TRIGGER_SWITCH_CAN_ID = 0x0055;
const uint16_t DEBUG_PKG_CAN_ID = 0x0009;
void SetDevicedId(byte high, byte low);
void SetMeyPin(byte meyPinId, byte pinId);
// we need to put the local change to the rules engine. otherwise local changes on a pin will not come to the rules state.
void AddLocalPinChangedHandler(void (*localPinChangedHandler)(can_frame *frame));
void AddCanInterface(byte pinId);
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace));
bool ReadPin(PinState *state);
bool CheckPinStatus(PinState * state);
void CheckMeyPinsTriggered(); /* checks weather a meypin triggered and sends a can pkg is neccessary */
void HandleFrame(can_frame *frame, MCP2515 *source);
void HandleTriggerMeypinCanPackage(can_frame *frame);
byte CircularShift(byte b);
uint16_t GetDeviceId(uint32_t canFrameId);
uint16_t GetPackageType(uint32_t canFrameId);
byte GetDeviceIdLow();
byte GetDeviceIdHigh();
uint32_t CreateCanId(uint16_t commandId);
void SendVersionPackage(MCP2515 *interface);
void SendSwitchedTriggeredCanPackage(byte pinId, int state);
void BroadcastDebugPackage(byte b0, byte b1);
void BroadcastDebugPackage(byte b0, byte b1, byte b2);
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state);
void DoSendCanPkg(can_frame *frame);
void DoSendCanPkg(MCP2515 *interface, can_frame *frame);
void CalculateMyDeviceId();
#endif

117
Software/Switch/MeyRule.cpp Normal file
View File

@@ -0,0 +1,117 @@
#include "MeyRule.h"
#include "MeyCan.h"
#include <Arduino.h>
#include <mcp2515.h>;
RemotePinInfo remotePinInfo = RemotePinInfo();
Rule *rules = NULL;
void PutRule(Rule *rule) {
if (rules == NULL)
rules = rule;
else
rules->AddRule(rule);
}
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId) {
Rule *rule = new Rule();
rule->sourceDevId = sourceDevId;
rule->sourceMeyPinId = sourceMeyPinId;
rule->target.devId = targetDevId;
rule->target.meyPinId = targetMeyPinId;
rule->target.lastPinState = false;
rule->toggle = false;
rule->inverse = false;
PutRule(rule);
}
void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId) {
Rule *rule = new Rule();
rule->sourceDevId = sourceDevId;
rule->sourceMeyPinId = sourceMeyPinId;
rule->target.devId = targetDevId;
rule->target.meyPinId = targetMeyPinId;
rule->target.lastPinState = false;
rule->toggle = true;
rule->inverse = false;
PutRule(rule);
}
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId) {
Rule *rule = new Rule();
rule->sourceDevId = sourceDevId;
rule->sourceMeyPinId = sourceMeyPinId;
rule->target.devId = targetDevId;
rule->target.meyPinId = targetMeyPinId;
rule->target.lastPinState = false;
rule->toggle = true;
rule->inverse = true;
PutRule(rule);
}
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule) {
RemotePinInfo *currentRemotePinInfo = remotePinInfo.FindOrAdd(rule->target.devId);
if (currentRemotePinInfo == NULL) return;
// check the new state with the last one. Needs to be done, as the UP switch might
// send it multiple times like "01 01" "01 01" for a single tip.(antibeat)
bool lastPinState = rule->target.lastPinState;
bool pinState = dt > 0;
if (rule->triggeredOnce && lastPinState == pinState) return;
rule->target.lastPinState = pinState;
rule->triggeredOnce = true;
if (rule->inverse)
pinState = !pinState;
if (rule->toggle)
pinState = (currentRemotePinInfo->getPinState(rule->target.meyPinId) ^ true);
currentRemotePinInfo->setPinState(rule->target.meyPinId, pinState);
BroadcastTriggerMeyPinCanPackage(rule->target.devId, rule->target.meyPinId, pinState);
}
void HandleTriggered(can_frame *frame) {
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID) {
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(GetDeviceId(frame->can_id));
if (currentPinState == NULL) {
return;
}
currentPinState->setPinState(frame->data[0], frame->data[1]);
}
}
void SetLocalPinState(can_frame *frame)
{
HandleTriggered(frame);
}
void HandleRules(can_frame *frame) {
if (rules != NULL) {
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID) {
uint16_t deviceId = GetDeviceId(frame->can_id);
uint8_t dt = frame->data[1];
uint8_t state = frame->data[0];
rules->Traverse(deviceId, dt, state, CheckRule);
}
}
HandleTriggered(frame);
}

107
Software/Switch/MeyRule.h Normal file
View File

@@ -0,0 +1,107 @@
#ifndef MEYRULE_H
#define MEYRULE_H
#include <Arduino.h>
#include <mcp2515.h>;
struct TargetPin{
uint16_t devId;
byte meyPinId;
bool lastPinState = false;
};
struct Rule {
uint16_t sourceDevId;
byte sourceMeyPinId;
TargetPin target = TargetPin();
bool toggle;
bool inverse;
Rule *nextRule = NULL;
bool triggeredOnce = false;
void AddRule(Rule *rule) {
if (this->nextRule == NULL) {
this->nextRule = rule;
rule->nextRule = NULL;
} else {
this->nextRule->AddRule(rule);
}
}
void Traverse(uint16_t deviceId, uint8_t dt, uint8_t state, void (*handle)(uint16_t, uint8_t, uint8_t, Rule *)) {
if (this->sourceDevId == deviceId && this->sourceMeyPinId == state)
handle(deviceId, dt, state, this);
if (this->nextRule != NULL)
this->nextRule->Traverse(deviceId, dt, state, handle);
}
};
typedef struct RemotePinInfo {
const byte MAX_REMOTE_PIN_COUNT = 64;
uint16_t DeviceId = 0; // the id of the device
uint8_t pinState = 0; // bitmap of 8 MeyPin states of the device. 0000 0100, MeyPin #3 is HIGH in this example
RemotePinInfo *next = NULL;
bool getPinState(byte meyPin) {
return (this->pinState >> (meyPin - 1)) & 1;
}
void setPinState(byte meyPin, bool state) {
if (state)
this->pinState = this->pinState | (1 << (meyPin - 1)); // 0001 0000
else
this->pinState = this->pinState & (~(1 << (meyPin - 1))); // 1110 1111 -> not
}
int16_t Count() {
if (this->next == NULL) return 1;
return this->next->Count() + 1;
}
RemotePinInfo *FindOrAdd(uint16_t deviceId, byte count = 0) {
if (count > MAX_REMOTE_PIN_COUNT)
return NULL;
if (this->DeviceId == 0 && this->pinState == 0) {
this->DeviceId = deviceId;
this->pinState = 0;
}
if (this->DeviceId == deviceId) {
//ToggleDebug();
return this;
}
if (next != NULL) {
return next->FindOrAdd(deviceId, count + 1);
}
RemotePinInfo *theNext = new RemotePinInfo;
theNext->DeviceId = deviceId;
theNext->pinState = 0;
theNext->next = NULL;
this->next = theNext;
return this->next;
}
};
extern RemotePinInfo remotePinInfo;
extern Rule *rules;
void SetLocalPinState(can_frame *frame);
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
void HandleRules(can_frame *frame);
void PutRule(Rule *rule);
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule);
#endif

114
Software/Switch/Switch.ino Normal file
View File

@@ -0,0 +1,114 @@
#include <SPI.h>;
#include <mcp2515.h>;
#include "MeyCan.h";
#include "MeyRule.h";
#define PIN8 8
#define PIN9 9
const int16_t SW_FLUR = 0XD238;
const int16_t SW_ANBAU = 0x87A9;
const int16_t SW_WOHNZIMMER = 0x87CA;
const int16_t SW_TERRASSE = 0x618A;
const int16_t UP_WOHNZIMMER_TUER = 0x051F; // [X X]
const int16_t UP_WOHNZIMMER_TERASSE = 0x05df;
const int16_t UP_FLUR_EINGANG = 0x0769; // [X]
const int16_t UP_BUERO = 0x1177;
const int16_t UP_FLUR_BUERO = 0x05A1; // [X]
const int16_t UP_FLUR_KUECHE = 0x01EF;
const int16_t UP_KINDERZIMMER = 0x0196; // [X X]
const int16_t UP_FLUR_ELTERN = 0x0632;
const int16_t UP_ELTERN = 0x08AE;
const int16_t UP_KUECHE_FLUR = 0x07F5; // [X]
const int16_t UP_KUECHE_BAD = 0x0585; // [X X]
struct can_frame incomingCanFrame;
/*
Software matching Hardware of meycan v8.1
*/
void setup() {
SPI.begin();
AddToggle(UP_WOHNZIMMER_TUER, 1, SW_WOHNZIMMER, 5);
AddToggle(UP_WOHNZIMMER_TUER, 1, SW_WOHNZIMMER, 6);
AddSimple(UP_WOHNZIMMER_TUER, 2, SW_WOHNZIMMER, 7);
AddSimple(UP_WOHNZIMMER_TUER, 3, SW_WOHNZIMMER, 8);
AddToggle(UP_KINDERZIMMER, 3, SW_FLUR, 6);
AddToggle(UP_KINDERZIMMER, 3, SW_WOHNZIMMER, 2);
AddToggle(UP_KINDERZIMMER, 2, SW_FLUR, 3);
AddSimple(UP_KINDERZIMMER, 4, SW_FLUR, 4);
AddSimple(UP_KINDERZIMMER, 1, SW_FLUR, 5);
AddToggle(UP_FLUR_EINGANG, 1, SW_FLUR, 1);
AddToggle(UP_FLUR_EINGANG, 2, SW_FLUR, 6);
AddToggle(UP_FLUR_EINGANG, 2, SW_WOHNZIMMER, 2);
AddToggle(UP_ELTERN, 1, SW_FLUR, 2);
AddToggle(UP_BUERO, 1, SW_WOHNZIMMER, 3);
AddToggle(UP_FLUR_BUERO, 1, SW_FLUR, 6);
AddToggle(UP_FLUR_BUERO, 1, SW_WOHNZIMMER, 2);
AddToggle (UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 7); // Licht 1 von Terassenschalter
AddToggle (UP_WOHNZIMMER_TERASSE, 2, SW_WOHNZIMMER, 8); // Licht
AddToggle (UP_WOHNZIMMER_TERASSE, 3, SW_TERRASSE, 2); // Pergola
/// RULE FOR SWITCH WOHNZIMMER (BOTH) OF TERASSE
// AddSimple (UP_WOHNZIMMER_TERASSE, 3, SW_WOHNZIMMER, 5); // Eingangstür Flur Licht 2
// AddSimple (UP_WOHNZIMMER_TERASSE, 3, SW_WOHNZIMMER, 6); // Eingangstür Flur Licht 2
AddToggle(UP_KUECHE_FLUR, 1, SW_ANBAU, 3);
AddToggle(UP_KUECHE_FLUR, 2, SW_ANBAU, 2);
AddToggle(UP_KUECHE_BAD, 1, SW_ANBAU, 3);
AddToggle(UP_KUECHE_BAD, 2, SW_ANBAU, 1);
AddToggle(UP_KUECHE_BAD, 3, SW_ANBAU, 4);
AddToggle(UP_FLUR_KUECHE, 1, SW_FLUR, 6);
AddToggle(UP_FLUR_KUECHE, 1, SW_WOHNZIMMER, 2);
SetMeyPin(1, PIN3);
SetMeyPin(2, PIN5);
SetMeyPin(3, PIN7);
SetMeyPin(4, PIN9);
SetMeyPin(5, PIN8);
SetMeyPin(6, PIN6);
SetMeyPin(7, PIN4);
SetMeyPin(8, PIN2);
SetDevicedId(0x87, 0xCA);
AddLocalPinChangedHandler(SetLocalPinStateAdapter);
AddCanInterface(PIN_A0);
AddCanInterface(PIN_A1);
AddCanInterface(PIN_A2);
AddCanInterface(PIN_A3);
SetupMeyCan(8, 0, 2);
}
void loop() {
ForEachCanInterface(CheckCanInterface);
}
void SetLocalPinStateAdapter(can_frame *frame)
{
SetLocalPinState(frame);
}
void CheckCanInterface(MCP2515 *interface) {
if (interface->readMessage(&incomingCanFrame) == MCP2515::ERROR_OK) {
HandleFrame(&incomingCanFrame, interface);
HandleRules(&incomingCanFrame);
}
}

68
Software/Testfälle.txt Normal file
View File

@@ -0,0 +1,68 @@
Testfälle Meycan Switch
PreCons for each:
GIVEN XX XX is the deviceId of the target device
GIVEN YY YY is another device id, which is NOT XX XX
GIVEN 2nd CAN Debug Device on another CanBus of switch
1) A MeyPin can be triggered directly (repeat Test for all MeyPins and each CAN Bus Interface specified)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 01 -> (MeyPin1 Should switch to on)
THEN The MeyPin 1 should trigger
THEN you receive a message 00 50 XX XX | 01 01
THEN 2nd device should receive 2 messages
* 00 50 XX XX | 01 01
* 00 55 11 11 | XX XX 01 01
1a) A MeyPin trigger is effecltess, if only set
GIVEN the above testcast
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 01
THEN Nothing changed
THEN you dont receive a message
THEN 2nd device should receive 00 55 11 11 | XX XX 01 01
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 00 -> (MeyPin1 Should switch to off)
THEN The MeyPin 1 should switch to OFF
THEN you receive a message 00 50 XX XX | 01 00
THEN 2nd device should receive 2 messages
* 00 50 XX XX | 01 00
* 00 55 11 11 | XX XX 01 00
2) A MeyPin is not triggered, if the device id dont match
WHEN Send CAN Pkg 00 55 11 11 | YY YY 01 01
THEN None of the pins of the device triggered
THEN you receive no message
THEN 2nd device should receive 1 messages
* 00 55 11 11 | XX XX 01 01
3) A MeyPin is not triggered, if the Package Type dont match
WHEN Send CAN Pkg 50 00 11 11 | YY YY 01 01
THEN None of the pins of the device triggered
THEN you receive no message
THEN 2nd device should receive 1 messages
* 50 00 11 11 | XX XX 01 01
3) A MeyPin is not triggered, if the MeyPin is above 8 (max pins)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 09 01
THEN None of the pins of the device triggered
THEN you receive no message
THEN 2nd device should receive 1 messages
* 00 55 11 11 | XX XX 09 01
THEN you can execute any other testcase, as the switch didnt crash
4) All MeyPins can be activated more than 15 minutes in parallel(Activate each port for at least 15 mins)
GIVE You have a relais connected to each of the ports
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 01 -> (MeyPin1 Should switch to on)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 02 01 -> (MeyPin2 Should switch to on)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 03 01 -> (MeyPin3 Should switch to on)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 04 01 -> (MeyPin4 Should switch to on)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 05 01 -> (MeyPin5 Should switch to on)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 06 01 -> (MeyPin6 Should switch to on)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 07 01 -> (MeyPin7 Should switch to on)
WHEN Send CAN Pkg 00 55 11 11 | XX XX 08 01 -> (MeyPin8 Should switch to on)
THEN you should only receive the packages from above.
THEN you should NOT receive a VersionPackage
WHEN you wait 15 Minutes
THEN nothing should be send
THEN the Pins should not trigger

View File

@@ -0,0 +1,7 @@
{
"configuration": "pinout=48pin_standard,eeprom=keep,resetpin=reset,BOD=2v6,clock=internal_8MHz,bootloader=no_bootloader",
"board": "MegaCoreX:megaavr:809",
"sketch": "Switch.ino",
"port": "COM6",
"programmer": "jtag2updi"
}

View File

@@ -0,0 +1,540 @@
{
"version": 4,
"configurations": [
{
"name": "Arduino",
"compilerPath": "C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\bin\\avr-g++",
"compilerArgs": [
"-w",
"-std=gnu++17",
"-fpermissive",
"-fno-exceptions",
"-ffunction-sections",
"-fdata-sections",
"-fno-threadsafe-statics",
"-Wno-error=narrowing"
],
"intelliSenseMode": "gcc-x64",
"includePath": [
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles\\api\\deprecated",
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles",
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\variants\\48pin-standard",
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\libraries\\SPI\\src",
"C:\\Users\\Martin\\Documents\\Arduino\\libraries\\autowp-mcp2515",
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include",
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include-fixed",
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\avr\\include"
],
"forcedInclude": [
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles\\Arduino.h"
],
"cStandard": "c11",
"cppStandard": "c++17",
"defines": [
"F_CPU=8000000L",
"ARDUINO=10607",
"ARDUINO_AVR_ATmega809",
"ARDUINO_ARCH_MEGAAVR",
"__DBL_MIN_EXP__=(-125)",
"__HQ_FBIT__=15",
"__cpp_attributes=200809",
"__UINT_LEAST16_MAX__=0xffffU",
"__ATOMIC_ACQUIRE=2",
"__SFRACT_IBIT__=0",
"__FLT_MIN__=1.17549435e-38F",
"__GCC_IEC_559_COMPLEX=0",
"__BUILTIN_AVR_SLEEP=1",
"__BUILTIN_AVR_COUNTLSULLK=1",
"__cpp_aggregate_nsdmi=201304",
"__BUILTIN_AVR_COUNTLSULLR=1",
"__UFRACT_MAX__=0XFFFFP-16UR",
"__UINT_LEAST8_TYPE__=unsigned char",
"__DQ_FBIT__=63",
"__INTMAX_C(c)=c ## LL",
"__ULFRACT_FBIT__=32",
"__SACCUM_EPSILON__=0x1P-7HK",
"__CHAR_BIT__=8",
"__USQ_IBIT__=0",
"__UINT8_MAX__=0xff",
"__ACCUM_FBIT__=15",
"__WINT_MAX__=0x7fff",
"__FLT32_MIN_EXP__=(-125)",
"__cpp_static_assert=200410",
"__USFRACT_FBIT__=8",
"__ORDER_LITTLE_ENDIAN__=1234",
"__SIZE_MAX__=0xffffU",
"__WCHAR_MAX__=0x7fff",
"__LACCUM_IBIT__=32",
"__DBL_DENORM_MIN__=double(1.40129846e-45L)",
"__GCC_ATOMIC_CHAR_LOCK_FREE=1",
"__GCC_IEC_559=0",
"__FLT_EVAL_METHOD__=0",
"__BUILTIN_AVR_LLKBITS=1",
"__cpp_binary_literals=201304",
"__LLACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-47LLK",
"__GCC_ATOMIC_CHAR32_T_LOCK_FREE=1",
"__BUILTIN_AVR_HKBITS=1",
"__BUILTIN_AVR_BITSLLK=1",
"__FRACT_FBIT__=15",
"__BUILTIN_AVR_BITSLLR=1",
"__cpp_variadic_templates=200704",
"__UINT_FAST64_MAX__=0xffffffffffffffffULL",
"__SIG_ATOMIC_TYPE__=char",
"__BUILTIN_AVR_UHKBITS=1",
"__UACCUM_FBIT__=16",
"__DBL_MIN_10_EXP__=(-37)",
"__FINITE_MATH_ONLY__=0",
"__cpp_variable_templates=201304",
"__LFRACT_IBIT__=0",
"__GNUC_PATCHLEVEL__=0",
"__FLT32_HAS_DENORM__=1",
"__LFRACT_MAX__=0X7FFFFFFFP-31LR",
"__UINT_FAST8_MAX__=0xff",
"__has_include(STR)=__has_include__(STR)",
"__DEC64_MAX_EXP__=385",
"__INT8_C(c)=c",
"__INT_LEAST8_WIDTH__=8",
"__UINT_LEAST64_MAX__=0xffffffffffffffffULL",
"__SA_FBIT__=15",
"__SHRT_MAX__=0x7fff",
"__LDBL_MAX__=3.40282347e+38L",
"__FRACT_MAX__=0X7FFFP-15R",
"__UFRACT_FBIT__=16",
"__UFRACT_MIN__=0.0UR",
"__UINT_LEAST8_MAX__=0xff",
"__GCC_ATOMIC_BOOL_LOCK_FREE=1",
"__UINTMAX_TYPE__=long long unsigned int",
"__LLFRACT_EPSILON__=0x1P-63LLR",
"__BUILTIN_AVR_DELAY_CYCLES=1",
"__DEC32_EPSILON__=1E-6DF",
"__FLT_EVAL_METHOD_TS_18661_3__=0",
"__UINT32_MAX__=0xffffffffUL",
"__GXX_EXPERIMENTAL_CXX0X__=1",
"__ULFRACT_MAX__=0XFFFFFFFFP-32ULR",
"__TA_IBIT__=16",
"__LDBL_MAX_EXP__=128",
"__WINT_MIN__=(-__WINT_MAX__ - 1)",
"__INT_LEAST16_WIDTH__=16",
"__ULLFRACT_MIN__=0.0ULLR",
"__SCHAR_MAX__=0x7f",
"__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)",
"__INT64_C(c)=c ## LL",
"__DBL_DIG__=6",
"__GCC_ATOMIC_POINTER_LOCK_FREE=1",
"__AVR_HAVE_SPH__=1",
"__LLACCUM_MIN__=(-0X1P15LLK-0X1P15LLK)",
"__BUILTIN_AVR_KBITS=1",
"__BUILTIN_AVR_ABSK=1",
"__BUILTIN_AVR_ABSR=1",
"__SIZEOF_INT__=2",
"__SIZEOF_POINTER__=2",
"__GCC_ATOMIC_CHAR16_T_LOCK_FREE=1",
"__USACCUM_IBIT__=8",
"__USER_LABEL_PREFIX__",
"__STDC_HOSTED__=1",
"__LDBL_HAS_INFINITY__=1",
"__LFRACT_MIN__=(-0.5LR-0.5LR)",
"__HA_IBIT__=8",
"__FLT32_DIG__=6",
"__TQ_IBIT__=0",
"__FLT_EPSILON__=1.19209290e-7F",
"__GXX_WEAK__=1",
"__SHRT_WIDTH__=16",
"__USFRACT_IBIT__=0",
"__LDBL_MIN__=1.17549435e-38L",
"__FRACT_MIN__=(-0.5R-0.5R)",
"__AVR_SFR_OFFSET__=0x20",
"__DEC32_MAX__=9.999999E96DF",
"__cpp_threadsafe_static_init=200806",
"__DA_IBIT__=32",
"__INT32_MAX__=0x7fffffffL",
"__UQQ_FBIT__=8",
"__INT_WIDTH__=16",
"__SIZEOF_LONG__=4",
"__UACCUM_MAX__=0XFFFFFFFFP-16UK",
"__UINT16_C(c)=c ## U",
"__PTRDIFF_WIDTH__=16",
"__DECIMAL_DIG__=9",
"__LFRACT_EPSILON__=0x1P-31LR",
"__AVR_2_BYTE_PC__=1",
"__ULFRACT_MIN__=0.0ULR",
"__INTMAX_WIDTH__=64",
"__has_include_next(STR)=__has_include_next__(STR)",
"__BUILTIN_AVR_ULLRBITS=1",
"__LDBL_HAS_QUIET_NAN__=1",
"__ULACCUM_IBIT__=32",
"__UACCUM_EPSILON__=0x1P-16UK",
"__BUILTIN_AVR_SEI=1",
"__GNUC__=7",
"__ULLACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-48ULLK",
"__cpp_delegating_constructors=200604",
"__HQ_IBIT__=0",
"__BUILTIN_AVR_SWAP=1",
"__FLT_HAS_DENORM__=1",
"__SIZEOF_LONG_DOUBLE__=4",
"__BIGGEST_ALIGNMENT__=1",
"__STDC_UTF_16__=1",
"__UINT24_MAX__=16777215UL",
"__BUILTIN_AVR_NOP=1",
"__GNUC_STDC_INLINE__=1",
"__DQ_IBIT__=0",
"__FLT32_HAS_INFINITY__=1",
"__DBL_MAX__=double(3.40282347e+38L)",
"__ULFRACT_IBIT__=0",
"__cpp_raw_strings=200710",
"__INT_FAST32_MAX__=0x7fffffffL",
"__DBL_HAS_INFINITY__=1",
"__INT64_MAX__=0x7fffffffffffffffLL",
"__ACCUM_IBIT__=16",
"__DEC32_MIN_EXP__=(-94)",
"__BUILTIN_AVR_UKBITS=1",
"__INTPTR_WIDTH__=16",
"__BUILTIN_AVR_FMULSU=1",
"__LACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-31LK",
"__INT_FAST16_TYPE__=int",
"__LDBL_HAS_DENORM__=1",
"__BUILTIN_AVR_BITSK=1",
"__BUILTIN_AVR_BITSR=1",
"__cplusplus=201402L",
"__cpp_ref_qualifiers=200710",
"__DEC128_MAX__=9.999999999999999999999999999999999E6144DL",
"__INT_LEAST32_MAX__=0x7fffffffL",
"__USING_SJLJ_EXCEPTIONS__=1",
"__DEC32_MIN__=1E-95DF",
"__ACCUM_MAX__=0X7FFFFFFFP-15K",
"__DEPRECATED=1",
"__cpp_rvalue_references=200610",
"__DBL_MAX_EXP__=128",
"__USACCUM_EPSILON__=0x1P-8UHK",
"__WCHAR_WIDTH__=16",
"__FLT32_MAX__=3.40282347e+38F32",
"__DEC128_EPSILON__=1E-33DL",
"__SFRACT_MAX__=0X7FP-7HR",
"__FRACT_IBIT__=0",
"__PTRDIFF_MAX__=0x7fff",
"__UACCUM_MIN__=0.0UK",
"__UACCUM_IBIT__=16",
"__BUILTIN_AVR_NOPS=1",
"__BUILTIN_AVR_WDR=1",
"__FLT32_HAS_QUIET_NAN__=1",
"__GNUG__=7",
"__LONG_LONG_MAX__=0x7fffffffffffffffLL",
"__SIZEOF_SIZE_T__=2",
"__ULACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-32ULK",
"__cpp_rvalue_reference=200610",
"__cpp_nsdmi=200809",
"__SIZEOF_WINT_T__=2",
"__LONG_LONG_WIDTH__=64",
"__cpp_initializer_lists=200806",
"__FLT32_MAX_EXP__=128",
"__SA_IBIT__=16",
"__ULLACCUM_MIN__=0.0ULLK",
"__BUILTIN_AVR_ROUNDUHK=1",
"__BUILTIN_AVR_ROUNDUHR=1",
"__cpp_hex_float=201603",
"__GXX_ABI_VERSION=1011",
"__INT24_MAX__=8388607L",
"__UTA_FBIT__=48",
"__FLT_MIN_EXP__=(-125)",
"__USFRACT_MAX__=0XFFP-8UHR",
"__UFRACT_IBIT__=0",
"__BUILTIN_AVR_ROUNDFX=1",
"__BUILTIN_AVR_ROUNDULK=1",
"__BUILTIN_AVR_ROUNDULR=1",
"__cpp_lambdas=200907",
"__BUILTIN_AVR_COUNTLSLLK=1",
"__BUILTIN_AVR_COUNTLSLLR=1",
"__BUILTIN_AVR_ROUNDHK=1",
"__INT_FAST64_TYPE__=long long int",
"__BUILTIN_AVR_ROUNDHR=1",
"__DBL_MIN__=double(1.17549435e-38L)",
"__BUILTIN_AVR_COUNTLSK=1",
"__BUILTIN_AVR_ROUNDLK=1",
"__BUILTIN_AVR_COUNTLSR=1",
"__BUILTIN_AVR_ROUNDLR=1",
"__LACCUM_MIN__=(-0X1P31LK-0X1P31LK)",
"__ULLACCUM_FBIT__=48",
"__BUILTIN_AVR_LKBITS=1",
"__ULLFRACT_EPSILON__=0x1P-64ULLR",
"__DEC128_MIN__=1E-6143DL",
"__REGISTER_PREFIX__",
"__UINT16_MAX__=0xffffU",
"__DBL_HAS_DENORM__=1",
"__BUILTIN_AVR_ULKBITS=1",
"__ACCUM_MIN__=(-0X1P15K-0X1P15K)",
"__AVR_ARCH__=2",
"__SQ_IBIT__=0",
"__FLT32_MIN__=1.17549435e-38F32",
"__UINT8_TYPE__=unsigned char",
"__BUILTIN_AVR_ROUNDUK=1",
"__BUILTIN_AVR_ROUNDUR=1",
"__UHA_FBIT__=8",
"__NO_INLINE__=1",
"__SFRACT_MIN__=(-0.5HR-0.5HR)",
"__UTQ_FBIT__=128",
"__FLT_MANT_DIG__=24",
"__LDBL_DECIMAL_DIG__=9",
"__VERSION__=\"7.3.0\"",
"__UINT64_C(c)=c ## ULL",
"__ULLFRACT_FBIT__=64",
"__cpp_unicode_characters=200704",
"__FRACT_EPSILON__=0x1P-15R",
"__ULACCUM_MIN__=0.0ULK",
"__UDA_FBIT__=32",
"__cpp_decltype_auto=201304",
"__LLACCUM_EPSILON__=0x1P-47LLK",
"__GCC_ATOMIC_INT_LOCK_FREE=1",
"__FLT32_MANT_DIG__=24",
"__BUILTIN_AVR_BITSUHK=1",
"__BUILTIN_AVR_BITSUHR=1",
"__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__",
"__USFRACT_MIN__=0.0UHR",
"__BUILTIN_AVR_BITSULK=1",
"__ULLACCUM_IBIT__=16",
"__BUILTIN_AVR_BITSULR=1",
"__UQQ_IBIT__=0",
"__BUILTIN_AVR_LLRBITS=1",
"__SCHAR_WIDTH__=8",
"__BUILTIN_AVR_BITSULLK=1",
"__BUILTIN_AVR_BITSULLR=1",
"__INT32_C(c)=c ## L",
"__DEC64_EPSILON__=1E-15DD",
"__ORDER_PDP_ENDIAN__=3412",
"__DEC128_MIN_EXP__=(-6142)",
"__UHQ_FBIT__=16",
"__LLACCUM_FBIT__=47",
"__FLT32_MAX_10_EXP__=38",
"__BUILTIN_AVR_ROUNDULLK=1",
"__BUILTIN_AVR_ROUNDULLR=1",
"__INT_FAST32_TYPE__=long int",
"__BUILTIN_AVR_HRBITS=1",
"__UINT_LEAST16_TYPE__=unsigned int",
"__BUILTIN_AVR_UHRBITS=1",
"__INT16_MAX__=0x7fff",
"__SIZE_TYPE__=unsigned int",
"__UINT64_MAX__=0xffffffffffffffffULL",
"__UDQ_FBIT__=64",
"__INT8_TYPE__=signed char",
"__cpp_digit_separators=201309",
"__ELF__=1",
"__ULFRACT_EPSILON__=0x1P-32ULR",
"__LLFRACT_FBIT__=63",
"__FLT_RADIX__=2",
"__INT_LEAST16_TYPE__=int",
"__BUILTIN_AVR_ABSFX=1",
"__LDBL_EPSILON__=1.19209290e-7L",
"__UINTMAX_C(c)=c ## ULL",
"__INT24_MIN__=(-__INT24_MAX__-1)",
"__SACCUM_MAX__=0X7FFFP-7HK",
"__BUILTIN_AVR_ABSHR=1",
"__SIG_ATOMIC_MAX__=0x7f",
"__GCC_ATOMIC_WCHAR_T_LOCK_FREE=1",
"__cpp_sized_deallocation=201309",
"__SIZEOF_PTRDIFF_T__=2",
"__AVR=1",
"__BUILTIN_AVR_ABSLK=1",
"__BUILTIN_AVR_ABSLR=1",
"__LACCUM_EPSILON__=0x1P-31LK",
"__DEC32_SUBNORMAL_MIN__=0.000001E-95DF",
"__INT_FAST16_MAX__=0x7fff",
"__UINT_FAST32_MAX__=0xffffffffUL",
"__UINT_LEAST64_TYPE__=long long unsigned int",
"__USACCUM_MAX__=0XFFFFP-8UHK",
"__SFRACT_EPSILON__=0x1P-7HR",
"__FLT_HAS_QUIET_NAN__=1",
"__FLT_MAX_10_EXP__=38",
"__LONG_MAX__=0x7fffffffL",
"__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL",
"__FLT_HAS_INFINITY__=1",
"__cpp_unicode_literals=200710",
"__USA_FBIT__=16",
"__UINT_FAST16_TYPE__=unsigned int",
"__DEC64_MAX__=9.999999999999999E384DD",
"__INT_FAST32_WIDTH__=32",
"__BUILTIN_AVR_RBITS=1",
"__CHAR16_TYPE__=unsigned int",
"__PRAGMA_REDEFINE_EXTNAME=1",
"__SIZE_WIDTH__=16",
"__INT_LEAST16_MAX__=0x7fff",
"__DEC64_MANT_DIG__=16",
"__UINT_LEAST32_MAX__=0xffffffffUL",
"__SACCUM_FBIT__=7",
"__FLT32_DENORM_MIN__=1.40129846e-45F32",
"__GCC_ATOMIC_LONG_LOCK_FREE=1",
"__SIG_ATOMIC_WIDTH__=8",
"__INT_LEAST64_TYPE__=long long int",
"__INT16_TYPE__=int",
"__INT_LEAST8_TYPE__=signed char",
"__SQ_FBIT__=31",
"__DEC32_MAX_EXP__=97",
"__INT_FAST8_MAX__=0x7f",
"__INTPTR_MAX__=0x7fff",
"__QQ_FBIT__=7",
"__cpp_range_based_for=200907",
"__UTA_IBIT__=16",
"__AVR_ERRATA_SKIP__=1",
"__FLT32_MIN_10_EXP__=(-37)",
"__LDBL_MANT_DIG__=24",
"__SFRACT_FBIT__=7",
"__SACCUM_MIN__=(-0X1P7HK-0X1P7HK)",
"__DBL_HAS_QUIET_NAN__=1",
"__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)",
"AVR=1",
"__BUILTIN_AVR_FMULS=1",
"__cpp_return_type_deduction=201304",
"__INTPTR_TYPE__=int",
"__UINT16_TYPE__=unsigned int",
"__WCHAR_TYPE__=int",
"__SIZEOF_FLOAT__=4",
"__AVR__=1",
"__BUILTIN_AVR_INSERT_BITS=1",
"__USQ_FBIT__=32",
"__UINTPTR_MAX__=0xffffU",
"__INT_FAST64_WIDTH__=64",
"__DEC64_MIN_EXP__=(-382)",
"__cpp_decltype=200707",
"__FLT32_DECIMAL_DIG__=9",
"__INT_FAST64_MAX__=0x7fffffffffffffffLL",
"__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1",
"__FLT_DIG__=6",
"__UINT_FAST64_TYPE__=long long unsigned int",
"__BUILTIN_AVR_BITSHK=1",
"__BUILTIN_AVR_BITSHR=1",
"__INT_MAX__=0x7fff",
"__LACCUM_FBIT__=31",
"__USACCUM_MIN__=0.0UHK",
"__UHA_IBIT__=8",
"__INT64_TYPE__=long long int",
"__BUILTIN_AVR_BITSLK=1",
"__BUILTIN_AVR_BITSLR=1",
"__FLT_MAX_EXP__=128",
"__UTQ_IBIT__=0",
"__DBL_MANT_DIG__=24",
"__cpp_inheriting_constructors=201511",
"__BUILTIN_AVR_ULLKBITS=1",
"__INT_LEAST64_MAX__=0x7fffffffffffffffLL",
"__DEC64_MIN__=1E-383DD",
"__WINT_TYPE__=int",
"__UINT_LEAST32_TYPE__=long unsigned int",
"__SIZEOF_SHORT__=2",
"__ULLFRACT_IBIT__=0",
"__LDBL_MIN_EXP__=(-125)",
"__UDA_IBIT__=32",
"__WINT_WIDTH__=16",
"__INT_LEAST8_MAX__=0x7f",
"__LFRACT_FBIT__=31",
"__LDBL_MAX_10_EXP__=38",
"__ATOMIC_RELAXED=0",
"__DBL_EPSILON__=double(1.19209290e-7L)",
"__BUILTIN_AVR_BITSUK=1",
"__BUILTIN_AVR_BITSUR=1",
"__UINT8_C(c)=c",
"__INT_LEAST32_TYPE__=long int",
"__BUILTIN_AVR_URBITS=1",
"__SIZEOF_WCHAR_T__=2",
"__LLFRACT_MAX__=0X7FFFFFFFFFFFFFFFP-63LLR",
"__TQ_FBIT__=127",
"__INT_FAST8_TYPE__=signed char",
"__ULLACCUM_EPSILON__=0x1P-48ULLK",
"__BUILTIN_AVR_ROUNDK=1",
"__BUILTIN_AVR_ROUNDR=1",
"__UHQ_IBIT__=0",
"__LLACCUM_IBIT__=16",
"__FLT32_EPSILON__=1.19209290e-7F32",
"__DBL_DECIMAL_DIG__=9",
"__STDC_UTF_32__=1",
"__INT_FAST8_WIDTH__=8",
"__DEC_EVAL_METHOD__=2",
"__TA_FBIT__=47",
"__UDQ_IBIT__=0",
"__ORDER_BIG_ENDIAN__=4321",
"__cpp_runtime_arrays=198712",
"__WITH_AVRLIBC__=1",
"__UINT64_TYPE__=long long unsigned int",
"__ACCUM_EPSILON__=0x1P-15K",
"__UINT32_C(c)=c ## UL",
"__BUILTIN_AVR_COUNTLSUHK=1",
"__INTMAX_MAX__=0x7fffffffffffffffLL",
"__cpp_alias_templates=200704",
"__BUILTIN_AVR_COUNTLSUHR=1",
"__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__",
"__FLT_DENORM_MIN__=1.40129846e-45F",
"__LLFRACT_IBIT__=0",
"__INT8_MAX__=0x7f",
"__LONG_WIDTH__=32",
"__UINT_FAST32_TYPE__=long unsigned int",
"__CHAR32_TYPE__=long unsigned int",
"__BUILTIN_AVR_COUNTLSULK=1",
"__BUILTIN_AVR_COUNTLSULR=1",
"__FLT_MAX__=3.40282347e+38F",
"__cpp_constexpr=201304",
"__USACCUM_FBIT__=8",
"__BUILTIN_AVR_COUNTLSFX=1",
"__INT32_TYPE__=long int",
"__SIZEOF_DOUBLE__=4",
"__FLT_MIN_10_EXP__=(-37)",
"__UFRACT_EPSILON__=0x1P-16UR",
"__INT_LEAST32_WIDTH__=32",
"__BUILTIN_AVR_COUNTLSHK=1",
"__BUILTIN_AVR_COUNTLSHR=1",
"__INTMAX_TYPE__=long long int",
"__BUILTIN_AVR_ABSLLK=1",
"__BUILTIN_AVR_ABSLLR=1",
"__DEC128_MAX_EXP__=6145",
"__AVR_HAVE_16BIT_SP__=1",
"__ATOMIC_CONSUME=1",
"__GNUC_MINOR__=3",
"__INT_FAST16_WIDTH__=16",
"__UINTMAX_MAX__=0xffffffffffffffffULL",
"__DEC32_MANT_DIG__=7",
"__HA_FBIT__=7",
"__BUILTIN_AVR_COUNTLSLK=1",
"__BUILTIN_AVR_COUNTLSLR=1",
"__BUILTIN_AVR_CLI=1",
"__DBL_MAX_10_EXP__=38",
"__LDBL_DENORM_MIN__=1.40129846e-45L",
"__INT16_C(c)=c",
"__cpp_generic_lambdas=201304",
"__STDC__=1",
"__PTRDIFF_TYPE__=int",
"__LLFRACT_MIN__=(-0.5LLR-0.5LLR)",
"__BUILTIN_AVR_LRBITS=1",
"__ATOMIC_SEQ_CST=5",
"__DA_FBIT__=31",
"__UINT32_TYPE__=long unsigned int",
"__BUILTIN_AVR_ROUNDLLK=1",
"__UINTPTR_TYPE__=unsigned int",
"__BUILTIN_AVR_ROUNDLLR=1",
"__USA_IBIT__=16",
"__BUILTIN_AVR_ULRBITS=1",
"__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD",
"__DEC128_MANT_DIG__=34",
"__LDBL_MIN_10_EXP__=(-37)",
"__BUILTIN_AVR_COUNTLSUK=1",
"__BUILTIN_AVR_COUNTLSUR=1",
"__SIZEOF_LONG_LONG__=8",
"__ULACCUM_EPSILON__=0x1P-32ULK",
"__cpp_user_defined_literals=200809",
"__SACCUM_IBIT__=8",
"__GCC_ATOMIC_LLONG_LOCK_FREE=1",
"__LDBL_DIG__=6",
"__FLT_DECIMAL_DIG__=9",
"__UINT_FAST16_MAX__=0xffffU",
"__GCC_ATOMIC_SHORT_LOCK_FREE=1",
"__BUILTIN_AVR_ABSHK=1",
"__BUILTIN_AVR_FLASH_SEGMENT=1",
"__INT_LEAST64_WIDTH__=64",
"__ULLFRACT_MAX__=0XFFFFFFFFFFFFFFFFP-64ULLR",
"__UINT_FAST8_TYPE__=unsigned char",
"__USFRACT_EPSILON__=0x1P-8UHR",
"__ULACCUM_FBIT__=32",
"__QQ_IBIT__=0",
"__cpp_init_captures=201304",
"__ATOMIC_ACQ_REL=4",
"__ATOMIC_RELEASE=3",
"__BUILTIN_AVR_FMUL=1",
"USBCON"
]
}
]
}

View File

@@ -0,0 +1,52 @@
#include <SPI.h>;
#include <mcp2515.h>;
struct can_frame frame;
MCP2515 mcp2515(10);
/*
Software matching Hardware of meycan v8.1
*/
void setup() {
SPI.begin();
Serial.begin(9600);
pinMode(PD3, OUTPUT);
digitalWrite(PD3, HIGH);
delay(1000);
digitalWrite(PD3, LOW);
delay(2000);
mcp2515.reset();
mcp2515.setBitrate(CAN_1000KBPS, MCP_8MHZ);
mcp2515.setNormalMode();
}
void loop() {
if (mcp2515.readMessage(&frame) == MCP2515::ERROR_OK) {
// frame contains received message
Serial.print(" Id: ");
Serial.print(frame.can_id, HEX);
Serial.print(" [");
for (int i = 0; i < 8; i++) {
Serial.print(frame.data[i], HEX);
Serial.print(" ");
}
Serial.println("]");
digitalWrite(PD3, HIGH);
delay(50);
digitalWrite(PD3, LOW);
delay(50);
mcp2515.sendMessage(&frame);
mcp2515.sendMessage(&frame);
mcp2515.sendMessage(&frame);
mcp2515.sendMessage(&frame);
}
}

View File

@@ -0,0 +1,148 @@
#include <iterator>
#include "esp32-hal-gpio.h"
#include "MeyCan.h";
#include "driver/twai.h"
PinState *MeyPin = NULL;
uint16_t myDeviceId = 0;
byte _deviceTypeId = 0;
byte _majorHardwareVersion = 0;
byte _minorHardwareVersion = 0;
void SetupMeyPin(PinState *state) {
if (state->is_input) {
pinMode(state->pin_id, INPUT_PULLUP);
state->pin_state = digitalRead(state->pin_id);
} else {
pinMode(state->pin_id, OUTPUT);
digitalWrite(state->pin_id, LOW);
state->pin_state = true;
}
}
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId) {
_majorHardwareVersion = majorHardwareVersion;
_minorHardwareVersion = minorHardwareVersion;
_deviceTypeId = deviceTypeId;
if (MeyPin != NULL)
MeyPin->ForEach(SetupMeyPin);
}
void SetDevicedId(byte high, byte low) {
myDeviceId = (high << 8) | low;
}
void SetMeyPin(byte meyPinId, byte pinId) {
PinState *newState = new PinState();
newState->Init(pinId, (byte)meyPinId);
if (MeyPin == NULL)
MeyPin = newState;
else
MeyPin->AddPinState(newState);
}
bool ReadPin(PinState *state) {
return digitalRead(state->pin_id);
}
void SendSwitchedTriggeredCanPackage(byte pinId, int state) {
twai_message_t message;
message.extd = 1;
message.rtr = 0;
message.ss = 0;
message.self = 0;
message.dlc_non_comp = 0;
message.identifier = CreateCanId(SWITCH_TRIGGERED_CAN_ID);
message.data_length_code = 2;
message.data[0] = pinId;
message.data[1] = state;
DoSendCanPkg(&message);
}
void CheckPinStatus(PinState *state) {
if (!state->is_input)
return;
bool newValue = ReadPin(state);
if (newValue != state->pin_state) {
delay(10);
newValue = ReadPin(state);
if (newValue != state->pin_state) {
state->pin_state = newValue;
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
}
}
return;
}
void CheckMeyPinsTriggered() {
MeyPin->ForEach(CheckPinStatus);
}
uint16_t GetDeviceId(uint32_t canFrameId) {
return canFrameId & 0xFFFF;
}
uint16_t GetPackageType(uint32_t canFrameId) {
return (canFrameId / 0x10000) & 0xFFF;
}
uint32_t CreateCanId(uint16_t commandId) {
return ((((uint32_t)commandId) & 0xFFF) * 0x10000) | myDeviceId;
}
void HandleTriggerMeypinCanPackage(twai_message_t *frame) {
if (GetPackageType(frame->identifier) == TRIGGER_SWITCH_CAN_ID) {
uint16_t adressedDeviceId = ((uint16_t)frame->data[0] << 8) | frame->data[1];
if (adressedDeviceId != myDeviceId) return;
byte meyPinId = frame->data[2];
bool state = frame->data[3] > 0;
PinState *adressedPin = MeyPin->Find(meyPinId);
if (adressedPin != NULL) {
if (adressedPin->is_input == true) {
pinMode(adressedPin->pin_id, OUTPUT);
adressedPin->is_input = false;
}
bool pinChanged = adressedPin->pin_state != state;
adressedPin->pin_state = state;
if (pinChanged) {
digitalWrite(adressedPin->pin_id, state);
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
}
}
}
}
void HandleFrame(twai_message_t *frame) {
HandleTriggerMeypinCanPackage(frame);
}
void DoSendCanPkg(twai_message_t *frame) {
esp_err_t ret = twai_transmit(frame, pdMS_TO_TICKS(1000));
}

View File

@@ -0,0 +1,80 @@
#ifndef MEYCAN_H
#define MEYCAN_H
#include <Arduino.h>
#include <SPI.h>
#include "driver/twai.h"
typedef struct PinState
{
int pin_id;
bool pin_state;
bool is_input;
byte meyPinId;
PinState *next = NULL;
PinState() {}
void Init(int pin_id, byte meyPinId)
{
this->pin_id = pin_id;
this->pin_state = true;
this->is_input = true;
this->meyPinId = meyPinId;
}
void AddPinState(PinState *nextPinState)
{
if (next == NULL)
{
this->next = nextPinState;
nextPinState->next = NULL;
} else {
next->AddPinState(nextPinState);
}
}
PinState* Find(byte meyPinId)
{
if (this->meyPinId == meyPinId)
return this;
if (this->next != NULL)
return this->next->Find(meyPinId);
return NULL;
}
void ForEach(void (*handle)(PinState *theState))
{
handle(this);
if (this->next != NULL)
this->next->ForEach(handle);
}
};
const byte SOFTWARE_VERSION_HIGH = 6;
const byte SOFTWARE_VERSION_LOW = 0;
const byte HARDWARE_VERSION_HIGH = 8;
const byte HARDWARE_VERSION_LOW = 1;
const uint16_t HELP_PACKAGE_CAN_ID = 0x0FFFUL;
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
const uint16_t TRIGGER_SWITCH_CAN_ID = 0x0055;
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
uint32_t CreateCanId(uint16_t commandId);
void SetDevicedId(byte high, byte low);
void SetMeyPin(byte meyPinId, byte pinId);
uint16_t GetDeviceId(uint32_t canFrameId);
uint16_t GetPackageType(uint32_t canFrameId);
void SendSwitchedTriggeredCanPackage(byte pinId, int state);
void HandleFrame(twai_message_t *frame);
void CheckPinStatus(PinState *state);
void CheckMeyPinsTriggered(); /* checks weather a meypin triggered and sends a can pkg is neccessary */
void DoSendCanPkg(twai_message_t *frame) ;
#endif

View File

@@ -0,0 +1,82 @@
#include <Arduino.h>
#include "driver/twai.h"
#include "MeyCan.h"
// https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/TWAI/TWAIreceive/TWAIreceive.ino
#define RX_PIN 2
#define TX_PIN 3
void DebugBlink(int d) {
pinMode(20, OUTPUT);
while (true) {
digitalWrite(20, HIGH);
delay(d);
digitalWrite(20, LOW);
delay(d);
}
}
bool driver_installed = false;
void setup() {
Serial.begin(9600);
SPI.begin();
// Explicit GND for LED and Input
pinMode(21, OUTPUT);
digitalWrite(21, LOW);
// Initialize configuration structures using macro initializers
twai_general_config_t g_config = TWAI_GENERAL_CONFIG_DEFAULT((gpio_num_t)TX_PIN, (gpio_num_t)RX_PIN, TWAI_MODE_NORMAL);
twai_timing_config_t t_config = TWAI_TIMING_CONFIG_1MBITS(); //Look in the api-reference for other speed sets.
twai_filter_config_t f_config = TWAI_FILTER_CONFIG_ACCEPT_ALL();
if (twai_driver_install(&g_config, &t_config, &f_config) == ESP_OK) {
Serial.println("Driver installed");
} else {
DebugBlink(100);
return;
}
esp_err_t e = twai_start();
// Start TWAI driver
if (e == ESP_OK) {
driver_installed = true;
} else {
DebugBlink(500);
return;
}
SetDevicedId(0x05, 0x1F);
SetMeyPin(1, 5);
SetMeyPin(2, 6);
SetMeyPin(3, 7);
SetMeyPin(4, 8);
SetMeyPin(5, 9);
SetMeyPin(6, 10);
SetMeyPin(7, 20);
SetupMeyCan(8, 1, 3);
}
twai_message_t frame;
void loop() {
if (!driver_installed) {
// Driver not installed
DebugBlink(2000);
return;
}
CheckMeyPinsTriggered();
if (twai_receive(&frame, 0) == ESP_OK) {
HandleFrame(&frame);
}
}

View File

@@ -0,0 +1,29 @@
Solid Edge in STL konvertieren
Datum: Montag,Januar 23,2023 06:20
Quelldatei:C:\source\DeckelV6.par
Ausgangssystem: SOLID EDGE
Hardware:
Prozessor: Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz
Betriebssystem: Windows 10 Professional
Installierter Speicher: 15,87 GB
Software-Informationen:
Parasolid-Version: 35.0.149
PSBodyshop-Version: 35.0.82
Solid Edge-Version: 223.00.00.101 x64
STL-Exportoptionen:
Ausgabedateiformat:BINARY
Angezeigte Teile exportieren: Aus
Strukturoption: Monolithic
Einheiten exportieren:Millimeter
Toleranzwert exportieren:0,001000
Toleranztyp exportieren:Fine
Flächenplanwinkelwert exportieren:0,523599
Konvertierungsfortschritt:
Phase 1 von 2 - Abrufen der Parasolid-Informationen...
Anzahl erstellter STL-Dateien : 1
Konvertierungsvorgang ist abgeschlossen
Zum Konvertieren benötigte Zeit:00 : 00 : 00

BIN
SolidEdgeCase/DeckelV6.par Normal file

Binary file not shown.

BIN
SolidEdgeCase/DeckelV6.stl Normal file

Binary file not shown.

View File

@@ -0,0 +1,25 @@
STL translation to Solid Edge
Datum: Dienstag,April 25,2023 09:00
Quelldatei:C:\Users\Martin\Documents\MeyCad\Meycad\SolidEdgeCase\GehaeuseV6.stl
Autor: Unbekannt
Organisation: Unbekannt
Ausgangssystem: DEX
Hardware:
Prozessor: Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz
Betriebssystem: Windows 10 Professional
Installierter Speicher: 15,87 GB
Software-Informationen:
Parasolid-Version: 35.0.149
PSBodyshop-Version: 35.0.82
Solid Edge-Version: 223.00.00.101 x64
STL Import Options
Vernetzungsfehler reparieren:Aus
Basisformelement erstellen:Ein
Protokollierung aktivieren:Ein
Konvertierungsfortschritt:
Konvertierungsvorgang ist abgeschlossen
Zum Konvertieren benötigte Zeit:00 : 00 : 02

View File

@@ -0,0 +1,29 @@
Solid Edge in STL konvertieren
Datum: Montag,Januar 23,2023 06:21
Quelldatei:C:\source\GehaeuseV6.par
Ausgangssystem: SOLID EDGE
Hardware:
Prozessor: Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz
Betriebssystem: Windows 10 Professional
Installierter Speicher: 15,87 GB
Software-Informationen:
Parasolid-Version: 35.0.149
PSBodyshop-Version: 35.0.82
Solid Edge-Version: 223.00.00.101 x64
STL-Exportoptionen:
Ausgabedateiformat:BINARY
Angezeigte Teile exportieren: Aus
Strukturoption: Monolithic
Einheiten exportieren:Millimeter
Toleranzwert exportieren:0,001000
Toleranztyp exportieren:Fine
Flächenplanwinkelwert exportieren:0,523599
Konvertierungsfortschritt:
Phase 1 von 2 - Abrufen der Parasolid-Informationen...
Anzahl erstellter STL-Dateien : 1
Konvertierungsvorgang ist abgeschlossen
Zum Konvertieren benötigte Zeit:00 : 00 : 00

Binary file not shown.

Binary file not shown.

1
Switch V8/Meycad/+.txt Normal file
View File

@@ -0,0 +1 @@
Warnung: Breitenkorrektur eingeschränkt. Für die aktuellen Designregeln muss sich der Breitenkorrekturwert im Bereich [0,00004 mils; 7,87398 mils] befinden.

View File

@@ -0,0 +1,820 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Copper,L2,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,ComponentPad*%
%ADD10R,1.700000X1.700000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD11C,1.700000*%
%TD*%
%TA.AperFunction,Conductor*%
%ADD12C,0.508000*%
%TD*%
%TA.AperFunction,Conductor*%
%ADD13C,0.635000*%
%TD*%
G04 APERTURE END LIST*
D10*
%TO.P,J_Extension1,1,Pin_1*%
%TO.N,/E5*%
X104140000Y-71120000D03*
D11*
%TO.P,J_Extension1,2,Pin_2*%
%TO.N,/E6*%
X104140000Y-73660000D03*
%TO.P,J_Extension1,3,Pin_3*%
%TO.N,/E7*%
X101600000Y-71120000D03*
%TO.P,J_Extension1,4,Pin_4*%
%TO.N,/E8*%
X101600000Y-73660000D03*
%TO.P,J_Extension1,5,Pin_5*%
%TO.N,/E4*%
X99060000Y-71120000D03*
%TO.P,J_Extension1,6,Pin_6*%
%TO.N,/E3*%
X99060000Y-73660000D03*
%TO.P,J_Extension1,7,Pin_7*%
%TO.N,/E2*%
X96520000Y-71120000D03*
%TO.P,J_Extension1,8,Pin_8*%
%TO.N,/E1*%
X96520000Y-73660000D03*
%TD*%
%TO.P,CAN_4_1,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-73660000D03*
%TO.P,CAN_4_1,3,Pin_3*%
%TO.N,/CAN4_H*%
X180340000Y-76200000D03*
%TO.P,CAN_4_1,2,Pin_2*%
%TO.N,/CAN4_L*%
X180340000Y-78740000D03*
D10*
%TO.P,CAN_4_1,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-81280000D03*
%TD*%
%TO.P,J_Front_1_1,1,Pin_1*%
%TO.N,/CAN_24V*%
X175260000Y-99060000D03*
D11*
%TO.P,J_Front_1_1,2,Pin_2*%
%TO.N,/CAN_GND*%
X175260000Y-96520000D03*
%TO.P,J_Front_1_1,3,Pin_3*%
X175260000Y-93980000D03*
%TD*%
D10*
%TO.P,J6,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-93980000D03*
D11*
%TO.P,J6,2,Pin_2*%
%TO.N,/CAN3_L*%
X187960000Y-91440000D03*
%TO.P,J6,3,Pin_3*%
%TO.N,/CAN3_H*%
X187960000Y-88900000D03*
%TO.P,J6,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-86360000D03*
%TD*%
%TO.P,Arduino_R1,12,Pin_12*%
%TO.N,unconnected-(Arduino_R1-Pin_12-Pad12)*%
X107696000Y-111760000D03*
%TO.P,Arduino_R1,11,Pin_11*%
%TO.N,unconnected-(Arduino_R1-Pin_11-Pad11)*%
X107696000Y-109220000D03*
%TO.P,Arduino_R1,10,Pin_10*%
%TO.N,unconnected-(Arduino_R1-Pin_10-Pad10)*%
X107696000Y-106680000D03*
%TO.P,Arduino_R1,9,Pin_9*%
%TO.N,unconnected-(Arduino_R1-Pin_9-Pad9)*%
X107696000Y-104140000D03*
%TO.P,Arduino_R1,8,Pin_8*%
%TO.N,/E1*%
X107696000Y-101600000D03*
%TO.P,Arduino_R1,7,Pin_7*%
%TO.N,/E2*%
X107696000Y-99060000D03*
%TO.P,Arduino_R1,6,Pin_6*%
%TO.N,/E3*%
X107696000Y-96520000D03*
%TO.P,Arduino_R1,5,Pin_5*%
%TO.N,/E4*%
X107696000Y-93980000D03*
%TO.P,Arduino_R1,4,Pin_4*%
%TO.N,/E8*%
X107696000Y-91440000D03*
%TO.P,Arduino_R1,3,Pin_3*%
%TO.N,/E7*%
X107696000Y-88900000D03*
%TO.P,Arduino_R1,2,Pin_2*%
%TO.N,/E6*%
X107696000Y-86360000D03*
D10*
%TO.P,Arduino_R1,1,Pin_1*%
%TO.N,/E5*%
X107696000Y-83820000D03*
%TD*%
%TO.P,J2,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-119380000D03*
D11*
%TO.P,J2,2,Pin_2*%
%TO.N,/CAN1_L*%
X180340000Y-116840000D03*
%TO.P,J2,3,Pin_3*%
%TO.N,/CAN1_H*%
X180340000Y-114300000D03*
%TO.P,J2,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-111760000D03*
%TD*%
D10*
%TO.P,J10,1,Pin_1*%
%TO.N,/CAN3_L*%
X175260000Y-91440000D03*
D11*
%TO.P,J10,2,Pin_2*%
%TO.N,/CAN3_H*%
X175260000Y-88900000D03*
%TD*%
D10*
%TO.P,J_Front_1_3,1,Pin_1*%
%TO.N,/CAN_24V*%
X175260000Y-86360000D03*
D11*
%TO.P,J_Front_1_3,2,Pin_2*%
%TO.N,/CAN_GND*%
X175260000Y-83820000D03*
%TO.P,J_Front_1_3,3,Pin_3*%
X175260000Y-81280000D03*
%TD*%
D10*
%TO.P,J_Front_2,1,Pin_1*%
%TO.N,/GND*%
X167640000Y-93980000D03*
D11*
%TO.P,J_Front_2,2,Pin_2*%
%TO.N,unconnected-(J_Front_2-Pin_2-Pad2)*%
X167640000Y-96520000D03*
%TO.P,J_Front_2,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-99060000D03*
%TD*%
D10*
%TO.P,J4,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-93980000D03*
D11*
%TO.P,J4,2,Pin_2*%
%TO.N,/CAN3_L*%
X180340000Y-91440000D03*
%TO.P,J4,3,Pin_3*%
%TO.N,/CAN3_H*%
X180340000Y-88900000D03*
%TO.P,J4,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-86360000D03*
%TD*%
D10*
%TO.P,J_CAN_2,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-106680000D03*
D11*
%TO.P,J_CAN_2,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-106680000D03*
%TO.P,J_CAN_2,3,Pin_3*%
%TO.N,/CS2*%
X127000000Y-106680000D03*
%TO.P,J_CAN_2,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-106680000D03*
%TO.P,J_CAN_2,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-106680000D03*
%TO.P,J_CAN_2,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-106680000D03*
%TO.P,J_CAN_2,7,Pin_7*%
%TO.N,unconnected-(J_CAN_2-Pin_7-Pad7)*%
X137160000Y-106680000D03*
%TD*%
D10*
%TO.P,J_Front_3,1,Pin_1*%
%TO.N,/GND*%
X167640000Y-106680000D03*
D11*
%TO.P,J_Front_3,2,Pin_2*%
%TO.N,unconnected-(J_Front_3-Pin_2-Pad2)*%
X167640000Y-109220000D03*
%TO.P,J_Front_3,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-111760000D03*
%TD*%
%TO.P,Arduino_L1,12,Pin_12*%
%TO.N,/5V*%
X92456000Y-111760000D03*
%TO.P,Arduino_L1,11,Pin_11*%
%TO.N,/GND*%
X92456000Y-109220000D03*
%TO.P,Arduino_L1,10,Pin_10*%
%TO.N,unconnected-(Arduino_L1-Pin_10-Pad10)*%
X92456000Y-106680000D03*
%TO.P,Arduino_L1,9,Pin_9*%
%TO.N,unconnected-(Arduino_L1-Pin_9-Pad9)*%
X92456000Y-104140000D03*
%TO.P,Arduino_L1,8,Pin_8*%
%TO.N,/CS1*%
X92456000Y-101600000D03*
%TO.P,Arduino_L1,7,Pin_7*%
%TO.N,/CS2*%
X92456000Y-99060000D03*
%TO.P,Arduino_L1,6,Pin_6*%
%TO.N,/CS3*%
X92456000Y-96520000D03*
%TO.P,Arduino_L1,5,Pin_5*%
%TO.N,/CS4*%
X92456000Y-93980000D03*
%TO.P,Arduino_L1,4,Pin_4*%
%TO.N,/SO*%
X92456000Y-91440000D03*
%TO.P,Arduino_L1,3,Pin_3*%
%TO.N,/SI*%
X92456000Y-88900000D03*
%TO.P,Arduino_L1,2,Pin_2*%
%TO.N,/SCK*%
X92456000Y-86360000D03*
D10*
%TO.P,Arduino_L1,1,Pin_1*%
%TO.N,unconnected-(Arduino_L1-Pin_1-Pad1)*%
X92456000Y-83820000D03*
%TD*%
%TO.P,J_CAN_1,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-119380000D03*
D11*
%TO.P,J_CAN_1,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-119380000D03*
%TO.P,J_CAN_1,3,Pin_3*%
%TO.N,/CS1*%
X127000000Y-119380000D03*
%TO.P,J_CAN_1,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-119380000D03*
%TO.P,J_CAN_1,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-119380000D03*
%TO.P,J_CAN_1,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-119380000D03*
%TO.P,J_CAN_1,7,Pin_7*%
%TO.N,unconnected-(J_CAN_1-Pin_7-Pad7)*%
X137160000Y-119380000D03*
%TD*%
D10*
%TO.P,J_Front_1_2,1,Pin_1*%
%TO.N,/CAN_24V*%
X175260000Y-111760000D03*
D11*
%TO.P,J_Front_1_2,2,Pin_2*%
%TO.N,/CAN_GND*%
X175260000Y-109220000D03*
%TO.P,J_Front_1_2,3,Pin_3*%
X175260000Y-106680000D03*
%TD*%
%TO.P,J_Front_1,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-86360000D03*
%TO.P,J_Front_1,2,Pin_2*%
%TO.N,unconnected-(J_Front_1-Pin_2-Pad2)*%
X167640000Y-83820000D03*
D10*
%TO.P,J_Front_1,1,Pin_1*%
%TO.N,/GND*%
X167640000Y-81280000D03*
%TD*%
%TO.P,J7,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-81280000D03*
D11*
%TO.P,J7,2,Pin_2*%
%TO.N,/CAN4_L*%
X187960000Y-78740000D03*
%TO.P,J7,3,Pin_3*%
%TO.N,/CAN4_H*%
X187960000Y-76200000D03*
%TO.P,J7,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-73660000D03*
%TD*%
D10*
%TO.P,J9,1,Pin_1*%
%TO.N,/CAN2_L*%
X175260000Y-104140000D03*
D11*
%TO.P,J9,2,Pin_2*%
%TO.N,/CAN2_H*%
X175260000Y-101600000D03*
%TD*%
D10*
%TO.P,JJ_CAN_4,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-81280000D03*
D11*
%TO.P,JJ_CAN_4,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-81280000D03*
%TO.P,JJ_CAN_4,3,Pin_3*%
%TO.N,/CS4*%
X127000000Y-81280000D03*
%TO.P,JJ_CAN_4,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-81280000D03*
%TO.P,JJ_CAN_4,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-81280000D03*
%TO.P,JJ_CAN_4,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-81280000D03*
%TO.P,JJ_CAN_4,7,Pin_7*%
%TO.N,unconnected-(JJ_CAN_4-Pin_7-Pad7)*%
X137160000Y-81280000D03*
%TD*%
D10*
%TO.P,J8,1,Pin_1*%
%TO.N,/CAN1_L*%
X175260000Y-116840000D03*
D11*
%TO.P,J8,2,Pin_2*%
%TO.N,/CAN1_H*%
X175260000Y-114300000D03*
%TD*%
D10*
%TO.P,CAN_2_1,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-106680000D03*
D11*
%TO.P,CAN_2_1,2,Pin_2*%
%TO.N,/CAN2_L*%
X180340000Y-104140000D03*
%TO.P,CAN_2_1,3,Pin_3*%
%TO.N,/CAN2_H*%
X180340000Y-101600000D03*
%TO.P,CAN_2_1,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-99060000D03*
%TD*%
D10*
%TO.P,J_CAN_3,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-93980000D03*
D11*
%TO.P,J_CAN_3,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-93980000D03*
%TO.P,J_CAN_3,3,Pin_3*%
%TO.N,/CS3*%
X127000000Y-93980000D03*
%TO.P,J_CAN_3,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-93980000D03*
%TO.P,J_CAN_3,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-93980000D03*
%TO.P,J_CAN_3,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-93980000D03*
%TO.P,J_CAN_3,7,Pin_7*%
%TO.N,unconnected-(J_CAN_3-Pin_7-Pad7)*%
X137160000Y-93980000D03*
%TD*%
%TO.P,J1,2,Pin_2*%
%TO.N,/24V*%
X167640000Y-116750000D03*
D10*
%TO.P,J1,1,Pin_1*%
%TO.N,/GND*%
X165100000Y-116750000D03*
%TD*%
%TO.P,J11,1,Pin_1*%
%TO.N,/CAN4_L*%
X175260000Y-78740000D03*
D11*
%TO.P,J11,2,Pin_2*%
%TO.N,/CAN4_H*%
X175260000Y-76200000D03*
%TD*%
D10*
%TO.P,J_Extension_2,1,Pin_1*%
%TO.N,/5V*%
X167640000Y-66040000D03*
D11*
%TO.P,J_Extension_2,2,Pin_2*%
%TO.N,/GND*%
X167640000Y-68580000D03*
%TO.P,J_Extension_2,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-71120000D03*
%TD*%
D10*
%TO.P,J5,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-106680000D03*
D11*
%TO.P,J5,2,Pin_2*%
%TO.N,/CAN2_L*%
X187960000Y-104140000D03*
%TO.P,J5,3,Pin_3*%
%TO.N,/CAN2_H*%
X187960000Y-101600000D03*
%TO.P,J5,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-99060000D03*
%TD*%
D10*
%TO.P,J3,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-119380000D03*
D11*
%TO.P,J3,2,Pin_2*%
%TO.N,/CAN1_L*%
X187960000Y-116840000D03*
%TO.P,J3,3,Pin_3*%
%TO.N,/CAN1_H*%
X187960000Y-114300000D03*
%TO.P,J3,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-111760000D03*
%TD*%
D10*
%TO.P,J_Stepdown1,1,Pin_1*%
%TO.N,/5V*%
X153341400Y-83594200D03*
D11*
%TO.P,J_Stepdown1,2,Pin_2*%
%TO.N,/GND*%
X153341400Y-86134200D03*
%TO.P,J_Stepdown1,3,Pin_3*%
%TO.N,/24V*%
X153341400Y-88674200D03*
%TD*%
D12*
%TO.N,/CS3*%
X100063401Y-83492200D02*
X100063400Y-88484165D01*
X113251223Y-80846700D02*
X102708902Y-80846700D01*
X102708902Y-80846700D02*
X100063401Y-83492200D01*
X117187720Y-84783198D02*
X113251223Y-80846700D01*
X117190396Y-84783198D02*
X117187720Y-84783198D01*
X96518400Y-94997600D02*
X94996000Y-96520000D01*
X117190401Y-84783200D02*
X117190396Y-84783198D01*
X117481401Y-85074200D02*
X117190401Y-84783200D01*
X117484078Y-85074200D02*
X117481401Y-85074200D01*
X118484078Y-86074200D02*
X117484078Y-85074200D01*
X125317200Y-86074200D02*
X118484078Y-86074200D01*
X100063400Y-88484165D02*
X96518400Y-92029167D01*
X127000000Y-87757000D02*
X125317200Y-86074200D01*
X127000000Y-93980000D02*
X127000000Y-87757000D01*
X96518400Y-92029167D02*
X96518400Y-94997600D01*
X94996000Y-96520000D02*
X92456000Y-96520000D01*
%TO.N,/CS4*%
X117484074Y-84074195D02*
X117775079Y-84365200D01*
X117481395Y-84074195D02*
X117484074Y-84074195D01*
X118777756Y-85365200D02*
X125200800Y-85365200D01*
X113544901Y-80137700D02*
X117481395Y-84074195D01*
X117775079Y-84365200D02*
X117777756Y-84365200D01*
X102415225Y-80137700D02*
X113544901Y-80137700D01*
X99354401Y-83198522D02*
X102415225Y-80137700D01*
X99354400Y-88190487D02*
X99354401Y-83198522D01*
X95809400Y-92658600D02*
X95809400Y-91735489D01*
X117777756Y-84365200D02*
X118777756Y-85365200D01*
X95809400Y-91735489D02*
X99354400Y-88190487D01*
X94488000Y-93980000D02*
X95809400Y-92658600D01*
X125200800Y-85365200D02*
X127000000Y-83566000D01*
X92456000Y-93980000D02*
X94488000Y-93980000D01*
X127000000Y-83566000D02*
X127000000Y-81280000D01*
%TO.N,/CS1*%
X118772400Y-88367878D02*
X118772400Y-110365200D01*
X116896722Y-86492200D02*
X118772400Y-88367878D01*
X103296258Y-82264700D02*
X112663869Y-82264700D01*
X116600369Y-86201200D02*
X116603046Y-86201200D01*
X101481400Y-84079557D02*
X103296258Y-82264700D01*
X116603046Y-86201200D02*
X116894050Y-86492200D01*
X101481400Y-89071518D02*
X101481400Y-84079557D01*
X116894050Y-86492200D02*
X116896722Y-86492200D01*
X97936400Y-92616522D02*
X101481400Y-89071518D01*
X97936400Y-100691600D02*
X97936400Y-92616522D01*
X112663869Y-82264700D02*
X116600369Y-86201200D01*
X97028000Y-101600000D02*
X97936400Y-100691600D01*
X125790200Y-112074200D02*
X127000000Y-113284000D01*
X92456000Y-101600000D02*
X97028000Y-101600000D01*
X118772400Y-110365200D02*
X120481401Y-112074200D01*
X120481401Y-112074200D02*
X125790200Y-112074200D01*
X127000000Y-113284000D02*
X127000000Y-119380000D01*
%TO.N,/CS2*%
X112957547Y-81555700D02*
X116894045Y-85492198D01*
X100772400Y-83785879D02*
X103002581Y-81555700D01*
X103002581Y-81555700D02*
X112957547Y-81555700D01*
X100772400Y-88777841D02*
X100772400Y-83785879D01*
X97227400Y-92322845D02*
X100772400Y-88777841D01*
X97227400Y-97336600D02*
X97227400Y-92322845D01*
X116894045Y-85492198D02*
X116896719Y-85492198D01*
X95504000Y-99060000D02*
X97227400Y-97336600D01*
X119481400Y-88074201D02*
X119481400Y-110071522D01*
X127000000Y-110236000D02*
X127000000Y-106680000D01*
X117190400Y-85783200D02*
X119481400Y-88074201D01*
X125870800Y-111365200D02*
X127000000Y-110236000D01*
X117187723Y-85783200D02*
X117190400Y-85783200D01*
X120775078Y-111365200D02*
X125870800Y-111365200D01*
X116896719Y-85492198D02*
X117187723Y-85783200D01*
X92456000Y-99060000D02*
X95504000Y-99060000D01*
X119481400Y-110071522D02*
X120775078Y-111365200D01*
%TO.N,/SCK*%
X101623992Y-78010700D02*
X101937240Y-78010700D01*
X101092564Y-78272720D02*
X101133284Y-78232000D01*
X102211339Y-78010693D02*
X102211346Y-78010700D01*
X101424088Y-78031000D02*
X101603692Y-78031000D01*
X101133284Y-78232000D02*
X101223088Y-78232000D01*
X101937240Y-78010700D02*
X102211339Y-78010693D01*
X101092564Y-78362522D02*
X101092564Y-78272720D01*
X101603692Y-78031000D02*
X101623992Y-78010700D01*
X97227400Y-82227687D02*
X101092564Y-78362522D01*
X97227400Y-85652600D02*
X97227400Y-82227687D01*
X134620000Y-78740000D02*
X134620000Y-81280000D01*
X96520000Y-86360000D02*
X97227400Y-85652600D01*
X101223088Y-78232000D02*
X101424088Y-78031000D01*
X92456000Y-86360000D02*
X96520000Y-86360000D01*
X102211346Y-78010700D02*
X133890700Y-78010700D01*
X133890700Y-78010700D02*
X134620000Y-78740000D01*
%TO.N,/SI*%
X92456000Y-88900000D02*
X96520000Y-88900000D01*
X96520000Y-88900000D02*
X97936400Y-87483600D01*
X101717765Y-78740000D02*
X101897370Y-78740000D01*
X101897388Y-78739992D02*
X101917679Y-78719700D01*
X97936400Y-87483600D02*
X97936400Y-82521365D01*
X97936400Y-82521365D02*
X101717765Y-78740000D01*
X101917679Y-78719700D02*
X130789700Y-78719700D01*
X101897370Y-78740000D02*
X101897378Y-78739992D01*
X101897378Y-78739992D02*
X101897388Y-78739992D01*
X130789700Y-78719700D02*
X132080000Y-80010000D01*
X132080000Y-80010000D02*
X132080000Y-81280000D01*
%TO.N,/SO*%
X129540000Y-81280000D02*
X127688700Y-79428700D01*
X127688700Y-79428700D02*
X102211347Y-79428700D01*
%TO.N,/GND*%
X92456000Y-109220000D02*
X94488000Y-109220000D01*
X94488000Y-109220000D02*
X95504000Y-110236000D01*
X95504000Y-110236000D02*
X95504000Y-113284000D01*
X96520000Y-114300000D02*
X121920000Y-114300000D01*
X95504000Y-113284000D02*
X96520000Y-114300000D01*
X121920000Y-114300000D02*
X124460000Y-116840000D01*
X124460000Y-116840000D02*
X124460000Y-119380000D01*
%TO.N,/SO*%
X98645400Y-87896810D02*
X95102210Y-91440000D01*
X95102210Y-91440000D02*
X92456000Y-91440000D01*
%TO.N,/SCK*%
X134620000Y-119380000D02*
X134620000Y-81280000D01*
%TO.N,/SI*%
X132080000Y-81280000D02*
X132080000Y-119380000D01*
%TO.N,/SO*%
X129540000Y-119380000D02*
X129540000Y-81280000D01*
X98645400Y-87896810D02*
X98645400Y-82904845D01*
X98645400Y-82904845D02*
X102058045Y-79492200D01*
D13*
%TO.N,/GND*%
X163941400Y-105621400D02*
X165100000Y-106780000D01*
X165100000Y-106780000D02*
X165100000Y-116750000D01*
X163941400Y-84274200D02*
X163941400Y-82058600D01*
X163941400Y-82058600D02*
X164720000Y-81280000D01*
X164720000Y-81280000D02*
X167640000Y-81280000D01*
X162081400Y-86134200D02*
X163941400Y-84274200D01*
X163941400Y-84274200D02*
X163941400Y-84600000D01*
%TO.N,/CAN_GND*%
X182500000Y-105750000D02*
X182500000Y-118750000D01*
X182500000Y-118750000D02*
X181870000Y-119380000D01*
X181870000Y-119380000D02*
X180340000Y-119380000D01*
X182500000Y-92750000D02*
X182500000Y-105750000D01*
X182500000Y-105750000D02*
X181570000Y-106680000D01*
X181570000Y-106680000D02*
X180340000Y-106680000D01*
X180340000Y-81280000D02*
X181530000Y-81280000D01*
X181530000Y-81280000D02*
X182500000Y-82250000D01*
X182500000Y-82250000D02*
X182500000Y-92750000D01*
X182500000Y-92750000D02*
X181270000Y-93980000D01*
X181270000Y-93980000D02*
X180340000Y-93980000D01*
%TO.N,/CAN_24V*%
X177750000Y-98000000D02*
X177750000Y-111000000D01*
X177750000Y-111000000D02*
X178510000Y-111760000D01*
X178510000Y-111760000D02*
X180340000Y-111760000D01*
X177750000Y-85750000D02*
X177750000Y-98000000D01*
X177750000Y-98000000D02*
X178810000Y-99060000D01*
X178810000Y-99060000D02*
X180340000Y-99060000D01*
X180340000Y-73660000D02*
X178590000Y-73660000D01*
X178590000Y-73660000D02*
X177750000Y-74500000D01*
X177750000Y-74500000D02*
X177750000Y-85750000D01*
X177750000Y-85750000D02*
X178360000Y-86360000D01*
X178360000Y-86360000D02*
X180340000Y-86360000D01*
%TO.N,/GND*%
X163941400Y-92941400D02*
X164980000Y-93980000D01*
X163941400Y-91800000D02*
X163941400Y-92941400D01*
X162201400Y-86134200D02*
X163941400Y-87874200D01*
X153341400Y-86134200D02*
X162081400Y-86134200D01*
X163941400Y-91800000D02*
X163941400Y-105621400D01*
X163941400Y-87874200D02*
X163941400Y-84600000D01*
X163941400Y-105621400D02*
X165000000Y-106680000D01*
X162081400Y-86134200D02*
X162201400Y-86134200D01*
X164980000Y-93980000D02*
X167640000Y-93980000D01*
X165000000Y-106680000D02*
X167640000Y-106680000D01*
X163941400Y-91800000D02*
X163941400Y-87874200D01*
D12*
%TO.N,/E5*%
X107421400Y-84134200D02*
X107981400Y-84134200D01*
%TD*%
%TA.AperFunction,Conductor*%
%TO.N,/GND*%
G36*
X163889279Y-84807265D02*
G01*
X163939802Y-84855526D01*
X163956118Y-84909694D01*
X164123282Y-87584312D01*
X164107817Y-87652449D01*
X164057970Y-87701409D01*
X163989567Y-87715647D01*
X163924324Y-87690643D01*
X163919509Y-87686777D01*
X163127182Y-87017531D01*
X162197722Y-86232452D01*
X162159210Y-86174157D01*
X162158329Y-86104293D01*
X162195359Y-86045043D01*
X162201160Y-86040194D01*
X163755797Y-84819888D01*
X163820684Y-84793980D01*
X163889279Y-84807265D01*
G37*
%TD.AperFunction*%
%TD*%
M02*

View File

@@ -0,0 +1,245 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:30+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Bot*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:30*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10R,1.700000X1.700000*%
%ADD11C,1.700000*%
G04 APERTURE END LIST*
D10*
%TO.C,J_Extension1*%
X104140000Y-71120000D03*
D11*
X104140000Y-73660000D03*
X101600000Y-71120000D03*
X101600000Y-73660000D03*
X99060000Y-71120000D03*
X99060000Y-73660000D03*
X96520000Y-71120000D03*
X96520000Y-73660000D03*
%TD*%
%TO.C,CAN_4_1*%
X180340000Y-73660000D03*
X180340000Y-76200000D03*
X180340000Y-78740000D03*
D10*
X180340000Y-81280000D03*
%TD*%
%TO.C,J_Front_1_1*%
X175260000Y-99060000D03*
D11*
X175260000Y-96520000D03*
X175260000Y-93980000D03*
%TD*%
D10*
%TO.C,J6*%
X187960000Y-93980000D03*
D11*
X187960000Y-91440000D03*
X187960000Y-88900000D03*
X187960000Y-86360000D03*
%TD*%
%TO.C,Arduino_R1*%
X107696000Y-111760000D03*
X107696000Y-109220000D03*
X107696000Y-106680000D03*
X107696000Y-104140000D03*
X107696000Y-101600000D03*
X107696000Y-99060000D03*
X107696000Y-96520000D03*
X107696000Y-93980000D03*
X107696000Y-91440000D03*
X107696000Y-88900000D03*
X107696000Y-86360000D03*
D10*
X107696000Y-83820000D03*
%TD*%
%TO.C,J2*%
X180340000Y-119380000D03*
D11*
X180340000Y-116840000D03*
X180340000Y-114300000D03*
X180340000Y-111760000D03*
%TD*%
D10*
%TO.C,J10*%
X175260000Y-91440000D03*
D11*
X175260000Y-88900000D03*
%TD*%
D10*
%TO.C,J_Front_1_3*%
X175260000Y-86360000D03*
D11*
X175260000Y-83820000D03*
X175260000Y-81280000D03*
%TD*%
D10*
%TO.C,J_Front_2*%
X167640000Y-93980000D03*
D11*
X167640000Y-96520000D03*
X167640000Y-99060000D03*
%TD*%
D10*
%TO.C,J4*%
X180340000Y-93980000D03*
D11*
X180340000Y-91440000D03*
X180340000Y-88900000D03*
X180340000Y-86360000D03*
%TD*%
D10*
%TO.C,J_CAN_2*%
X121920000Y-106680000D03*
D11*
X124460000Y-106680000D03*
X127000000Y-106680000D03*
X129540000Y-106680000D03*
X132080000Y-106680000D03*
X134620000Y-106680000D03*
X137160000Y-106680000D03*
%TD*%
D10*
%TO.C,J_Front_3*%
X167640000Y-106680000D03*
D11*
X167640000Y-109220000D03*
X167640000Y-111760000D03*
%TD*%
%TO.C,Arduino_L1*%
X92456000Y-111760000D03*
X92456000Y-109220000D03*
X92456000Y-106680000D03*
X92456000Y-104140000D03*
X92456000Y-101600000D03*
X92456000Y-99060000D03*
X92456000Y-96520000D03*
X92456000Y-93980000D03*
X92456000Y-91440000D03*
X92456000Y-88900000D03*
X92456000Y-86360000D03*
D10*
X92456000Y-83820000D03*
%TD*%
%TO.C,J_CAN_1*%
X121920000Y-119380000D03*
D11*
X124460000Y-119380000D03*
X127000000Y-119380000D03*
X129540000Y-119380000D03*
X132080000Y-119380000D03*
X134620000Y-119380000D03*
X137160000Y-119380000D03*
%TD*%
D10*
%TO.C,J_Front_1_2*%
X175260000Y-111760000D03*
D11*
X175260000Y-109220000D03*
X175260000Y-106680000D03*
%TD*%
%TO.C,J_Front_1*%
X167640000Y-86360000D03*
X167640000Y-83820000D03*
D10*
X167640000Y-81280000D03*
%TD*%
%TO.C,J7*%
X187960000Y-81280000D03*
D11*
X187960000Y-78740000D03*
X187960000Y-76200000D03*
X187960000Y-73660000D03*
%TD*%
D10*
%TO.C,J9*%
X175260000Y-104140000D03*
D11*
X175260000Y-101600000D03*
%TD*%
D10*
%TO.C,JJ_CAN_4*%
X121920000Y-81280000D03*
D11*
X124460000Y-81280000D03*
X127000000Y-81280000D03*
X129540000Y-81280000D03*
X132080000Y-81280000D03*
X134620000Y-81280000D03*
X137160000Y-81280000D03*
%TD*%
D10*
%TO.C,J8*%
X175260000Y-116840000D03*
D11*
X175260000Y-114300000D03*
%TD*%
D10*
%TO.C,CAN_2_1*%
X180340000Y-106680000D03*
D11*
X180340000Y-104140000D03*
X180340000Y-101600000D03*
X180340000Y-99060000D03*
%TD*%
D10*
%TO.C,J_CAN_3*%
X121920000Y-93980000D03*
D11*
X124460000Y-93980000D03*
X127000000Y-93980000D03*
X129540000Y-93980000D03*
X132080000Y-93980000D03*
X134620000Y-93980000D03*
X137160000Y-93980000D03*
%TD*%
%TO.C,J1*%
X167640000Y-116750000D03*
D10*
X165100000Y-116750000D03*
%TD*%
%TO.C,J11*%
X175260000Y-78740000D03*
D11*
X175260000Y-76200000D03*
%TD*%
D10*
%TO.C,J_Extension_2*%
X167640000Y-66040000D03*
D11*
X167640000Y-68580000D03*
X167640000Y-71120000D03*
%TD*%
D10*
%TO.C,J5*%
X187960000Y-106680000D03*
D11*
X187960000Y-104140000D03*
X187960000Y-101600000D03*
X187960000Y-99060000D03*
%TD*%
D10*
%TO.C,J3*%
X187960000Y-119380000D03*
D11*
X187960000Y-116840000D03*
X187960000Y-114300000D03*
X187960000Y-111760000D03*
%TD*%
D10*
%TO.C,J_Stepdown1*%
X153341400Y-83594200D03*
D11*
X153341400Y-86134200D03*
X153341400Y-88674200D03*
%TD*%
M02*

View File

@@ -0,0 +1,15 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

View File

@@ -0,0 +1,15 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Legend,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

View File

@@ -0,0 +1,43 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:30+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Profile,NP*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:30*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.050000*%
%TD*%
G04 APERTURE END LIST*
D10*
X171037200Y-57750000D02*
X171500000Y-57750000D01*
X171500000Y-121250000D01*
X171037200Y-121250000D01*
X171037200Y-57750000D01*
X90116400Y-57574200D02*
X190436400Y-57574200D01*
X190436400Y-121574200D01*
X90116400Y-121574200D01*
X90116400Y-57574200D01*
X106605200Y-76441200D02*
X161000000Y-76441200D01*
X161000000Y-77000000D01*
X106605200Y-77000000D01*
X106605200Y-76441200D01*
X165287200Y-76441200D02*
X170750000Y-76441200D01*
X170750000Y-77000000D01*
X165287200Y-77000000D01*
X165287200Y-76441200D01*
X90250000Y-76352400D02*
X93560000Y-76352400D01*
X93560000Y-76911200D01*
X90250000Y-76911200D01*
X90250000Y-76352400D01*
M02*

View File

@@ -0,0 +1,808 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Copper,L1,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,ComponentPad*%
%ADD10R,1.700000X1.700000*%
%TD*%
%TA.AperFunction,ComponentPad*%
%ADD11C,1.700000*%
%TD*%
%TA.AperFunction,Conductor*%
%ADD12C,0.635000*%
%TD*%
%TA.AperFunction,Conductor*%
%ADD13C,0.381000*%
%TD*%
G04 APERTURE END LIST*
D10*
%TO.P,J_Extension1,1,Pin_1*%
%TO.N,/E5*%
X104140000Y-71120000D03*
D11*
%TO.P,J_Extension1,2,Pin_2*%
%TO.N,/E6*%
X104140000Y-73660000D03*
%TO.P,J_Extension1,3,Pin_3*%
%TO.N,/E7*%
X101600000Y-71120000D03*
%TO.P,J_Extension1,4,Pin_4*%
%TO.N,/E8*%
X101600000Y-73660000D03*
%TO.P,J_Extension1,5,Pin_5*%
%TO.N,/E4*%
X99060000Y-71120000D03*
%TO.P,J_Extension1,6,Pin_6*%
%TO.N,/E3*%
X99060000Y-73660000D03*
%TO.P,J_Extension1,7,Pin_7*%
%TO.N,/E2*%
X96520000Y-71120000D03*
%TO.P,J_Extension1,8,Pin_8*%
%TO.N,/E1*%
X96520000Y-73660000D03*
%TD*%
%TO.P,CAN_4_1,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-73660000D03*
%TO.P,CAN_4_1,3,Pin_3*%
%TO.N,/CAN4_H*%
X180340000Y-76200000D03*
%TO.P,CAN_4_1,2,Pin_2*%
%TO.N,/CAN4_L*%
X180340000Y-78740000D03*
D10*
%TO.P,CAN_4_1,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-81280000D03*
%TD*%
%TO.P,J_Front_1_1,1,Pin_1*%
%TO.N,/CAN_24V*%
X175260000Y-99060000D03*
D11*
%TO.P,J_Front_1_1,2,Pin_2*%
%TO.N,/CAN_GND*%
X175260000Y-96520000D03*
%TO.P,J_Front_1_1,3,Pin_3*%
X175260000Y-93980000D03*
%TD*%
D10*
%TO.P,J6,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-93980000D03*
D11*
%TO.P,J6,2,Pin_2*%
%TO.N,/CAN3_L*%
X187960000Y-91440000D03*
%TO.P,J6,3,Pin_3*%
%TO.N,/CAN3_H*%
X187960000Y-88900000D03*
%TO.P,J6,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-86360000D03*
%TD*%
%TO.P,Arduino_R1,12,Pin_12*%
%TO.N,unconnected-(Arduino_R1-Pin_12-Pad12)*%
X107696000Y-111760000D03*
%TO.P,Arduino_R1,11,Pin_11*%
%TO.N,unconnected-(Arduino_R1-Pin_11-Pad11)*%
X107696000Y-109220000D03*
%TO.P,Arduino_R1,10,Pin_10*%
%TO.N,unconnected-(Arduino_R1-Pin_10-Pad10)*%
X107696000Y-106680000D03*
%TO.P,Arduino_R1,9,Pin_9*%
%TO.N,unconnected-(Arduino_R1-Pin_9-Pad9)*%
X107696000Y-104140000D03*
%TO.P,Arduino_R1,8,Pin_8*%
%TO.N,/E1*%
X107696000Y-101600000D03*
%TO.P,Arduino_R1,7,Pin_7*%
%TO.N,/E2*%
X107696000Y-99060000D03*
%TO.P,Arduino_R1,6,Pin_6*%
%TO.N,/E3*%
X107696000Y-96520000D03*
%TO.P,Arduino_R1,5,Pin_5*%
%TO.N,/E4*%
X107696000Y-93980000D03*
%TO.P,Arduino_R1,4,Pin_4*%
%TO.N,/E8*%
X107696000Y-91440000D03*
%TO.P,Arduino_R1,3,Pin_3*%
%TO.N,/E7*%
X107696000Y-88900000D03*
%TO.P,Arduino_R1,2,Pin_2*%
%TO.N,/E6*%
X107696000Y-86360000D03*
D10*
%TO.P,Arduino_R1,1,Pin_1*%
%TO.N,/E5*%
X107696000Y-83820000D03*
%TD*%
%TO.P,J2,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-119380000D03*
D11*
%TO.P,J2,2,Pin_2*%
%TO.N,/CAN1_L*%
X180340000Y-116840000D03*
%TO.P,J2,3,Pin_3*%
%TO.N,/CAN1_H*%
X180340000Y-114300000D03*
%TO.P,J2,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-111760000D03*
%TD*%
D10*
%TO.P,J10,1,Pin_1*%
%TO.N,/CAN3_L*%
X175260000Y-91440000D03*
D11*
%TO.P,J10,2,Pin_2*%
%TO.N,/CAN3_H*%
X175260000Y-88900000D03*
%TD*%
D10*
%TO.P,J_Front_1_3,1,Pin_1*%
%TO.N,/CAN_24V*%
X175260000Y-86360000D03*
D11*
%TO.P,J_Front_1_3,2,Pin_2*%
%TO.N,/CAN_GND*%
X175260000Y-83820000D03*
%TO.P,J_Front_1_3,3,Pin_3*%
X175260000Y-81280000D03*
%TD*%
D10*
%TO.P,J_Front_2,1,Pin_1*%
%TO.N,/GND*%
X167640000Y-93980000D03*
D11*
%TO.P,J_Front_2,2,Pin_2*%
%TO.N,unconnected-(J_Front_2-Pin_2-Pad2)*%
X167640000Y-96520000D03*
%TO.P,J_Front_2,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-99060000D03*
%TD*%
D10*
%TO.P,J4,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-93980000D03*
D11*
%TO.P,J4,2,Pin_2*%
%TO.N,/CAN3_L*%
X180340000Y-91440000D03*
%TO.P,J4,3,Pin_3*%
%TO.N,/CAN3_H*%
X180340000Y-88900000D03*
%TO.P,J4,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-86360000D03*
%TD*%
D10*
%TO.P,J_CAN_2,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-106680000D03*
D11*
%TO.P,J_CAN_2,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-106680000D03*
%TO.P,J_CAN_2,3,Pin_3*%
%TO.N,/CS2*%
X127000000Y-106680000D03*
%TO.P,J_CAN_2,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-106680000D03*
%TO.P,J_CAN_2,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-106680000D03*
%TO.P,J_CAN_2,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-106680000D03*
%TO.P,J_CAN_2,7,Pin_7*%
%TO.N,unconnected-(J_CAN_2-Pin_7-Pad7)*%
X137160000Y-106680000D03*
%TD*%
D10*
%TO.P,J_Front_3,1,Pin_1*%
%TO.N,/GND*%
X167640000Y-106680000D03*
D11*
%TO.P,J_Front_3,2,Pin_2*%
%TO.N,unconnected-(J_Front_3-Pin_2-Pad2)*%
X167640000Y-109220000D03*
%TO.P,J_Front_3,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-111760000D03*
%TD*%
%TO.P,Arduino_L1,12,Pin_12*%
%TO.N,/5V*%
X92456000Y-111760000D03*
%TO.P,Arduino_L1,11,Pin_11*%
%TO.N,/GND*%
X92456000Y-109220000D03*
%TO.P,Arduino_L1,10,Pin_10*%
%TO.N,unconnected-(Arduino_L1-Pin_10-Pad10)*%
X92456000Y-106680000D03*
%TO.P,Arduino_L1,9,Pin_9*%
%TO.N,unconnected-(Arduino_L1-Pin_9-Pad9)*%
X92456000Y-104140000D03*
%TO.P,Arduino_L1,8,Pin_8*%
%TO.N,/CS1*%
X92456000Y-101600000D03*
%TO.P,Arduino_L1,7,Pin_7*%
%TO.N,/CS2*%
X92456000Y-99060000D03*
%TO.P,Arduino_L1,6,Pin_6*%
%TO.N,/CS3*%
X92456000Y-96520000D03*
%TO.P,Arduino_L1,5,Pin_5*%
%TO.N,/CS4*%
X92456000Y-93980000D03*
%TO.P,Arduino_L1,4,Pin_4*%
%TO.N,/SO*%
X92456000Y-91440000D03*
%TO.P,Arduino_L1,3,Pin_3*%
%TO.N,/SI*%
X92456000Y-88900000D03*
%TO.P,Arduino_L1,2,Pin_2*%
%TO.N,/SCK*%
X92456000Y-86360000D03*
D10*
%TO.P,Arduino_L1,1,Pin_1*%
%TO.N,unconnected-(Arduino_L1-Pin_1-Pad1)*%
X92456000Y-83820000D03*
%TD*%
%TO.P,J_CAN_1,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-119380000D03*
D11*
%TO.P,J_CAN_1,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-119380000D03*
%TO.P,J_CAN_1,3,Pin_3*%
%TO.N,/CS1*%
X127000000Y-119380000D03*
%TO.P,J_CAN_1,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-119380000D03*
%TO.P,J_CAN_1,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-119380000D03*
%TO.P,J_CAN_1,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-119380000D03*
%TO.P,J_CAN_1,7,Pin_7*%
%TO.N,unconnected-(J_CAN_1-Pin_7-Pad7)*%
X137160000Y-119380000D03*
%TD*%
D10*
%TO.P,J_Front_1_2,1,Pin_1*%
%TO.N,/CAN_24V*%
X175260000Y-111760000D03*
D11*
%TO.P,J_Front_1_2,2,Pin_2*%
%TO.N,/CAN_GND*%
X175260000Y-109220000D03*
%TO.P,J_Front_1_2,3,Pin_3*%
X175260000Y-106680000D03*
%TD*%
%TO.P,J_Front_1,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-86360000D03*
%TO.P,J_Front_1,2,Pin_2*%
%TO.N,unconnected-(J_Front_1-Pin_2-Pad2)*%
X167640000Y-83820000D03*
D10*
%TO.P,J_Front_1,1,Pin_1*%
%TO.N,/GND*%
X167640000Y-81280000D03*
%TD*%
%TO.P,J7,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-81280000D03*
D11*
%TO.P,J7,2,Pin_2*%
%TO.N,/CAN4_L*%
X187960000Y-78740000D03*
%TO.P,J7,3,Pin_3*%
%TO.N,/CAN4_H*%
X187960000Y-76200000D03*
%TO.P,J7,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-73660000D03*
%TD*%
D10*
%TO.P,J9,1,Pin_1*%
%TO.N,/CAN2_L*%
X175260000Y-104140000D03*
D11*
%TO.P,J9,2,Pin_2*%
%TO.N,/CAN2_H*%
X175260000Y-101600000D03*
%TD*%
D10*
%TO.P,JJ_CAN_4,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-81280000D03*
D11*
%TO.P,JJ_CAN_4,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-81280000D03*
%TO.P,JJ_CAN_4,3,Pin_3*%
%TO.N,/CS4*%
X127000000Y-81280000D03*
%TO.P,JJ_CAN_4,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-81280000D03*
%TO.P,JJ_CAN_4,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-81280000D03*
%TO.P,JJ_CAN_4,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-81280000D03*
%TO.P,JJ_CAN_4,7,Pin_7*%
%TO.N,unconnected-(JJ_CAN_4-Pin_7-Pad7)*%
X137160000Y-81280000D03*
%TD*%
D10*
%TO.P,J8,1,Pin_1*%
%TO.N,/CAN1_L*%
X175260000Y-116840000D03*
D11*
%TO.P,J8,2,Pin_2*%
%TO.N,/CAN1_H*%
X175260000Y-114300000D03*
%TD*%
D10*
%TO.P,CAN_2_1,1,Pin_1*%
%TO.N,/CAN_GND*%
X180340000Y-106680000D03*
D11*
%TO.P,CAN_2_1,2,Pin_2*%
%TO.N,/CAN2_L*%
X180340000Y-104140000D03*
%TO.P,CAN_2_1,3,Pin_3*%
%TO.N,/CAN2_H*%
X180340000Y-101600000D03*
%TO.P,CAN_2_1,4,Pin_4*%
%TO.N,/CAN_24V*%
X180340000Y-99060000D03*
%TD*%
D10*
%TO.P,J_CAN_3,1,Pin_1*%
%TO.N,/5V*%
X121920000Y-93980000D03*
D11*
%TO.P,J_CAN_3,2,Pin_2*%
%TO.N,/GND*%
X124460000Y-93980000D03*
%TO.P,J_CAN_3,3,Pin_3*%
%TO.N,/CS3*%
X127000000Y-93980000D03*
%TO.P,J_CAN_3,4,Pin_4*%
%TO.N,/SO*%
X129540000Y-93980000D03*
%TO.P,J_CAN_3,5,Pin_5*%
%TO.N,/SI*%
X132080000Y-93980000D03*
%TO.P,J_CAN_3,6,Pin_6*%
%TO.N,/SCK*%
X134620000Y-93980000D03*
%TO.P,J_CAN_3,7,Pin_7*%
%TO.N,unconnected-(J_CAN_3-Pin_7-Pad7)*%
X137160000Y-93980000D03*
%TD*%
%TO.P,J1,2,Pin_2*%
%TO.N,/24V*%
X167640000Y-116750000D03*
D10*
%TO.P,J1,1,Pin_1*%
%TO.N,/GND*%
X165100000Y-116750000D03*
%TD*%
%TO.P,J11,1,Pin_1*%
%TO.N,/CAN4_L*%
X175260000Y-78740000D03*
D11*
%TO.P,J11,2,Pin_2*%
%TO.N,/CAN4_H*%
X175260000Y-76200000D03*
%TD*%
D10*
%TO.P,J_Extension_2,1,Pin_1*%
%TO.N,/5V*%
X167640000Y-66040000D03*
D11*
%TO.P,J_Extension_2,2,Pin_2*%
%TO.N,/GND*%
X167640000Y-68580000D03*
%TO.P,J_Extension_2,3,Pin_3*%
%TO.N,/24V*%
X167640000Y-71120000D03*
%TD*%
D10*
%TO.P,J5,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-106680000D03*
D11*
%TO.P,J5,2,Pin_2*%
%TO.N,/CAN2_L*%
X187960000Y-104140000D03*
%TO.P,J5,3,Pin_3*%
%TO.N,/CAN2_H*%
X187960000Y-101600000D03*
%TO.P,J5,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-99060000D03*
%TD*%
D10*
%TO.P,J3,1,Pin_1*%
%TO.N,/CAN_GND*%
X187960000Y-119380000D03*
D11*
%TO.P,J3,2,Pin_2*%
%TO.N,/CAN1_L*%
X187960000Y-116840000D03*
%TO.P,J3,3,Pin_3*%
%TO.N,/CAN1_H*%
X187960000Y-114300000D03*
%TO.P,J3,4,Pin_4*%
%TO.N,/CAN_24V*%
X187960000Y-111760000D03*
%TD*%
D10*
%TO.P,J_Stepdown1,1,Pin_1*%
%TO.N,/5V*%
X153341400Y-83594200D03*
D11*
%TO.P,J_Stepdown1,2,Pin_2*%
%TO.N,/GND*%
X153341400Y-86134200D03*
%TO.P,J_Stepdown1,3,Pin_3*%
%TO.N,/24V*%
X153341400Y-88674200D03*
%TD*%
D12*
%TO.N,/GND*%
X153341400Y-86134200D02*
X156881400Y-86134200D01*
X156881400Y-86134200D02*
X162705400Y-80310200D01*
X162705400Y-80310200D02*
X162705400Y-69794600D01*
X162705400Y-69794600D02*
X163920000Y-68580000D01*
X163920000Y-68580000D02*
X167640000Y-68580000D01*
D13*
%TO.N,/E5*%
X105641400Y-83289400D02*
X105641400Y-72621400D01*
X105641400Y-72621400D02*
X104140000Y-71120000D01*
%TO.N,/E7*%
X102899900Y-78363484D02*
X102899900Y-72419900D01*
X102899900Y-72419900D02*
X101600000Y-71120000D01*
%TO.N,/E4*%
X107696000Y-93980000D02*
X105156000Y-93980000D01*
X105156000Y-93980000D02*
X103313400Y-92137400D01*
X100301500Y-72361500D02*
X99060000Y-71120000D01*
X103313400Y-92137400D02*
X103313400Y-80423128D01*
X103313400Y-80423128D02*
X100301500Y-77411228D01*
X100301500Y-77411228D02*
X100301500Y-72361500D01*
%TO.N,/E2*%
X97762900Y-76518772D02*
X97762900Y-72362900D01*
X97762900Y-72362900D02*
X96520000Y-71120000D01*
%TO.N,/E1*%
X107696000Y-101600000D02*
X102616000Y-101600000D01*
X102616000Y-101600000D02*
X101559400Y-100543400D01*
X101559400Y-100543400D02*
X101559400Y-81138344D01*
X101559400Y-81138344D02*
X96520000Y-76098944D01*
X96520000Y-76098944D02*
X96520000Y-73660000D01*
D12*
%TO.N,/GND*%
X124460000Y-88392000D02*
X124460000Y-119380000D01*
%TO.N,/5V*%
X92456000Y-111760000D02*
X93980000Y-111760000D01*
X93980000Y-111760000D02*
X96520000Y-114300000D01*
X96520000Y-114300000D02*
X117856000Y-114300000D01*
X117856000Y-114300000D02*
X121920000Y-110236000D01*
X121920000Y-110236000D02*
X121920000Y-106680000D01*
%TO.N,/GND*%
X124460000Y-81280000D02*
X124460000Y-84328000D01*
X126209800Y-86134200D02*
X126209800Y-86077800D01*
X126209800Y-86077800D02*
X124460000Y-84328000D01*
%TO.N,/5V*%
X121920000Y-81280000D02*
X121920000Y-119380000D01*
X121920000Y-81280000D02*
X121920000Y-80264000D01*
X121920000Y-80264000D02*
X122936000Y-79248000D01*
X122936000Y-79248000D02*
X151384000Y-79248000D01*
X151384000Y-79248000D02*
X153341400Y-81205400D01*
X153341400Y-81205400D02*
X153341400Y-83594200D01*
%TO.N,/GND*%
X124460000Y-87884000D02*
X124460000Y-88392000D01*
X153341400Y-86134200D02*
X126209800Y-86134200D01*
X126209800Y-86134200D02*
X124460000Y-87884000D01*
D13*
%TO.N,/E2*%
X102141400Y-98077400D02*
X103124000Y-99060000D01*
X102141400Y-80897272D02*
X102141400Y-98077400D01*
X103124000Y-99060000D02*
X107696000Y-99060000D01*
%TO.N,/E3*%
X102731400Y-95111400D02*
X104140000Y-96520000D01*
X102731400Y-80664200D02*
X102731400Y-95111400D01*
X104140000Y-96520000D02*
X107696000Y-96520000D01*
%TO.N,/E8*%
X101601400Y-74114200D02*
X101601400Y-77888056D01*
X101601400Y-77888056D02*
X103895400Y-80182056D01*
X103895400Y-80182056D02*
X103895400Y-90179400D01*
X103895400Y-90179400D02*
X105156000Y-91440000D01*
X105156000Y-91440000D02*
X107696000Y-91440000D01*
%TO.N,/E7*%
X102899900Y-78363484D02*
X104477400Y-79940984D01*
X105664000Y-88900000D02*
X107696000Y-88900000D01*
X104477400Y-79940984D02*
X104477400Y-87713400D01*
X104477400Y-87713400D02*
X105664000Y-88900000D01*
%TO.N,/E6*%
X104141400Y-74114200D02*
X104141400Y-78781912D01*
X104141400Y-78781912D02*
X105059400Y-79699912D01*
X105059400Y-79699912D02*
X105059400Y-85247400D01*
X105059400Y-85247400D02*
X106172000Y-86360000D01*
X106172000Y-86360000D02*
X107696000Y-86360000D01*
%TO.N,/E5*%
X105641400Y-83289400D02*
X106172000Y-83820000D01*
X106172000Y-83820000D02*
X107696000Y-83820000D01*
D12*
%TO.N,/5V*%
X162960000Y-66040000D02*
X167640000Y-66040000D01*
%TO.N,/GND*%
X92021400Y-109534200D02*
X92481400Y-109534200D01*
D13*
%TO.N,/E3*%
X99061400Y-74114200D02*
X99061400Y-76994200D01*
X99061400Y-76994200D02*
X102731400Y-80664200D01*
D12*
%TO.N,/24V*%
X155541400Y-88674200D02*
X161941400Y-88674200D01*
X163941400Y-86674200D02*
X163941400Y-86658600D01*
X163941400Y-97941400D02*
X165060000Y-99060000D01*
X153341400Y-88674200D02*
X155541400Y-88674200D01*
X163941400Y-90500000D02*
X163941400Y-97600000D01*
X163941400Y-98374200D02*
X163941400Y-97600000D01*
X163941400Y-98374200D02*
X163941400Y-110941400D01*
X164760000Y-111760000D02*
X167640000Y-111760000D01*
X163941400Y-110941400D02*
X164760000Y-111760000D01*
X155541400Y-88674200D02*
X155506400Y-88639200D01*
X163941400Y-97600000D02*
X163941400Y-97941400D01*
X165060000Y-99060000D02*
X167640000Y-99060000D01*
X161941400Y-88674200D02*
X163941400Y-86674200D01*
D13*
%TO.N,/E2*%
X97762900Y-76518772D02*
X102141400Y-80897272D01*
D12*
%TO.N,/24V*%
X167640000Y-116750000D02*
X167640000Y-111760000D01*
X162115600Y-88674200D02*
X163941400Y-90500000D01*
X164240000Y-86360000D02*
X163941400Y-86658600D01*
%TO.N,/5V*%
X161869400Y-79946200D02*
X161869400Y-67130600D01*
%TO.N,/24V*%
X167640000Y-86360000D02*
X164240000Y-86360000D01*
X155541400Y-88674200D02*
X157741400Y-88674200D01*
%TO.N,/5V*%
X153341400Y-83594200D02*
X158221400Y-83594200D01*
X161869400Y-67130600D02*
X162960000Y-66040000D01*
%TO.N,/24V*%
X163941400Y-86750000D02*
X163941400Y-72308600D01*
X163941400Y-72308600D02*
X165130000Y-71120000D01*
X163941400Y-86674200D02*
X163941400Y-86750000D01*
X163941400Y-86750000D02*
X163941400Y-90500000D01*
X165130000Y-71120000D02*
X167640000Y-71120000D01*
%TO.N,/5V*%
X121920000Y-117856000D02*
X121920000Y-119380000D01*
%TO.N,/24V*%
X161941400Y-88674200D02*
X162115600Y-88674200D01*
%TO.N,/5V*%
X158221400Y-83594200D02*
X161869400Y-79946200D01*
%TO.N,/GND*%
X124460000Y-84328000D02*
X124460000Y-88392000D01*
%TO.N,/CAN_24V*%
X180340000Y-73660000D02*
X187960000Y-73660000D01*
%TO.N,/CAN4_H*%
X175260000Y-76200000D02*
X187960000Y-76200000D01*
%TO.N,/CAN4_L*%
X175260000Y-78740000D02*
X187960000Y-78740000D01*
%TO.N,/CAN_GND*%
X180340000Y-119380000D02*
X187960000Y-119380000D01*
%TO.N,/CAN1_L*%
X175260000Y-116840000D02*
X187960000Y-116840000D01*
%TO.N,/CAN_24V*%
X175260000Y-86360000D02*
X187960000Y-86360000D01*
X175260000Y-111760000D02*
X187960000Y-111760000D01*
X175260000Y-99060000D02*
X187960000Y-99060000D01*
%TO.N,/CAN2_L*%
X175260000Y-104140000D02*
X187960000Y-104140000D01*
%TO.N,/CAN2_H*%
X175260000Y-101600000D02*
X187960000Y-101600000D01*
%TO.N,/CAN_GND*%
X175260000Y-81280000D02*
X175260000Y-83820000D01*
X175260000Y-109220000D02*
X175260000Y-106680000D01*
X175260000Y-106680000D02*
X187960000Y-106680000D01*
X175260000Y-81280000D02*
X187960000Y-81280000D01*
X175260000Y-93980000D02*
X187960000Y-93980000D01*
X175260000Y-93980000D02*
X175260000Y-96520000D01*
%TO.N,/CAN1_H*%
X175260000Y-114300000D02*
X187960000Y-114300000D01*
%TO.N,/CAN3_L*%
X175260000Y-91440000D02*
X187960000Y-91440000D01*
%TO.N,/CAN3_H*%
X175260000Y-88900000D02*
X187960000Y-88900000D01*
%TD*%
%TA.AperFunction,Conductor*%
%TO.N,/24V*%
G36*
X163866780Y-87038880D02*
G01*
X163920436Y-87083634D01*
X163941378Y-87150291D01*
X163941400Y-87152624D01*
X163941400Y-90195775D01*
X163921715Y-90262814D01*
X163868911Y-90308569D01*
X163799753Y-90318513D01*
X163736197Y-90289488D01*
X163734494Y-90287985D01*
X162043805Y-88766364D01*
X162007147Y-88706890D01*
X162008461Y-88637033D01*
X162043806Y-88582033D01*
X163734449Y-87060455D01*
X163797447Y-87030240D01*
X163866780Y-87038880D01*
G37*
%TD.AperFunction*%
%TD*%
%TA.AperFunction,Conductor*%
%TO.N,/GND*%
G36*
X124665203Y-84533649D02*
G01*
X124671681Y-84539681D01*
X126390902Y-86258902D01*
X126424387Y-86320225D01*
X126419403Y-86389917D01*
X126377621Y-86445783D01*
X124658400Y-87735200D01*
X124592958Y-87759676D01*
X124524671Y-87744886D01*
X124475222Y-87695525D01*
X124460000Y-87636000D01*
X124460000Y-84627362D01*
X124479685Y-84560323D01*
X124532489Y-84514568D01*
X124601647Y-84504624D01*
X124665203Y-84533649D01*
G37*
%TD.AperFunction*%
%TD*%
M02*

View File

@@ -0,0 +1,245 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:30+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Top*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:30*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10R,1.700000X1.700000*%
%ADD11C,1.700000*%
G04 APERTURE END LIST*
D10*
%TO.C,J_Extension1*%
X104140000Y-71120000D03*
D11*
X104140000Y-73660000D03*
X101600000Y-71120000D03*
X101600000Y-73660000D03*
X99060000Y-71120000D03*
X99060000Y-73660000D03*
X96520000Y-71120000D03*
X96520000Y-73660000D03*
%TD*%
%TO.C,CAN_4_1*%
X180340000Y-73660000D03*
X180340000Y-76200000D03*
X180340000Y-78740000D03*
D10*
X180340000Y-81280000D03*
%TD*%
%TO.C,J_Front_1_1*%
X175260000Y-99060000D03*
D11*
X175260000Y-96520000D03*
X175260000Y-93980000D03*
%TD*%
D10*
%TO.C,J6*%
X187960000Y-93980000D03*
D11*
X187960000Y-91440000D03*
X187960000Y-88900000D03*
X187960000Y-86360000D03*
%TD*%
%TO.C,Arduino_R1*%
X107696000Y-111760000D03*
X107696000Y-109220000D03*
X107696000Y-106680000D03*
X107696000Y-104140000D03*
X107696000Y-101600000D03*
X107696000Y-99060000D03*
X107696000Y-96520000D03*
X107696000Y-93980000D03*
X107696000Y-91440000D03*
X107696000Y-88900000D03*
X107696000Y-86360000D03*
D10*
X107696000Y-83820000D03*
%TD*%
%TO.C,J2*%
X180340000Y-119380000D03*
D11*
X180340000Y-116840000D03*
X180340000Y-114300000D03*
X180340000Y-111760000D03*
%TD*%
D10*
%TO.C,J10*%
X175260000Y-91440000D03*
D11*
X175260000Y-88900000D03*
%TD*%
D10*
%TO.C,J_Front_1_3*%
X175260000Y-86360000D03*
D11*
X175260000Y-83820000D03*
X175260000Y-81280000D03*
%TD*%
D10*
%TO.C,J_Front_2*%
X167640000Y-93980000D03*
D11*
X167640000Y-96520000D03*
X167640000Y-99060000D03*
%TD*%
D10*
%TO.C,J4*%
X180340000Y-93980000D03*
D11*
X180340000Y-91440000D03*
X180340000Y-88900000D03*
X180340000Y-86360000D03*
%TD*%
D10*
%TO.C,J_CAN_2*%
X121920000Y-106680000D03*
D11*
X124460000Y-106680000D03*
X127000000Y-106680000D03*
X129540000Y-106680000D03*
X132080000Y-106680000D03*
X134620000Y-106680000D03*
X137160000Y-106680000D03*
%TD*%
D10*
%TO.C,J_Front_3*%
X167640000Y-106680000D03*
D11*
X167640000Y-109220000D03*
X167640000Y-111760000D03*
%TD*%
%TO.C,Arduino_L1*%
X92456000Y-111760000D03*
X92456000Y-109220000D03*
X92456000Y-106680000D03*
X92456000Y-104140000D03*
X92456000Y-101600000D03*
X92456000Y-99060000D03*
X92456000Y-96520000D03*
X92456000Y-93980000D03*
X92456000Y-91440000D03*
X92456000Y-88900000D03*
X92456000Y-86360000D03*
D10*
X92456000Y-83820000D03*
%TD*%
%TO.C,J_CAN_1*%
X121920000Y-119380000D03*
D11*
X124460000Y-119380000D03*
X127000000Y-119380000D03*
X129540000Y-119380000D03*
X132080000Y-119380000D03*
X134620000Y-119380000D03*
X137160000Y-119380000D03*
%TD*%
D10*
%TO.C,J_Front_1_2*%
X175260000Y-111760000D03*
D11*
X175260000Y-109220000D03*
X175260000Y-106680000D03*
%TD*%
%TO.C,J_Front_1*%
X167640000Y-86360000D03*
X167640000Y-83820000D03*
D10*
X167640000Y-81280000D03*
%TD*%
%TO.C,J7*%
X187960000Y-81280000D03*
D11*
X187960000Y-78740000D03*
X187960000Y-76200000D03*
X187960000Y-73660000D03*
%TD*%
D10*
%TO.C,J9*%
X175260000Y-104140000D03*
D11*
X175260000Y-101600000D03*
%TD*%
D10*
%TO.C,JJ_CAN_4*%
X121920000Y-81280000D03*
D11*
X124460000Y-81280000D03*
X127000000Y-81280000D03*
X129540000Y-81280000D03*
X132080000Y-81280000D03*
X134620000Y-81280000D03*
X137160000Y-81280000D03*
%TD*%
D10*
%TO.C,J8*%
X175260000Y-116840000D03*
D11*
X175260000Y-114300000D03*
%TD*%
D10*
%TO.C,CAN_2_1*%
X180340000Y-106680000D03*
D11*
X180340000Y-104140000D03*
X180340000Y-101600000D03*
X180340000Y-99060000D03*
%TD*%
D10*
%TO.C,J_CAN_3*%
X121920000Y-93980000D03*
D11*
X124460000Y-93980000D03*
X127000000Y-93980000D03*
X129540000Y-93980000D03*
X132080000Y-93980000D03*
X134620000Y-93980000D03*
X137160000Y-93980000D03*
%TD*%
%TO.C,J1*%
X167640000Y-116750000D03*
D10*
X165100000Y-116750000D03*
%TD*%
%TO.C,J11*%
X175260000Y-78740000D03*
D11*
X175260000Y-76200000D03*
%TD*%
D10*
%TO.C,J_Extension_2*%
X167640000Y-66040000D03*
D11*
X167640000Y-68580000D03*
X167640000Y-71120000D03*
%TD*%
D10*
%TO.C,J5*%
X187960000Y-106680000D03*
D11*
X187960000Y-104140000D03*
X187960000Y-101600000D03*
X187960000Y-99060000D03*
%TD*%
D10*
%TO.C,J3*%
X187960000Y-119380000D03*
D11*
X187960000Y-116840000D03*
X187960000Y-114300000D03*
X187960000Y-111760000D03*
%TD*%
D10*
%TO.C,J_Stepdown1*%
X153341400Y-83594200D03*
D11*
X153341400Y-86134200D03*
X153341400Y-88674200D03*
%TD*%
M02*

View File

@@ -0,0 +1,15 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

File diff suppressed because it is too large Load Diff

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