3 Commits

Author SHA1 Message Date
growlph 9525642999 Added PCB mockup to FreeCAD project 2026-08-12 11:13:23 -07:00
growlph 3ce204a5d4 PCB v2 Mockup 2026-08-12 11:10:38 -07:00
growlph bcc155fd59 Engineering outputs 2026-07-19 18:07:48 -07:00
24 changed files with 242461 additions and 0 deletions
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,724 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_barcodes": false,
"apply_defaults_to_fp_dimensions": false,
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.0,
"height": 1.45,
"width": 1.175
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"border_display_style": 2,
"border_hatch_pitch": 0.5,
"corner_radius": 1.016,
"corner_smoothing": 2,
"fill_mode": 0,
"hatch_gap": 1.5,
"hatch_orientation": 0.0,
"hatch_smoothing_level": 0,
"hatch_smoothing_value": 0.1,
"hatch_thickness": 1.0,
"min_clearance": 0.3048,
"min_island_area": 6.4516,
"min_thickness": 0.2032,
"pad_connection": 3,
"remove_islands": 0,
"thermal_relief_gap": 0.508,
"thermal_relief_spoke_width": 0.508
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "ignore",
"footprint_symbol_field_mismatch": "warning",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"missing_tuning_profile": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "error",
"padstack": "warning",
"pth_inside_courtyard": "error",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_not_centered_on_via": "ignore",
"track_on_post_machined_layer": "error",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"tuning_profile_track_geometries": "ignore",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.1524,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"bom_rev": "",
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": "",
"sch_revision": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"component_class_settings": {
"assignments": [],
"meta": {
"version": 0
},
"sheet_component_classes": {
"enabled": false
}
},
"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",
"field_name_whitespace": "warning",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"ground_pin_not_ground": "warning",
"hier_label_mismatch": "error",
"isolated_pin_label": "warning",
"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",
"stacked_pin_name": "warning",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "waveshare-panel.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.1016,
"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)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.1524,
"tuning_profile": "",
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.2032,
"line_style": 0,
"name": "Power",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 0,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.762,
"tuning_profile": "",
"via_diameter": 0.762,
"via_drill": 0.4572,
"wire_width": 12
}
],
"meta": {
"version": 5
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "Power",
"pattern": "3V3"
},
{
"netclass": "Power",
"pattern": "+5V"
},
{
"netclass": "Power",
"pattern": "+3.3V"
},
{
"netclass": "Power",
"pattern": "GND"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "vectors",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"annotation": {
"method": 0,
"sort_order": 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": "Reference"
},
"bus_aliases": {},
"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": [],
"hop_over_size_choice": 0,
"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": "",
"reuse_designators": true,
"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,
"top_level_sheets": [
{
"filename": "waveshare-panel.kicad_sch",
"name": "waveshare-panel",
"uuid": "c20e9c1a-dd23-4f44-b3fb-ba3a30ec31ea"
}
],
"used_designators": "J4",
"variants": []
},
"sheets": [
[
"c20e9c1a-dd23-4f44-b3fb-ba3a30ec31ea",
"waveshare-panel"
]
],
"text_variables": {},
"tuning_profiles": {
"meta": {
"version": 0
},
"tuning_profiles_impedance_geometric": []
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

+15
View File
@@ -0,0 +1,15 @@
"Id";"Designator";"Footprint";"Quantity";"Designation";"Supplier and ref";
1;"BOOT";"SW_PUSH_6mm";1;"SW_Boot";;;
2;"C1";"C_0805_2012Metric_Pad1.18x1.45mm_HandSolder";1;"100nF";;;
3;"C2";"C_0805_2012Metric_Pad1.18x1.45mm_HandSolder";1;"10uF";;;
4;"C3, C5";"C_0805_2012Metric_Pad1.18x1.45mm_HandSolder";2;"0.1uF";;;
5;"C4";"C_0805_2012Metric_Pad1.18x1.45mm_HandSolder";1;"22uF";;;
6;"C6";"C_0805_2012Metric_Pad1.18x1.45mm_HandSolder";1;"1uF";;;
7;"D1";"LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder";1;"LED";;;
8;"J1";"PinHeader_2x12_P2.54mm_Vertical";1;"PI_HAT";;;
9;"J2";"PinSocket_1x04_P2.54mm_Vertical";1;"ICSP";;;
10;"PWR";"JST_EH_B2B-EH-A_1x02_P2.50mm_Vertical";1;"Power_In";;;
11;"R1, R2, R3, R4";"R_0805_2012Metric_Pad1.20x1.40mm_HandSolder";4;"10k";;;
12;"RST";"SW_PUSH_6mm";1;"SW_RST";;;
13;"U1";"ESP32-WROOM-32E";1;"ESP32-WROOM-E";;;
14;"U2";"SOT-223-3_TabPin2";1;"LD1117S33TR_SOT223";;;
1 Id Designator Footprint Quantity Designation Supplier and ref
2 1 BOOT SW_PUSH_6mm 1 SW_Boot
3 2 C1 C_0805_2012Metric_Pad1.18x1.45mm_HandSolder 1 100nF
4 3 C2 C_0805_2012Metric_Pad1.18x1.45mm_HandSolder 1 10uF
5 4 C3, C5 C_0805_2012Metric_Pad1.18x1.45mm_HandSolder 2 0.1uF
6 5 C4 C_0805_2012Metric_Pad1.18x1.45mm_HandSolder 1 22uF
7 6 C6 C_0805_2012Metric_Pad1.18x1.45mm_HandSolder 1 1uF
8 7 D1 LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder 1 LED
9 8 J1 PinHeader_2x12_P2.54mm_Vertical 1 PI_HAT
10 9 J2 PinSocket_1x04_P2.54mm_Vertical 1 ICSP
11 10 PWR JST_EH_B2B-EH-A_1x02_P2.50mm_Vertical 1 Power_In
12 11 R1, R2, R3, R4 R_0805_2012Metric_Pad1.20x1.40mm_HandSolder 4 10k
13 12 RST SW_PUSH_6mm 1 SW_RST
14 13 U1 ESP32-WROOM-32E 1 ESP32-WROOM-E
15 14 U2 SOT-223-3_TabPin2 1 LD1117S33TR_SOT223
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,140 @@
%TF.GenerationSoftware,KiCad,Pcbnew,10.0.2*%
%TF.CreationDate,2026-05-12T15:02:13-07:00*%
%TF.ProjectId,waveshare-panel,77617665-7368-4617-9265-2d70616e656c,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 10.0.2) date 2026-05-12 15:02:13*
%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.000000*%
%ADD11R,1.700000X1.700000*%
%ADD12C,1.700000*%
%ADD13RoundRect,0.250000X-0.750000X0.600000X-0.750000X-0.600000X0.750000X-0.600000X0.750000X0.600000X0*%
%ADD14O,2.000000X1.700000*%
%ADD15RoundRect,0.250000X-0.475000X0.337500X-0.475000X-0.337500X0.475000X-0.337500X0.475000X0.337500X0*%
%ADD16RoundRect,0.250000X0.350000X0.450000X-0.350000X0.450000X-0.350000X-0.450000X0.350000X-0.450000X0*%
%ADD17RoundRect,0.250000X-0.337500X-0.475000X0.337500X-0.475000X0.337500X0.475000X-0.337500X0.475000X0*%
%ADD18RoundRect,0.375000X-0.625000X-0.375000X0.625000X-0.375000X0.625000X0.375000X-0.625000X0.375000X0*%
%ADD19RoundRect,0.500000X-0.500000X-1.400000X0.500000X-1.400000X0.500000X1.400000X-0.500000X1.400000X0*%
%ADD20RoundRect,0.250000X-0.350000X-0.450000X0.350000X-0.450000X0.350000X0.450000X-0.350000X0.450000X0*%
%ADD21RoundRect,0.250000X0.337500X0.475000X-0.337500X0.475000X-0.337500X-0.475000X0.337500X-0.475000X0*%
G04 APERTURE END LIST*
D10*
%TO.C,BOOT*%
X156262000Y-70394000D03*
X162762000Y-70394000D03*
X156262000Y-74894000D03*
X162762000Y-74894000D03*
%TD*%
D11*
%TO.C,J2*%
X159004000Y-79248000D03*
D12*
X161544000Y-79248000D03*
X164084000Y-79248000D03*
X166624000Y-79248000D03*
%TD*%
D10*
%TO.C,RST*%
X146102000Y-70394000D03*
X152602000Y-70394000D03*
X146102000Y-74894000D03*
X152602000Y-74894000D03*
%TD*%
D13*
%TO.C,PWR*%
X168529000Y-62865000D03*
D14*
X168529000Y-65365000D03*
%TD*%
D15*
%TO.C,C5*%
X186182000Y-63965000D03*
X186182000Y-66040000D03*
%TD*%
D16*
%TO.C,R3*%
X179308000Y-72263000D03*
X177308000Y-72263000D03*
%TD*%
D15*
%TO.C,C4*%
X188214000Y-63965000D03*
X188214000Y-66040000D03*
%TD*%
D17*
%TO.C,C1*%
X171936500Y-61468000D03*
X174011500Y-61468000D03*
%TD*%
D18*
%TO.C,U2*%
X172364000Y-68340000D03*
X172364000Y-66040000D03*
D19*
X178664000Y-66040000D03*
D18*
X172364000Y-63740000D03*
%TD*%
D20*
%TO.C,R4*%
X177308000Y-74295000D03*
X179308000Y-74295000D03*
%TD*%
D21*
%TO.C,C2*%
X178329500Y-61468000D03*
X176254500Y-61468000D03*
%TD*%
D11*
%TO.C,J1*%
X162814000Y-65278000D03*
D12*
X162814000Y-62738000D03*
X160274000Y-65278000D03*
X160274000Y-62738000D03*
X157734000Y-65278000D03*
X157734000Y-62738000D03*
X155194000Y-65278000D03*
X155194000Y-62738000D03*
X152654000Y-65278000D03*
X152654000Y-62738000D03*
X150114000Y-65278000D03*
X150114000Y-62738000D03*
X147574000Y-65278000D03*
X147574000Y-62738000D03*
X145034000Y-65278000D03*
X145034000Y-62738000D03*
X142494000Y-65278000D03*
X142494000Y-62738000D03*
X139954000Y-65278000D03*
X139954000Y-62738000D03*
X137414000Y-65278000D03*
X137414000Y-62738000D03*
X134874000Y-65278000D03*
X134874000Y-62738000D03*
%TD*%
M02*
@@ -0,0 +1,79 @@
%TF.GenerationSoftware,KiCad,Pcbnew,10.0.2*%
%TF.CreationDate,2026-05-12T15:02:13-07:00*%
%TF.ProjectId,waveshare-panel,77617665-7368-4617-9265-2d70616e656c,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 10.0.2) date 2026-05-12 15:02:13*
%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*
%ADD10RoundRect,0.250000X-0.475000X0.337500X-0.475000X-0.337500X0.475000X-0.337500X0.475000X0.337500X0*%
%ADD11RoundRect,0.250000X0.350000X0.450000X-0.350000X0.450000X-0.350000X-0.450000X0.350000X-0.450000X0*%
%ADD12RoundRect,0.250000X-0.337500X-0.475000X0.337500X-0.475000X0.337500X0.475000X-0.337500X0.475000X0*%
%ADD13RoundRect,0.375000X-0.625000X-0.375000X0.625000X-0.375000X0.625000X0.375000X-0.625000X0.375000X0*%
%ADD14RoundRect,0.500000X-0.500000X-1.400000X0.500000X-1.400000X0.500000X1.400000X-0.500000X1.400000X0*%
%ADD15RoundRect,0.250000X-0.350000X-0.450000X0.350000X-0.450000X0.350000X0.450000X-0.350000X0.450000X0*%
%ADD16RoundRect,0.250000X0.337500X0.475000X-0.337500X0.475000X-0.337500X-0.475000X0.337500X-0.475000X0*%
G04 APERTURE END LIST*
D10*
%TO.C,C5*%
X186182000Y-63965000D03*
X186182000Y-66040000D03*
%TD*%
D11*
%TO.C,R3*%
X179308000Y-72263000D03*
X177308000Y-72263000D03*
%TD*%
D10*
%TO.C,C4*%
X188214000Y-63965000D03*
X188214000Y-66040000D03*
%TD*%
D12*
%TO.C,C1*%
X171936500Y-61468000D03*
X174011500Y-61468000D03*
%TD*%
D13*
%TO.C,U2*%
X172364000Y-68340000D03*
X172364000Y-66040000D03*
D14*
X178664000Y-66040000D03*
D13*
X172364000Y-63740000D03*
%TD*%
D15*
%TO.C,R4*%
X177308000Y-74295000D03*
X179308000Y-74295000D03*
%TD*%
D16*
%TO.C,C2*%
X178329500Y-61468000D03*
X176254500Y-61468000D03*
%TD*%
M02*
@@ -0,0 +1,479 @@
%TF.GenerationSoftware,KiCad,Pcbnew,10.0.2*%
%TF.CreationDate,2026-05-12T15:02:13-07:00*%
%TF.ProjectId,waveshare-panel,77617665-7368-4617-9265-2d70616e656c,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 10.0.2) date 2026-05-12 15:02:13*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.150000*%
%ADD11C,0.120000*%
G04 APERTURE END LIST*
D10*
X186541580Y-61936333D02*
X186589200Y-61888714D01*
X186589200Y-61888714D02*
X186636819Y-61745857D01*
X186636819Y-61745857D02*
X186636819Y-61650619D01*
X186636819Y-61650619D02*
X186589200Y-61507762D01*
X186589200Y-61507762D02*
X186493961Y-61412524D01*
X186493961Y-61412524D02*
X186398723Y-61364905D01*
X186398723Y-61364905D02*
X186208247Y-61317286D01*
X186208247Y-61317286D02*
X186065390Y-61317286D01*
X186065390Y-61317286D02*
X185874914Y-61364905D01*
X185874914Y-61364905D02*
X185779676Y-61412524D01*
X185779676Y-61412524D02*
X185684438Y-61507762D01*
X185684438Y-61507762D02*
X185636819Y-61650619D01*
X185636819Y-61650619D02*
X185636819Y-61745857D01*
X185636819Y-61745857D02*
X185684438Y-61888714D01*
X185684438Y-61888714D02*
X185732057Y-61936333D01*
X185636819Y-62841095D02*
X185636819Y-62364905D01*
X185636819Y-62364905D02*
X186113009Y-62317286D01*
X186113009Y-62317286D02*
X186065390Y-62364905D01*
X186065390Y-62364905D02*
X186017771Y-62460143D01*
X186017771Y-62460143D02*
X186017771Y-62698238D01*
X186017771Y-62698238D02*
X186065390Y-62793476D01*
X186065390Y-62793476D02*
X186113009Y-62841095D01*
X186113009Y-62841095D02*
X186208247Y-62888714D01*
X186208247Y-62888714D02*
X186446342Y-62888714D01*
X186446342Y-62888714D02*
X186541580Y-62841095D01*
X186541580Y-62841095D02*
X186589200Y-62793476D01*
X186589200Y-62793476D02*
X186636819Y-62698238D01*
X186636819Y-62698238D02*
X186636819Y-62460143D01*
X186636819Y-62460143D02*
X186589200Y-62364905D01*
X186589200Y-62364905D02*
X186541580Y-62317286D01*
X175680666Y-72844819D02*
X176013999Y-72368628D01*
X176252094Y-72844819D02*
X176252094Y-71844819D01*
X176252094Y-71844819D02*
X175871142Y-71844819D01*
X175871142Y-71844819D02*
X175775904Y-71892438D01*
X175775904Y-71892438D02*
X175728285Y-71940057D01*
X175728285Y-71940057D02*
X175680666Y-72035295D01*
X175680666Y-72035295D02*
X175680666Y-72178152D01*
X175680666Y-72178152D02*
X175728285Y-72273390D01*
X175728285Y-72273390D02*
X175775904Y-72321009D01*
X175775904Y-72321009D02*
X175871142Y-72368628D01*
X175871142Y-72368628D02*
X176252094Y-72368628D01*
X175347332Y-71844819D02*
X174728285Y-71844819D01*
X174728285Y-71844819D02*
X175061618Y-72225771D01*
X175061618Y-72225771D02*
X174918761Y-72225771D01*
X174918761Y-72225771D02*
X174823523Y-72273390D01*
X174823523Y-72273390D02*
X174775904Y-72321009D01*
X174775904Y-72321009D02*
X174728285Y-72416247D01*
X174728285Y-72416247D02*
X174728285Y-72654342D01*
X174728285Y-72654342D02*
X174775904Y-72749580D01*
X174775904Y-72749580D02*
X174823523Y-72797200D01*
X174823523Y-72797200D02*
X174918761Y-72844819D01*
X174918761Y-72844819D02*
X175204475Y-72844819D01*
X175204475Y-72844819D02*
X175299713Y-72797200D01*
X175299713Y-72797200D02*
X175347332Y-72749580D01*
X182078238Y-72717819D02*
X182649666Y-72717819D01*
X182363952Y-72717819D02*
X182363952Y-71717819D01*
X182363952Y-71717819D02*
X182459190Y-71860676D01*
X182459190Y-71860676D02*
X182554428Y-71955914D01*
X182554428Y-71955914D02*
X182649666Y-72003533D01*
X181459190Y-71717819D02*
X181363952Y-71717819D01*
X181363952Y-71717819D02*
X181268714Y-71765438D01*
X181268714Y-71765438D02*
X181221095Y-71813057D01*
X181221095Y-71813057D02*
X181173476Y-71908295D01*
X181173476Y-71908295D02*
X181125857Y-72098771D01*
X181125857Y-72098771D02*
X181125857Y-72336866D01*
X181125857Y-72336866D02*
X181173476Y-72527342D01*
X181173476Y-72527342D02*
X181221095Y-72622580D01*
X181221095Y-72622580D02*
X181268714Y-72670200D01*
X181268714Y-72670200D02*
X181363952Y-72717819D01*
X181363952Y-72717819D02*
X181459190Y-72717819D01*
X181459190Y-72717819D02*
X181554428Y-72670200D01*
X181554428Y-72670200D02*
X181602047Y-72622580D01*
X181602047Y-72622580D02*
X181649666Y-72527342D01*
X181649666Y-72527342D02*
X181697285Y-72336866D01*
X181697285Y-72336866D02*
X181697285Y-72098771D01*
X181697285Y-72098771D02*
X181649666Y-71908295D01*
X181649666Y-71908295D02*
X181602047Y-71813057D01*
X181602047Y-71813057D02*
X181554428Y-71765438D01*
X181554428Y-71765438D02*
X181459190Y-71717819D01*
X180697285Y-72717819D02*
X180697285Y-71717819D01*
X180602047Y-72336866D02*
X180316333Y-72717819D01*
X180316333Y-72051152D02*
X180697285Y-72432104D01*
X188573580Y-61936333D02*
X188621200Y-61888714D01*
X188621200Y-61888714D02*
X188668819Y-61745857D01*
X188668819Y-61745857D02*
X188668819Y-61650619D01*
X188668819Y-61650619D02*
X188621200Y-61507762D01*
X188621200Y-61507762D02*
X188525961Y-61412524D01*
X188525961Y-61412524D02*
X188430723Y-61364905D01*
X188430723Y-61364905D02*
X188240247Y-61317286D01*
X188240247Y-61317286D02*
X188097390Y-61317286D01*
X188097390Y-61317286D02*
X187906914Y-61364905D01*
X187906914Y-61364905D02*
X187811676Y-61412524D01*
X187811676Y-61412524D02*
X187716438Y-61507762D01*
X187716438Y-61507762D02*
X187668819Y-61650619D01*
X187668819Y-61650619D02*
X187668819Y-61745857D01*
X187668819Y-61745857D02*
X187716438Y-61888714D01*
X187716438Y-61888714D02*
X187764057Y-61936333D01*
X188002152Y-62793476D02*
X188668819Y-62793476D01*
X187621200Y-62555381D02*
X188335485Y-62317286D01*
X188335485Y-62317286D02*
X188335485Y-62936333D01*
X176275904Y-69994819D02*
X176275904Y-70804342D01*
X176275904Y-70804342D02*
X176228285Y-70899580D01*
X176228285Y-70899580D02*
X176180666Y-70947200D01*
X176180666Y-70947200D02*
X176085428Y-70994819D01*
X176085428Y-70994819D02*
X175894952Y-70994819D01*
X175894952Y-70994819D02*
X175799714Y-70947200D01*
X175799714Y-70947200D02*
X175752095Y-70899580D01*
X175752095Y-70899580D02*
X175704476Y-70804342D01*
X175704476Y-70804342D02*
X175704476Y-69994819D01*
X175275904Y-70090057D02*
X175228285Y-70042438D01*
X175228285Y-70042438D02*
X175133047Y-69994819D01*
X175133047Y-69994819D02*
X174894952Y-69994819D01*
X174894952Y-69994819D02*
X174799714Y-70042438D01*
X174799714Y-70042438D02*
X174752095Y-70090057D01*
X174752095Y-70090057D02*
X174704476Y-70185295D01*
X174704476Y-70185295D02*
X174704476Y-70280533D01*
X174704476Y-70280533D02*
X174752095Y-70423390D01*
X174752095Y-70423390D02*
X175323523Y-70994819D01*
X175323523Y-70994819D02*
X174704476Y-70994819D01*
X175553666Y-74749819D02*
X175886999Y-74273628D01*
X176125094Y-74749819D02*
X176125094Y-73749819D01*
X176125094Y-73749819D02*
X175744142Y-73749819D01*
X175744142Y-73749819D02*
X175648904Y-73797438D01*
X175648904Y-73797438D02*
X175601285Y-73845057D01*
X175601285Y-73845057D02*
X175553666Y-73940295D01*
X175553666Y-73940295D02*
X175553666Y-74083152D01*
X175553666Y-74083152D02*
X175601285Y-74178390D01*
X175601285Y-74178390D02*
X175648904Y-74226009D01*
X175648904Y-74226009D02*
X175744142Y-74273628D01*
X175744142Y-74273628D02*
X176125094Y-74273628D01*
X174696523Y-74083152D02*
X174696523Y-74749819D01*
X174934618Y-73702200D02*
X175172713Y-74416485D01*
X175172713Y-74416485D02*
X174553666Y-74416485D01*
X182078238Y-74876819D02*
X182649666Y-74876819D01*
X182363952Y-74876819D02*
X182363952Y-73876819D01*
X182363952Y-73876819D02*
X182459190Y-74019676D01*
X182459190Y-74019676D02*
X182554428Y-74114914D01*
X182554428Y-74114914D02*
X182649666Y-74162533D01*
X181459190Y-73876819D02*
X181363952Y-73876819D01*
X181363952Y-73876819D02*
X181268714Y-73924438D01*
X181268714Y-73924438D02*
X181221095Y-73972057D01*
X181221095Y-73972057D02*
X181173476Y-74067295D01*
X181173476Y-74067295D02*
X181125857Y-74257771D01*
X181125857Y-74257771D02*
X181125857Y-74495866D01*
X181125857Y-74495866D02*
X181173476Y-74686342D01*
X181173476Y-74686342D02*
X181221095Y-74781580D01*
X181221095Y-74781580D02*
X181268714Y-74829200D01*
X181268714Y-74829200D02*
X181363952Y-74876819D01*
X181363952Y-74876819D02*
X181459190Y-74876819D01*
X181459190Y-74876819D02*
X181554428Y-74829200D01*
X181554428Y-74829200D02*
X181602047Y-74781580D01*
X181602047Y-74781580D02*
X181649666Y-74686342D01*
X181649666Y-74686342D02*
X181697285Y-74495866D01*
X181697285Y-74495866D02*
X181697285Y-74257771D01*
X181697285Y-74257771D02*
X181649666Y-74067295D01*
X181649666Y-74067295D02*
X181602047Y-73972057D01*
X181602047Y-73972057D02*
X181554428Y-73924438D01*
X181554428Y-73924438D02*
X181459190Y-73876819D01*
X180697285Y-74876819D02*
X180697285Y-73876819D01*
X180602047Y-74495866D02*
X180316333Y-74876819D01*
X180316333Y-74210152D02*
X180697285Y-74591104D01*
X177458666Y-60147580D02*
X177506285Y-60195200D01*
X177506285Y-60195200D02*
X177649142Y-60242819D01*
X177649142Y-60242819D02*
X177744380Y-60242819D01*
X177744380Y-60242819D02*
X177887237Y-60195200D01*
X177887237Y-60195200D02*
X177982475Y-60099961D01*
X177982475Y-60099961D02*
X178030094Y-60004723D01*
X178030094Y-60004723D02*
X178077713Y-59814247D01*
X178077713Y-59814247D02*
X178077713Y-59671390D01*
X178077713Y-59671390D02*
X178030094Y-59480914D01*
X178030094Y-59480914D02*
X177982475Y-59385676D01*
X177982475Y-59385676D02*
X177887237Y-59290438D01*
X177887237Y-59290438D02*
X177744380Y-59242819D01*
X177744380Y-59242819D02*
X177649142Y-59242819D01*
X177649142Y-59242819D02*
X177506285Y-59290438D01*
X177506285Y-59290438D02*
X177458666Y-59338057D01*
X177077713Y-59338057D02*
X177030094Y-59290438D01*
X177030094Y-59290438D02*
X176934856Y-59242819D01*
X176934856Y-59242819D02*
X176696761Y-59242819D01*
X176696761Y-59242819D02*
X176601523Y-59290438D01*
X176601523Y-59290438D02*
X176553904Y-59338057D01*
X176553904Y-59338057D02*
X176506285Y-59433295D01*
X176506285Y-59433295D02*
X176506285Y-59528533D01*
X176506285Y-59528533D02*
X176553904Y-59671390D01*
X176553904Y-59671390D02*
X177125332Y-60242819D01*
X177125332Y-60242819D02*
X176506285Y-60242819D01*
X164648819Y-63674666D02*
X165363104Y-63674666D01*
X165363104Y-63674666D02*
X165505961Y-63627047D01*
X165505961Y-63627047D02*
X165601200Y-63531809D01*
X165601200Y-63531809D02*
X165648819Y-63388952D01*
X165648819Y-63388952D02*
X165648819Y-63293714D01*
X165648819Y-64674666D02*
X165648819Y-64103238D01*
X165648819Y-64388952D02*
X164648819Y-64388952D01*
X164648819Y-64388952D02*
X164791676Y-64293714D01*
X164791676Y-64293714D02*
X164886914Y-64198476D01*
X164886914Y-64198476D02*
X164934533Y-64103238D01*
%TO.C,C5*%
D11*
X185447000Y-64741248D02*
X185447000Y-65263752D01*
X186917000Y-64741248D02*
X186917000Y-65263752D01*
%TO.C,R3*%
X178535064Y-71528000D02*
X178080936Y-71528000D01*
X178535064Y-72998000D02*
X178080936Y-72998000D01*
%TO.C,C4*%
X187479000Y-64741248D02*
X187479000Y-65263752D01*
X188949000Y-64741248D02*
X188949000Y-65263752D01*
%TO.C,C1*%
X172712748Y-60733000D02*
X173235252Y-60733000D01*
X172712748Y-62203000D02*
X173235252Y-62203000D01*
%TO.C,U2*%
X173664000Y-62630000D02*
X177424000Y-62630000D01*
X173664000Y-69450000D02*
X177424000Y-69450000D01*
X177424000Y-62630000D02*
X177424000Y-63890000D01*
X177424000Y-69450000D02*
X177424000Y-68190000D01*
X172384000Y-69350000D02*
X172144000Y-69680000D01*
X172624000Y-69680000D01*
X172384000Y-69350000D01*
G36*
X172624000Y-69680000D02*
G01*
X172144000Y-69680000D01*
X172384000Y-69350000D01*
X172624000Y-69680000D01*
G37*
%TO.C,R4*%
X178080936Y-73560000D02*
X178535064Y-73560000D01*
X178080936Y-75030000D02*
X178535064Y-75030000D01*
%TO.C,C2*%
X177553252Y-60733000D02*
X177030748Y-60733000D01*
X177553252Y-62203000D02*
X177030748Y-62203000D01*
%TO.C,J1*%
X133494000Y-66658000D02*
X133494000Y-61358000D01*
X161544000Y-64008000D02*
X164194000Y-64008000D01*
X161544000Y-66658000D02*
X133494000Y-66658000D01*
X161544000Y-66658000D02*
X161544000Y-64008000D01*
X162814000Y-66658000D02*
X164194000Y-66658000D01*
X164194000Y-61358000D02*
X133494000Y-61358000D01*
X164194000Y-64008000D02*
X164194000Y-61358000D01*
X164194000Y-66658000D02*
X164194000Y-65278000D01*
%TD*%
M02*
@@ -0,0 +1,46 @@
%TF.GenerationSoftware,KiCad,Pcbnew,10.0.2*%
%TF.CreationDate,2026-05-12T15:02:13-07:00*%
%TF.ProjectId,waveshare-panel,77617665-7368-4617-9265-2d70616e656c,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 10.0.2) date 2026-05-12 15:02:13*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.050000*%
%TD*%
G04 APERTURE END LIST*
D10*
X133095469Y-59917884D02*
G75*
G02*
X134095469Y-58917869I1000031J-16D01*
G01*
X133096000Y-80534000D02*
X133096000Y-59922942D01*
X134095469Y-58917884D02*
X191532000Y-58928000D01*
X134096158Y-81540884D02*
G75*
G02*
X133096216Y-80540884I42J999984D01*
G01*
X191532000Y-58928000D02*
G75*
G02*
X192532000Y-59928000I0J-1000000D01*
G01*
X191533111Y-81539613D02*
X134096158Y-81540884D01*
X192532000Y-59928000D02*
X192532000Y-80534000D01*
X192533111Y-80539613D02*
G75*
G02*
X191533111Y-81539611I-1000011J13D01*
G01*
M02*
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,182 @@
%TF.GenerationSoftware,KiCad,Pcbnew,10.0.2*%
%TF.CreationDate,2026-05-12T15:02:13-07:00*%
%TF.ProjectId,waveshare-panel,77617665-7368-4617-9265-2d70616e656c,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 10.0.2) date 2026-05-12 15:02:13*
%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.000000*%
%ADD11RoundRect,0.250000X-0.325000X-0.450000X0.325000X-0.450000X0.325000X0.450000X-0.325000X0.450000X0*%
%ADD12R,1.700000X1.700000*%
%ADD13C,1.700000*%
%ADD14RoundRect,0.250000X0.350000X0.450000X-0.350000X0.450000X-0.350000X-0.450000X0.350000X-0.450000X0*%
%ADD15RoundRect,0.250000X-0.337500X-0.475000X0.337500X-0.475000X0.337500X0.475000X-0.337500X0.475000X0*%
%ADD16RoundRect,0.250000X-0.350000X-0.450000X0.350000X-0.450000X0.350000X0.450000X-0.350000X0.450000X0*%
%ADD17R,0.900000X1.500000*%
%ADD18R,1.500000X0.900000*%
%ADD19R,0.900000X0.900000*%
%ADD20RoundRect,0.250000X-0.750000X0.600000X-0.750000X-0.600000X0.750000X-0.600000X0.750000X0.600000X0*%
%ADD21O,2.000000X1.700000*%
G04 APERTURE END LIST*
D10*
%TO.C,BOOT*%
X156262000Y-70394000D03*
X162762000Y-70394000D03*
X156262000Y-74894000D03*
X162762000Y-74894000D03*
%TD*%
D11*
%TO.C,D1*%
X166615000Y-74676000D03*
X168665000Y-74676000D03*
%TD*%
D12*
%TO.C,J2*%
X159004000Y-79248000D03*
D13*
X161544000Y-79248000D03*
X164084000Y-79248000D03*
X166624000Y-79248000D03*
%TD*%
D14*
%TO.C,R2*%
X143478000Y-74930000D03*
X141478000Y-74930000D03*
%TD*%
D15*
%TO.C,C3*%
X141456500Y-70358000D03*
X143531500Y-70358000D03*
%TD*%
D10*
%TO.C,RST*%
X146102000Y-70394000D03*
X152602000Y-70394000D03*
X146102000Y-74894000D03*
X152602000Y-74894000D03*
%TD*%
D16*
%TO.C,R1*%
X166640000Y-71628000D03*
X168640000Y-71628000D03*
%TD*%
D15*
%TO.C,C6*%
X141440500Y-72644000D03*
X143515500Y-72644000D03*
%TD*%
D17*
%TO.C,U1*%
X191438000Y-61862000D03*
X190168000Y-61862000D03*
X188898000Y-61862000D03*
X187628000Y-61862000D03*
X186358000Y-61862000D03*
X185088000Y-61862000D03*
X183818000Y-61862000D03*
X182548000Y-61862000D03*
X181278000Y-61862000D03*
X180008000Y-61862000D03*
X178738000Y-61862000D03*
X177468000Y-61862000D03*
X176198000Y-61862000D03*
X174928000Y-61862000D03*
D18*
X173678000Y-64892000D03*
X173678000Y-66162000D03*
X173678000Y-67432000D03*
X173678000Y-68702000D03*
X173678000Y-69972000D03*
X173678000Y-71242000D03*
X173678000Y-72512000D03*
X173678000Y-73782000D03*
X173678000Y-75052000D03*
X173678000Y-76322000D03*
D17*
X174928000Y-79362000D03*
X176198000Y-79362000D03*
X177468000Y-79362000D03*
X178738000Y-79362000D03*
X180008000Y-79362000D03*
X181278000Y-79362000D03*
X182548000Y-79362000D03*
X183818000Y-79362000D03*
X185088000Y-79362000D03*
X186358000Y-79362000D03*
X187628000Y-79362000D03*
X188898000Y-79362000D03*
X190168000Y-79362000D03*
X191438000Y-79362000D03*
D19*
X185118000Y-67712000D03*
X185118000Y-67712000D03*
X183718000Y-67712000D03*
X182318000Y-67712000D03*
X182318000Y-67712000D03*
X185118000Y-69112000D03*
X183718000Y-69112000D03*
X182318000Y-69112000D03*
X182318000Y-69112000D03*
X185118000Y-70512000D03*
X183718000Y-70512000D03*
X182318000Y-70512000D03*
%TD*%
D20*
%TO.C,PWR*%
X168529000Y-62865000D03*
D21*
X168529000Y-65365000D03*
%TD*%
D12*
%TO.C,J1*%
X162814000Y-65278000D03*
D13*
X162814000Y-62738000D03*
X160274000Y-65278000D03*
X160274000Y-62738000D03*
X157734000Y-65278000D03*
X157734000Y-62738000D03*
X155194000Y-65278000D03*
X155194000Y-62738000D03*
X152654000Y-65278000D03*
X152654000Y-62738000D03*
X150114000Y-65278000D03*
X150114000Y-62738000D03*
X147574000Y-65278000D03*
X147574000Y-62738000D03*
X145034000Y-65278000D03*
X145034000Y-62738000D03*
X142494000Y-65278000D03*
X142494000Y-62738000D03*
X139954000Y-65278000D03*
X139954000Y-62738000D03*
X137414000Y-65278000D03*
X137414000Y-62738000D03*
X134874000Y-65278000D03*
X134874000Y-62738000D03*
%TD*%
M02*
@@ -0,0 +1,121 @@
%TF.GenerationSoftware,KiCad,Pcbnew,10.0.2*%
%TF.CreationDate,2026-05-12T15:02:13-07:00*%
%TF.ProjectId,waveshare-panel,77617665-7368-4617-9265-2d70616e656c,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 10.0.2) date 2026-05-12 15:02:13*
%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*
%ADD10RoundRect,0.250000X-0.325000X-0.450000X0.325000X-0.450000X0.325000X0.450000X-0.325000X0.450000X0*%
%ADD11RoundRect,0.250000X0.350000X0.450000X-0.350000X0.450000X-0.350000X-0.450000X0.350000X-0.450000X0*%
%ADD12RoundRect,0.250000X-0.337500X-0.475000X0.337500X-0.475000X0.337500X0.475000X-0.337500X0.475000X0*%
%ADD13RoundRect,0.250000X-0.350000X-0.450000X0.350000X-0.450000X0.350000X0.450000X-0.350000X0.450000X0*%
%ADD14R,0.900000X1.500000*%
%ADD15R,1.500000X0.900000*%
%ADD16R,0.900000X0.900000*%
G04 APERTURE END LIST*
D10*
%TO.C,D1*%
X166615000Y-74676000D03*
X168665000Y-74676000D03*
%TD*%
D11*
%TO.C,R2*%
X143478000Y-74930000D03*
X141478000Y-74930000D03*
%TD*%
D12*
%TO.C,C3*%
X141456500Y-70358000D03*
X143531500Y-70358000D03*
%TD*%
D13*
%TO.C,R1*%
X166640000Y-71628000D03*
X168640000Y-71628000D03*
%TD*%
D12*
%TO.C,C6*%
X141440500Y-72644000D03*
X143515500Y-72644000D03*
%TD*%
D14*
%TO.C,U1*%
X191438000Y-61862000D03*
X190168000Y-61862000D03*
X188898000Y-61862000D03*
X187628000Y-61862000D03*
X186358000Y-61862000D03*
X185088000Y-61862000D03*
X183818000Y-61862000D03*
X182548000Y-61862000D03*
X181278000Y-61862000D03*
X180008000Y-61862000D03*
X178738000Y-61862000D03*
X177468000Y-61862000D03*
X176198000Y-61862000D03*
X174928000Y-61862000D03*
D15*
X173678000Y-64892000D03*
X173678000Y-66162000D03*
X173678000Y-67432000D03*
X173678000Y-68702000D03*
X173678000Y-69972000D03*
X173678000Y-71242000D03*
X173678000Y-72512000D03*
X173678000Y-73782000D03*
X173678000Y-75052000D03*
X173678000Y-76322000D03*
D14*
X174928000Y-79362000D03*
X176198000Y-79362000D03*
X177468000Y-79362000D03*
X178738000Y-79362000D03*
X180008000Y-79362000D03*
X181278000Y-79362000D03*
X182548000Y-79362000D03*
X183818000Y-79362000D03*
X185088000Y-79362000D03*
X186358000Y-79362000D03*
X187628000Y-79362000D03*
X188898000Y-79362000D03*
X190168000Y-79362000D03*
X191438000Y-79362000D03*
D16*
X185118000Y-67712000D03*
X185118000Y-67712000D03*
X183718000Y-67712000D03*
X182318000Y-67712000D03*
X182318000Y-67712000D03*
X185118000Y-69112000D03*
X183718000Y-69112000D03*
X182318000Y-69112000D03*
X182318000Y-69112000D03*
X185118000Y-70512000D03*
X183718000Y-70512000D03*
X182318000Y-70512000D03*
%TD*%
M02*
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,12 @@
M48
; DRILL file KiCad 10.0.2 date 2026-05-12T15:02:26
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2026-05-12T15:02:26-07:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,10.0.2
; #@! TF.FileFunction,NonPlated,1,2,NPTH
FMAT,2
METRIC
%
G90
G05
M30
@@ -0,0 +1,97 @@
M48
; DRILL file KiCad 10.0.2 date 2026-05-12T15:02:26
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2026-05-12T15:02:26-07:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,10.0.2
; #@! TF.FileFunction,Plated,1,2,PTH
FMAT,2
METRIC
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T1C0.300
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T2C0.457
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T3C1.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T4C1.100
%
G90
G05
T1
X149.352Y-74.041
X159.512Y-69.596
X159.512Y-74.041
X168.206Y-70.498
X170.18Y-73.406
X175.575Y-74.315
X175.641Y-63.246
X175.641Y-64.643
X175.641Y-67.945
X175.768Y-76.708
X176.022Y-71.305
X177.292Y-76.454
X177.546Y-69.088
X180.34Y-67.31
X180.34Y-68.58
X180.34Y-69.85
X180.594Y-78.232
X181.61Y-73.66
X181.864Y-77.724
X182.88Y-66.04
X182.88Y-74.93
X184.15Y-66.04
X184.15Y-72.39
X185.42Y-73.66
X186.69Y-67.31
X186.69Y-69.85
X186.69Y-72.39
X186.69Y-74.93
X187.96Y-68.58
X187.96Y-71.12
X187.96Y-73.66
X189.484Y-77.724
T2
X155.448Y-67.818
X189.738Y-65.278
X189.992Y-63.5
T3
X134.874Y-62.738
X134.874Y-65.278
X137.414Y-62.738
X137.414Y-65.278
X139.954Y-62.738
X139.954Y-65.278
X142.494Y-62.738
X142.494Y-65.278
X145.034Y-62.738
X145.034Y-65.278
X147.574Y-62.738
X147.574Y-65.278
X150.114Y-62.738
X150.114Y-65.278
X152.654Y-62.738
X152.654Y-65.278
X155.194Y-62.738
X155.194Y-65.278
X157.734Y-62.738
X157.734Y-65.278
X159.004Y-79.248
X160.274Y-62.738
X160.274Y-65.278
X161.544Y-79.248
X162.814Y-62.738
X162.814Y-65.278
X164.084Y-79.248
X166.624Y-79.248
X168.529Y-62.865
X168.529Y-65.365
T4
X146.102Y-70.394
X146.102Y-74.894
X152.602Y-70.394
X152.602Y-74.894
X156.262Y-70.394
X156.262Y-74.894
X162.762Y-70.394
X162.762Y-74.894
M30
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,127 @@
{
"Header": {
"GenerationSoftware": {
"Vendor": "KiCad",
"Application": "Pcbnew",
"Version": "10.0.2"
},
"CreationDate": "2026-05-12T15:02:13-07:00"
},
"GeneralSpecs": {
"ProjectId": {
"Name": "waveshare-panel",
"GUID": "77617665-7368-4617-9265-2d70616e656c",
"Revision": "rev?"
},
"Size": {
"X": 59.4876,
"Y": 22.673
},
"LayerNumber": 2,
"BoardThickness": 1.6,
"Finish": "None"
},
"DesignRules": [
{
"Layers": "Outer",
"PadToPad": 0.1016,
"PadToTrack": 0.1016,
"TrackToTrack": 0.1016,
"MinLineWidth": 0.1524,
"TrackToRegion": 0.3048,
"RegionToRegion": 0.3048
}
],
"FilesAttributes": [
{
"Path": "waveshare-panel-F_Cu.gbr",
"FileFunction": "Copper,L1,Top",
"FilePolarity": "Positive"
},
{
"Path": "waveshare-panel-B_Cu.gbr",
"FileFunction": "Copper,L2,Bot",
"FilePolarity": "Positive"
},
{
"Path": "waveshare-panel-F_Paste.gbr",
"FileFunction": "SolderPaste,Top",
"FilePolarity": "Positive"
},
{
"Path": "waveshare-panel-B_Paste.gbr",
"FileFunction": "SolderPaste,Bot",
"FilePolarity": "Positive"
},
{
"Path": "waveshare-panel-F_Silkscreen.gbr",
"FileFunction": "Legend,Top",
"FilePolarity": "Positive"
},
{
"Path": "waveshare-panel-B_Silkscreen.gbr",
"FileFunction": "Legend,Bot",
"FilePolarity": "Positive"
},
{
"Path": "waveshare-panel-F_Mask.gbr",
"FileFunction": "SolderMask,Top",
"FilePolarity": "Negative"
},
{
"Path": "waveshare-panel-B_Mask.gbr",
"FileFunction": "SolderMask,Bot",
"FilePolarity": "Negative"
},
{
"Path": "waveshare-panel-Edge_Cuts.gbr",
"FileFunction": "Profile",
"FilePolarity": "Positive"
}
],
"MaterialStackup": [
{
"Type": "Legend",
"Name": "Top Silk Screen"
},
{
"Type": "SolderPaste",
"Name": "Top Solder Paste"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Top Solder Mask"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "F.Cu"
},
{
"Type": "Dielectric",
"Thickness": 1.51,
"Material": "FR4",
"Name": "F.Cu/B.Cu",
"Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "B.Cu"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Bottom Solder Mask"
},
{
"Type": "SolderPaste",
"Name": "Bottom Solder Paste"
},
{
"Type": "Legend",
"Name": "Bottom Silk Screen"
}
]
}
+438
View File
@@ -0,0 +1,438 @@
# Andrew Villeneuve 2026/05
# Waveshare 2.9inch Touch ePaper HAT integration demo
#
# Platform: https://www.waveshare.com/2.9inch-Touch-e-Paper-HAT.htm
#
# Pin mappings
# ---
# |Function |ESP Pin |HAT Pin |Wire |
# |--- |--- |--- |--- |
# |5V |VIN |Pin2/5V |Red |
# |GND |GND |Pin6/GND |Blk |
# |Display SCLK |GPIO18 |Pin23/GPIO11/SPI0_SCLK |Blue |
# |Display MOSI |GPIO23 |Pin19/GPIO10/SPI0_MOSI |Green |
# |Display CS |GPIO19 |Pin24/GPIO8/SPI0_CE0 |Mgnta |
# |Display DC |GPIO17 |Pin22/GPIO25 |White |
# |Display Busy |GPIO4 |Pin18/GPIO24 |Brown |
# |Display RST |GPIO5 |Pin11/GPIO17/SPI1_CE1 |Orange |
# |Touch SDA |GPIO21 |Pin3/GPIO2/I2C1_SDA |Gray |
# |Touch SCL |GPIO22 |Pin5/GPIO3/I2C1_SCL |Purple |
# |Touch RST |GPIO15 |Pin13/GPIO27 |Blue |
# |Touch INT |GPIO16 |Pin15/GPIO22 |White |
#
# DISP_RST Moves from GPIO5 -> GPIO25 on PCB to avoid potential
# strapping issue
# TOUCH_IRQ Moves from GPIO16 -> GPIO14 on PCB to avoid potential
# strapping issue
#
# Exposed Entities
# ---
#
### Boilerplate ###
esphome:
name: waveshare-epaper-switch
esp32:
board: nodemcu-32s
framework:
type: esp-idf
# Enable logging
logger:
level: INFO
# Enable Home Assistant API
api:
encryption:
key: !secret enckey
ota:
- platform: esphome
password: !secret apipw
wifi:
ssid: !secret wifi_ssid
password: !secret wappw
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: ${fallbackssid}
password: !secret hotspotpw
captive_portal:
### Setup Interfaces ###
# Display
spi:
clk_pin: GPIO18
mosi_pin: GPIO23
display:
# This platform is a custom_component forked from upstream waveshare_epaper
# but modified by Claude to support 2bpp greyscale
- platform: waveshare_epaper_2bit
id: display0
cs_pin: GPIO19
dc_pin: GPIO17
busy_pin: GPIO4
reset_pin: GPIO5
model: 2.90inv2-r2-2bpp
# model: 2.90inv2-r2
full_update_every: 30
rotation: 0°
auto_clear_enabled: false
update_interval: never
# Touchscreen
i2c:
id: i2c_bus
sda: GPIO21
scl: GPIO22
scan: false
touchscreen:
# This platform is a custom_component written from scratch by Claude
platform: icnt86x
id: touchscreen0
address: 0x48
reset_pin: GPIO15
update_interval: 50ms
calibration:
x_min: 0
x_max: 127
y_min: 0
y_max: 295
transform:
swap_xy: true
mirror_x: true
### Okay, now the Good Stuff ###
# Load some fonts for the display renderer
font:
- file: "FreeSans.ttf"
id: font1
size: 26
bpp: 2
- file: "FreeSans.ttf"
id: headerfont
size: 80
- file: "FreeSans.ttf"
id: console
size: 30
# Pull in some icons from the material design library
# https://pictogrammers.com/library/mdi/
image:
defaults:
transparency: chroma_key
invert_alpha: false
resize: 54x54
binary:
- file: "mdi:home-lock-open"
id: home_lock_open
- file: "mdi:home-lock"
id: home_lock
- file: "mdi:ceiling-fan"
id: ceiling_fan
- file: "mdi:ceiling-fan-light"
id: ceiling_fan_light
- file: "mdi:fan-off"
id: fan_off
- file: "mdi:fan-speed-1"
id: fan_speed_1
- file: "mdi:fan-speed-2"
id: fan_speed_2
- file: "mdi:fan-speed-3"
id: fan_speed_3
- file: "mdi:floor-lamp-torchiere"
id: floor_lamp
- file: "mdi:home-off"
id: away_button
- file: "mdi:thermometer"
id: light_temp
# When the user taps the screen, introduce a small delay for the LVGL framebuffer
# to stabilize, then do a quick, 1-bit B/W selective update to visually indicate
# that a button was pushed.
#
# When the user is done interacting with the screen and several seconds have
# passed, do a slow, full-screen redraw at 2-bit grayscale.
script:
- id: refresh_display
mode: restart
then:
- delay: 80ms
- lambda: 'id(display0).display_partial();'
# Retry once the e-paper's busy window has cleared, to catch HA-synced
# widget updates that landed while the first partial refresh was in flight
# (display_partial drops calls when busy).
- delay: 350ms
- lambda: 'id(display0).display_partial();'
- id: full_refresh_display
mode: restart
then:
- delay: 10s
- component.update: display0
binary_sensor:
# Force a full display refresh when we press the "boot" button on the devboard
- platform: gpio
pin:
number: GPIO0
mode:
input: true
pullup: true
inverted: true
id: boot_button
internal: true
on_click:
then:
- component.update: lvgl0
- delay: 1s
- component.update: display0
# List the actual home entitites that we want this panel to control here
- platform: homeassistant
id: alpha_bedroom_light
entity_id: light.alpha_bedroom_light
publish_initial_state: true
on_state:
then:
- lvgl.widget.update:
id: button_ceiling_fan_light
state:
checked: !lambda return x;
- platform: homeassistant
id: alpha_bedroom_ceiling_fan
entity_id: fan.alpha_bedroom_ceiling_fan
publish_initial_state: true
on_state:
then:
- lvgl.widget.update:
id: button_ceiling_fan
state:
checked: !lambda return x;
sensor:
# Track the fan's current percentage so the speed buttons reflect the
# actual HA state (including changes made via other controls).
- platform: homeassistant
id: alpha_bedroom_ceiling_fan_pct
entity_id: fan.alpha_bedroom_ceiling_fan
attribute: percentage
on_value:
then:
- lvgl.widget.update:
id: button_fan_1
state:
checked: !lambda 'return x >= 1 && x < 50;'
- lvgl.widget.update:
id: button_fan_2
state:
checked: !lambda 'return x >= 50 && x < 84;'
- lvgl.widget.update:
id: button_fan_3
state:
checked: !lambda 'return x >= 84;'
# Here's where we put the actual GUI layout
lvgl:
- id: lvgl0
displays:
- display0
touchscreens:
- touchscreen0
on_draw_end:
- script.execute: refresh_display
- script.execute: full_refresh_display
# Black: 0x000000
# Dark Grey: 0x555555
# Light Grey: 0xAAAAAA
# White: 0xFFFFFF
bg_color: 0x000000
theme:
button:
bg_color: 0xFFFFFF
text_color: 0x000000
height: 60
width: 64
pad_all: 0
border_width: 2
border_color: 0x000000
checked:
bg_color: 0x888888
align: CENTER
obj:
bg_color: 0xFFFFFF
widgets:
- obj:
width: 100%
height: 100%
scrollable: false
pad_all: 0
# pad_row: 0
# pad_column: 0
border_width: 0
bg_color: 0xFFFFFF
layout:
type: GRID
grid_rows: [fr(1), fr(1), fr(1), fr(1)]
grid_columns: [fr(1), fr(1)]
widgets:
# Row 1: Light on/off (full width)
- button:
id: button_ceiling_fan_light
grid_cell_row_pos: 0
grid_cell_column_pos: 0
grid_cell_column_span: 2
grid_cell_x_align: STRETCH
width: 124
on_click:
- logger.log: "ceiling_fan_light"
- homeassistant.action:
action: light.toggle
data:
entity_id: light.alpha_bedroom_light
checkable: true
widgets:
- image:
src: ceiling_fan_light
align: CENTER
# Row 2: Fan on/off (full width)
- button:
id: button_ceiling_fan
grid_cell_row_pos: 1
grid_cell_column_pos: 0
grid_cell_column_span: 2
grid_cell_x_align: STRETCH
width: 124
on_click:
- logger.log: "ceiling_fan"
- homeassistant.action:
action: fan.toggle
data:
entity_id: fan.alpha_bedroom_ceiling_fan
checkable: true
widgets:
- image:
src: ceiling_fan
align: CENTER
# Row 3: Light temperature | Fan low
- button:
id: button_light_temp
grid_cell_row_pos: 2
grid_cell_column_pos: 0
on_click:
- logger.log: "light_temp"
- homeassistant.action:
action: button.press
data:
entity_id: button.alpha_bedroom_color_temp
widgets:
- image:
src: light_temp
align: CENTER
- button:
id: button_fan_1
grid_cell_row_pos: 2
grid_cell_column_pos: 1
checkable: true
on_click:
- logger.log: "fan_speed_1"
- homeassistant.action:
action: fan.set_percentage
data:
entity_id: fan.alpha_bedroom_ceiling_fan
percentage: '33'
- lvgl.widget.update:
id: button_fan_2
state:
checked: false
- lvgl.widget.update:
id: button_fan_3
state:
checked: false
widgets:
- image:
src: fan_speed_1
# Row 4: Fan medium | Fan high
- button:
id: button_fan_2
grid_cell_row_pos: 3
grid_cell_column_pos: 0
on_click:
- logger.log: "fan_speed_2"
- homeassistant.action:
action: fan.set_percentage
data:
entity_id: fan.alpha_bedroom_ceiling_fan
percentage: '66'
- lvgl.widget.update:
id: button_fan_1
state:
checked: false
- lvgl.widget.update:
id: button_fan_3
state:
checked: false
checkable: true
widgets:
- image:
src: fan_speed_2
- button:
id: button_fan_3
grid_cell_row_pos: 3
grid_cell_column_pos: 1
on_click:
- logger.log: "fan_speed_3"
- homeassistant.action:
action: fan.set_percentage
data:
entity_id: fan.alpha_bedroom_ceiling_fan
percentage: '100'
- lvgl.widget.update:
id: button_fan_1
state:
checked: false
- lvgl.widget.update:
id: button_fan_2
state:
checked: false
checkable: true
widgets:
- image:
src: fan_speed_3
# Unused buttons — kept defined but hidden for future use
- obj:
hidden: true
width: 1
height: 1
border_width: 0
pad_all: 0
widgets:
- button:
id: button_fan_off
on_click:
- logger.log: "fan_off"
checkable: true
widgets:
- image:
src: fan_off
- button:
id: button_floor_lamp
on_click:
- logger.log: "floor_lamp"
checkable: true
widgets:
- image:
src: floor_lamp
- button:
id: button_away
on_click:
- logger.log: "away_button"
checkable: true
widgets:
- image:
src: away_button