From 90c4ce94a8e3c4c10f091866fe6121f2fa7a3fe9 Mon Sep 17 00:00:00 2001 From: Nick K Date: Fri, 23 Feb 2024 16:53:20 -0800 Subject: [PATCH] rough outline --- README.md | 7 ++- ato.yaml | 3 +- elec/layout/base/view_base.kicad_pro | 71 +++++++++++++++++++++++++--- elec/src/chess-clock.ato | 18 ++++++- 4 files changed, 87 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d8269b1..ecf8084 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ # chess-clock - Chess Clock using open source smart knob with haptic feedback. ## Features @@ -7,8 +6,8 @@ Chess Clock using open source smart knob with haptic feedback. * Knob with haptic feedback to select game mode/set time * Led ring all around clock to indicate turn and look cool -## Includes atopile Packages -* RP2040 -* Smart Knob (https://github.com/scottbez1/smartknob) +## Includes atopile Smart Knob Package! +### Smart Knob (https://github.com/scottbez1/smartknob) +This atopile package makes it easy to incorporate the smart knob into any project. The ato package comes with the necessary smart knob circuitry configured and laid out, just add your junk around it! ![CAD GIF](CAD.gif) \ No newline at end of file diff --git a/ato.yaml b/ato.yaml index 7d92149..ba4586e 100644 --- a/ato.yaml +++ b/ato.yaml @@ -3,4 +3,5 @@ builds: default: entry: elec/src/chess-clock.ato:ChessClock dependencies: -- generics \ No newline at end of file +- generics +- rp2040^v4.0.1 diff --git a/elec/layout/base/view_base.kicad_pro b/elec/layout/base/view_base.kicad_pro index b78e3fb..964deec 100644 --- a/elec/layout/base/view_base.kicad_pro +++ b/elec/layout/base/view_base.kicad_pro @@ -1,5 +1,6 @@ { "board": { + "3dviewports": [], "design_settings": { "defaults": { "board_outline_line_width": 0.049999999999999996, @@ -68,20 +69,26 @@ "rule_severities": { "annular_width": "error", "clearance": "error", + "connection_width": "warning", "copper_edge_clearance": "error", + "copper_sliver": "warning", "courtyards_overlap": "error", "diff_pair_gap_out_of_range": "error", "diff_pair_uncoupled_length_too_long": "error", "drill_out_of_range": "error", "duplicate_footprints": "warning", "extra_footprint": "warning", + "footprint": "error", "footprint_type_mismatch": "error", "hole_clearance": "error", "hole_near_hole": "error", "invalid_outline": "error", + "isolated_copper": "warning", "item_on_disabled_layer": "error", "items_not_allowed": "error", "length_out_of_range": "error", + "lib_footprint_issues": "warning", + "lib_footprint_mismatch": "warning", "malformed_courtyard": "error", "microvia_drill_out_of_range": "error", "missing_courtyard": "ignore", @@ -91,9 +98,14 @@ "padstack": "error", "pth_inside_courtyard": "ignore", "shorting_items": "error", + "silk_edge_clearance": "warning", "silk_over_copper": "warning", "silk_overlap": "warning", "skew_out_of_range": "error", + "solder_mask_bridge": "error", + "starved_thermal": "error", + "text_height": "warning", + "text_thickness": "warning", "through_hole_pad_without_hole": "error", "too_many_vias": "error", "track_dangling": "warning", @@ -102,7 +114,6 @@ "unconnected_items": "error", "unresolved_variable": "error", "via_dangling": "warning", - "zone_has_empty_net": "error", "zones_intersect": "error" }, "rule_severitieslegacy_courtyards_overlap": true, @@ -112,18 +123,63 @@ "allow_microvias": false, "max_error": 0.005, "min_clearance": 0.0, + "min_connection": 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_resolved_spokes": 2, "min_silk_clearance": 0.0, + "min_text_height": 0.7999999999999999, + "min_text_thickness": 0.08, "min_through_hole_diameter": 0.3, "min_track_width": 0.127, "min_via_annular_width": 0.049999999999999996, "min_via_diameter": 0.39999999999999997, + "solder_mask_to_copper_clearance": 0.0, "use_height_for_length_calcs": true }, + "teardrop_options": [ + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 5, + "td_on_pad_in_zone": false, + "td_onpadsmd": true, + "td_onroundshapesonly": false, + "td_ontrackend": false, + "td_onviapad": true + } + ], + "teardrop_parameters": [ + { + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_target_name": "td_round_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_target_name": "td_rect_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_target_name": "td_track_end", + "td_width_to_size_filter_ratio": 0.9 + } + ], "track_widths": [ 0.0, 0.25, @@ -139,7 +195,8 @@ "zones_allow_external_fillets": false, "zones_use_no_outline": true }, - "layer_presets": [] + "layer_presets": [], + "viewports": [] }, "boards": [], "cvpcb": { @@ -361,7 +418,7 @@ "net_settings": { "classes": [ { - "bus_width": 12.0, + "bus_width": 12, "clearance": 0.15, "diff_pair_gap": 0.25, "diff_pair_via_gap": 0.25, @@ -375,13 +432,15 @@ "track_width": 0.15, "via_diameter": 0.8, "via_drill": 0.4, - "wire_width": 6.0 + "wire_width": 6 } ], "meta": { - "version": 2 + "version": 3 }, - "net_colors": null + "net_colors": null, + "netclass_assignments": null, + "netclass_patterns": [] }, "pcbnew": { "last_paths": { diff --git a/elec/src/chess-clock.ato b/elec/src/chess-clock.ato index 4b5465e..a3564c5 100644 --- a/elec/src/chess-clock.ato +++ b/elec/src/chess-clock.ato @@ -1,2 +1,18 @@ +import SK6805EC20 from "sk6805-ec20/elec/src/sk6805-ec20.ato" +import SmartKnob from "smart-knob/elec/src/smart-knob.ato" +import Capacitor from "generics/capacitors.ato" + module ChessClock: - signal gnd \ No newline at end of file + smart_knob = new SmartKnob + capacitive_touch_w = new CapacitiveTouchSensor + capacitive_touch_b = new CapacitiveTouchSensor + batt = new 2170Cell + charger = new BQ24045 + + capacitive_touch_w.output ~ smart_knob.base.esp32s3.IO69 + capacitive_touch_b.output ~ smart_knob.base.esp32s3.IO69 + +module CapacitiveTouchSensor: + signal touchpoint + signal output + ref_cap = new Capacitor \ No newline at end of file