init
This commit is contained in:
BIN
HECB/HECB-backups/HECB-2025-06-28_223156.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-06-28_223156.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-06-28_223858.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-06-28_223858.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-06-28_225015.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-06-28_225015.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-06-28_231726.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-06-28_231726.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-06-28_233851.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-06-28_233851.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-06-29_110904.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-06-29_110904.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-09_205635.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-09_205635.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-11_115451.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-11_115451.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-14_063323.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-14_063323.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-14_065115.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-14_065115.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-16_094954.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-16_094954.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-21_130924.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-21_130924.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-23_122455.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-23_122455.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-07-27_071354.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-07-27_071354.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-08-16_224533.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-08-16_224533.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-08-18_234502.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-08-18_234502.zip
Normal file
Binary file not shown.
BIN
HECB/HECB-backups/HECB-2025-08-20_135906.zip
Normal file
BIN
HECB/HECB-backups/HECB-2025-08-20_135906.zip
Normal file
Binary file not shown.
133
HECB/HECB.kicad_dru
Normal file
133
HECB/HECB.kicad_dru
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
(version 1)
|
||||||
|
# Custom Design Rules (DRC) for KiCAD 7.0 (Stored in '<project>.kicad_dru' file).
|
||||||
|
#
|
||||||
|
# Matching JLCPCB capabilities: https://jlcpcb.com/capabilities/pcb-capabilities
|
||||||
|
#
|
||||||
|
# KiCad documentation: https://docs.kicad.org/master/id/pcbnew/pcbnew_advanced.html#custom_design_rules
|
||||||
|
#
|
||||||
|
# Inspiration
|
||||||
|
# - https://gist.github.com/darkxst/f713268e5469645425eed40115fb8b49 (with comments)
|
||||||
|
# - https://gist.github.com/denniskupec/e163d13b0a64c2044bd259f64659485e (with comments)
|
||||||
|
|
||||||
|
# TODO new rule: NPTH pads.
|
||||||
|
# Inner diameter of pad should be 0.4-0.5 mm larger than NPTH drill diameter.
|
||||||
|
# JLCPCB: "We make NPTH via dry sealing film process, if customer would like a NPTH but around with pad/copper, our engineer will dig out around pad/copper about 0.2mm-0.25mm, otherwise the metal potion will be flowed into the hole and it becomes a PTH. (there will be no copper dig out optimization for single board)."
|
||||||
|
|
||||||
|
# TODO: new rule for plated slots: min diameter/width 0.5mm
|
||||||
|
# JLCPCB: "The minimum plated slot width is 0.5mm, which is drawn with a pad."
|
||||||
|
|
||||||
|
# TODO new rule: non-plated slots: min diameter/width 1.0mm
|
||||||
|
# JLCPCB: "The minimum Non-Plated Slot Width is 1.0mm, please draw the slot outline in the mechanical layer(GML or GKO)""
|
||||||
|
|
||||||
|
(rule "Track width, outer layer (1oz copper)"
|
||||||
|
(layer outer)
|
||||||
|
(condition "A.Type == 'track'")
|
||||||
|
(constraint track_width (min 0.127mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Track spacing, outer layer (1oz copper)"
|
||||||
|
(layer outer)
|
||||||
|
(condition "A.Type == 'track' && B.Type == A.Type")
|
||||||
|
(constraint clearance (min 0.127mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Track width, inner layer"
|
||||||
|
(layer inner)
|
||||||
|
(condition "A.Type == 'track'")
|
||||||
|
(constraint track_width (min 0.09mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Track spacing, inner layer"
|
||||||
|
(layer inner)
|
||||||
|
(condition "A.Type == 'track' && B.Type == A.Type")
|
||||||
|
(constraint clearance (min 0.09mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Silkscreen text"
|
||||||
|
(layer "?.Silkscreen")
|
||||||
|
(condition "A.Type == 'Text' || A.Type == 'Text Box'")
|
||||||
|
(constraint text_thickness (min 0.15mm))
|
||||||
|
(constraint text_height (min 1mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Pad to Silkscreen"
|
||||||
|
(layer outer)
|
||||||
|
(condition "A.Type == 'pad' && B.Layer == '?.Silkscreen'")
|
||||||
|
(constraint silk_clearance (min 0.15mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Edge (routed) to track clearance"
|
||||||
|
(condition "A.Type == 'track'")
|
||||||
|
(constraint edge_clearance (min 0.3mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
#(rule "Edge (v-cut) to track clearance"
|
||||||
|
# (condition "A.Type == 'track'")
|
||||||
|
# (constraint edge_clearance (min 0.4mm))
|
||||||
|
#)
|
||||||
|
|
||||||
|
# JLCPCB restrictions ambiguous:
|
||||||
|
# Illustration: 0.2 mm, 1&2 layer: 0.3 mm, multilayer: "(0.15mm more costly)"
|
||||||
|
# This rule handles diameter minimum and maximum for ALL holes.
|
||||||
|
# Other specialized rules handle restrictions (e.g. Via, PTH, NPTH)
|
||||||
|
(rule "Hole diameter"
|
||||||
|
(constraint hole_size (min 0.2mm) (max 6.3mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Hole (NPTH) diameter"
|
||||||
|
(layer outer)
|
||||||
|
(condition "!A.isPlated()")
|
||||||
|
(constraint hole_size (min 0.5mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
# TODO: Hole to board edge ≥ 1 mm. Min. board size 10 × 10 mm
|
||||||
|
(rule "Hole (castellated) diameter"
|
||||||
|
(layer outer)
|
||||||
|
(condition "A.Type == 'pad' && A.Fabrication_Property == 'Castellated pad'")
|
||||||
|
(constraint hole_size (min 0.6mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
# JLCPCB: "Via diameter should be 0.1mm(0.15mm preferred) larger than Via hole size" (illustration shows diameters for both dimensions)
|
||||||
|
# JLCPCB: PTH: "The annular ring size will be enlarged to 0.15mm in production."
|
||||||
|
(rule "Annular ring width (via and PTH)"
|
||||||
|
(layer outer)
|
||||||
|
(condition "A.isPlated()")
|
||||||
|
(constraint annular_width (min 0.075mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Clearance: hole to hole (perimeter), different nets"
|
||||||
|
(layer outer)
|
||||||
|
(condition "A.Net != B.Net")
|
||||||
|
(constraint hole_to_hole (min 0.5mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Clearance: hole to hole (perimeter), same net"
|
||||||
|
(layer outer)
|
||||||
|
(condition "A.Net == B.Net")
|
||||||
|
(constraint hole_to_hole (min 0.254mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Clearance: track to NPTH hole (perimeter)"
|
||||||
|
# (condition "A.Pad_Type == 'NPTH, mechanical' && B.Type == 'track' && A.Net != B.Net")
|
||||||
|
(condition "!A.isPlated() && B.Type == 'track' && A.Net != B.Net")
|
||||||
|
(constraint hole_clearance (min 0.254mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Clearance: track to PTH hole perimeter"
|
||||||
|
(condition "A.isPlated() && B.Type == 'track' && A.Net != B.Net")
|
||||||
|
(constraint hole_clearance (min 0.33mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
# TODO: try combining with rule "Clearance: PTH to track, different nets"
|
||||||
|
(rule "Clearance: track to pad"
|
||||||
|
(condition "A.Type == 'pad' && B.Type == 'track' && A.Net != B.Net")
|
||||||
|
(constraint clearance (min 0.2mm))
|
||||||
|
)
|
||||||
|
|
||||||
|
(rule "Clearance: pad/via to pad/via"
|
||||||
|
(layer outer)
|
||||||
|
# (condition "(A.Type == 'Pad' || A.Type == 'Via') && (B.Type == 'Pad' || B.Type == 'Via') && A.Net != B.Net")
|
||||||
|
(condition "A.isPlated() && B.isPlated() && A.Net != B.Net")
|
||||||
|
(constraint clearance (min 0.127mm))
|
||||||
|
)
|
||||||
|
|
||||||
33412
HECB/HECB.kicad_pcb
Normal file
33412
HECB/HECB.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
83
HECB/HECB.kicad_prl
Normal file
83
HECB/HECB.kicad_prl
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"active_layer": 0,
|
||||||
|
"active_layer_preset": "All Layers",
|
||||||
|
"auto_track_width": true,
|
||||||
|
"hidden_netclasses": [],
|
||||||
|
"hidden_nets": [],
|
||||||
|
"high_contrast_mode": 0,
|
||||||
|
"net_color_mode": 1,
|
||||||
|
"opacity": {
|
||||||
|
"images": 0.6,
|
||||||
|
"pads": 1.0,
|
||||||
|
"tracks": 1.0,
|
||||||
|
"vias": 1.0,
|
||||||
|
"zones": 0.6
|
||||||
|
},
|
||||||
|
"selection_filter": {
|
||||||
|
"dimensions": true,
|
||||||
|
"footprints": true,
|
||||||
|
"graphics": true,
|
||||||
|
"keepouts": true,
|
||||||
|
"lockedItems": false,
|
||||||
|
"otherItems": true,
|
||||||
|
"pads": true,
|
||||||
|
"text": true,
|
||||||
|
"tracks": true,
|
||||||
|
"vias": true,
|
||||||
|
"zones": true
|
||||||
|
},
|
||||||
|
"visible_items": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
32,
|
||||||
|
33,
|
||||||
|
34,
|
||||||
|
35,
|
||||||
|
36,
|
||||||
|
39,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"visible_layers": "fffffff_ffffffff",
|
||||||
|
"zone_display_mode": 0
|
||||||
|
},
|
||||||
|
"git": {
|
||||||
|
"repo_password": "",
|
||||||
|
"repo_type": "",
|
||||||
|
"repo_username": "",
|
||||||
|
"ssh_key": ""
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "HECB.kicad_prl",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"files": []
|
||||||
|
}
|
||||||
|
}
|
||||||
604
HECB/HECB.kicad_pro
Normal file
604
HECB/HECB.kicad_pro
Normal file
@@ -0,0 +1,604 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"3dviewports": [],
|
||||||
|
"design_settings": {
|
||||||
|
"defaults": {
|
||||||
|
"apply_defaults_to_fp_fields": false,
|
||||||
|
"apply_defaults_to_fp_shapes": false,
|
||||||
|
"apply_defaults_to_fp_text": false,
|
||||||
|
"board_outline_line_width": 0.05,
|
||||||
|
"copper_line_width": 0.2,
|
||||||
|
"copper_text_italic": false,
|
||||||
|
"copper_text_size_h": 1.5,
|
||||||
|
"copper_text_size_v": 1.5,
|
||||||
|
"copper_text_thickness": 0.3,
|
||||||
|
"copper_text_upright": false,
|
||||||
|
"courtyard_line_width": 0.05,
|
||||||
|
"dimension_precision": 4,
|
||||||
|
"dimension_units": 3,
|
||||||
|
"dimensions": {
|
||||||
|
"arrow_length": 1270000,
|
||||||
|
"extension_offset": 500000,
|
||||||
|
"keep_text_aligned": true,
|
||||||
|
"suppress_zeroes": false,
|
||||||
|
"text_position": 0,
|
||||||
|
"units_format": 1
|
||||||
|
},
|
||||||
|
"fab_line_width": 0.1,
|
||||||
|
"fab_text_italic": false,
|
||||||
|
"fab_text_size_h": 1.0,
|
||||||
|
"fab_text_size_v": 1.0,
|
||||||
|
"fab_text_thickness": 0.15,
|
||||||
|
"fab_text_upright": false,
|
||||||
|
"other_line_width": 0.1,
|
||||||
|
"other_text_italic": false,
|
||||||
|
"other_text_size_h": 1.0,
|
||||||
|
"other_text_size_v": 1.0,
|
||||||
|
"other_text_thickness": 0.15,
|
||||||
|
"other_text_upright": false,
|
||||||
|
"pads": {
|
||||||
|
"drill": 0.762,
|
||||||
|
"height": 1.524,
|
||||||
|
"width": 1.524
|
||||||
|
},
|
||||||
|
"silk_line_width": 0.1,
|
||||||
|
"silk_text_italic": false,
|
||||||
|
"silk_text_size_h": 1.0,
|
||||||
|
"silk_text_size_v": 1.0,
|
||||||
|
"silk_text_thickness": 0.1,
|
||||||
|
"silk_text_upright": false,
|
||||||
|
"zones": {
|
||||||
|
"min_clearance": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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",
|
||||||
|
"diff_pair_gap_out_of_range": "error",
|
||||||
|
"diff_pair_uncoupled_length_too_long": "error",
|
||||||
|
"drill_out_of_range": "error",
|
||||||
|
"duplicate_footprints": "warning",
|
||||||
|
"extra_footprint": "warning",
|
||||||
|
"footprint": "error",
|
||||||
|
"footprint_symbol_mismatch": "warning",
|
||||||
|
"footprint_type_mismatch": "ignore",
|
||||||
|
"hole_clearance": "error",
|
||||||
|
"hole_near_hole": "error",
|
||||||
|
"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": "ignore",
|
||||||
|
"malformed_courtyard": "ignore",
|
||||||
|
"microvia_drill_out_of_range": "error",
|
||||||
|
"missing_courtyard": "ignore",
|
||||||
|
"missing_footprint": "warning",
|
||||||
|
"net_conflict": "warning",
|
||||||
|
"npth_inside_courtyard": "ignore",
|
||||||
|
"padstack": "warning",
|
||||||
|
"pth_inside_courtyard": "ignore",
|
||||||
|
"shorting_items": "error",
|
||||||
|
"silk_edge_clearance": "warning",
|
||||||
|
"silk_over_copper": "warning",
|
||||||
|
"silk_overlap": "warning",
|
||||||
|
"skew_out_of_range": "error",
|
||||||
|
"solder_mask_bridge": "error",
|
||||||
|
"starved_thermal": "error",
|
||||||
|
"text_height": "warning",
|
||||||
|
"text_thickness": "warning",
|
||||||
|
"through_hole_pad_without_hole": "error",
|
||||||
|
"too_many_vias": "error",
|
||||||
|
"track_dangling": "warning",
|
||||||
|
"track_width": "error",
|
||||||
|
"tracks_crossing": "error",
|
||||||
|
"unconnected_items": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"via_dangling": "warning",
|
||||||
|
"zones_intersect": "error"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"max_error": 0.005,
|
||||||
|
"min_clearance": 0.0,
|
||||||
|
"min_connection": 0.0,
|
||||||
|
"min_copper_edge_clearance": 0.5,
|
||||||
|
"min_hole_clearance": 0.25,
|
||||||
|
"min_hole_to_hole": 0.25,
|
||||||
|
"min_microvia_diameter": 0.2,
|
||||||
|
"min_microvia_drill": 0.1,
|
||||||
|
"min_resolved_spokes": 2,
|
||||||
|
"min_silk_clearance": 0.0,
|
||||||
|
"min_text_height": 0.8,
|
||||||
|
"min_text_thickness": 0.08,
|
||||||
|
"min_through_hole_diameter": 0.3,
|
||||||
|
"min_track_width": 0.0,
|
||||||
|
"min_via_annular_width": 0.1,
|
||||||
|
"min_via_diameter": 0.5,
|
||||||
|
"solder_mask_to_copper_clearance": 0.005,
|
||||||
|
"use_height_for_length_calcs": true
|
||||||
|
},
|
||||||
|
"teardrop_options": [
|
||||||
|
{
|
||||||
|
"td_onpadsmd": true,
|
||||||
|
"td_onroundshapesonly": false,
|
||||||
|
"td_ontrackend": false,
|
||||||
|
"td_onviapad": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"teardrop_parameters": [
|
||||||
|
{
|
||||||
|
"td_allow_use_two_tracks": true,
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_on_pad_in_zone": false,
|
||||||
|
"td_target_name": "td_round_shape",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"td_allow_use_two_tracks": true,
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_on_pad_in_zone": false,
|
||||||
|
"td_target_name": "td_rect_shape",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"td_allow_use_two_tracks": true,
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_on_pad_in_zone": false,
|
||||||
|
"td_target_name": "td_track_end",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"track_widths": [
|
||||||
|
0.0,
|
||||||
|
0.1524,
|
||||||
|
0.254,
|
||||||
|
0.381,
|
||||||
|
0.508,
|
||||||
|
1.27,
|
||||||
|
1.905,
|
||||||
|
2.54,
|
||||||
|
3.81,
|
||||||
|
5.08
|
||||||
|
],
|
||||||
|
"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": {
|
||||||
|
"dist": "",
|
||||||
|
"distpn": "",
|
||||||
|
"internal_id": "",
|
||||||
|
"mfg": "",
|
||||||
|
"mpn": ""
|
||||||
|
},
|
||||||
|
"layer_presets": [],
|
||||||
|
"viewports": []
|
||||||
|
},
|
||||||
|
"boards": [],
|
||||||
|
"cvpcb": {
|
||||||
|
"equivalence_files": []
|
||||||
|
},
|
||||||
|
"erc": {
|
||||||
|
"erc_exclusions": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 0
|
||||||
|
},
|
||||||
|
"pin_map": [
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rule_severities": {
|
||||||
|
"bus_definition_conflict": "error",
|
||||||
|
"bus_entry_needed": "error",
|
||||||
|
"bus_to_bus_conflict": "error",
|
||||||
|
"bus_to_net_conflict": "error",
|
||||||
|
"conflicting_netclasses": "error",
|
||||||
|
"different_unit_footprint": "error",
|
||||||
|
"different_unit_net": "error",
|
||||||
|
"duplicate_reference": "error",
|
||||||
|
"duplicate_sheet_names": "error",
|
||||||
|
"endpoint_off_grid": "warning",
|
||||||
|
"extra_units": "error",
|
||||||
|
"global_label_dangling": "warning",
|
||||||
|
"hier_label_mismatch": "error",
|
||||||
|
"label_dangling": "error",
|
||||||
|
"lib_symbol_issues": "warning",
|
||||||
|
"missing_bidi_pin": "warning",
|
||||||
|
"missing_input_pin": "warning",
|
||||||
|
"missing_power_pin": "error",
|
||||||
|
"missing_unit": "warning",
|
||||||
|
"multiple_net_names": "warning",
|
||||||
|
"net_not_bus_member": "warning",
|
||||||
|
"no_connect_connected": "warning",
|
||||||
|
"no_connect_dangling": "warning",
|
||||||
|
"pin_not_connected": "error",
|
||||||
|
"pin_not_driven": "error",
|
||||||
|
"pin_to_pin": "warning",
|
||||||
|
"power_pin_not_driven": "error",
|
||||||
|
"similar_labels": "warning",
|
||||||
|
"simulation_model_issue": "ignore",
|
||||||
|
"unannotated": "error",
|
||||||
|
"unit_value_mismatch": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"wire_dangling": "error"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"pinned_footprint_libs": [],
|
||||||
|
"pinned_symbol_libs": []
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "HECB.kicad_pro",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_settings": {
|
||||||
|
"classes": [
|
||||||
|
{
|
||||||
|
"bus_width": 12,
|
||||||
|
"clearance": 0.2,
|
||||||
|
"diff_pair_gap": 0.25,
|
||||||
|
"diff_pair_via_gap": 0.25,
|
||||||
|
"diff_pair_width": 0.2,
|
||||||
|
"line_style": 0,
|
||||||
|
"microvia_diameter": 0.3,
|
||||||
|
"microvia_drill": 0.1,
|
||||||
|
"name": "Default",
|
||||||
|
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"track_width": 0.2,
|
||||||
|
"via_diameter": 0.6,
|
||||||
|
"via_drill": 0.3,
|
||||||
|
"wire_width": 6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"net_colors": null,
|
||||||
|
"netclass_assignments": null,
|
||||||
|
"netclass_patterns": []
|
||||||
|
},
|
||||||
|
"pcbnew": {
|
||||||
|
"last_paths": {
|
||||||
|
"gencad": "",
|
||||||
|
"idf": "",
|
||||||
|
"netlist": "",
|
||||||
|
"plot": "",
|
||||||
|
"pos_files": "",
|
||||||
|
"specctra_dsn": "",
|
||||||
|
"step": "HECB.step",
|
||||||
|
"svg": "",
|
||||||
|
"vrml": ""
|
||||||
|
},
|
||||||
|
"page_layout_descr_file": ""
|
||||||
|
},
|
||||||
|
"schematic": {
|
||||||
|
"annotate_start_num": 0,
|
||||||
|
"bom_fmt_presets": [],
|
||||||
|
"bom_fmt_settings": {
|
||||||
|
"field_delimiter": ",",
|
||||||
|
"keep_line_breaks": false,
|
||||||
|
"keep_tabs": false,
|
||||||
|
"name": "CSV",
|
||||||
|
"ref_delimiter": ",",
|
||||||
|
"ref_range_delimiter": "",
|
||||||
|
"string_delimiter": "\""
|
||||||
|
},
|
||||||
|
"bom_presets": [],
|
||||||
|
"bom_settings": {
|
||||||
|
"exclude_dnp": false,
|
||||||
|
"fields_ordered": [
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Reference",
|
||||||
|
"name": "Reference",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": true,
|
||||||
|
"label": "Value",
|
||||||
|
"name": "Value",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Datasheet",
|
||||||
|
"name": "Datasheet",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Footprint",
|
||||||
|
"name": "Footprint",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Qty",
|
||||||
|
"name": "${QUANTITY}",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": true,
|
||||||
|
"label": "DNP",
|
||||||
|
"name": "${DNP}",
|
||||||
|
"show": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"filter_string": "",
|
||||||
|
"group_symbols": true,
|
||||||
|
"name": "Grouped By Value",
|
||||||
|
"sort_asc": true,
|
||||||
|
"sort_field": "Reference"
|
||||||
|
},
|
||||||
|
"connection_grid_size": 50.0,
|
||||||
|
"drawing": {
|
||||||
|
"dashed_lines_dash_length_ratio": 12.0,
|
||||||
|
"dashed_lines_gap_length_ratio": 3.0,
|
||||||
|
"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": "",
|
||||||
|
"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": [
|
||||||
|
[
|
||||||
|
"bd95f97b-e00f-48bc-9d2b-76e9d99694cd",
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
||||||
20977
HECB/HECB.kicad_sch
Normal file
20977
HECB/HECB.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
60622
HECB/HECB.step
Normal file
60622
HECB/HECB.step
Normal file
File diff suppressed because it is too large
Load Diff
1
HECB/fabrication-toolkit-options.json
Normal file
1
HECB/fabrication-toolkit-options.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"ARCHIVE_NAME": "", "EXTRA_LAYERS": "", "ALL_ACTIVE_LAYERS": false, "EXTEND_EDGE_CUT": false, "ALTERNATIVE_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false}
|
||||||
94809
HECB/fp-info-cache
Normal file
94809
HECB/fp-info-cache
Normal file
File diff suppressed because it is too large
Load Diff
BIN
HECB/production/HECB.zip
Normal file
BIN
HECB/production/HECB.zip
Normal file
Binary file not shown.
BIN
HECB/production/backups/HECB_2025-06-28_17-28-50.zip
Normal file
BIN
HECB/production/backups/HECB_2025-06-28_17-28-50.zip
Normal file
Binary file not shown.
BIN
HECB/production/backups/HECB_2025-06-28_22-42-11.zip
Normal file
BIN
HECB/production/backups/HECB_2025-06-28_22-42-11.zip
Normal file
Binary file not shown.
BIN
HECB/production/backups/HECB_2025-06-28_22-50-22.zip
Normal file
BIN
HECB/production/backups/HECB_2025-06-28_22-50-22.zip
Normal file
Binary file not shown.
26
HECB/production/bom.csv
Normal file
26
HECB/production/bom.csv
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
Designator,Footprint,Quantity,Value,LCSC Part #
|
||||||
|
C1,CP_Radial_D8.0mm_P2.50mm,1,100uF,
|
||||||
|
C2,CP_Radial_D5.0mm_P2.00mm,1,10uF,
|
||||||
|
"C3, C4",CP_Radial_Tantal_D4.5mm_P2.50mm,2,1uF,
|
||||||
|
"DA1, DA2, DA3, DA4, DB1, DB2, DB3, DB4",D_DO-41_SOD81_P2.54mm_Vertical_AnodeUp,8,1N4007,
|
||||||
|
"J1, J2, J3",PinHeader_1x03_P2.54mm_Vertical,3,Conn_01x03,
|
||||||
|
J5,CONN_AT15-6P-BMxx_AMP,1,AT15-6P-BM01,
|
||||||
|
J_433MHZ1,PinHeader_1x04_P2.54mm_Vertical,1,Conn_01x04,
|
||||||
|
"J_BTN1, J_BTN2, J_BTN3, J_BTN4, J_BTN5",Molex_KK-254_AE-6410-02A_1x02_P2.54mm_Vertical,5,Conn_01x02,
|
||||||
|
"J_GND1, J_GND2, J_GND3, J_O_A1, J_O_A2, J_O_B1, J_O_B2, J_PWR1",TE_1217861-1,8,Conn_01x01,
|
||||||
|
J_INPUT1,CONN_AT15-12P-BMxx_AMP,1,AT15-12PB-BM16,
|
||||||
|
J_LCD1,Molex_KK-254_AE-6410-04A_1x04_P2.54mm_Vertical,1,Conn_01x04,
|
||||||
|
J_LORA1,PinSocket_1x05_P2.54mm_Vertical,1,Conn_01x05,
|
||||||
|
J_RTC1,PinHeader_1x05_P2.54mm_Vertical,1,Conn_01x05,
|
||||||
|
"KA1, KA2, KA3, KA4, KB1, KB2, KB3, KB4",RELAY_A161CS12VDC.64,8,A161CS12VDC.64,
|
||||||
|
"QA1, QA2, QA3, QA4, QB1, QB2, QB3, QB4",TO-92L_Inline_Wide,8,2N7000,2N7000
|
||||||
|
R1,R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal,1,1k,
|
||||||
|
"R10, R11, R12, R13, R14, R9",R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal,6,10k,
|
||||||
|
"R15, R3, R4, R5, R6",R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal,5,10k,
|
||||||
|
R2,R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal,1,2k,
|
||||||
|
R7,R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal,1,100k,
|
||||||
|
R8,R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal,1,20k,
|
||||||
|
RN1,R_Array_SIP9,1,R_Network08,
|
||||||
|
U1,TO-220-3_Vertical,1,L7805,
|
||||||
|
U2,MODULE_MEGA_PRO_EMBED_CH340G___ATMEGA2560,1,MEGA_PRO_EMBED_CH340G___ATMEGA2560,
|
||||||
|
"X1, X2, X3, X4",FUSE_3522-2,4,3522-2,
|
||||||
|
72
HECB/production/designators.csv
Normal file
72
HECB/production/designators.csv
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
C1:1
|
||||||
|
C2:1
|
||||||
|
C3:1
|
||||||
|
C4:1
|
||||||
|
DA1:1
|
||||||
|
DA2:1
|
||||||
|
DA3:1
|
||||||
|
DA4:1
|
||||||
|
DB1:1
|
||||||
|
DB2:1
|
||||||
|
DB3:1
|
||||||
|
DB4:1
|
||||||
|
J1:1
|
||||||
|
J2:1
|
||||||
|
J3:1
|
||||||
|
J5:1
|
||||||
|
J_433MHZ1:1
|
||||||
|
J_BTN1:1
|
||||||
|
J_BTN2:1
|
||||||
|
J_BTN3:1
|
||||||
|
J_BTN4:1
|
||||||
|
J_BTN5:1
|
||||||
|
J_GND1:1
|
||||||
|
J_GND2:1
|
||||||
|
J_GND3:1
|
||||||
|
J_INPUT1:1
|
||||||
|
J_LCD1:1
|
||||||
|
J_LORA1:1
|
||||||
|
J_O_A1:1
|
||||||
|
J_O_A2:1
|
||||||
|
J_O_B1:1
|
||||||
|
J_O_B2:1
|
||||||
|
J_PWR1:1
|
||||||
|
J_RTC1:1
|
||||||
|
KA1:1
|
||||||
|
KA2:1
|
||||||
|
KA3:1
|
||||||
|
KA4:1
|
||||||
|
KB1:1
|
||||||
|
KB2:1
|
||||||
|
KB3:1
|
||||||
|
KB4:1
|
||||||
|
QA1:1
|
||||||
|
QA2:1
|
||||||
|
QA3:1
|
||||||
|
QA4:1
|
||||||
|
QB1:1
|
||||||
|
QB2:1
|
||||||
|
QB3:1
|
||||||
|
QB4:1
|
||||||
|
R1:1
|
||||||
|
R10:1
|
||||||
|
R11:1
|
||||||
|
R12:1
|
||||||
|
R13:1
|
||||||
|
R14:1
|
||||||
|
R15:1
|
||||||
|
R2:1
|
||||||
|
R3:1
|
||||||
|
R4:1
|
||||||
|
R5:1
|
||||||
|
R6:1
|
||||||
|
R7:1
|
||||||
|
R8:1
|
||||||
|
R9:1
|
||||||
|
RN1:1
|
||||||
|
U1:1
|
||||||
|
U2:1
|
||||||
|
X1:1
|
||||||
|
X2:1
|
||||||
|
X3:1
|
||||||
|
X4:1
|
||||||
|
309
HECB/production/netlist.ipc
Normal file
309
HECB/production/netlist.ipc
Normal file
@@ -0,0 +1,309 @@
|
|||||||
|
P CODE 00
|
||||||
|
P UNITS CUST 0
|
||||||
|
P arrayDim N
|
||||||
|
317/RELAY_SIG_A1 RN1 -9 D0315PA00X+063100Y-014600X0630Y0630R270S0
|
||||||
|
317/RELAY_SIG_B1 RN1 -8 D0315PA00X+063100Y-015600X0630Y0630R270S0
|
||||||
|
317/RELAY_SIG_A2 RN1 -7 D0315PA00X+063100Y-016600X0630Y0630R270S0
|
||||||
|
317/RELAY_SIG_B2 RN1 -6 D0315PA00X+063100Y-017600X0630Y0630R270S0
|
||||||
|
317/RELAY_SIG_B3 RN1 -5 D0315PA00X+063100Y-018600X0630Y0630R270S0
|
||||||
|
317/RELAY_SIG_A3 RN1 -4 D0315PA00X+063100Y-019600X0630Y0630R270S0
|
||||||
|
317/RELAY_SIG_A4 RN1 -3 D0315PA00X+063100Y-020600X0630Y0630R270S0
|
||||||
|
317/RELAY_SIG_B4 RN1 -2 D0315PA00X+063100Y-021600X0630Y0630R270S0
|
||||||
|
317GND RN1 -1 D0315PA00X+063100Y-022600X0630Y0630R270S0
|
||||||
|
317+12V DB4 -1 D0433PA00X+042600Y-047185X0866Y0866R090S0
|
||||||
|
317NET-(DB4-A) DB4 -2 D0433PA00X+042600Y-048185X0866Y0866R090S0
|
||||||
|
317+12V DB3 -1 D0433PA00X+048554Y-047196X0866Y0866R090S0
|
||||||
|
317NET-(DB3-A) DB3 -2 D0433PA00X+048554Y-048196X0866Y0866R090S0
|
||||||
|
317+12V DB2 -1 D0433PA00X+056577Y-047200X0866Y0866R090S0
|
||||||
|
317NET-(DB2-A) DB2 -2 D0433PA00X+056577Y-048200X0866Y0866R090S0
|
||||||
|
317+12V DB1 -1 D0433PA00X+060600Y-047200X0866Y0866R090S0
|
||||||
|
317NET-(DB1-A) DB1 -2 D0433PA00X+060600Y-048200X0866Y0866R090S0
|
||||||
|
317+12V DA4 -1 D0433PA00X+044577Y-047200X0866Y0866R090S0
|
||||||
|
317NET-(DA4-A) DA4 -2 D0433PA00X+044577Y-048200X0866Y0866R090S0
|
||||||
|
317+12V DA3 -1 D0433PA00X+046577Y-047200X0866Y0866R090S0
|
||||||
|
317NET-(DA3-A) DA3 -2 D0433PA00X+046577Y-048200X0866Y0866R090S0
|
||||||
|
317+12V DA2 -1 D0433PA00X+058577Y-047200X0866Y0866R090S0
|
||||||
|
317NET-(DA2-A) DA2 -2 D0433PA00X+058577Y-048200X0866Y0866R090S0
|
||||||
|
317+12V DA1 -1 D0433PA00X+062623Y-047200X0866Y0866R090S0
|
||||||
|
317NET-(DA1-A) DA1 -2 D0433PA00X+062623Y-048200X0866Y0866R090S0
|
||||||
|
317+5V R4 -1 D0315PA00X+041300Y-019908X0630Y0000R270S0
|
||||||
|
317/BTN2 R4 -2 D0315PA00X+041300Y-016908X0630Y0630R270S0
|
||||||
|
317+12V J_PWR1-1 D0551PA00X+052800Y-043500X0827Y0000R180S0
|
||||||
|
317+12V J_PWR1-1 D0551PA00X+050800Y-043500X0827Y0000R180S0
|
||||||
|
317GND QA2 -1 D0315PA00X+058577Y-044000X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_A2 QA2 -2 D0315PA00X+058577Y-045000X0591Y0000R090S0
|
||||||
|
317NET-(DA2-A) QA2 -3 D0315PA00X+058577Y-046000X0591Y0000R090S0
|
||||||
|
317/O_A2 J_O_A2-1 D0551PA00X+062577Y-053865X0827Y0000R000S0
|
||||||
|
317/O_A2 J_O_A2-1 D0551PA00X+064577Y-053865X0827Y0000R000S0
|
||||||
|
317J_LORA1-PIN_3) R2 -1 D0315PA00X+035600Y-023000X0630Y0000R000S0
|
||||||
|
317GND R2 -2 D0315PA00X+038600Y-023000X0630Y0630R000S0
|
||||||
|
317+5V R11 -1 D0276PA00X+058700Y-026080X0551Y0000R180S0
|
||||||
|
317/IN_3 R11 -2 D0276PA00X+055700Y-026080X0551Y0551R180S0
|
||||||
|
317/BTN1 J_BTN1-1 D0469PA00X+044500Y-015000X0685Y0862R180S0
|
||||||
|
317GND J_BTN1-2 D0469PA00X+043500Y-015000X0685Y0862R180S0
|
||||||
|
317+12V J1 -1 D0394PA00X+041200Y-042400X0669Y0669R270S0
|
||||||
|
317NET-(J1-PIN_2) J1 -2 D0394PA00X+042200Y-042400X0669Y0669R270S0
|
||||||
|
317+5V J1 -3 D0394PA00X+043200Y-042400X0669Y0669R270S0
|
||||||
|
317GND QB3 -1 D0315PA00X+048554Y-043996X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_B3 QB3 -2 D0315PA00X+048554Y-044996X0591Y0000R090S0
|
||||||
|
317NET-(DB3-A) QB3 -3 D0315PA00X+048554Y-045996X0591Y0000R090S0
|
||||||
|
317+5V J_433M-1 D0394PA00X+029000Y-028800X0669Y0669R180S0
|
||||||
|
317/RF_D J_433M-2 D0394PA00X+029000Y-027800X0669Y0669R180S0
|
||||||
|
317Z1-PIN_3-PAD3) J_433M-3 D0394PA00X+029000Y-026800X0669Y0669R180S0
|
||||||
|
317GND J_433M-4 D0394PA00X+029000Y-025800X0669Y0669R180S0
|
||||||
|
317+12V X4 -1A D1020PA00X+051000Y-055000X1378Y0000R090S0
|
||||||
|
317+12V X4 -1B D1020PA00X+051000Y-057000X1378Y0000R090S0
|
||||||
|
317ET-(KA4-PADNO) X4 -2A D1020PA00X+051000Y-058598X1378Y0000R090S0
|
||||||
|
317ET-(KA4-PADNO) X4 -2B D1020PA00X+051000Y-060598X1378Y0000R090S0
|
||||||
|
317/BTN5 J_BTN5-1 D0469PA00X+033700Y-015000X0685Y0862R180S0
|
||||||
|
317GND J_BTN5-2 D0469PA00X+032700Y-015000X0685Y0862R180S0
|
||||||
|
317+5V R10 -1 D0276PA00X+058700Y-027320X0551Y0000R180S0
|
||||||
|
317/IN_2 R10 -2 D0276PA00X+055700Y-027320X0551Y0551R180S0
|
||||||
|
317+5V R9 -1 D0276PA00X+058700Y-028561X0551Y0000R180S0
|
||||||
|
317/IN_1 R9 -2 D0276PA00X+055700Y-028561X0551Y0551R180S0
|
||||||
|
317GND QB2 -1 D0315PA00X+056577Y-044000X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_B2 QB2 -2 D0315PA00X+056577Y-045000X0591Y0000R090S0
|
||||||
|
317NET-(DB2-A) QB2 -3 D0315PA00X+056577Y-046000X0591Y0000R090S0
|
||||||
|
317+5V R12 -1 D0276PA00X+058700Y-024840X0551Y0000R180S0
|
||||||
|
317/IN_4 R12 -2 D0276PA00X+055700Y-024840X0551Y0551R180S0
|
||||||
|
317+5V R13 -1 D0276PA00X+058700Y-023600X0551Y0000R180S0
|
||||||
|
317/IN_5 R13 -2 D0276PA00X+055700Y-023600X0551Y0551R180S0
|
||||||
|
317+5V C3 -1 D0315PA00X+034184Y-025000X0630Y0630R180S0
|
||||||
|
317GND C3 -2 D0315PA00X+033200Y-025000X0630Y0000R180S0
|
||||||
|
317+12V KB2 -A1 D0295PA00X+057724Y-051335X0495Y0000R180S0
|
||||||
|
317NET-(DB2-A) KB2 -A2 D0295PA00X+057724Y-049465X0495Y0000R180S0
|
||||||
|
317/O_B2 KB2 -COM D0591PA00X+061004Y-050400X0886Y0000R180S0
|
||||||
|
317ED-(KB2-PADNC) KB2 -NC D0591PA00X+056177Y-051335X0886Y0000R180S0
|
||||||
|
317ET-(KA2-PADNO) KB2 -NO D0591PA00X+056177Y-049465X0886Y0000R180S0
|
||||||
|
317+3.3V C4 -1 D0315PA00X+037600Y-025000X0630Y0630R180S0
|
||||||
|
317GND C4 -2 D0315PA00X+036616Y-025000X0630Y0000R180S0
|
||||||
|
317+12V KA3 -A1 D0295PA00X+047577Y-052865X0495Y0000R000S0
|
||||||
|
317NET-(DA3-A) KA3 -A2 D0295PA00X+047577Y-054735X0495Y0000R000S0
|
||||||
|
317/O_A3 KA3 -COM D0591PA00X+044298Y-053800X0886Y0000R000S0
|
||||||
|
317GND KA3 -NC D0591PA00X+049124Y-052865X0886Y0000R000S0
|
||||||
|
317ET-(KA3-PADNO) KA3 -NO D0591PA00X+049124Y-054735X0886Y0000R000S0
|
||||||
|
317+12V X1 -1A D1020PA00X+054600Y-054201X1378Y0000R090S0
|
||||||
|
317+12V X1 -1B D1020PA00X+054600Y-056201X1378Y0000R090S0
|
||||||
|
317ET-(KA1-PADNO) X1 -2A D1020PA00X+054600Y-057799X1378Y0000R090S0
|
||||||
|
317ET-(KA1-PADNO) X1 -2B D1020PA00X+054600Y-059799X1378Y0000R090S0
|
||||||
|
317+12V J2 -1 D0394PA00X+037600Y-042400X0669Y0669R270S0
|
||||||
|
317NET-(J2-PIN_2) J2 -2 D0394PA00X+038600Y-042400X0669Y0669R270S0
|
||||||
|
317+5V J2 -3 D0394PA00X+039600Y-042400X0669Y0669R270S0
|
||||||
|
317+5V R5 -1 D0315PA00X+038600Y-019916X0630Y0000R270S0
|
||||||
|
317/BTN3 R5 -2 D0315PA00X+038600Y-016916X0630Y0630R270S0
|
||||||
|
317GND J_GND3-1 D0551PA00X+038000Y-046000X0827Y0000R000S0
|
||||||
|
317GND J_GND3-1 D0551PA00X+040000Y-046000X0827Y0000R000S0
|
||||||
|
317GND QA4 -1 D0315PA00X+044577Y-044000X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_A4 QA4 -2 D0315PA00X+044577Y-045000X0591Y0000R090S0
|
||||||
|
317NET-(DA4-A) QA4 -3 D0315PA00X+044577Y-046000X0591Y0000R090S0
|
||||||
|
317GND QA3 -1 D0315PA00X+046577Y-044000X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_A3 QA3 -2 D0315PA00X+046577Y-045000X0591Y0000R090S0
|
||||||
|
317NET-(DA3-A) QA3 -3 D0315PA00X+046577Y-046000X0591Y0000R090S0
|
||||||
|
317+5V R14 -1 D0276PA00X+058700Y-022360X0551Y0000R180S0
|
||||||
|
317/IN_6 R14 -2 D0276PA00X+055700Y-022360X0551Y0551R180S0
|
||||||
|
317+5V R15 -1 D0315PA00X+033200Y-019900X0630Y0000R270S0
|
||||||
|
317/BTN5 R15 -2 D0315PA00X+033200Y-016900X0630Y0630R270S0
|
||||||
|
317+12V KA2 -A1 D0295PA00X+057724Y-054735X0495Y0000R180S0
|
||||||
|
317NET-(DA2-A) KA2 -A2 D0295PA00X+057724Y-052865X0495Y0000R180S0
|
||||||
|
317/O_A2 KA2 -COM D0591PA00X+061004Y-053800X0886Y0000R180S0
|
||||||
|
317ED-(KA2-PADNC) KA2 -NC D0591PA00X+056177Y-054735X0886Y0000R180S0
|
||||||
|
317ET-(KA2-PADNO) KA2 -NO D0591PA00X+056177Y-052865X0886Y0000R180S0
|
||||||
|
317/O_B2 J_O_B2-1 D0551PA00X+062577Y-050465X0827Y0000R000S0
|
||||||
|
317/O_B2 J_O_B2-1 D0551PA00X+064577Y-050465X0827Y0000R000S0
|
||||||
|
317GND QA1 -1 D0315PA00X+062623Y-044000X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_A1 QA1 -2 D0315PA00X+062623Y-045000X0591Y0000R090S0
|
||||||
|
317NET-(DA1-A) QA1 -3 D0315PA00X+062623Y-046000X0591Y0000R090S0
|
||||||
|
317/LORA_RXD R1 -1 D0315PA00X+038600Y-021800X0630Y0000R180S0
|
||||||
|
317J_LORA1-PIN_3) R1 -2 D0315PA00X+035600Y-021800X0630Y0630R180S0
|
||||||
|
317+12V C1 -1 D0315PA00X+048800Y-040784X0630Y0630R270S0
|
||||||
|
317GND C1 -2 D0315PA00X+048800Y-039800X0630Y0000R270S0
|
||||||
|
317GND QB4 -1 D0315PA00X+042600Y-043996X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_B4 QB4 -2 D0315PA00X+042600Y-044996X0591Y0000R090S0
|
||||||
|
317NET-(DB4-A) QB4 -3 D0315PA00X+042600Y-045996X0591Y0000R090S0
|
||||||
|
317+5V J_RTC1-1 D0394PA00X+031600Y-018602X0669Y0669R000S0
|
||||||
|
317/I2C_SDA J_RTC1-2 D0394PA00X+031600Y-019602X0669Y0669R000S0
|
||||||
|
317/I2C_SCL J_RTC1-3 D0394PA00X+031600Y-020602X0669Y0669R000S0
|
||||||
|
317C1-PIN_4-PAD4) J_RTC1-4 D0394PA00X+031600Y-021602X0669Y0669R000S0
|
||||||
|
317GND J_RTC1-5 D0394PA00X+031600Y-022602X0669Y0669R000S0
|
||||||
|
317/BTN4 J_BTN4-1 D0469PA00X+036400Y-015000X0685Y0862R180S0
|
||||||
|
317GND J_BTN4-2 D0469PA00X+035400Y-015000X0685Y0862R180S0
|
||||||
|
317/BTN3 J_BTN3-1 D0469PA00X+039100Y-015008X0685Y0862R180S0
|
||||||
|
317GND J_BTN3-2 D0469PA00X+038100Y-015008X0685Y0862R180S0
|
||||||
|
317+12V KA1 -A1 D0295PA00X+057724Y-061570X0495Y0000R180S0
|
||||||
|
317NET-(DA1-A) KA1 -A2 D0295PA00X+057724Y-059700X0495Y0000R180S0
|
||||||
|
317/O_A1 KA1 -COM D0591PA00X+061004Y-060635X0886Y0000R180S0
|
||||||
|
317ED-(KA1-PADNC) KA1 -NC D0591PA00X+056177Y-061570X0886Y0000R180S0
|
||||||
|
317ET-(KA1-PADNO) KA1 -NO D0591PA00X+056177Y-059700X0886Y0000R180S0
|
||||||
|
317GND J_GND1-1 D0551PA00X+028800Y-046000X0827Y0000R000S0
|
||||||
|
317GND J_GND1-1 D0551PA00X+030800Y-046000X0827Y0000R000S0
|
||||||
|
317+12V X3 -1A D1020PA00X+051000Y-046802X1378Y0000R090S0
|
||||||
|
317+12V X3 -1B D1020PA00X+051000Y-048802X1378Y0000R090S0
|
||||||
|
317ET-(KA3-PADNO) X3 -2A D1020PA00X+051000Y-050400X1378Y0000R090S0
|
||||||
|
317ET-(KA3-PADNO) X3 -2B D1020PA00X+051000Y-052400X1378Y0000R090S0
|
||||||
|
317/BTN2 J_BTN2-1 D0469PA00X+041800Y-015000X0685Y0862R180S0
|
||||||
|
317GND J_BTN2-2 D0469PA00X+040800Y-015000X0685Y0862R180S0
|
||||||
|
317GND C2 -2 D0315PA00X+045500Y-029900X0630Y0000R270S0
|
||||||
|
317+5V C2 -1 D0315PA00X+045500Y-030687X0630Y0630R270S0
|
||||||
|
317+12V U1 -1 D0433PA00X+053450Y-038700X0750Y0787R270S0
|
||||||
|
317GND U1 -2 D0433PA00X+053450Y-037700X0750Y0787R270S0
|
||||||
|
317+5V U1 -3 D0433PA00X+053450Y-036700X0750Y0787R270S0
|
||||||
|
317/O_B1 J_O_B1-1 D0551PA00X+062600Y-057300X0827Y0000R000S0
|
||||||
|
317/O_B1 J_O_B1-1 D0551PA00X+064600Y-057300X0827Y0000R000S0
|
||||||
|
317GND QB1 -1 D0315PA00X+060600Y-044000X0591Y0591R090S0
|
||||||
|
317/RELAY_SIG_B1 QB1 -2 D0315PA00X+060600Y-045000X0591Y0000R090S0
|
||||||
|
317NET-(DB1-A) QB1 -3 D0315PA00X+060600Y-046000X0591Y0000R090S0
|
||||||
|
317GND J_GND2-1 D0551PA00X+033400Y-046000X0827Y0000R000S0
|
||||||
|
317GND J_GND2-1 D0551PA00X+035400Y-046000X0827Y0000R000S0
|
||||||
|
317+12V KB3 -A1 D0295PA00X+047577Y-049465X0495Y0000R000S0
|
||||||
|
317NET-(DB3-A) KB3 -A2 D0295PA00X+047577Y-051335X0495Y0000R000S0
|
||||||
|
317/O_B3 KB3 -COM D0591PA00X+044298Y-050400X0886Y0000R000S0
|
||||||
|
317GND KB3 -NC D0591PA00X+049124Y-049465X0886Y0000R000S0
|
||||||
|
317ET-(KA3-PADNO) KB3 -NO D0591PA00X+049124Y-051335X0886Y0000R000S0
|
||||||
|
317+12V KB1 -A1 D0295PA00X+057747Y-058170X0495Y0000R180S0
|
||||||
|
317NET-(DB1-A) KB1 -A2 D0295PA00X+057747Y-056300X0495Y0000R180S0
|
||||||
|
317/O_B1 KB1 -COM D0591PA00X+061027Y-057235X0886Y0000R180S0
|
||||||
|
317ED-(KB1-PADNC) KB1 -NC D0591PA00X+056200Y-058170X0886Y0000R180S0
|
||||||
|
317ET-(KA1-PADNO) KB1 -NO D0591PA00X+056200Y-056300X0886Y0000R180S0
|
||||||
|
317+12V R7 -1 D0315PA00X+060800Y-033900X0630Y0000R270S0
|
||||||
|
317/V_SENS R7 -2 D0315PA00X+060800Y-030900X0630Y0630R270S0
|
||||||
|
317+12V X2 -1A D1020PA00X+054600Y-046002X1378Y0000R090S0
|
||||||
|
317+12V X2 -1B D1020PA00X+054600Y-048002X1378Y0000R090S0
|
||||||
|
317ET-(KA2-PADNO) X2 -2A D1020PA00X+054600Y-049600X1378Y0000R090S0
|
||||||
|
317ET-(KA2-PADNO) X2 -2B D1020PA00X+054600Y-051600X1378Y0000R090S0
|
||||||
|
317+12V KA4 -A1 D0295PA00X+047577Y-056265X0495Y0000R000S0
|
||||||
|
317NET-(DA4-A) KA4 -A2 D0295PA00X+047577Y-058135X0495Y0000R000S0
|
||||||
|
317/O_A4 KA4 -COM D0591PA00X+044298Y-057200X0886Y0000R000S0
|
||||||
|
317GND KA4 -NC D0591PA00X+049124Y-056265X0886Y0000R000S0
|
||||||
|
317ET-(KA4-PADNO) KA4 -NO D0591PA00X+049124Y-058135X0886Y0000R000S0
|
||||||
|
317+5V R6 -1 D0315PA00X+035900Y-019908X0630Y0000R270S0
|
||||||
|
317/BTN4 R6 -2 D0315PA00X+035900Y-016908X0630Y0630R270S0
|
||||||
|
317+12V J3 -1 D0394PA00X+034000Y-042400X0669Y0669R270S0
|
||||||
|
317NET-(J3-PIN_2) J3 -2 D0394PA00X+035000Y-042400X0669Y0669R270S0
|
||||||
|
317+5V J3 -3 D0394PA00X+036000Y-042400X0669Y0669R270S0
|
||||||
|
317GND J_LCD1-1 D0469PA00X+031000Y-015008X0685Y0862R180S0
|
||||||
|
317+5V J_LCD1-2 D0469PA00X+030000Y-015008X0685Y0862R180S0
|
||||||
|
317/I2C_SDA J_LCD1-3 D0469PA00X+029000Y-015008X0685Y0862R180S0
|
||||||
|
317/I2C_SCL J_LCD1-4 D0469PA00X+028000Y-015008X0685Y0862R180S0
|
||||||
|
317+3.3V J_LORA-1 D0394PA00X+037600Y-027800X0669Y0669R090S0
|
||||||
|
317A1-PIN_2-PAD2) J_LORA-2 D0394PA00X+036600Y-027800X0669Y0669R090S0
|
||||||
|
317J_LORA1-PIN_3) J_LORA-3 D0394PA00X+035600Y-027800X0669Y0669R090S0
|
||||||
|
317/LORA_TXD J_LORA-4 D0394PA00X+034600Y-027800X0669Y0669R090S0
|
||||||
|
317GND J_LORA-5 D0394PA00X+033600Y-027800X0669Y0669R090S0
|
||||||
|
317+12V KB4 -A1 D0295PA00X+047577Y-059665X0495Y0000R000S0
|
||||||
|
317NET-(DB4-A) KB4 -A2 D0295PA00X+047577Y-061535X0495Y0000R000S0
|
||||||
|
317/O_B4 KB4 -COM D0591PA00X+044298Y-060600X0886Y0000R000S0
|
||||||
|
317GND KB4 -NC D0591PA00X+049124Y-059665X0886Y0000R000S0
|
||||||
|
317ET-(KA4-PADNO) KB4 -NO D0591PA00X+049124Y-061535X0886Y0000R000S0
|
||||||
|
317/V_SENS R8 -1 D0315PA00X+062000Y-030900X0630Y0000R090S0
|
||||||
|
317GND R8 -2 D0315PA00X+062000Y-033900X0630Y0630R090S0
|
||||||
|
317+5V R3 -1 D0315PA00X+044000Y-019908X0630Y0000R270S0
|
||||||
|
317/BTN1 R3 -2 D0315PA00X+044000Y-016908X0630Y0630R270S0
|
||||||
|
317/O_A1 J_O_A1-1 D0551PA00X+062577Y-060700X0827Y0000R000S0
|
||||||
|
317/O_A1 J_O_A1-1 D0551PA00X+064577Y-060700X0827Y0000R000S0
|
||||||
|
367N/C J_INPU D1350UA00X+031680Y-041209X1350Y0000R270S0
|
||||||
|
367N/C J_INPU D1350UA00X+045499Y-041209X1350Y0000R270S0
|
||||||
|
367N/C J_INPU D1350UA00X+031680Y-032808X1350Y0000R270S0
|
||||||
|
367N/C J_INPU D1350UA00X+045499Y-032808X1350Y0000R270S0
|
||||||
|
317/IN_1 J_INPU-1 D0709PA00X+042940Y-035217X1181Y0000R270S0
|
||||||
|
317/IN_2 J_INPU-2 D0709PA00X+041200Y-035217X1181Y0000R270S0
|
||||||
|
317/IN_3 J_INPU-3 D0709PA00X+039460Y-035217X1181Y0000R270S0
|
||||||
|
317/IN_4 J_INPU-4 D0709PA00X+037720Y-035217X1181Y0000R270S0
|
||||||
|
317/IN_5 J_INPU-5 D0709PA00X+035980Y-035217X1181Y0000R270S0
|
||||||
|
317/IN_6 J_INPU-6 D0709PA00X+034239Y-035217X1181Y0000R270S0
|
||||||
|
317GND J_INPU-7 D0709PA00X+034239Y-038800X1181Y0000R270S0
|
||||||
|
317NET-(J3-PIN_2) J_INPU-8 D0709PA00X+035980Y-038800X1181Y0000R270S0
|
||||||
|
317GND J_INPU-9 D0709PA00X+037720Y-038800X1181Y0000R270S0
|
||||||
|
317NET-(J2-PIN_2) J_INPU-10 D0709PA00X+039460Y-038800X1181Y0000R270S0
|
||||||
|
317GND J_INPU-11 D0709PA00X+041200Y-038800X1181Y0000R270S0
|
||||||
|
317NET-(J1-PIN_2) J_INPU-12 D0709PA00X+042940Y-038800X1181Y0000R270S0
|
||||||
|
317+3.3V U2 -3V3_ D0315PA00X+048000Y-030600X0660Y0000R270S0
|
||||||
|
317+3.3V U2 -3V3_ D0315PA00X+049000Y-030600X0660Y0000R270S0
|
||||||
|
317+5V U2 -5V_1 D0315PA00X+048000Y-031600X0660Y0000R270S0
|
||||||
|
317+5V U2 -5V_2 D0315PA00X+049000Y-031600X0660Y0000R270S0
|
||||||
|
317/V_SENS U2 -A0 D0315PA00X+062000Y-028600X0660Y0000R270S0
|
||||||
|
317/IN_1 U2 -A1 D0315PA00X+061000Y-028600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADA2) U2 -A2 D0315PA00X+062000Y-027600X0660Y0000R270S0
|
||||||
|
317/IN_2 U2 -A3 D0315PA00X+061000Y-027600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADA4) U2 -A4 D0315PA00X+062000Y-026600X0660Y0000R270S0
|
||||||
|
317/IN_3 U2 -A5 D0315PA00X+061000Y-026600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADA6) U2 -A6 D0315PA00X+062000Y-025600X0660Y0000R270S0
|
||||||
|
317/IN_4 U2 -A7 D0315PA00X+061000Y-025600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADA8) U2 -A8 D0315PA00X+062000Y-024600X0660Y0000R270S0
|
||||||
|
317/IN_5 U2 -A9 D0315PA00X+061000Y-024600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADA10) U2 -A10 D0315PA00X+062000Y-023600X0660Y0000R270S0
|
||||||
|
317/IN_6 U2 -A11 D0315PA00X+061000Y-023600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADA12) U2 -A12 D0315PA00X+062000Y-022600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADA13) U2 -A13 D0315PA00X+061000Y-022600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADA14) U2 -A14 D0315PA00X+062000Y-021600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADA15) U2 -A15 D0315PA00X+061000Y-021600X0660Y0000R270S0
|
||||||
|
317D-(U2-PADAREF) U2 -AREF D0315PA00X+049000Y-029600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD2) U2 -D2 D0315PA00X+049000Y-027600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD3) U2 -D3 D0315PA00X+048000Y-027600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD4) U2 -D4 D0315PA00X+049000Y-026600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD5) U2 -D5 D0315PA00X+048000Y-026600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD6) U2 -D6 D0315PA00X+049000Y-025600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD7) U2 -D7 D0315PA00X+048000Y-025600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD8) U2 -D8 D0315PA00X+049000Y-024600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADD9) U2 -D9 D0315PA00X+048000Y-024600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD10) U2 -D10 D0315PA00X+049000Y-023600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD11) U2 -D11 D0315PA00X+048000Y-023600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD12) U2 -D12 D0315PA00X+049000Y-022600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD13) U2 -D13 D0315PA00X+048000Y-022600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD14) U2 -D14 D0315PA00X+049000Y-021600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD15) U2 -D15 D0315PA00X+048000Y-021600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD16) U2 -D16 D0315PA00X+049000Y-020600X0660Y0000R270S0
|
||||||
|
317/RF_D U2 -D17 D0315PA00X+048000Y-020600X0660Y0000R270S0
|
||||||
|
317/LORA_RXD U2 -D18 D0315PA00X+049000Y-019600X0660Y0000R270S0
|
||||||
|
317/LORA_TXD U2 -D19 D0315PA00X+048000Y-019600X0660Y0000R270S0
|
||||||
|
317/I2C_SDA U2 -D20 D0315PA00X+049000Y-018600X0660Y0000R270S0
|
||||||
|
317/I2C_SCL U2 -D21 D0315PA00X+048000Y-018600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD22) U2 -D22 D0315PA00X+049000Y-017600X0660Y0000R270S0
|
||||||
|
317/BTN1 U2 -D23 D0315PA00X+048000Y-017600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD24) U2 -D24 D0315PA00X+049000Y-016600X0660Y0000R270S0
|
||||||
|
317/BTN2 U2 -D25 D0315PA00X+048000Y-016600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD26) U2 -D26 D0315PA00X+049000Y-015600X0660Y0000R270S0
|
||||||
|
317/BTN3 U2 -D27 D0315PA00X+048000Y-015600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD28) U2 -D28 D0315PA00X+049000Y-014600X0660Y0000R270S0
|
||||||
|
317/BTN4 U2 -D29 D0315PA00X+048000Y-014600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD30) U2 -D30 D0315PA00X+049000Y-013600X0660Y0000R270S0
|
||||||
|
317/BTN5 U2 -D31 D0315PA00X+048000Y-013600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_B4 U2 -D32 D0315PA00X+062000Y-020600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD33) U2 -D33 D0315PA00X+061000Y-020600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_A4 U2 -D34 D0315PA00X+062000Y-019600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD35) U2 -D35 D0315PA00X+061000Y-019600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_A3 U2 -D36 D0315PA00X+062000Y-018600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD37) U2 -D37 D0315PA00X+061000Y-018600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_B3 U2 -D38 D0315PA00X+062000Y-017600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD39) U2 -D39 D0315PA00X+061000Y-017600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_B2 U2 -D40 D0315PA00X+062000Y-016600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD41) U2 -D41 D0315PA00X+061000Y-016600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_A2 U2 -D42 D0315PA00X+062000Y-015600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD43) U2 -D43 D0315PA00X+061000Y-015600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_B1 U2 -D44 D0315PA00X+062000Y-014600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD45) U2 -D45 D0315PA00X+061000Y-014600X0660Y0000R270S0
|
||||||
|
317/RELAY_SIG_A1 U2 -D46 D0315PA00X+062000Y-013600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD47) U2 -D47 D0315PA00X+061000Y-013600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD48) U2 -D48 D0315PA00X+060000Y-013600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD49) U2 -D49 D0315PA00X+060000Y-014600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD50) U2 -D50 D0315PA00X+059000Y-013600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD51) U2 -D51 D0315PA00X+059000Y-014600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD52) U2 -D52 D0315PA00X+058000Y-013600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADD53) U2 -D53 D0315PA00X+058000Y-014600X0660Y0000R270S0
|
||||||
|
317GND U2 -GND_ D0315PA00X+048000Y-032600X0660Y0000R270S0
|
||||||
|
317GND U2 -GND_ D0315PA00X+049000Y-032600X0660Y0000R270S0
|
||||||
|
317ED-(U2-PADRST) U2 -RST D0315PA00X+048000Y-029600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADRX) U2 -RX D0315PA00X+049000Y-028600X0660Y0000R270S0
|
||||||
|
317TED-(U2-PADTX) U2 -TX D0315PA00X+048000Y-028600X0660Y0000R270S0
|
||||||
|
317-VIN-PADVIN_1) U2 -VIN_ D0315PA00X+048000Y-033600X0660Y0000R270S0
|
||||||
|
317-VIN-PADVIN_1) U2 -VIN_ D0315PA00X+049000Y-033600X0660Y0000R270S0
|
||||||
|
367N/C J5 D1350UA00X+040159Y-051265X1350Y0000R090S0
|
||||||
|
367N/C J5 D1350UA00X+031600Y-051265X1350Y0000R090S0
|
||||||
|
367N/C J5 D1350UA00X+040159Y-059667X1350Y0000R090S0
|
||||||
|
367N/C J5 D1350UA00X+031600Y-059667X1350Y0000R090S0
|
||||||
|
317GND J5 -1 D0709PA00X+034139Y-057257X1181Y0000R090S0
|
||||||
|
317/O_A4 J5 -2 D0709PA00X+035880Y-057257X1181Y0000R090S0
|
||||||
|
317/O_B4 J5 -3 D0709PA00X+037620Y-057257X1181Y0000R090S0
|
||||||
|
317/O_B3 J5 -4 D0709PA00X+037620Y-053674X1181Y0000R090S0
|
||||||
|
317/O_A3 J5 -5 D0709PA00X+035880Y-053674X1181Y0000R090S0
|
||||||
|
317GND J5 -6 D0709PA00X+034139Y-053674X1181Y0000R090S0
|
||||||
|
999
|
||||||
73
HECB/production/positions.csv
Normal file
73
HECB/production/positions.csv
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
Designator,Mid X,Mid Y,Rotation,Layer
|
||||||
|
C1,123.952,-102.342,90.0,top
|
||||||
|
C2,115.57,-76.946,90.0,top
|
||||||
|
C3,85.576856,-63.5,180.0,top
|
||||||
|
C4,94.254,-63.5,180.0,top
|
||||||
|
DA1,159.062,-121.158,270.0,top
|
||||||
|
DA2,148.786,-121.158,270.0,top
|
||||||
|
DA3,118.306,-121.158,270.0,top
|
||||||
|
DA4,113.226,-121.158,270.0,top
|
||||||
|
DB1,153.924,-121.158,270.0,top
|
||||||
|
DB2,143.706,-121.158,270.0,top
|
||||||
|
DB3,123.328,-121.148,270.0,top
|
||||||
|
DB4,108.204,-121.12023,270.0,top
|
||||||
|
J1,107.188,-107.696,90.0,top
|
||||||
|
J2,98.044,-107.696,90.0,top
|
||||||
|
J3,88.9,-107.696,90.0,top
|
||||||
|
J5,91.134,-140.883,270.0,bottom
|
||||||
|
J_433MHZ1,73.66,-69.342,180.0,top
|
||||||
|
J_BTN1,111.76,-38.1,180.0,top
|
||||||
|
J_BTN2,104.902,-38.1,180.0,top
|
||||||
|
J_BTN3,98.044,-38.12,180.0,top
|
||||||
|
J_BTN4,91.186,-38.1,180.0,top
|
||||||
|
J_BTN5,84.328,-38.1,180.0,top
|
||||||
|
J_GND1,75.692,-116.84,0.0,top
|
||||||
|
J_GND2,87.376,-116.84,0.0,top
|
||||||
|
J_GND3,99.06,-116.84,0.0,top
|
||||||
|
J_INPUT1,98.018,-94.002,90.0,bottom
|
||||||
|
J_LCD1,74.93,-38.12,180.0,top
|
||||||
|
J_LORA1,90.424,-70.612,270.0,top
|
||||||
|
J_O_A1,161.486,-154.178,0.0,top
|
||||||
|
J_O_A2,161.486,-136.817,0.0,top
|
||||||
|
J_O_B1,161.544,-145.542,0.0,top
|
||||||
|
J_O_B2,161.486,-128.181,0.0,top
|
||||||
|
J_PWR1,131.572,-110.49,180.0,top
|
||||||
|
J_RTC1,80.264,-52.329,0.0,top
|
||||||
|
KA1,148.82,-154.013,180.0,top
|
||||||
|
KA2,148.82,-136.652,180.0,top
|
||||||
|
KA3,118.646,-136.652,0.0,top
|
||||||
|
KA4,118.646,-145.288,0.0,top
|
||||||
|
KB1,148.878,-145.377,180.0,top
|
||||||
|
KB2,148.82,-128.016,180.0,top
|
||||||
|
KB3,118.646,-128.016,0.0,top
|
||||||
|
KB4,118.646,-153.924,0.0,top
|
||||||
|
QA1,159.062,-114.3,270.0,top
|
||||||
|
QA2,148.786,-114.3,270.0,top
|
||||||
|
QA3,118.306,-114.3,270.0,top
|
||||||
|
QA4,113.226,-114.3,270.0,top
|
||||||
|
QB1,153.924,-114.3,270.0,top
|
||||||
|
QB2,143.706,-114.3,270.0,top
|
||||||
|
QB3,123.328,-114.29,270.0,top
|
||||||
|
QB4,108.204,-114.29,270.0,top
|
||||||
|
R1,94.234,-55.372,180.0,top
|
||||||
|
R10,145.288,-69.394,180.0,top
|
||||||
|
R11,145.288,-66.244,180.0,top
|
||||||
|
R12,145.288,-63.094,180.0,top
|
||||||
|
R13,145.288,-59.944,180.0,top
|
||||||
|
R14,145.288,-56.794,180.0,top
|
||||||
|
R15,84.328,-46.736,90.0,top
|
||||||
|
R2,94.234,-58.42,0.0,top
|
||||||
|
R3,111.76,-46.756,90.0,top
|
||||||
|
R4,104.902,-46.756,90.0,top
|
||||||
|
R5,98.044,-46.776,90.0,top
|
||||||
|
R6,91.186,-46.756,90.0,top
|
||||||
|
R7,154.432,-82.296,90.0,top
|
||||||
|
R8,157.48,-82.296,270.0,top
|
||||||
|
R9,145.288,-72.544,180.0,top
|
||||||
|
RN1,160.274,-47.244,90.0,top
|
||||||
|
U1,135.763,-95.758,90.0,top
|
||||||
|
U2,139.7,-59.944,90.0,bottom
|
||||||
|
X1,138.684,-144.78,270.0,top
|
||||||
|
X2,138.684,-123.954,270.0,top
|
||||||
|
X3,129.54,-125.986,270.0,top
|
||||||
|
X4,129.54,-146.81,270.0,top
|
||||||
|
BIN
cad/AT15-12PB-BM16.AD_PRT
Normal file
BIN
cad/AT15-12PB-BM16.AD_PRT
Normal file
Binary file not shown.
BIN
cad/AT15-6P-BM03GRY.AD_PRT
Normal file
BIN
cad/AT15-6P-BM03GRY.AD_PRT
Normal file
Binary file not shown.
BIN
cad/CP_Radial_D5.0mm_P2.00mm.AD_ASM
Normal file
BIN
cad/CP_Radial_D5.0mm_P2.00mm.AD_ASM
Normal file
Binary file not shown.
BIN
cad/CP_Radial_D50mm_P200mm.AD_PRT
Normal file
BIN
cad/CP_Radial_D50mm_P200mm.AD_PRT
Normal file
Binary file not shown.
BIN
cad/CP_Radial_D8.0mm_P2.50mm.AD_ASM
Normal file
BIN
cad/CP_Radial_D8.0mm_P2.50mm.AD_ASM
Normal file
Binary file not shown.
BIN
cad/CP_Radial_D80mm_P250mm.AD_PRT
Normal file
BIN
cad/CP_Radial_D80mm_P250mm.AD_PRT
Normal file
Binary file not shown.
BIN
cad/CP_Radial_Tantal_D4.5mm_P2.50mm.AD_ASM
Normal file
BIN
cad/CP_Radial_Tantal_D4.5mm_P2.50mm.AD_ASM
Normal file
Binary file not shown.
BIN
cad/CP_Radial_Tantal_D45mm_P250mm.AD_PRT
Normal file
BIN
cad/CP_Radial_Tantal_D45mm_P250mm.AD_PRT
Normal file
Binary file not shown.
BIN
cad/D_DO-41_SOD81_P2.54mm_Vertical_AnodeUp.AD_ASM
Normal file
BIN
cad/D_DO-41_SOD81_P2.54mm_Vertical_AnodeUp.AD_ASM
Normal file
Binary file not shown.
BIN
cad/D_DO-41_SOD81_P2.54mm_Vertical_AnodeUp_2.AD_PRT
Normal file
BIN
cad/D_DO-41_SOD81_P2.54mm_Vertical_AnodeUp_2.AD_PRT
Normal file
Binary file not shown.
BIN
cad/Enclosure200x150x100.AD_DRW
Normal file
BIN
cad/Enclosure200x150x100.AD_DRW
Normal file
Binary file not shown.
BIN
cad/Enclosure200x150x100.AD_PRT
Normal file
BIN
cad/Enclosure200x150x100.AD_PRT
Normal file
Binary file not shown.
BIN
cad/EnclosureLid.AD_DRW
Normal file
BIN
cad/EnclosureLid.AD_DRW
Normal file
Binary file not shown.
BIN
cad/EnclosureLid.AD_PRT
Normal file
BIN
cad/EnclosureLid.AD_PRT
Normal file
Binary file not shown.
BIN
cad/HECB 1.AD_ASM
Normal file
BIN
cad/HECB 1.AD_ASM
Normal file
Binary file not shown.
BIN
cad/HECB_ASSY.AD_ASM
Normal file
BIN
cad/HECB_ASSY.AD_ASM
Normal file
Binary file not shown.
BIN
cad/HECB_PCB.AD_PRT
Normal file
BIN
cad/HECB_PCB.AD_PRT
Normal file
Binary file not shown.
BIN
cad/LCD_ASM.AD_ASM
Normal file
BIN
cad/LCD_ASM.AD_ASM
Normal file
Binary file not shown.
BIN
cad/LCD_backlight-1.AD_PRT
Normal file
BIN
cad/LCD_backlight-1.AD_PRT
Normal file
Binary file not shown.
BIN
cad/LCD_board-1.AD_PRT
Normal file
BIN
cad/LCD_board-1.AD_PRT
Normal file
Binary file not shown.
BIN
cad/LCD_screen-1.AD_PRT
Normal file
BIN
cad/LCD_screen-1.AD_PRT
Normal file
Binary file not shown.
BIN
cad/Molex_AE_6410_02A.AD_PRT
Normal file
BIN
cad/Molex_AE_6410_02A.AD_PRT
Normal file
Binary file not shown.
BIN
cad/Molex_AE_6410_04A.AD_PRT
Normal file
BIN
cad/Molex_AE_6410_04A.AD_PRT
Normal file
Binary file not shown.
BIN
cad/Molex_KK-254_AE-6410-02A_1x02_P2.54mm_Vertical.AD_ASM
Normal file
BIN
cad/Molex_KK-254_AE-6410-02A_1x02_P2.54mm_Vertical.AD_ASM
Normal file
Binary file not shown.
BIN
cad/Molex_KK-254_AE-6410-04A_1x04_P2.54mm_Vertical.AD_ASM
Normal file
BIN
cad/Molex_KK-254_AE-6410-04A_1x04_P2.54mm_Vertical.AD_ASM
Normal file
Binary file not shown.
BIN
cad/PinHeader_1x03_P2.54mm_Vertical.AD_ASM
Normal file
BIN
cad/PinHeader_1x03_P2.54mm_Vertical.AD_ASM
Normal file
Binary file not shown.
BIN
cad/PinHeader_1x03_P254mm_Vertical.AD_PRT
Normal file
BIN
cad/PinHeader_1x03_P254mm_Vertical.AD_PRT
Normal file
Binary file not shown.
BIN
cad/PinHeader_1x04_P2.54mm_Vertical.AD_ASM
Normal file
BIN
cad/PinHeader_1x04_P2.54mm_Vertical.AD_ASM
Normal file
Binary file not shown.
BIN
cad/PinHeader_1x04_P254mm_Vertical.AD_PRT
Normal file
BIN
cad/PinHeader_1x04_P254mm_Vertical.AD_PRT
Normal file
Binary file not shown.
BIN
cad/PinHeader_1x05_P2.54mm_Vertical.AD_ASM
Normal file
BIN
cad/PinHeader_1x05_P2.54mm_Vertical.AD_ASM
Normal file
Binary file not shown.
BIN
cad/PinHeader_1x05_P254mm_Vertical.AD_PRT
Normal file
BIN
cad/PinHeader_1x05_P254mm_Vertical.AD_PRT
Normal file
Binary file not shown.
BIN
cad/PinSocket_1x05_P2.54mm_Vertical.AD_ASM
Normal file
BIN
cad/PinSocket_1x05_P2.54mm_Vertical.AD_ASM
Normal file
Binary file not shown.
BIN
cad/PinSocket_1x05_P254mm_Vertical.AD_PRT
Normal file
BIN
cad/PinSocket_1x05_P254mm_Vertical.AD_PRT
Normal file
Binary file not shown.
BIN
cad/R_Array_SIP9.AD_ASM
Normal file
BIN
cad/R_Array_SIP9.AD_ASM
Normal file
Binary file not shown.
BIN
cad/R_Array_SIP9_2.AD_PRT
Normal file
BIN
cad/R_Array_SIP9_2.AD_PRT
Normal file
Binary file not shown.
BIN
cad/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.AD_ASM
Normal file
BIN
cad/R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal.AD_ASM
Normal file
Binary file not shown.
BIN
cad/R_Axial_DIN0204_L36mm_D16mm_P762mm_Horizontal.AD_PRT
Normal file
BIN
cad/R_Axial_DIN0204_L36mm_D16mm_P762mm_Horizontal.AD_PRT
Normal file
Binary file not shown.
BIN
cad/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.AD_ASM
Normal file
BIN
cad/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.AD_ASM
Normal file
Binary file not shown.
BIN
cad/R_Axial_DIN0207_L63mm_D25mm_P762mm_Horizontal.AD_PRT
Normal file
BIN
cad/R_Axial_DIN0207_L63mm_D25mm_P762mm_Horizontal.AD_PRT
Normal file
Binary file not shown.
BIN
cad/TO-220-3_Vertical.AD_ASM
Normal file
BIN
cad/TO-220-3_Vertical.AD_ASM
Normal file
Binary file not shown.
BIN
cad/TO-220-3_Vertical_2.AD_PRT
Normal file
BIN
cad/TO-220-3_Vertical_2.AD_PRT
Normal file
Binary file not shown.
BIN
cad/TO-92L_Inline_Wide.AD_ASM
Normal file
BIN
cad/TO-92L_Inline_Wide.AD_ASM
Normal file
Binary file not shown.
BIN
cad/TO-92L_Inline_Wide_2.AD_PRT
Normal file
BIN
cad/TO-92L_Inline_Wide_2.AD_PRT
Normal file
Binary file not shown.
20
flasher/flasher.ino
Normal file
20
flasher/flasher.ino
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include <RH_ASK.h>
|
||||||
|
#include <SPI.h> // Required for RadioHead, though not used directly
|
||||||
|
|
||||||
|
// Initialize the RF transmitter (default pin is 12, change if needed)
|
||||||
|
RH_ASK rf_driver(2000, 10); // 2000 bps, DATA pin on 10
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
if (!rf_driver.init()) {
|
||||||
|
Serial.println("RF Transmitter initialization failed!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
const char *msg = "Hello, RF World!"; // Message to send
|
||||||
|
rf_driver.send((uint8_t *)msg, strlen(msg)); // Send the message
|
||||||
|
rf_driver.waitPacketSent(); // Wait until the message is sent
|
||||||
|
Serial.println("Message sent: Hello, RF World!");
|
||||||
|
delay(1000); // Wait 1 second before sending again
|
||||||
|
}
|
||||||
56
lora_baudchange/lora_baudchange.ino
Normal file
56
lora_baudchange/lora_baudchange.ino
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
void setup() {
|
||||||
|
Serial.begin(115200); // Serial Monitor for debugging
|
||||||
|
Serial1.begin(115200); // Start at default RYLR998 baud rate
|
||||||
|
delay(1000); // Wait for RYLR998 to stabilize
|
||||||
|
|
||||||
|
Serial.println("Starting RYLR998 baud rate reprogramming...");
|
||||||
|
|
||||||
|
// Test communication at 115200 baud
|
||||||
|
sendATCommand("AT", "+OK", 115200); // Verify module responsiveness
|
||||||
|
sendATCommand("AT+RESET", "+RESET", 115200); // Reset module
|
||||||
|
sendATCommand("AT+IPR=9600", "+OK", 115200); // Set baud rate to 9600
|
||||||
|
|
||||||
|
// Switch to 9600 baud
|
||||||
|
Serial1.end(); // Close Serial1 at 115200
|
||||||
|
delay(500);
|
||||||
|
Serial1.begin(9600); // Reopen at 9600
|
||||||
|
delay(1000); // Wait for stabilization
|
||||||
|
|
||||||
|
// Verify communication at 9600 baud
|
||||||
|
sendATCommand("AT", "+OK", 9600); // Test at new baud rate
|
||||||
|
sendATCommand("AT+UART?", "+UART", 9600); // Confirm baud rate
|
||||||
|
Serial.println("RYLR998 reprogrammed to 9600 baud. Configuration complete.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// No loop actions needed; script runs once
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to send AT command and print response
|
||||||
|
void sendATCommand(String command, String expected, int baudRate) {
|
||||||
|
Serial1.println(command);
|
||||||
|
Serial.print("Sent AT (");
|
||||||
|
Serial.print(baudRate);
|
||||||
|
Serial.print(" baud): ");
|
||||||
|
Serial.println(command);
|
||||||
|
String response = waitForResponse(2000);
|
||||||
|
Serial.print("Response: ");
|
||||||
|
Serial.println(response);
|
||||||
|
if (!response.startsWith(expected)) {
|
||||||
|
Serial.println("Warning: Unexpected response for " + command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to read response from RYLR998
|
||||||
|
String waitForResponse(unsigned long timeout) {
|
||||||
|
unsigned long start = millis();
|
||||||
|
String response = "";
|
||||||
|
while (millis() - start < timeout) {
|
||||||
|
if (Serial1.available()) {
|
||||||
|
response += Serial1.readStringUntil('\n');
|
||||||
|
if (response.length() > 0) return response; // Return on first complete response
|
||||||
|
}
|
||||||
|
delay(10); // Small delay to prevent tight loop
|
||||||
|
}
|
||||||
|
return response; // Return empty or partial response if timeout
|
||||||
|
}
|
||||||
74
lora_rx/lora_rx.ino
Normal file
74
lora_rx/lora_rx.ino
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
void setup() {
|
||||||
|
Serial.begin(115200); // Serial Monitor for debugging
|
||||||
|
Serial1.begin(115200); // Serial1 for RYLR998 at 9600 baud
|
||||||
|
delay(2000); // Wait for RYLR998 to stabilize
|
||||||
|
|
||||||
|
Serial.println("Starting RYLR998 receiver configuration...");
|
||||||
|
|
||||||
|
// Configure RYLR998 with AT commands and verify responses
|
||||||
|
sendATCommand("AT+FACTORY", "+OK"); // Reset to factory settings
|
||||||
|
delay(1000);
|
||||||
|
sendATCommand("AT+BAND=915000000", "+OK"); // Set frequency to 915MHz
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
// Retry setting address up to 3 times
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
sendATCommand("AT+ADDRESS=2", "+OK"); // Set receiver address to 2
|
||||||
|
delay(1000);
|
||||||
|
String address = sendATCommand("AT+ADDRESS?", "+ADDRESS"); // Verify
|
||||||
|
if (address.indexOf("+ADDRESS=2") != -1) {
|
||||||
|
Serial.println("Address set successfully to 2");
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
Serial.println("Retry " + String(i + 1) + ": Failed to set address");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sendATCommand("AT+NETWORKID=6", "+OK"); // Set network ID
|
||||||
|
delay(1000);
|
||||||
|
Serial.println("Receiver initialized");
|
||||||
|
|
||||||
|
// Verify configuration
|
||||||
|
sendATCommand("AT+BAND?", "+BAND"); // Check frequency
|
||||||
|
sendATCommand("AT+ADDRESS?", "+ADDRESS"); // Check address
|
||||||
|
sendATCommand("AT+NETWORKID?", "+NETWORKID"); // Check network ID
|
||||||
|
sendATCommand("AT+UART?", "+UART"); // Check baud rate
|
||||||
|
sendATCommand("AT+VER?", "+VER"); // Check firmware version
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// Check for incoming serial data from RYLR998
|
||||||
|
if (Serial1.available()) {
|
||||||
|
String received = Serial1.readStringUntil('\n'); // Read incoming message
|
||||||
|
Serial.print("Received: ");
|
||||||
|
Serial.println(received); // Print all data for debugging
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to send AT command and print response
|
||||||
|
String sendATCommand(String command, String expected) {
|
||||||
|
Serial1.println(command);
|
||||||
|
Serial.print("Sent AT: ");
|
||||||
|
Serial.println(command);
|
||||||
|
String response = waitForResponse(2000); // Wait up to 2 seconds
|
||||||
|
Serial.print("Response: ");
|
||||||
|
Serial.println(response);
|
||||||
|
if (!response.startsWith(expected)) {
|
||||||
|
Serial.println("Warning: Unexpected response for " + command);
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to read response from RYLR998
|
||||||
|
String waitForResponse(unsigned long timeout) {
|
||||||
|
unsigned long start = millis();
|
||||||
|
String response = "";
|
||||||
|
while (millis() - start < timeout) {
|
||||||
|
if (Serial1.available()) {
|
||||||
|
response += Serial1.readStringUntil('\n');
|
||||||
|
if (response.length() > 0) return response; // Return on first complete response
|
||||||
|
}
|
||||||
|
delay(10); // Small delay to prevent tight loop
|
||||||
|
}
|
||||||
|
return response; // Return empty or partial response if timeout
|
||||||
|
}
|
||||||
80
lora_tx/lora_tx.ino
Normal file
80
lora_tx/lora_tx.ino
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#include <SoftwareSerial.h>
|
||||||
|
|
||||||
|
// Initialize SoftwareSerial on pins D4 (RX) and D5 (TX)
|
||||||
|
SoftwareSerial rySerial(4, 5); // RX, TX
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200); // Serial Monitor for debugging
|
||||||
|
rySerial.begin(115200); // RYLR998 at 9600 baud
|
||||||
|
delay(2000); // Wait for RYLR998 to stabilize
|
||||||
|
|
||||||
|
Serial.println("Starting RYLR998 transmitter configuration...");
|
||||||
|
|
||||||
|
// Configure RYLR998 with AT commands and verify responses
|
||||||
|
sendATCommand("AT+FACTORY", "+OK"); // Reset to factory settings
|
||||||
|
delay(1000);
|
||||||
|
sendATCommand("AT+BAND=915000000", "+OK"); // Set frequency to 915MHz
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
// Retry setting address up to 3 times
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
sendATCommand("AT+ADDRESS=1", "+OK"); // Set transmitter address to 1
|
||||||
|
delay(1000);
|
||||||
|
String address = sendATCommand("AT+ADDRESS?", "+ADDRESS"); // Verify
|
||||||
|
if (address.indexOf("+ADDRESS=1") != -1) {
|
||||||
|
Serial.println("Address set successfully to 1");
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
Serial.println("Retry " + String(i + 1) + ": Failed to set address");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sendATCommand("AT+NETWORKID=6", "+OK"); // Set network ID
|
||||||
|
delay(1000);
|
||||||
|
Serial.println("Transmitter initialized");
|
||||||
|
|
||||||
|
// Verify configuration
|
||||||
|
sendATCommand("AT+BAND?", "+BAND"); // Check frequency
|
||||||
|
sendATCommand("AT+ADDRESS?", "+ADDRESS"); // Check address
|
||||||
|
sendATCommand("AT+NETWORKID?", "+NETWORKID"); // Check network ID
|
||||||
|
sendATCommand("AT+UART?", "+UART"); // Check baud rate
|
||||||
|
sendATCommand("AT+VER?", "+VER"); // Check firmware version
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// Send a message to address 2 (receiver)
|
||||||
|
String message = "Hello, RYLR998!";
|
||||||
|
String command = "AT+SEND=2," + String(message.length()) + "," + message;
|
||||||
|
sendATCommand(command, "+OK"); // Send and verify
|
||||||
|
Serial.println("Sent: " + command);
|
||||||
|
delay(500); // Wait 2 seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to send AT command and print response
|
||||||
|
String sendATCommand(String command, String expected) {
|
||||||
|
rySerial.println(command);
|
||||||
|
Serial.print("Sent AT: ");
|
||||||
|
Serial.println(command);
|
||||||
|
rySerial.flush(); // Wait for command to be sent
|
||||||
|
String response = waitForResponse(2000); // Wait up to 2 seconds
|
||||||
|
Serial.print("Response: ");
|
||||||
|
Serial.println(response);
|
||||||
|
if (!response.startsWith(expected)) {
|
||||||
|
Serial.println("Warning: Unexpected response for " + command);
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to read response from RYLR998
|
||||||
|
String waitForResponse(unsigned long timeout) {
|
||||||
|
unsigned long start = millis();
|
||||||
|
String response = "";
|
||||||
|
while (millis() - start < timeout) {
|
||||||
|
if (rySerial.available()) {
|
||||||
|
response += rySerial.readStringUntil('\n');
|
||||||
|
if (response.length() > 0) return response; // Return on first complete response
|
||||||
|
}
|
||||||
|
delay(10); // Small delay to prevent tight loop
|
||||||
|
}
|
||||||
|
return response; // Return empty or partial response if timeout
|
||||||
|
}
|
||||||
30
rf_rx/rf_rx.ino
Normal file
30
rf_rx/rf_rx.ino
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#include <RH_ASK.h>
|
||||||
|
#include <SPI.h> // Required for RadioHead, though not used directly
|
||||||
|
|
||||||
|
// Initialize the RF receiver (default pin is 11, change if needed)
|
||||||
|
RH_ASK rf_driver(2000, 17, 17); // 2000 bps, DATA pin on 17
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println("Good morning...");
|
||||||
|
if (!rf_driver.init()) {
|
||||||
|
Serial.println("RF Receiver initialization failed!");
|
||||||
|
}
|
||||||
|
|
||||||
|
pinMode(32, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool state = false;
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]; // Buffer for incoming message
|
||||||
|
uint8_t buflen = sizeof(buf);
|
||||||
|
|
||||||
|
if (rf_driver.recv(buf, &buflen)) { // Check if a message is received
|
||||||
|
buf[buflen] = '\0'; // Null-terminate the string
|
||||||
|
Serial.print("Message received: ");
|
||||||
|
Serial.println((char*)buf); // Print the received message
|
||||||
|
state = !state;
|
||||||
|
digitalWrite(32, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
25
rf_tx/rf_tx.ino
Normal file
25
rf_tx/rf_tx.ino
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include <RH_ASK.h> // RadioHead library
|
||||||
|
#include <SPI.h> // Required for RadioHead, though not used directly
|
||||||
|
|
||||||
|
// Initialize the RF transmitter (default pin is 12, change if needed)
|
||||||
|
RH_ASK rf_driver(2000, 10, 10); // 2000 bps, DATA pin on 10
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
if (!rf_driver.init()) {
|
||||||
|
Serial.println("RF Transmitter initialization failed!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pinMode(3, INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
while(digitalRead(3))
|
||||||
|
delay(100);
|
||||||
|
const char *msg = "Hello, RFF World!"; // Message to send
|
||||||
|
rf_driver.send((uint8_t *)msg, strlen(msg)); // Send the message
|
||||||
|
rf_driver.waitPacketSent(); // Wait until the message is sent
|
||||||
|
Serial.println("Message sent: Hello, RFF World!");
|
||||||
|
delay(500); // Wait 1 second before sending again
|
||||||
|
}
|
||||||
53
trailer_cbox/HECB.h
Normal file
53
trailer_cbox/HECB.h
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#define RF_PORTD 17
|
||||||
|
#define LORA_RXD 18
|
||||||
|
#define LORA_TXD 19
|
||||||
|
|
||||||
|
#define BTN1 23
|
||||||
|
#define BTN2 25
|
||||||
|
#define BTN3 27
|
||||||
|
#define BTN4 29
|
||||||
|
#define BTN5 31
|
||||||
|
|
||||||
|
#define RELAY_4B 32
|
||||||
|
#define RELAY_4A 34
|
||||||
|
#define RELAY_3A 36
|
||||||
|
#define RELAY_3B 38
|
||||||
|
#define RELAY_2B 40
|
||||||
|
#define RELAY_2A 42
|
||||||
|
#define RELAY_1B 44
|
||||||
|
#define RELAY_1A 46
|
||||||
|
|
||||||
|
#define V_SENS A0
|
||||||
|
#define IN_1 A1
|
||||||
|
#define IN_2 A3
|
||||||
|
#define IN_3 A5
|
||||||
|
#define IN_4 A7
|
||||||
|
#define IN_5 A9
|
||||||
|
#define IN_6 A11
|
||||||
|
|
||||||
|
void setupHECB() {
|
||||||
|
pinMode(51, INPUT_PULLUP);
|
||||||
|
pinMode(53, INPUT_PULLUP);
|
||||||
|
|
||||||
|
pinMode(RELAY_1A, OUTPUT);
|
||||||
|
pinMode(RELAY_2A, OUTPUT);
|
||||||
|
pinMode(RELAY_3A, OUTPUT);
|
||||||
|
pinMode(RELAY_4A, OUTPUT);
|
||||||
|
pinMode(RELAY_1B, OUTPUT);
|
||||||
|
pinMode(RELAY_2B, OUTPUT);
|
||||||
|
pinMode(RELAY_3B, OUTPUT);
|
||||||
|
pinMode(RELAY_4B, OUTPUT);
|
||||||
|
|
||||||
|
pinMode(BTN1, INPUT_PULLUP);
|
||||||
|
pinMode(BTN2, INPUT_PULLUP);
|
||||||
|
pinMode(BTN3, INPUT_PULLUP);
|
||||||
|
pinMode(BTN4, INPUT_PULLUP);
|
||||||
|
pinMode(BTN5, INPUT_PULLUP);
|
||||||
|
|
||||||
|
pinMode(IN_1, INPUT_PULLUP);
|
||||||
|
pinMode(IN_2, INPUT_PULLUP);
|
||||||
|
pinMode(IN_3, INPUT_PULLUP);
|
||||||
|
pinMode(IN_4, INPUT_PULLUP);
|
||||||
|
pinMode(IN_5, INPUT_PULLUP);
|
||||||
|
pinMode(IN_6, INPUT_PULLUP);
|
||||||
|
}
|
||||||
337
trailer_cbox/trailer_cbox.ino
Normal file
337
trailer_cbox/trailer_cbox.ino
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
#include "HECB.h"
|
||||||
|
|
||||||
|
#include <RH_ASK.h> // RadioHead library
|
||||||
|
#include <SPI.h> // Required for RadioHead, though not used directly
|
||||||
|
RH_ASK rf_driver(4000, RF_PORTD, RF_PORTD); // 2000 bps, DATA pin on 17
|
||||||
|
|
||||||
|
/*** INPUTS ***/
|
||||||
|
#define SENS_F_O IN_1
|
||||||
|
#define SENS_F_C IN_2
|
||||||
|
#define SENS_R_O IN_3
|
||||||
|
#define SENS_R_C IN_4
|
||||||
|
|
||||||
|
const int8_t SENSORS[] = {SENS_F_O, SENS_F_C, SENS_R_O, SENS_R_C};
|
||||||
|
#define NUM_SENSORS 4
|
||||||
|
#define SENSOR_DEBOUNCE_DELAY 20
|
||||||
|
bool lastSensorStates[NUM_SENSORS] = {HIGH, HIGH, HIGH, HIGH};
|
||||||
|
bool currentSensorStates[NUM_SENSORS] = {HIGH, HIGH, HIGH, HIGH};
|
||||||
|
bool sensorFallingEdges[NUM_SENSORS] = {false, false, false, false};
|
||||||
|
uint32_t lastSensorDebounceTimes[NUM_SENSORS] = {0, 0, 0, 0};
|
||||||
|
|
||||||
|
void checkSensors() {
|
||||||
|
Serial.print(' ');
|
||||||
|
for (uint8_t i = 0; i < NUM_SENSORS; i++) {
|
||||||
|
bool reading = digitalRead(SENSORS[i]);
|
||||||
|
|
||||||
|
if (reading != lastSensorStates[i]) {
|
||||||
|
lastSensorDebounceTimes[i] = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((millis() - lastSensorDebounceTimes[i]) > SENSOR_DEBOUNCE_DELAY) {
|
||||||
|
if (reading != currentSensorStates[i]) {
|
||||||
|
currentSensorStates[i] = reading;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lastSensorStates[i] = reading;
|
||||||
|
Serial.print(currentSensorStates[i] ? '-':'T');
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.print(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
bool checkSensor(int8_t ch) {
|
||||||
|
return !currentSensorStates[ch-1];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//#define REPEAT_INTERVAL 100
|
||||||
|
#define NUM_BUTTONS 5
|
||||||
|
#define DEBOUNCE_DELAY 100
|
||||||
|
const uint8_t BUTTON_PINS[NUM_BUTTONS] = {BTN1, BTN2, BTN3, BTN4, BTN5};
|
||||||
|
bool lastButtonStates[NUM_BUTTONS] = {HIGH, HIGH, HIGH, HIGH, HIGH};
|
||||||
|
bool currentButtonStates[NUM_BUTTONS] = {HIGH, HIGH, HIGH, HIGH, HIGH};
|
||||||
|
bool buttonFallingEdges[NUM_BUTTONS] = {false, false, false, false, false};
|
||||||
|
uint32_t lastDebounceTimes[NUM_BUTTONS] = {0, 0, 0, 0, 0};
|
||||||
|
uint32_t lastRepeatTimes[NUM_BUTTONS] = {0, 0, 0, 0, 0};
|
||||||
|
|
||||||
|
void checkButtons() {
|
||||||
|
for (uint8_t i = 0; i < NUM_BUTTONS; i++) {
|
||||||
|
bool reading = digitalRead(BUTTON_PINS[i]);
|
||||||
|
|
||||||
|
if (reading != lastButtonStates[i]) {
|
||||||
|
lastDebounceTimes[i] = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((millis() - lastDebounceTimes[i]) > DEBOUNCE_DELAY) {
|
||||||
|
if (reading != currentButtonStates[i]) {
|
||||||
|
currentButtonStates[i] = reading;
|
||||||
|
|
||||||
|
if (currentButtonStates[i] == LOW) {
|
||||||
|
buttonFallingEdges[i] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lastButtonStates[i] = reading;
|
||||||
|
|
||||||
|
if (buttonFallingEdges[i]) {
|
||||||
|
buttonFallingEdges[i] = false;
|
||||||
|
lastRepeatTimes[i] = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*if (currentButtonStates[i] == LOW && (millis() - lastRepeatTimes[i]) >= REPEAT_INTERVAL) {
|
||||||
|
lastRepeatTimes[i] = millis();
|
||||||
|
onButtonPush(i);
|
||||||
|
}*/
|
||||||
|
Serial.print(currentButtonStates[i] ? '-':'T');
|
||||||
|
}
|
||||||
|
//Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** OUTPUTS ***/
|
||||||
|
#define CMD_OFF 0
|
||||||
|
#define CMD_F_O 1
|
||||||
|
#define CMD_F_C 2
|
||||||
|
#define CMD_R_O 3
|
||||||
|
#define CMD_R_C 4
|
||||||
|
|
||||||
|
int8_t lastcmd = 0;
|
||||||
|
int8_t currentcmd = 0;
|
||||||
|
uint32_t lastt = 0;
|
||||||
|
|
||||||
|
#define SWITCH_COOLDOWN 300
|
||||||
|
|
||||||
|
void setOutputsRaw(int8_t cmd) {
|
||||||
|
if (cmd == CMD_OFF) {
|
||||||
|
digitalWrite(RELAY_2A, LOW);
|
||||||
|
digitalWrite(RELAY_2B, LOW);
|
||||||
|
digitalWrite(RELAY_3A, LOW);
|
||||||
|
digitalWrite(RELAY_3B, LOW);
|
||||||
|
} else {
|
||||||
|
digitalWrite(RELAY_2A, (cmd == CMD_F_O || cmd == CMD_R_O) ? HIGH : LOW);
|
||||||
|
digitalWrite(RELAY_2B, (cmd == CMD_F_C || cmd == CMD_R_C) ? HIGH : LOW);
|
||||||
|
digitalWrite(RELAY_3A, (cmd == CMD_R_O || cmd == CMD_R_C) ? HIGH : LOW);
|
||||||
|
digitalWrite(RELAY_3B, (cmd == CMD_F_O || cmd == CMD_F_C) ? HIGH : LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setOutputs(int8_t cmd) {
|
||||||
|
|
||||||
|
// if requesting to shut off
|
||||||
|
if (cmd == CMD_OFF) {
|
||||||
|
// go ahead and turn off
|
||||||
|
currentcmd = CMD_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we're past cooldown
|
||||||
|
if ((millis() - lastt) > SWITCH_COOLDOWN) {
|
||||||
|
// accept new commands
|
||||||
|
currentcmd = cmd;
|
||||||
|
// if not past cooldown and trying a new command
|
||||||
|
} else if (cmd != currentcmd) {
|
||||||
|
// we shut down
|
||||||
|
currentcmd = CMD_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we're not off
|
||||||
|
if (currentcmd != CMD_OFF) {
|
||||||
|
// reset cooldown timer
|
||||||
|
lastt = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.print("CMD_");
|
||||||
|
Serial.print(currentcmd);
|
||||||
|
Serial.print(" ");
|
||||||
|
|
||||||
|
setOutputsRaw(currentcmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** FSM ***/
|
||||||
|
uint32_t timer;
|
||||||
|
int8_t channel;
|
||||||
|
int8_t state;
|
||||||
|
#define STATE_OFF 0
|
||||||
|
#define STATE_JOG 1
|
||||||
|
#define STATE_RUN 2
|
||||||
|
|
||||||
|
// handle state transitions
|
||||||
|
void changeState(int8_t newState, int8_t newChannel=0) {
|
||||||
|
switch(newState) {
|
||||||
|
case STATE_JOG:
|
||||||
|
timer = millis() + 200;
|
||||||
|
break;
|
||||||
|
case STATE_RUN:
|
||||||
|
if (state != newState || channel != newChannel)
|
||||||
|
timer = millis() + ((channel%2) ? 9000 : 16000);
|
||||||
|
break;
|
||||||
|
case STATE_OFF:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (state != newState || channel != newChannel) {
|
||||||
|
Serial.print("STATE: ");
|
||||||
|
Serial.print(newState);
|
||||||
|
Serial.print(":");
|
||||||
|
Serial.print(newChannel);
|
||||||
|
Serial.print(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
state = newState;
|
||||||
|
channel = newChannel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t btn_runt=0;
|
||||||
|
#define DEBOUNCE_BTN_RUN 350
|
||||||
|
|
||||||
|
void runFSM() {
|
||||||
|
// if any button is pressed, cancel any command, run the output manually.
|
||||||
|
bool overridden = false;
|
||||||
|
|
||||||
|
for (int8_t i=0; i<4; i++) {
|
||||||
|
if (currentButtonStates[i]) continue;
|
||||||
|
|
||||||
|
if (!digitalRead(53)) {
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
setOutputs(checkSensor(i+1) ? CMD_OFF:i+1);
|
||||||
|
} else if (!digitalRead(51)) {
|
||||||
|
|
||||||
|
// TODO: iron this
|
||||||
|
if (state == STATE_RUN) {
|
||||||
|
// if running and a different channel, just shut off
|
||||||
|
if (channel != i+1) {
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
// if running and the same channel, and we are past the time of the button being pressed
|
||||||
|
} else if (millis() > btn_runt) {
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
} else {
|
||||||
|
changeState(STATE_RUN, i+1);
|
||||||
|
btn_runt = millis() + DEBOUNCE_BTN_RUN;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
changeState(STATE_RUN, i+1);
|
||||||
|
btn_runt = millis() + DEBOUNCE_BTN_RUN;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
setOutputs(i+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
overridden = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (digitalRead(53) && digitalRead(51)) overridden = true;
|
||||||
|
|
||||||
|
if (!overridden) {
|
||||||
|
// check for automatic state transitions
|
||||||
|
switch(state) {
|
||||||
|
case STATE_JOG:
|
||||||
|
if (millis() > timer)
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
|
||||||
|
case STATE_RUN:
|
||||||
|
if (millis() > timer)
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
if (checkSensor(channel))
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// go to outputs
|
||||||
|
switch(state) {
|
||||||
|
case STATE_JOG:
|
||||||
|
setOutputs(channel);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STATE_RUN:
|
||||||
|
setOutputs(channel);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STATE_OFF:
|
||||||
|
setOutputs(CMD_OFF);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t rf_runt = 0;
|
||||||
|
#define DEBOUNCE_RF 500
|
||||||
|
|
||||||
|
void checkRFTransmissions() {
|
||||||
|
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]; // Buffer for incoming message
|
||||||
|
uint8_t buflen = sizeof(buf);
|
||||||
|
|
||||||
|
if (rf_driver.recv(buf, &buflen)) { // Check if a message is received
|
||||||
|
buf[buflen] = '\0';
|
||||||
|
Serial.print("COMMAND: ");
|
||||||
|
Serial.println((char*)buf);
|
||||||
|
// check if command is correct length
|
||||||
|
if (buflen != 7) return; // length
|
||||||
|
if (buf[0]!='h') return;
|
||||||
|
if (buf[1]!='e') return;
|
||||||
|
if (buf[2]!='c') return;
|
||||||
|
if (buf[3]!='b') return;
|
||||||
|
if ((buf[4]+buf[5]) != buf[6]) return; // checksum
|
||||||
|
if (buf[5] < 49 || buf[5] > 52) return; // valid channel
|
||||||
|
//if (buf[0] != 'J' && buf[0] != 'R') return; // valid command
|
||||||
|
|
||||||
|
if (buf[4] == 'J')
|
||||||
|
changeState(STATE_JOG, buf[5]-48);
|
||||||
|
if (buf[4] == 'R') {
|
||||||
|
// if running
|
||||||
|
if (state == STATE_RUN) {
|
||||||
|
// if running and a different channel, just shut off
|
||||||
|
if (channel != buf[5]-48){
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
// if running and the same channel, and we are past the time of the button being pressed
|
||||||
|
} else if (millis() > rf_runt) {
|
||||||
|
changeState(STATE_OFF);
|
||||||
|
} else {
|
||||||
|
changeState(STATE_RUN, buf[5]-48);
|
||||||
|
rf_runt = millis() + DEBOUNCE_RF;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
changeState(STATE_RUN, buf[5]-48);
|
||||||
|
rf_runt = millis() + DEBOUNCE_RF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println("Good Morning!");
|
||||||
|
|
||||||
|
if (!rf_driver.init()) {
|
||||||
|
Serial.println("RF Receiver initialization failed!");
|
||||||
|
}
|
||||||
|
|
||||||
|
setupHECB();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
checkButtons();
|
||||||
|
checkSensors();
|
||||||
|
checkRFTransmissions();
|
||||||
|
|
||||||
|
runFSM();
|
||||||
|
|
||||||
|
// check if both traps are closed
|
||||||
|
if(!checkSensor(CMD_F_C) || !checkSensor(CMD_R_C)) {
|
||||||
|
digitalWrite(RELAY_4A, HIGH);
|
||||||
|
} else {
|
||||||
|
digitalWrite(RELAY_4A, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Serial.println("loop");
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
//delay(5);
|
||||||
|
}
|
||||||
104
trailer_remote/trailer_remote.ino
Normal file
104
trailer_remote/trailer_remote.ino
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
#include <RH_ASK.h> // RadioHead library
|
||||||
|
#include <SPI.h> // Required for RadioHead, though not used directly
|
||||||
|
|
||||||
|
// Initialize the RF transmitter (default pin is 12, change if needed)
|
||||||
|
RH_ASK rf_driver(4000, 10, 10); // 2000 bps, DATA pin on 10
|
||||||
|
|
||||||
|
//#define REPEAT_INTERVAL 100
|
||||||
|
#define NUM_BUTTONS 5
|
||||||
|
#define DEBOUNCE_DELAY 100
|
||||||
|
const uint8_t BUTTON_PINS[NUM_BUTTONS] = {2, 3, 4, 5, 6};
|
||||||
|
bool lastButtonStates[NUM_BUTTONS] = {HIGH, HIGH, HIGH, HIGH, HIGH};
|
||||||
|
bool currentButtonStates[NUM_BUTTONS] = {HIGH, HIGH, HIGH, HIGH, HIGH};
|
||||||
|
bool buttonFallingEdges[NUM_BUTTONS] = {false, false, false, false, false};
|
||||||
|
uint32_t lastDebounceTimes[NUM_BUTTONS] = {0, 0, 0, 0, 0};
|
||||||
|
uint32_t lastRepeatTimes[NUM_BUTTONS] = {0, 0, 0, 0, 0};
|
||||||
|
|
||||||
|
void checkButtons() {
|
||||||
|
for (uint8_t i = 0; i < NUM_BUTTONS; i++) {
|
||||||
|
bool reading = digitalRead(BUTTON_PINS[i]);
|
||||||
|
|
||||||
|
if (reading != lastButtonStates[i]) {
|
||||||
|
lastDebounceTimes[i] = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((millis() - lastDebounceTimes[i]) > DEBOUNCE_DELAY) {
|
||||||
|
if (reading != currentButtonStates[i]) {
|
||||||
|
currentButtonStates[i] = reading;
|
||||||
|
|
||||||
|
if (currentButtonStates[i] == LOW) {
|
||||||
|
buttonFallingEdges[i] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lastButtonStates[i] = reading;
|
||||||
|
|
||||||
|
if (buttonFallingEdges[i]) {
|
||||||
|
buttonFallingEdges[i] = false;
|
||||||
|
lastRepeatTimes[i] = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*if (currentButtonStates[i] == LOW && (millis() - lastRepeatTimes[i]) >= REPEAT_INTERVAL) {
|
||||||
|
lastRepeatTimes[i] = millis();
|
||||||
|
onButtonPush(i);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendCommand(char cmd, int8_t ch) {
|
||||||
|
uint8_t msg[8];
|
||||||
|
msg[0] = 'h';
|
||||||
|
msg[1] = 'e';
|
||||||
|
msg[2] = 'c';
|
||||||
|
msg[3] = 'b';
|
||||||
|
msg[4] = cmd;
|
||||||
|
msg[5] = 48+ch;
|
||||||
|
msg[6] = msg[4]+msg[5];
|
||||||
|
msg[7] = '\0';
|
||||||
|
|
||||||
|
Serial.print("SEND: ");
|
||||||
|
Serial.print((char)msg[0]);
|
||||||
|
Serial.print((char)msg[1]);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
|
||||||
|
rf_driver.send((uint8_t *) msg, 7);
|
||||||
|
rf_driver.waitPacketSent();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
//Serial.begin(115200);
|
||||||
|
if (!rf_driver.init()) {
|
||||||
|
//Serial.println("RF Transmitter initialization failed!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pinMode(3, INPUT);
|
||||||
|
pinMode(4, INPUT);
|
||||||
|
pinMode(5, INPUT);
|
||||||
|
pinMode(6, INPUT);
|
||||||
|
pinMode(2, INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
checkButtons();
|
||||||
|
|
||||||
|
char cmd = currentButtonStates[0] ? 'J':'R';
|
||||||
|
|
||||||
|
//Serial.println(cmd);
|
||||||
|
|
||||||
|
if (!currentButtonStates[1])
|
||||||
|
sendCommand(cmd, 1);
|
||||||
|
if (!currentButtonStates[2])
|
||||||
|
sendCommand(cmd, 2);
|
||||||
|
if (!currentButtonStates[3])
|
||||||
|
sendCommand(cmd, 3);
|
||||||
|
if (!currentButtonStates[4])
|
||||||
|
sendCommand(cmd, 4);
|
||||||
|
|
||||||
|
|
||||||
|
//delay(20); // Wait 1 second before sending again
|
||||||
|
//Serial.println("loop");
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user