summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--cmake/hugo.cmake21
-rw-r--r--fw/app/src/update.c18
-rw-r--r--pcb/.gitignore1
-rw-r--r--pcb/ethernet.kicad_sch4
-rw-r--r--pcb/io.kicad_sch4
-rw-r--r--pcb/iot-contact.kicad_pcb85
-rw-r--r--pcb/iot-contact.kicad_pro224
-rw-r--r--pcb/iot-contact.kicad_sch578
-rw-r--r--pcb/power.kicad_sch4
-rw-r--r--pcb/processor.kicad_sch4
-rw-r--r--web/.gitignore2
-rw-r--r--web/CMakeLists.txt9
-rw-r--r--web/LICENSE.txt428
-rw-r--r--web/hugo.toml2
-rw-r--r--web/layouts/baseof.html11
-rw-r--r--web/layouts/home.html3
17 files changed, 1122 insertions, 277 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a21c5d0..90eac62 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,3 +6,4 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
add_subdirectory(fw)
add_subdirectory(pcb)
+add_subdirectory(web)
diff --git a/cmake/hugo.cmake b/cmake/hugo.cmake
new file mode 100644
index 0000000..e065f8b
--- /dev/null
+++ b/cmake/hugo.cmake
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at https://mozilla.org/MPL/2.0/.
+
+function(hugo_site target source sink)
+ add_custom_target(
+ "${target}"
+ ALL
+ DEPENDS
+ ${sink}
+ )
+
+ add_custom_command(
+ OUTPUT
+ ${sink}
+ COMMAND
+ hugo --source ${source} --destination ${sink}
+ DEPENDS
+ ${source}
+ )
+endfunction()
diff --git a/fw/app/src/update.c b/fw/app/src/update.c
index ff4ce6a..5e119eb 100644
--- a/fw/app/src/update.c
+++ b/fw/app/src/update.c
@@ -8,11 +8,14 @@
#include <stdint.h>
#include <zephyr/dfu/flash_img.h>
+#include <zephyr/dfu/mcuboot.h>
#include <zephyr/logging/log.h>
+#include <zephyr/logging/log_ctrl.h>
#include <zephyr/net/http/server.h>
#include <zephyr/net/http/service.h>
#include <zephyr/net/http/status.h>
#include <zephyr/storage/flash_map.h>
+#include <zephyr/sys/reboot.h>
LOG_MODULE_REGISTER(update);
@@ -74,8 +77,21 @@ static int update_handler(
LOG_ERR("Processed %zd octets but wrote %zd", processed, written);
return ret;
}
- LOG_INF("Handled update request receiving %zd octets.", processed);
+ LOG_DBG("Received %zd octets.", processed);
processed = 0;
+
+ const bool permanent = true;
+ ret = boot_request_upgrade((int)permanent);
+ if (ret < 0) {
+ LOG_ERR("Failed to mark uploaded image for update (%d)", ret);
+ return ret;
+ }
+
+ LOG_INF("New application firmware uploaded and marked for update");
+
+ LOG_INF("Rebooting to complete remote update");
+ log_flush();
+ sys_reboot(SYS_REBOOT_COLD);
}
return 0;
diff --git a/pcb/.gitignore b/pcb/.gitignore
index 8d6124a..dfd09f9 100644
--- a/pcb/.gitignore
+++ b/pcb/.gitignore
@@ -2,3 +2,4 @@
fp-info-cache
*.lck
*auto_saved_files*
+*-backups
diff --git a/pcb/ethernet.kicad_sch b/pcb/ethernet.kicad_sch
index 134a23e..748e1d9 100644
--- a/pcb/ethernet.kicad_sch
+++ b/pcb/ethernet.kicad_sch
@@ -1,7 +1,7 @@
(kicad_sch
- (version 20231120)
+ (version 20250114)
(generator "eeschema")
- (generator_version "8.0")
+ (generator_version "9.0")
(uuid "6035e8f9-9265-4827-a399-c86b4c4dba71")
(paper "A4")
(title_block
diff --git a/pcb/io.kicad_sch b/pcb/io.kicad_sch
index 97cff19..840c80c 100644
--- a/pcb/io.kicad_sch
+++ b/pcb/io.kicad_sch
@@ -1,7 +1,7 @@
(kicad_sch
- (version 20231120)
+ (version 20250114)
(generator "eeschema")
- (generator_version "8.0")
+ (generator_version "9.0")
(uuid "74bcab07-0059-4866-8d30-dd2933051a6c")
(paper "A4")
(title_block
diff --git a/pcb/iot-contact.kicad_pcb b/pcb/iot-contact.kicad_pcb
index ef218ba..f230f06 100644
--- a/pcb/iot-contact.kicad_pcb
+++ b/pcb/iot-contact.kicad_pcb
@@ -1,2 +1,83 @@
-(kicad_pcb (version 20240108) (generator "pcbnew") (generator_version "8.0")
-) \ No newline at end of file
+(kicad_pcb
+ (version 20241229)
+ (generator "pcbnew")
+ (generator_version "9.0")
+ (general
+ (thickness 1.6)
+ (legacy_teardrops no)
+ )
+ (paper "A4")
+ (layers
+ (0 "F.Cu" signal)
+ (2 "B.Cu" signal)
+ (9 "F.Adhes" user "F.Adhesive")
+ (11 "B.Adhes" user "B.Adhesive")
+ (13 "F.Paste" user)
+ (15 "B.Paste" user)
+ (5 "F.SilkS" user "F.Silkscreen")
+ (7 "B.SilkS" user "B.Silkscreen")
+ (1 "F.Mask" user)
+ (3 "B.Mask" user)
+ (17 "Dwgs.User" user "User.Drawings")
+ (19 "Cmts.User" user "User.Comments")
+ (21 "Eco1.User" user "User.Eco1")
+ (23 "Eco2.User" user "User.Eco2")
+ (25 "Edge.Cuts" user)
+ (27 "Margin" user)
+ (31 "F.CrtYd" user "F.Courtyard")
+ (29 "B.CrtYd" user "B.Courtyard")
+ (35 "F.Fab" user)
+ (33 "B.Fab" user)
+ (39 "User.1" user)
+ (41 "User.2" user)
+ (43 "User.3" user)
+ (45 "User.4" user)
+ )
+ (setup
+ (pad_to_mask_clearance 0)
+ (allow_soldermask_bridges_in_footprints no)
+ (tenting front back)
+ (pcbplotparams
+ (layerselection 0x00000000_00000000_55555555_5755f5ff)
+ (plot_on_all_layers_selection 0x00000000_00000000_00000000_00000000)
+ (disableapertmacros no)
+ (usegerberextensions no)
+ (usegerberattributes yes)
+ (usegerberadvancedattributes yes)
+ (creategerberjobfile yes)
+ (dashed_line_dash_ratio 12.000000)
+ (dashed_line_gap_ratio 3.000000)
+ (svgprecision 4)
+ (plotframeref no)
+ (mode 1)
+ (useauxorigin no)
+ (hpglpennumber 1)
+ (hpglpenspeed 20)
+ (hpglpendiameter 15.000000)
+ (pdf_front_fp_property_popups yes)
+ (pdf_back_fp_property_popups yes)
+ (pdf_metadata yes)
+ (pdf_single_document no)
+ (dxfpolygonmode yes)
+ (dxfimperialunits yes)
+ (dxfusepcbnewfont yes)
+ (psnegative no)
+ (psa4output no)
+ (plot_black_and_white yes)
+ (plotinvisibletext no)
+ (sketchpadsonfab no)
+ (plotpadnumbers no)
+ (hidednponfab no)
+ (sketchdnponfab yes)
+ (crossoutdnponfab yes)
+ (subtractmaskfromsilk no)
+ (outputformat 1)
+ (mirror no)
+ (drillshape 1)
+ (scaleselection 1)
+ (outputdirectory "")
+ )
+ )
+ (net 0 "")
+ (embedded_fonts no)
+)
diff --git a/pcb/iot-contact.kicad_pro b/pcb/iot-contact.kicad_pro
index cf89982..0d8d7a0 100644
--- a/pcb/iot-contact.kicad_pro
+++ b/pcb/iot-contact.kicad_pro
@@ -2,12 +2,212 @@
"board": {
"3dviewports": [],
"design_settings": {
- "defaults": {},
+ "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": true,
+ "text_position": 0,
+ "units_format": 0
+ },
+ "fab_line_width": 0.1,
+ "fab_text_italic": false,
+ "fab_text_size_h": 1.0,
+ "fab_text_size_v": 1.0,
+ "fab_text_thickness": 0.15,
+ "fab_text_upright": false,
+ "other_line_width": 0.1,
+ "other_text_italic": false,
+ "other_text_size_h": 1.0,
+ "other_text_size_v": 1.0,
+ "other_text_thickness": 0.15,
+ "other_text_upright": false,
+ "pads": {
+ "drill": 0.8,
+ "height": 1.27,
+ "width": 2.54
+ },
+ "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": [],
"drc_exclusions": [],
- "rules": {},
+ "meta": {
+ "version": 2
+ },
+ "rule_severities": {
+ "annular_width": "error",
+ "clearance": "error",
+ "connection_width": "warning",
+ "copper_edge_clearance": "error",
+ "copper_sliver": "warning",
+ "courtyards_overlap": "error",
+ "creepage": "error",
+ "diff_pair_gap_out_of_range": "error",
+ "diff_pair_uncoupled_length_too_long": "error",
+ "drill_out_of_range": "error",
+ "duplicate_footprints": "warning",
+ "extra_footprint": "warning",
+ "footprint": "error",
+ "footprint_filters_mismatch": "ignore",
+ "footprint_symbol_mismatch": "warning",
+ "footprint_type_mismatch": "ignore",
+ "hole_clearance": "error",
+ "hole_to_hole": "warning",
+ "holes_co_located": "warning",
+ "invalid_outline": "error",
+ "isolated_copper": "warning",
+ "item_on_disabled_layer": "error",
+ "items_not_allowed": "error",
+ "length_out_of_range": "error",
+ "lib_footprint_issues": "warning",
+ "lib_footprint_mismatch": "warning",
+ "malformed_courtyard": "error",
+ "microvia_drill_out_of_range": "error",
+ "mirrored_text_on_front_layer": "warning",
+ "missing_courtyard": "ignore",
+ "missing_footprint": "warning",
+ "net_conflict": "warning",
+ "nonmirrored_text_on_back_layer": "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_angle": "error",
+ "track_dangling": "warning",
+ "track_segment_length": "error",
+ "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_groove_width": 0.0,
+ "min_hole_clearance": 0.25,
+ "min_hole_to_hole": 0.25,
+ "min_microvia_diameter": 0.2,
+ "min_microvia_drill": 0.1,
+ "min_resolved_spokes": 2,
+ "min_silk_clearance": 0.0,
+ "min_text_height": 0.8,
+ "min_text_thickness": 0.08,
+ "min_through_hole_diameter": 0.3,
+ "min_track_width": 0.0,
+ "min_via_annular_width": 0.1,
+ "min_via_diameter": 0.5,
+ "solder_mask_to_copper_clearance": 0.0,
+ "use_height_for_length_calcs": true
+ },
+ "teardrop_options": [
+ {
+ "td_onpthpad": true,
+ "td_onroundshapesonly": false,
+ "td_onsmdpad": true,
+ "td_ontrackend": false,
+ "td_onvia": true
+ }
+ ],
+ "teardrop_parameters": [
+ {
+ "td_allow_use_two_tracks": true,
+ "td_curve_segcount": 0,
+ "td_height_ratio": 1.0,
+ "td_length_ratio": 0.5,
+ "td_maxheight": 2.0,
+ "td_maxlen": 1.0,
+ "td_on_pad_in_zone": false,
+ "td_target_name": "td_round_shape",
+ "td_width_to_size_filter_ratio": 0.9
+ },
+ {
+ "td_allow_use_two_tracks": true,
+ "td_curve_segcount": 0,
+ "td_height_ratio": 1.0,
+ "td_length_ratio": 0.5,
+ "td_maxheight": 2.0,
+ "td_maxlen": 1.0,
+ "td_on_pad_in_zone": false,
+ "td_target_name": "td_rect_shape",
+ "td_width_to_size_filter_ratio": 0.9
+ },
+ {
+ "td_allow_use_two_tracks": true,
+ "td_curve_segcount": 0,
+ "td_height_ratio": 1.0,
+ "td_length_ratio": 0.5,
+ "td_maxheight": 2.0,
+ "td_maxlen": 1.0,
+ "td_on_pad_in_zone": false,
+ "td_target_name": "td_track_end",
+ "td_width_to_size_filter_ratio": 0.9
+ }
+ ],
"track_widths": [],
- "via_dimensions": []
+ "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": [],
+ "zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
@@ -16,6 +216,7 @@
"mfg": "",
"mpn": ""
},
+ "layer_pairs": [],
"layer_presets": [],
"viewports": []
},
@@ -210,10 +411,15 @@
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
+ "footprint_filter": "ignore",
+ "footprint_link_issues": "warning",
+ "four_way_junction": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
+ "label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
+ "lib_symbol_mismatch": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
@@ -226,9 +432,14 @@
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
+ "same_local_global_label": "warning",
+ "similar_label_and_power": "warning",
"similar_labels": "warning",
+ "similar_power": "warning",
"simulation_model_issue": "ignore",
+ "single_global_label": "ignore",
"unannotated": "error",
+ "unconnected_wire_endpoint": "warning",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
@@ -240,7 +451,7 @@
},
"meta": {
"filename": "iot-contact.kicad_pro",
- "version": 1
+ "version": 3
},
"net_settings": {
"classes": [
@@ -255,6 +466,7 @@
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
+ "priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
@@ -263,7 +475,7 @@
}
],
"meta": {
- "version": 3
+ "version": 4
},
"net_colors": null,
"netclass_assignments": null,
@@ -363,6 +575,7 @@
],
"filter_string": "",
"group_symbols": false,
+ "include_excluded_from_bom": false,
"name": "",
"sort_asc": false,
"sort_field": "Reference"
@@ -397,6 +610,7 @@
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
+ "space_save_all_events": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
diff --git a/pcb/iot-contact.kicad_sch b/pcb/iot-contact.kicad_sch
index 515611f..77ac199 100644
--- a/pcb/iot-contact.kicad_sch
+++ b/pcb/iot-contact.kicad_sch
@@ -1,7 +1,7 @@
(kicad_sch
- (version 20231120)
+ (version 20250114)
(generator "eeschema")
- (generator_version "8.0")
+ (generator_version "9.0")
(uuid "5defd195-0277-4d04-9f5f-69e505c9845c")
(paper "A4")
(title_block
@@ -10,7 +10,9 @@
(lib_symbols
(symbol "Connector:Conn_01x02_Socket"
(pin_names
- (offset 1.016) hide)
+ (offset 1.016)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -84,10 +86,10 @@
)
)
(symbol "Conn_01x02_Socket_1_1"
- (arc
- (start 0 -2.032)
- (mid -0.5058 -2.54)
- (end 0 -3.048)
+ (polyline
+ (pts
+ (xy -1.27 0) (xy -0.508 0)
+ )
(stroke
(width 0.1524)
(type default)
@@ -108,10 +110,10 @@
(type none)
)
)
- (polyline
- (pts
- (xy -1.27 0) (xy -0.508 0)
- )
+ (arc
+ (start 0 -0.508)
+ (mid -0.5058 0)
+ (end 0 0.508)
(stroke
(width 0.1524)
(type default)
@@ -121,9 +123,9 @@
)
)
(arc
- (start 0 0.508)
- (mid -0.5058 0)
- (end 0 -0.508)
+ (start 0 -3.048)
+ (mid -0.5058 -2.54)
+ (end 0 -2.032)
(stroke
(width 0.1524)
(type default)
@@ -169,10 +171,13 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Connector:Conn_01x03_Socket"
(pin_names
- (offset 1.016) hide)
+ (offset 1.016)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -246,10 +251,10 @@
)
)
(symbol "Conn_01x03_Socket_1_1"
- (arc
- (start 0 -2.032)
- (mid -0.5058 -2.54)
- (end 0 -3.048)
+ (polyline
+ (pts
+ (xy -1.27 2.54) (xy -0.508 2.54)
+ )
(stroke
(width 0.1524)
(type default)
@@ -260,7 +265,7 @@
)
(polyline
(pts
- (xy -1.27 -2.54) (xy -0.508 -2.54)
+ (xy -1.27 0) (xy -0.508 0)
)
(stroke
(width 0.1524)
@@ -272,7 +277,7 @@
)
(polyline
(pts
- (xy -1.27 0) (xy -0.508 0)
+ (xy -1.27 -2.54) (xy -0.508 -2.54)
)
(stroke
(width 0.1524)
@@ -282,10 +287,10 @@
(type none)
)
)
- (polyline
- (pts
- (xy -1.27 2.54) (xy -0.508 2.54)
- )
+ (arc
+ (start 0 2.032)
+ (mid -0.5058 2.54)
+ (end 0 3.048)
(stroke
(width 0.1524)
(type default)
@@ -295,9 +300,9 @@
)
)
(arc
- (start 0 0.508)
+ (start 0 -0.508)
(mid -0.5058 0)
- (end 0 -0.508)
+ (end 0 0.508)
(stroke
(width 0.1524)
(type default)
@@ -307,9 +312,9 @@
)
)
(arc
- (start 0 3.048)
- (mid -0.5058 2.54)
- (end 0 2.032)
+ (start 0 -3.048)
+ (mid -0.5058 -2.54)
+ (end 0 -2.032)
(stroke
(width 0.1524)
(type default)
@@ -373,10 +378,13 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Connector:Conn_01x04_Socket"
(pin_names
- (offset 1.016) hide)
+ (offset 1.016)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -450,10 +458,10 @@
)
)
(symbol "Conn_01x04_Socket_1_1"
- (arc
- (start 0 -4.572)
- (mid -0.5058 -5.08)
- (end 0 -5.588)
+ (polyline
+ (pts
+ (xy -1.27 2.54) (xy -0.508 2.54)
+ )
(stroke
(width 0.1524)
(type default)
@@ -462,10 +470,10 @@
(type none)
)
)
- (arc
- (start 0 -2.032)
- (mid -0.5058 -2.54)
- (end 0 -3.048)
+ (polyline
+ (pts
+ (xy -1.27 0) (xy -0.508 0)
+ )
(stroke
(width 0.1524)
(type default)
@@ -476,7 +484,7 @@
)
(polyline
(pts
- (xy -1.27 -5.08) (xy -0.508 -5.08)
+ (xy -1.27 -2.54) (xy -0.508 -2.54)
)
(stroke
(width 0.1524)
@@ -488,7 +496,7 @@
)
(polyline
(pts
- (xy -1.27 -2.54) (xy -0.508 -2.54)
+ (xy -1.27 -5.08) (xy -0.508 -5.08)
)
(stroke
(width 0.1524)
@@ -498,10 +506,10 @@
(type none)
)
)
- (polyline
- (pts
- (xy -1.27 0) (xy -0.508 0)
- )
+ (arc
+ (start 0 2.032)
+ (mid -0.5058 2.54)
+ (end 0 3.048)
(stroke
(width 0.1524)
(type default)
@@ -510,10 +518,10 @@
(type none)
)
)
- (polyline
- (pts
- (xy -1.27 2.54) (xy -0.508 2.54)
- )
+ (arc
+ (start 0 -0.508)
+ (mid -0.5058 0)
+ (end 0 0.508)
(stroke
(width 0.1524)
(type default)
@@ -523,9 +531,9 @@
)
)
(arc
- (start 0 0.508)
- (mid -0.5058 0)
- (end 0 -0.508)
+ (start 0 -3.048)
+ (mid -0.5058 -2.54)
+ (end 0 -2.032)
(stroke
(width 0.1524)
(type default)
@@ -535,9 +543,9 @@
)
)
(arc
- (start 0 3.048)
- (mid -0.5058 2.54)
- (end 0 2.032)
+ (start 0 -5.588)
+ (mid -0.5058 -5.08)
+ (end 0 -4.572)
(stroke
(width 0.1524)
(type default)
@@ -619,6 +627,7 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Connector:Conn_ARM_JTAG_SWD_10"
(pin_names
@@ -714,8 +723,8 @@
)
)
(rectangle
- (start -0.254 -12.7)
- (end 0.254 -11.684)
+ (start -0.254 12.7)
+ (end 0.254 11.684)
(stroke
(width 0)
(type default)
@@ -725,8 +734,8 @@
)
)
(rectangle
- (start -0.254 12.7)
- (end 0.254 11.684)
+ (start -0.254 -12.7)
+ (end 0.254 -11.684)
(stroke
(width 0)
(type default)
@@ -747,8 +756,8 @@
)
)
(rectangle
- (start 10.16 -2.794)
- (end 9.144 -2.286)
+ (start 10.16 7.874)
+ (end 9.144 7.366)
(stroke
(width 0)
(type default)
@@ -769,8 +778,8 @@
)
)
(rectangle
- (start 10.16 7.874)
- (end 9.144 7.366)
+ (start 10.16 -2.794)
+ (end 9.144 -2.286)
(stroke
(width 0)
(type default)
@@ -792,17 +801,18 @@
(type none)
)
)
- (pin power_in line
- (at 0 15.24 270)
+ (pin no_connect line
+ (at -10.16 0 0)
(length 2.54)
- (name "VTref"
+ (hide yes)
+ (name "KEY"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "1"
+ (number "7"
(effects
(font
(size 1.27 1.27)
@@ -810,17 +820,17 @@
)
)
)
- (pin open_collector line
- (at 12.7 7.62 180)
+ (pin passive line
+ (at -2.54 -15.24 90)
(length 2.54)
- (name "~{RESET}"
+ (name "GNDDetect"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "10"
+ (number "9"
(effects
(font
(size 1.27 1.27)
@@ -828,17 +838,17 @@
)
)
)
- (pin bidirectional line
- (at 12.7 0 180)
+ (pin power_in line
+ (at 0 15.24 270)
(length 2.54)
- (name "SWDIO/TMS"
+ (name "VTref"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "2"
+ (number "1"
(effects
(font
(size 1.27 1.27)
@@ -864,17 +874,18 @@
)
)
)
- (pin output line
- (at 12.7 2.54 180)
+ (pin passive line
+ (at 0 -15.24 90)
(length 2.54)
- (name "SWCLK/TCK"
+ (hide yes)
+ (name "GND"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "4"
+ (number "5"
(effects
(font
(size 1.27 1.27)
@@ -882,17 +893,17 @@
)
)
)
- (pin passive line
- (at 0 -15.24 90)
- (length 2.54) hide
- (name "GND"
+ (pin open_collector line
+ (at 12.7 7.62 180)
+ (length 2.54)
+ (name "~{RESET}"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "5"
+ (number "10"
(effects
(font
(size 1.27 1.27)
@@ -900,17 +911,17 @@
)
)
)
- (pin input line
- (at 12.7 -2.54 180)
+ (pin output line
+ (at 12.7 2.54 180)
(length 2.54)
- (name "SWO/TDO"
+ (name "SWCLK/TCK"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "6"
+ (number "4"
(effects
(font
(size 1.27 1.27)
@@ -918,17 +929,17 @@
)
)
)
- (pin no_connect line
- (at -10.16 0 0)
- (length 2.54) hide
- (name "KEY"
+ (pin bidirectional line
+ (at 12.7 0 180)
+ (length 2.54)
+ (name "SWDIO/TMS"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "7"
+ (number "2"
(effects
(font
(size 1.27 1.27)
@@ -936,17 +947,17 @@
)
)
)
- (pin output line
- (at 12.7 -5.08 180)
+ (pin input line
+ (at 12.7 -2.54 180)
(length 2.54)
- (name "NC/TDI"
+ (name "SWO/TDO"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "8"
+ (number "6"
(effects
(font
(size 1.27 1.27)
@@ -954,17 +965,17 @@
)
)
)
- (pin passive line
- (at -2.54 -15.24 90)
+ (pin output line
+ (at 12.7 -5.08 180)
(length 2.54)
- (name "GNDDetect"
+ (name "NC/TDI"
(effects
(font
(size 1.27 1.27)
)
)
)
- (number "9"
+ (number "8"
(effects
(font
(size 1.27 1.27)
@@ -973,6 +984,7 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Connector:RJ45_LED_Shielded"
(pin_names
@@ -1047,7 +1059,7 @@
(symbol "RJ45_LED_Shielded_0_1"
(polyline
(pts
- (xy -7.62 -7.62) (xy -6.35 -7.62)
+ (xy -7.62 10.16) (xy -6.35 10.16)
)
(stroke
(width 0)
@@ -1059,7 +1071,7 @@
)
(polyline
(pts
- (xy -7.62 -5.08) (xy -6.35 -5.08)
+ (xy -7.62 7.62) (xy -6.35 7.62)
)
(stroke
(width 0)
@@ -1071,7 +1083,7 @@
)
(polyline
(pts
- (xy -7.62 7.62) (xy -6.35 7.62)
+ (xy -7.62 -5.08) (xy -6.35 -5.08)
)
(stroke
(width 0)
@@ -1083,7 +1095,7 @@
)
(polyline
(pts
- (xy -7.62 10.16) (xy -6.35 10.16)
+ (xy -7.62 -7.62) (xy -6.35 -7.62)
)
(stroke
(width 0)
@@ -1095,7 +1107,7 @@
)
(polyline
(pts
- (xy -6.858 -5.842) (xy -5.842 -5.842)
+ (xy -6.858 9.398) (xy -5.842 9.398)
)
(stroke
(width 0)
@@ -1107,7 +1119,7 @@
)
(polyline
(pts
- (xy -6.858 9.398) (xy -5.842 9.398)
+ (xy -6.858 -5.842) (xy -5.842 -5.842)
)
(stroke
(width 0)
@@ -1119,7 +1131,7 @@
)
(polyline
(pts
- (xy -6.35 -7.62) (xy -6.35 -6.858)
+ (xy -6.35 10.16) (xy -6.35 9.398)
)
(stroke
(width 0)
@@ -1131,7 +1143,7 @@
)
(polyline
(pts
- (xy -6.35 -5.08) (xy -6.35 -5.842)
+ (xy -6.35 9.398) (xy -6.858 8.382) (xy -5.842 8.382) (xy -6.35 9.398)
)
(stroke
(width 0)
@@ -1155,7 +1167,7 @@
)
(polyline
(pts
- (xy -6.35 10.16) (xy -6.35 9.398)
+ (xy -6.35 1.905) (xy -5.08 1.905) (xy -5.08 1.905)
)
(stroke
(width 0)
@@ -1167,7 +1179,7 @@
)
(polyline
(pts
- (xy -5.08 -6.223) (xy -5.207 -6.604)
+ (xy -6.35 0.635) (xy -5.08 0.635) (xy -5.08 0.635)
)
(stroke
(width 0)
@@ -1179,7 +1191,7 @@
)
(polyline
(pts
- (xy -5.08 -5.588) (xy -5.207 -5.969)
+ (xy -6.35 -0.635) (xy -5.08 -0.635) (xy -5.08 -0.635)
)
(stroke
(width 0)
@@ -1191,7 +1203,7 @@
)
(polyline
(pts
- (xy -5.08 4.445) (xy -6.35 4.445)
+ (xy -6.35 -1.905) (xy -5.08 -1.905) (xy -5.08 -1.905)
)
(stroke
(width 0)
@@ -1203,7 +1215,7 @@
)
(polyline
(pts
- (xy -5.08 5.715) (xy -6.35 5.715)
+ (xy -6.35 -3.175) (xy -5.08 -3.175) (xy -5.08 -3.175)
)
(stroke
(width 0)
@@ -1215,7 +1227,9 @@
)
(polyline
(pts
- (xy -5.08 9.017) (xy -5.207 8.636)
+ (xy -6.35 -4.445) (xy -6.35 6.985) (xy 3.81 6.985) (xy 3.81 4.445) (xy 5.08 4.445) (xy 5.08 3.175)
+ (xy 6.35 3.175) (xy 6.35 -0.635) (xy 5.08 -0.635) (xy 5.08 -1.905) (xy 3.81 -1.905) (xy 3.81 -4.445)
+ (xy -6.35 -4.445) (xy -6.35 -4.445)
)
(stroke
(width 0)
@@ -1227,7 +1241,7 @@
)
(polyline
(pts
- (xy -5.08 9.652) (xy -5.207 9.271)
+ (xy -6.35 -5.08) (xy -6.35 -5.842)
)
(stroke
(width 0)
@@ -1239,7 +1253,7 @@
)
(polyline
(pts
- (xy -6.35 -3.175) (xy -5.08 -3.175) (xy -5.08 -3.175)
+ (xy -6.35 -5.842) (xy -6.858 -6.858) (xy -5.842 -6.858) (xy -6.35 -5.842)
)
(stroke
(width 0)
@@ -1251,7 +1265,7 @@
)
(polyline
(pts
- (xy -6.35 -1.905) (xy -5.08 -1.905) (xy -5.08 -1.905)
+ (xy -6.35 -7.62) (xy -6.35 -6.858)
)
(stroke
(width 0)
@@ -1263,7 +1277,7 @@
)
(polyline
(pts
- (xy -6.35 -0.635) (xy -5.08 -0.635) (xy -5.08 -0.635)
+ (xy -5.588 9.144) (xy -5.08 9.652) (xy -5.461 9.525)
)
(stroke
(width 0)
@@ -1275,7 +1289,7 @@
)
(polyline
(pts
- (xy -6.35 0.635) (xy -5.08 0.635) (xy -5.08 0.635)
+ (xy -5.588 8.509) (xy -5.08 9.017) (xy -5.461 8.89)
)
(stroke
(width 0)
@@ -1287,7 +1301,7 @@
)
(polyline
(pts
- (xy -6.35 1.905) (xy -5.08 1.905) (xy -5.08 1.905)
+ (xy -5.588 -6.096) (xy -5.08 -5.588) (xy -5.461 -5.715)
)
(stroke
(width 0)
@@ -1311,7 +1325,7 @@
)
(polyline
(pts
- (xy -5.588 -6.096) (xy -5.08 -5.588) (xy -5.461 -5.715)
+ (xy -5.08 9.652) (xy -5.207 9.271)
)
(stroke
(width 0)
@@ -1323,7 +1337,7 @@
)
(polyline
(pts
- (xy -5.588 8.509) (xy -5.08 9.017) (xy -5.461 8.89)
+ (xy -5.08 9.017) (xy -5.207 8.636)
)
(stroke
(width 0)
@@ -1335,7 +1349,7 @@
)
(polyline
(pts
- (xy -5.588 9.144) (xy -5.08 9.652) (xy -5.461 9.525)
+ (xy -5.08 5.715) (xy -6.35 5.715)
)
(stroke
(width 0)
@@ -1347,7 +1361,7 @@
)
(polyline
(pts
- (xy -5.08 3.175) (xy -6.35 3.175) (xy -6.35 3.175)
+ (xy -5.08 4.445) (xy -6.35 4.445)
)
(stroke
(width 0)
@@ -1359,7 +1373,7 @@
)
(polyline
(pts
- (xy -6.35 -5.842) (xy -6.858 -6.858) (xy -5.842 -6.858) (xy -6.35 -5.842)
+ (xy -5.08 3.175) (xy -6.35 3.175) (xy -6.35 3.175)
)
(stroke
(width 0)
@@ -1371,7 +1385,7 @@
)
(polyline
(pts
- (xy -6.35 9.398) (xy -6.858 8.382) (xy -5.842 8.382) (xy -6.35 9.398)
+ (xy -5.08 -5.588) (xy -5.207 -5.969)
)
(stroke
(width 0)
@@ -1383,9 +1397,7 @@
)
(polyline
(pts
- (xy -6.35 -4.445) (xy -6.35 6.985) (xy 3.81 6.985) (xy 3.81 4.445) (xy 5.08 4.445) (xy 5.08 3.175)
- (xy 6.35 3.175) (xy 6.35 -0.635) (xy 5.08 -0.635) (xy 5.08 -1.905) (xy 3.81 -1.905) (xy 3.81 -4.445)
- (xy -6.35 -4.445) (xy -6.35 -4.445)
+ (xy -5.08 -6.223) (xy -5.207 -6.604)
)
(stroke
(width 0)
@@ -1409,7 +1421,7 @@
)
(symbol "RJ45_LED_Shielded_1_1"
(pin passive line
- (at 10.16 -7.62 180)
+ (at -10.16 10.16 0)
(length 2.54)
(name "~"
(effects
@@ -1418,7 +1430,7 @@
)
)
)
- (number "1"
+ (number "9"
(effects
(font
(size 1.27 1.27)
@@ -1481,7 +1493,7 @@
)
)
(pin passive line
- (at 10.16 -5.08 180)
+ (at 0 -12.7 90)
(length 2.54)
(name "~"
(effects
@@ -1490,7 +1502,7 @@
)
)
)
- (number "2"
+ (number "SH"
(effects
(font
(size 1.27 1.27)
@@ -1499,7 +1511,7 @@
)
)
(pin passive line
- (at 10.16 -2.54 180)
+ (at 10.16 10.16 180)
(length 2.54)
(name "~"
(effects
@@ -1508,7 +1520,7 @@
)
)
)
- (number "3"
+ (number "8"
(effects
(font
(size 1.27 1.27)
@@ -1517,7 +1529,7 @@
)
)
(pin passive line
- (at 10.16 0 180)
+ (at 10.16 7.62 180)
(length 2.54)
(name "~"
(effects
@@ -1526,7 +1538,7 @@
)
)
)
- (number "4"
+ (number "7"
(effects
(font
(size 1.27 1.27)
@@ -1535,7 +1547,7 @@
)
)
(pin passive line
- (at 10.16 2.54 180)
+ (at 10.16 5.08 180)
(length 2.54)
(name "~"
(effects
@@ -1544,7 +1556,7 @@
)
)
)
- (number "5"
+ (number "6"
(effects
(font
(size 1.27 1.27)
@@ -1553,7 +1565,7 @@
)
)
(pin passive line
- (at 10.16 5.08 180)
+ (at 10.16 2.54 180)
(length 2.54)
(name "~"
(effects
@@ -1562,7 +1574,7 @@
)
)
)
- (number "6"
+ (number "5"
(effects
(font
(size 1.27 1.27)
@@ -1571,7 +1583,7 @@
)
)
(pin passive line
- (at 10.16 7.62 180)
+ (at 10.16 0 180)
(length 2.54)
(name "~"
(effects
@@ -1580,7 +1592,7 @@
)
)
)
- (number "7"
+ (number "4"
(effects
(font
(size 1.27 1.27)
@@ -1589,7 +1601,7 @@
)
)
(pin passive line
- (at 10.16 10.16 180)
+ (at 10.16 -2.54 180)
(length 2.54)
(name "~"
(effects
@@ -1598,7 +1610,7 @@
)
)
)
- (number "8"
+ (number "3"
(effects
(font
(size 1.27 1.27)
@@ -1607,7 +1619,7 @@
)
)
(pin passive line
- (at -10.16 10.16 0)
+ (at 10.16 -5.08 180)
(length 2.54)
(name "~"
(effects
@@ -1616,7 +1628,7 @@
)
)
)
- (number "9"
+ (number "2"
(effects
(font
(size 1.27 1.27)
@@ -1625,7 +1637,7 @@
)
)
(pin passive line
- (at 0 -12.7 90)
+ (at 10.16 -7.62 180)
(length 2.54)
(name "~"
(effects
@@ -1634,7 +1646,7 @@
)
)
)
- (number "SH"
+ (number "1"
(effects
(font
(size 1.27 1.27)
@@ -1643,10 +1655,13 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Connector_Generic:Conn_01x02"
(pin_names
- (offset 1.016) hide)
+ (offset 1.016)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -1713,14 +1728,14 @@
)
(symbol "Conn_01x02_1_1"
(rectangle
- (start -1.27 -2.413)
- (end 0 -2.667)
+ (start -1.27 1.27)
+ (end 1.27 -3.81)
(stroke
- (width 0.1524)
+ (width 0.254)
(type default)
)
(fill
- (type none)
+ (type background)
)
)
(rectangle
@@ -1735,14 +1750,14 @@
)
)
(rectangle
- (start -1.27 1.27)
- (end 1.27 -3.81)
+ (start -1.27 -2.413)
+ (end 0 -2.667)
(stroke
- (width 0.254)
+ (width 0.1524)
(type default)
)
(fill
- (type background)
+ (type none)
)
)
(pin passive line
@@ -1782,10 +1797,13 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Connector_Generic:Conn_01x04"
(pin_names
- (offset 1.016) hide)
+ (offset 1.016)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -1852,19 +1870,19 @@
)
(symbol "Conn_01x04_1_1"
(rectangle
- (start -1.27 -4.953)
- (end 0 -5.207)
+ (start -1.27 3.81)
+ (end 1.27 -6.35)
(stroke
- (width 0.1524)
+ (width 0.254)
(type default)
)
(fill
- (type none)
+ (type background)
)
)
(rectangle
- (start -1.27 -2.413)
- (end 0 -2.667)
+ (start -1.27 2.667)
+ (end 0 2.413)
(stroke
(width 0.1524)
(type default)
@@ -1885,8 +1903,8 @@
)
)
(rectangle
- (start -1.27 2.667)
- (end 0 2.413)
+ (start -1.27 -2.413)
+ (end 0 -2.667)
(stroke
(width 0.1524)
(type default)
@@ -1896,14 +1914,14 @@
)
)
(rectangle
- (start -1.27 3.81)
- (end 1.27 -6.35)
+ (start -1.27 -4.953)
+ (end 0 -5.207)
(stroke
- (width 0.254)
+ (width 0.1524)
(type default)
)
(fill
- (type background)
+ (type none)
)
)
(pin passive line
@@ -1979,11 +1997,16 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Device:LED"
- (pin_numbers hide)
+ (pin_numbers
+ (hide yes)
+ )
(pin_names
- (offset 1.016) hide)
+ (offset 1.016)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -2051,10 +2074,10 @@
(symbol "LED_0_1"
(polyline
(pts
- (xy -1.27 -1.27) (xy -1.27 1.27)
+ (xy -3.048 -0.762) (xy -4.572 -2.286) (xy -3.81 -2.286) (xy -4.572 -2.286) (xy -4.572 -1.524)
)
(stroke
- (width 0.254)
+ (width 0)
(type default)
)
(fill
@@ -2063,7 +2086,7 @@
)
(polyline
(pts
- (xy -1.27 0) (xy 1.27 0)
+ (xy -1.778 -0.762) (xy -3.302 -2.286) (xy -2.54 -2.286) (xy -3.302 -2.286) (xy -3.302 -1.524)
)
(stroke
(width 0)
@@ -2075,10 +2098,10 @@
)
(polyline
(pts
- (xy 1.27 -1.27) (xy 1.27 1.27) (xy -1.27 0) (xy 1.27 -1.27)
+ (xy -1.27 0) (xy 1.27 0)
)
(stroke
- (width 0.254)
+ (width 0)
(type default)
)
(fill
@@ -2087,10 +2110,10 @@
)
(polyline
(pts
- (xy -3.048 -0.762) (xy -4.572 -2.286) (xy -3.81 -2.286) (xy -4.572 -2.286) (xy -4.572 -1.524)
+ (xy -1.27 -1.27) (xy -1.27 1.27)
)
(stroke
- (width 0)
+ (width 0.254)
(type default)
)
(fill
@@ -2099,10 +2122,10 @@
)
(polyline
(pts
- (xy -1.778 -0.762) (xy -3.302 -2.286) (xy -2.54 -2.286) (xy -3.302 -2.286) (xy -3.302 -1.524)
+ (xy 1.27 -1.27) (xy 1.27 1.27) (xy -1.27 0) (xy 1.27 -1.27)
)
(stroke
- (width 0)
+ (width 0.254)
(type default)
)
(fill
@@ -2148,11 +2171,16 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "Switch:SW_Push"
- (pin_numbers hide)
+ (pin_numbers
+ (hide yes)
+ )
(pin_names
- (offset 1.016) hide)
+ (offset 1.016)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -2233,10 +2261,9 @@
(type none)
)
)
- (polyline
- (pts
- (xy 2.54 1.27) (xy -2.54 1.27)
- )
+ (circle
+ (center 2.032 0)
+ (radius 0.508)
(stroke
(width 0)
(type default)
@@ -2245,9 +2272,10 @@
(type none)
)
)
- (circle
- (center 2.032 0)
- (radius 0.508)
+ (polyline
+ (pts
+ (xy 2.54 1.27) (xy -2.54 1.27)
+ )
(stroke
(width 0)
(type default)
@@ -2293,12 +2321,17 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "power:+3V3"
(power)
- (pin_numbers hide)
+ (pin_numbers
+ (hide yes)
+ )
(pin_names
- (offset 0) hide)
+ (offset 0)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -2370,7 +2403,7 @@
)
(polyline
(pts
- (xy 0 0) (xy 0 2.54)
+ (xy 0 2.54) (xy 0.762 1.27)
)
(stroke
(width 0)
@@ -2382,7 +2415,7 @@
)
(polyline
(pts
- (xy 0 2.54) (xy 0.762 1.27)
+ (xy 0 0) (xy 0 2.54)
)
(stroke
(width 0)
@@ -2413,12 +2446,17 @@
)
)
)
+ (embedded_fonts no)
)
(symbol "power:GND"
(power)
- (pin_numbers hide)
+ (pin_numbers
+ (hide yes)
+ )
(pin_names
- (offset 0) hide)
+ (offset 0)
+ (hide yes)
+ )
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
@@ -2509,7 +2547,28 @@
)
)
)
+ (embedded_fonts no)
+ )
+ )
+ (text "NEVER use together with PoE!"
+ (exclude_from_sim no)
+ (at 104.394 180.594 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
+ )
+ (uuid "56f4af8c-1572-4497-98f2-10a81ab55e1d")
+ )
+ (text "TODO: RMII connection"
+ (exclude_from_sim no)
+ (at 109.474 82.55 0)
+ (effects
+ (font
+ (size 1.27 1.27)
+ )
)
+ (uuid "c3f58124-5291-4425-bdfa-bb0107db73cc")
)
(junction
(at 181.61 135.89)
@@ -3289,26 +3348,6 @@
)
(uuid "fc01db24-5887-4a05-9623-ad9b7e580703")
)
- (text "NEVER use together with PoE!"
- (exclude_from_sim no)
- (at 104.394 180.594 0)
- (effects
- (font
- (size 1.27 1.27)
- )
- )
- (uuid "56f4af8c-1572-4497-98f2-10a81ab55e1d")
- )
- (text "TODO: RMII connection"
- (exclude_from_sim no)
- (at 109.474 82.55 0)
- (effects
- (font
- (size 1.27 1.27)
- )
- )
- (uuid "c3f58124-5291-4425-bdfa-bb0107db73cc")
- )
(symbol
(lib_id "power:GND")
(at 33.02 93.98 180)
@@ -4909,6 +4948,10 @@
(sheet
(at 66.04 63.5)
(size 25.4 50.8)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
@@ -4938,123 +4981,123 @@
)
(pin "RJ45_1" bidirectional
(at 66.04 97.79 180)
+ (uuid "fde73cdf-cb6c-4041-9383-ae4b5ad39742")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "fde73cdf-cb6c-4041-9383-ae4b5ad39742")
)
(pin "RJ45_2" bidirectional
(at 66.04 95.25 180)
+ (uuid "fedacfd4-d29d-41f2-b7a0-8954f0cf40c4")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "fedacfd4-d29d-41f2-b7a0-8954f0cf40c4")
)
(pin "RJ45_3" bidirectional
(at 66.04 92.71 180)
+ (uuid "8169ece7-df7e-4254-9131-f46b83c7c969")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "8169ece7-df7e-4254-9131-f46b83c7c969")
)
(pin "RJ45_4" bidirectional
(at 66.04 90.17 180)
+ (uuid "bfb004f4-ad51-4277-a6a4-551076bb027f")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "bfb004f4-ad51-4277-a6a4-551076bb027f")
)
(pin "RJ45_5" bidirectional
(at 66.04 87.63 180)
+ (uuid "179895de-a3b7-45cc-9e40-2b2198fb99c6")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "179895de-a3b7-45cc-9e40-2b2198fb99c6")
)
(pin "RJ45_6" bidirectional
(at 66.04 85.09 180)
+ (uuid "75473479-9807-4027-bc88-5c7d98a91575")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "75473479-9807-4027-bc88-5c7d98a91575")
)
(pin "RJ45_7" bidirectional
(at 66.04 82.55 180)
+ (uuid "1b9e55cc-ef2f-4eb6-8d63-06ef276ff7fd")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "1b9e55cc-ef2f-4eb6-8d63-06ef276ff7fd")
)
(pin "RJ45_8" bidirectional
(at 66.04 80.01 180)
+ (uuid "3c1a9b67-3f69-44dc-936d-70585e9b7b3d")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "3c1a9b67-3f69-44dc-936d-70585e9b7b3d")
)
(pin "RJ45_LED1" output
(at 66.04 69.85 180)
+ (uuid "a663f5a3-793e-464c-8d7c-7d50087c5cba")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "a663f5a3-793e-464c-8d7c-7d50087c5cba")
)
(pin "RJ45_LED2" output
(at 66.04 106.68 180)
+ (uuid "077dbbca-8cb5-454f-b4ba-208a8720678f")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "077dbbca-8cb5-454f-b4ba-208a8720678f")
)
(pin "POE_GND" output
(at 91.44 97.79 0)
+ (uuid "6c770162-6936-4729-b598-10f0375ecc24")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "6c770162-6936-4729-b598-10f0375ecc24")
)
(pin "POE_VIN" output
(at 91.44 95.25 0)
+ (uuid "1863d617-dc5e-4005-9116-05e2cde6d04b")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "1863d617-dc5e-4005-9116-05e2cde6d04b")
)
(instances
(project "iot-contact"
@@ -5067,6 +5110,10 @@
(sheet
(at 204.47 63.5)
(size 36.83 50.8)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
@@ -5096,123 +5143,123 @@
)
(pin "AC_EARTH" bidirectional
(at 241.3 86.36 0)
+ (uuid "d38d9ad1-0808-4eb3-8f04-f5d375279cad")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "d38d9ad1-0808-4eb3-8f04-f5d375279cad")
)
(pin "AC_NEUTRAL" bidirectional
(at 241.3 88.9 0)
+ (uuid "9f1bb5d9-5f27-4b27-8b9b-3c5279d0e3fd")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "9f1bb5d9-5f27-4b27-8b9b-3c5279d0e3fd")
)
(pin "AC_PHASE" bidirectional
(at 241.3 91.44 0)
+ (uuid "b45797bb-cca3-49c0-86c4-955a6b44d60c")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "b45797bb-cca3-49c0-86c4-955a6b44d60c")
)
(pin "MOT_EARTH" bidirectional
(at 241.3 97.79 0)
+ (uuid "a3defca1-3eed-4b57-ab0a-f16f59fee2c7")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "a3defca1-3eed-4b57-ab0a-f16f59fee2c7")
)
(pin "MOT_NEUTRAL" bidirectional
(at 241.3 100.33 0)
+ (uuid "3b66624d-b956-4a77-a1d2-be8580699a49")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "3b66624d-b956-4a77-a1d2-be8580699a49")
)
(pin "MOT_PHASE_1" bidirectional
(at 241.3 102.87 0)
+ (uuid "ead288da-2d52-42f6-b402-c382468e36d4")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "ead288da-2d52-42f6-b402-c382468e36d4")
)
(pin "MOT_PHASE_2" bidirectional
(at 241.3 105.41 0)
+ (uuid "e9687363-d732-4f1b-99ef-f6609013c187")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "e9687363-d732-4f1b-99ef-f6609013c187")
)
(pin "CONTACT_1" bidirectional
(at 241.3 74.93 0)
+ (uuid "45229719-3224-4355-bc91-87ebcb939c01")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "45229719-3224-4355-bc91-87ebcb939c01")
)
(pin "CONTACT_2" bidirectional
(at 241.3 77.47 0)
+ (uuid "b1fc0b36-ff3b-4224-9ca0-41809406e0d1")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "b1fc0b36-ff3b-4224-9ca0-41809406e0d1")
)
(pin "MOT_DIRECTION" input
(at 204.47 91.44 180)
+ (uuid "15ffa5d7-34f8-4089-a077-6b5e4f1b4982")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "15ffa5d7-34f8-4089-a077-6b5e4f1b4982")
)
(pin "MOT_ENABLE" input
(at 204.47 93.98 180)
+ (uuid "daa54214-4d28-4f41-9236-5a0bc4536da1")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "daa54214-4d28-4f41-9236-5a0bc4536da1")
)
(pin "CONTACT_CLOSED" output
(at 204.47 86.36 180)
+ (uuid "39bd54a3-668a-4023-9361-9308d5cb85cc")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "39bd54a3-668a-4023-9361-9308d5cb85cc")
)
(instances
(project "iot-contact"
@@ -5225,6 +5272,10 @@
(sheet
(at 127 63.5)
(size 50.8 50.8)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
@@ -5255,153 +5306,153 @@
)
(pin "JTAG_TDI" input
(at 135.89 63.5 90)
+ (uuid "b2396e60-dbe8-4bb8-a732-db86b6030721")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "b2396e60-dbe8-4bb8-a732-db86b6030721")
)
(pin "JTAG_TDO" output
(at 138.43 63.5 90)
+ (uuid "10971b42-61b0-46e8-a8d2-50c70ff33820")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "10971b42-61b0-46e8-a8d2-50c70ff33820")
)
(pin "~{JTAG_RESET}" input
(at 146.05 63.5 90)
+ (uuid "f2ff1c71-789c-460a-9357-101a7df15ffe")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "f2ff1c71-789c-460a-9357-101a7df15ffe")
)
(pin "JTAG_TMS" bidirectional
(at 140.97 63.5 90)
+ (uuid "0c7de78a-5236-4739-9d97-7135d8778045")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "0c7de78a-5236-4739-9d97-7135d8778045")
)
(pin "JTAG_TCK" input
(at 143.51 63.5 90)
+ (uuid "1bd1ac5e-60ff-4db1-8c4d-634521954100")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "1bd1ac5e-60ff-4db1-8c4d-634521954100")
)
(pin "UART_RX" input
(at 172.72 63.5 90)
+ (uuid "a4296579-b54e-479e-9ca7-f61c994fc53a")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "a4296579-b54e-479e-9ca7-f61c994fc53a")
)
(pin "UART_TX" output
(at 175.26 63.5 90)
+ (uuid "c4406d4d-c8ac-4dfa-b701-ea9c99dac27b")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "c4406d4d-c8ac-4dfa-b701-ea9c99dac27b")
)
(pin "LED_UPD" output
(at 171.45 114.3 270)
+ (uuid "d4f16e72-c2ba-411d-aeb2-672f498bc06d")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "d4f16e72-c2ba-411d-aeb2-672f498bc06d")
)
(pin "LED_PWR" output
(at 168.91 114.3 270)
+ (uuid "4b272af4-808a-41c6-b8de-ef87565f95a9")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "4b272af4-808a-41c6-b8de-ef87565f95a9")
)
(pin "BTN_REBOOT" input
(at 156.21 114.3 270)
+ (uuid "25cdef05-d216-4465-af84-0c3bcab2af5a")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "25cdef05-d216-4465-af84-0c3bcab2af5a")
)
(pin "BTN_WIPE" input
(at 158.75 114.3 270)
+ (uuid "6ad16868-63a8-44e1-a096-87e22852f914")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "6ad16868-63a8-44e1-a096-87e22852f914")
)
(pin "LED_ACT" output
(at 173.99 114.3 270)
+ (uuid "c6d0305a-4e79-4cb1-88dd-2bc3b4bd5355")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "c6d0305a-4e79-4cb1-88dd-2bc3b4bd5355")
)
(pin "MOT_DIRECTION" output
(at 177.8 91.44 0)
+ (uuid "affdade0-6f44-4240-9c70-a84b33bf335f")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "affdade0-6f44-4240-9c70-a84b33bf335f")
)
(pin "MOT_ENABLE" output
(at 177.8 93.98 0)
+ (uuid "143fef23-890f-4f48-b3dc-5b7880c63bab")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "143fef23-890f-4f48-b3dc-5b7880c63bab")
)
(pin "CONTACT_CLOSED" input
(at 177.8 86.36 0)
+ (uuid "9fee2b8c-c130-4ca4-96b7-3bd8f8bfc2ec")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
- (uuid "9fee2b8c-c130-4ca4-96b7-3bd8f8bfc2ec")
)
(instances
(project "iot-contact"
@@ -5414,6 +5465,10 @@
(sheet
(at 134.62 160.02)
(size 25.4 25.4)
+ (exclude_from_sim no)
+ (in_bom yes)
+ (on_board yes)
+ (dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
@@ -5443,43 +5498,43 @@
)
(pin "EXT_5V" input
(at 134.62 180.34 180)
+ (uuid "11dd0a29-5492-4d6f-9acc-6ab015287d8c")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "11dd0a29-5492-4d6f-9acc-6ab015287d8c")
)
(pin "EXT_GND" input
(at 134.62 177.8 180)
+ (uuid "9a44079c-d24e-41f2-8229-98b9bddeee4a")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "9a44079c-d24e-41f2-8229-98b9bddeee4a")
)
(pin "POE_VIN" input
(at 134.62 165.1 180)
+ (uuid "d4171910-9a3e-4a25-9fbf-66e6c04f97f4")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "d4171910-9a3e-4a25-9fbf-66e6c04f97f4")
)
(pin "POE_GND" input
(at 134.62 167.64 180)
+ (uuid "f26f9d44-739a-4944-be9c-d5a789e50e87")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
- (uuid "f26f9d44-739a-4944-be9c-d5a789e50e87")
)
(instances
(project "iot-contact"
@@ -5494,4 +5549,5 @@
(page "1")
)
)
+ (embedded_fonts no)
)
diff --git a/pcb/power.kicad_sch b/pcb/power.kicad_sch
index 41176ec..3470e2e 100644
--- a/pcb/power.kicad_sch
+++ b/pcb/power.kicad_sch
@@ -1,7 +1,7 @@
(kicad_sch
- (version 20231120)
+ (version 20250114)
(generator "eeschema")
- (generator_version "8.0")
+ (generator_version "9.0")
(uuid "04efbab4-4b09-41dd-b889-e48452d150e7")
(paper "A4")
(title_block
diff --git a/pcb/processor.kicad_sch b/pcb/processor.kicad_sch
index 62e3da7..41b29b9 100644
--- a/pcb/processor.kicad_sch
+++ b/pcb/processor.kicad_sch
@@ -1,7 +1,7 @@
(kicad_sch
- (version 20231120)
+ (version 20250114)
(generator "eeschema")
- (generator_version "8.0")
+ (generator_version "9.0")
(uuid "393d1ad1-4f47-4813-80db-2ff0bccd8599")
(paper "A4")
(title_block
diff --git a/web/.gitignore b/web/.gitignore
new file mode 100644
index 0000000..07b5637
--- /dev/null
+++ b/web/.gitignore
@@ -0,0 +1,2 @@
+public
+.hugo_build.lock
diff --git a/web/CMakeLists.txt b/web/CMakeLists.txt
new file mode 100644
index 0000000..0cdb498
--- /dev/null
+++ b/web/CMakeLists.txt
@@ -0,0 +1,9 @@
+cmake_minimum_required(VERSION 3.10)
+
+include(hugo)
+
+hugo_site(
+ "website"
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ "${CMAKE_CURRENT_BINARY_DIR}/public"
+)
diff --git a/web/LICENSE.txt b/web/LICENSE.txt
new file mode 100644
index 0000000..2d58298
--- /dev/null
+++ b/web/LICENSE.txt
@@ -0,0 +1,428 @@
+Attribution-ShareAlike 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution-ShareAlike 4.0 International Public
+License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-ShareAlike 4.0 International Public License ("Public
+License"). To the extent this Public License may be interpreted as a
+contract, You are granted the Licensed Rights in consideration of Your
+acceptance of these terms and conditions, and the Licensor grants You
+such rights in consideration of benefits the Licensor receives from
+making the Licensed Material available under these terms and
+conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. BY-SA Compatible License means a license listed at
+ creativecommons.org/compatiblelicenses, approved by Creative
+ Commons as essentially the equivalent of this Public License.
+
+ d. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ e. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ f. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ g. License Elements means the license attributes listed in the name
+ of a Creative Commons Public License. The License Elements of this
+ Public License are Attribution and ShareAlike.
+
+ h. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ i. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ j. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ k. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ l. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ m. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. Additional offer from the Licensor -- Adapted Material.
+ Every recipient of Adapted Material from You
+ automatically receives an offer from the Licensor to
+ exercise the Licensed Rights in the Adapted Material
+ under the conditions of the Adapter's License You apply.
+
+ c. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ b. ShareAlike.
+
+ In addition to the conditions in Section 3(a), if You Share
+ Adapted Material You produce, the following conditions also apply.
+
+ 1. The Adapter's License You apply must be a Creative Commons
+ license with the same License Elements, this version or
+ later, or a BY-SA Compatible License.
+
+ 2. You must include the text of, or the URI or hyperlink to, the
+ Adapter's License You apply. You may satisfy this condition
+ in any reasonable manner based on the medium, means, and
+ context in which You Share Adapted Material.
+
+ 3. You may not offer or impose any additional or different terms
+ or conditions on, or apply any Effective Technological
+ Measures to, Adapted Material that restrict exercise of the
+ rights granted under the Adapter's License You apply.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material,
+ including for purposes of Section 3(b); and
+
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
+
diff --git a/web/hugo.toml b/web/hugo.toml
new file mode 100644
index 0000000..493ec29
--- /dev/null
+++ b/web/hugo.toml
@@ -0,0 +1,2 @@
+title = 'IoT contact'
+disableKinds = ["taxonomy", "RSS", "sitemap"]
diff --git a/web/layouts/baseof.html b/web/layouts/baseof.html
new file mode 100644
index 0000000..983e6e1
--- /dev/null
+++ b/web/layouts/baseof.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>{{ .Site.Title }}</title>
+ </head>
+ <body>
+ {{ block "main" . }}{{end}}
+ </body>
+</html>
diff --git a/web/layouts/home.html b/web/layouts/home.html
new file mode 100644
index 0000000..5425ac9
--- /dev/null
+++ b/web/layouts/home.html
@@ -0,0 +1,3 @@
+{{- define "main" -}}
+<h1>{{ .Site.Title }}</h1>
+{{- end -}}