diff options
34 files changed, 3738 insertions, 972 deletions
@@ -1,3 +1,4 @@ .cache build log.txt +compile_commands.json diff --git a/.gitmodules b/.gitmodules index 755d4f6..8fcd4bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "fw/zephyrproject/bootloader/mcuboot"] path = fw/rtos/modules/mcuboot url = https://github.com/zephyrproject-rtos/mcuboot.git +[submodule "simple.css"] + path = simple.css + url = https://github.com/kevquirk/simple.css.git diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index a21c5d0..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -project(iot-contact LANGUAGES NONE) - -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) - -add_subdirectory(fw) -add_subdirectory(pcb) @@ -3,61 +3,41 @@ iot-contact is an IoT device to check if doors and windows are closed or open. Furthermore roller shutter motors should be controlled. -Currently two boards are supported: - -- `native_sim/native/64` without bootloader -- `nucleo_f767zi` with bootloader - ## Usage -To build the device repository a firmware signing key is required. It is -generated with the `imgtool.py`. - -``` -mkdir ~/mcuboot -./imgtool.py keygen --key ~/mcuboot/key.pem --type ed25519 -``` - -The content of this repository can be build with CMake and Ninja. The -application firmware will be built for the simulation board to easily use it -without special hardware. - -The bootloader is built for `nucleo_f767zi` since the simulation board is -currently not supported. +The source code can be retrieved with `git`. ``` -cmake -Bbuild -GNinja -ninja -C build +git clone https://cgit.xengineering.eu/iot-contact +cd iot-contact +git submodule update --init ``` -A custom key location can be set by providing `-DKEY=/path/to/key` to the CMake -call. - -To run the simulated firmware a virtual network interface `zeth` and a router -advertisement daemon have to be provided with an embedded script. Root rights -are required for that (prefix e.g. with `sudo`). +To sign the application firmware and thus to build the project a cryptographic +signing key is required. It can be generated with `imgtool.py`. ``` -./fw/simulate-network.sh +mkdir ~/mcuboot +./imgtool.py keygen --key ~/mcuboot/key.pem --type ed25519 ``` -With the firmware built and the network being prepared the simulated firmware -can be run. +The project is built with the Meson build system. ``` -./build/fw/app/zephyr/zephyr.exe +meson setup build +cd build +ninja +meson install --destdir artifacts ``` -To build the firmware in a clean `nucleo` build folder, flash it and open a -serial interface another script can be used for convenience. +The resulting artifacts can be listed with `tree`. ``` -./fw/nucleo.sh +tree artifacts ``` -Next to the firmware artifacts the exported files related to the printed -circuit board (PCB) can be found in the build folder. +These artifacts are organized as static website. It can be opened with Firefox. ``` -tree build/pcb +firefox artifacts/index.html ``` diff --git a/cmake/kicad.cmake b/cmake/kicad.cmake deleted file mode 100644 index 0feac80..0000000 --- a/cmake/kicad.cmake +++ /dev/null @@ -1,50 +0,0 @@ -# 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(kicad_schematic_pdf target sink source) - add_custom_target( - "${target}" - ALL - DEPENDS - ${sink} - ) - - add_custom_command( - OUTPUT - ${sink} - COMMAND - kicad-cli sch export pdf --output ${sink} ${source} - COMMAND - echo "Exported schematic: ${sink}" - DEPENDS - ${source} - JOB_POOL - kicad - ) -endfunction() - -function(kicad_bom_csv target sink source) - add_custom_target( - "${target}" - ALL - DEPENDS - ${sink} - ) - - add_custom_command( - OUTPUT - ${sink} - COMMAND - kicad-cli sch export bom - --fields 'Reference,Description,Value,Footprint,Manufacturer,MPN,Datasheet' - --output ${sink} - ${source} - COMMAND - echo "Exported BOM: ${sink}" - DEPENDS - ${source} - JOB_POOL - kicad - ) -endfunction() diff --git a/compile_commands.json b/compile_commands.json deleted file mode 120000 index f0312d6..0000000 --- a/compile_commands.json +++ /dev/null @@ -1 +0,0 @@ -build/fw/app/compile_commands.json
\ No newline at end of file diff --git a/fw/CMakeLists.txt b/fw/CMakeLists.txt deleted file mode 100644 index 2affe92..0000000 --- a/fw/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# 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/. - -cmake_minimum_required(VERSION 3.20.0) - -include(ExternalProject) - -set(KEY_DEFAULT "$ENV{HOME}/mcuboot/key.pem") -set(KEY ${KEY_DEFAULT} CACHE STRING "Firmware signing key path") -message(STATUS "Firmware signing key path: ${KEY}") - -set(BOARD_DEFAULT "native_sim/native/64") -set(BOARD ${BOARD_DEFAULT} CACHE STRING "Zephyr board identifier") -message(STATUS "Selected board: ${BOARD}") - -add_subdirectory(rtos) -string(REPLACE ";" "," ZEPHYR_MODULES_COMMA "${ZEPHYR_MODULES}") - -if(BOARD STREQUAL "nucleo_f767zi") - ExternalProject_Add( - btl - PREFIX btl - SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/rtos/modules/mcuboot/boot/zephyr" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/btl" - INSTALL_COMMAND "" - LIST_SEPARATOR "," - CMAKE_ARGS - "-DBOARD=${BOARD}" - "-DZEPHYR_BASE=${ZEPHYR_BASE}" - "-DZEPHYR_MODULES=${ZEPHYR_MODULES_COMMA}" - "-DEXTRA_CONF_FILE=${CMAKE_CURRENT_SOURCE_DIR}/btl/bootloader.conf" - -DCONFIG_BOOT_SIGNATURE_KEY_FILE="${KEY}" - ) -endif() - -add_subdirectory(app) diff --git a/fw/README.md b/fw/README.md deleted file mode 100644 index 9883b2d..0000000 --- a/fw/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# iot-contact Firmware - -This is the firmware for iot-contact. It is based on the Zephyr real time -operating system [1]. - -[1]: https://zephyrproject.org diff --git a/fw/app/Kconfig b/fw/app/Kconfig index 5393e05..3481340 100644 --- a/fw/app/Kconfig +++ b/fw/app/Kconfig @@ -2,4 +2,8 @@ config IOT_CONTACT_REMOTE_UPDATE bool "Enable the remote update system" default n +config IOT_CONTACT_NETWORK_HACK + bool "Reboots after a fixed timeout if network connection cannot be established" + default n + source "Kconfig.zephyr" diff --git a/fw/app/meson.build b/fw/app/meson.build new file mode 100644 index 0000000..8d84209 --- /dev/null +++ b/fw/app/meson.build @@ -0,0 +1,45 @@ +external_project = import('unstable-external_project') + +application_source = meson.current_source_dir() + +external_project.add_project( + configure_zephyr, + configure_options: [ + '--source-tree', application_source, + '--build-tree', meson.current_build_dir() / 'build', + '--board', board, + '--zephyr-base', zephyr, + '--zephyr-modules', ';'.join(zephyr_modules), + ], + verbose: true, +) + +application = custom_target( + 'application', + output: ['application.bin'], + command: [ + build_zephyr, + '--build-tree', meson.current_build_dir() / 'build', + '--binary-name', 'zephyr.bin', + '--target-name', 'application.bin', + ], +) + +application_signed = custom_target( + 'application_signed', + output: ['application.signed.bin'], + command: [ + imgtool, + 'sign', + '--version', '0.0.0', + '--header-size', '0x200', + '--slot-size', '0xc0000', + '--key', signing_key, + meson.current_build_dir() / 'application.bin', + meson.current_build_dir() / 'application.signed.bin', + ], + build_by_default: true, + depends: application, + install: true, + install_dir: '/', +) diff --git a/fw/app/src/syslog.c b/fw/app/src/syslog.c index edc2839..e19a196 100644 --- a/fw/app/src/syslog.c +++ b/fw/app/src/syslog.c @@ -14,7 +14,10 @@ #include <zephyr/logging/log_ctrl.h> #include <zephyr/logging/log_core.h> #include <zephyr/net/conn_mgr_connectivity.h> + +#ifdef CONFIG_IOT_CONTACT_NETWORK_HACK #include <zephyr/sys/reboot.h> +#endif // CONFIG_IOT_CONTACT_NETWORK_HACK LOG_MODULE_REGISTER(syslog); @@ -58,12 +61,17 @@ int init_syslog(void) LOG_DBG("Initializing syslog logging backend"); LOG_INF("Waiting for network ..."); + +#ifdef CONFIG_IOT_CONTACT_NETWORK_HACK int ret = k_sem_take(&network_connected, NETWORK_BUG_DELAY); if (ret == -EAGAIN) { LOG_ERR("Could not connect to network - rebooting system"); log_flush(); sys_reboot(SYS_REBOOT_COLD); } +#else + k_sem_take(&network_connected, K_FOREVER); +#endif // CONFIG_IOT_CONTACT_NETWORK_HACK LOG_INF("Enabling syslog backend"); const struct log_backend *backend = log_backend_net_get(); diff --git a/fw/btl/meson.build b/fw/btl/meson.build new file mode 100644 index 0000000..c22ba3c --- /dev/null +++ b/fw/btl/meson.build @@ -0,0 +1,28 @@ +external_project = import('unstable-external_project') + +external_project.add_project( + configure_zephyr, + configure_options: [ + '--source-tree', bootloader_firmware, + '--build-tree', meson.current_build_dir() / 'build', + '--board', board, + '--zephyr-base', zephyr, + '--zephyr-modules', ';'.join(zephyr_modules), + '--extra-config', meson.current_source_dir() / 'bootloader.conf', + '--signing-key', signing_key, + ], + verbose: true, +) + +bootloader = custom_target('bootloader', + output: ['bootloader.bin'], + command: [ + build_zephyr, + '--build-tree', meson.current_build_dir() / 'build', + '--binary-name', 'zephyr.bin', + '--target-name', 'bootloader.bin', + ], + build_by_default: true, + install: true, + install_dir: '/', +) diff --git a/fw/meson.build b/fw/meson.build new file mode 100644 index 0000000..8194827 --- /dev/null +++ b/fw/meson.build @@ -0,0 +1,9 @@ +board = 'nucleo_f767zi' + +fs = import('fs') +signing_key = fs.expanduser('~') / 'mcuboot' / 'key.pem' + +subdir('rtos') +subdir('app') +subdir('btl') +subdir('sim') diff --git a/fw/nucleo.sh b/fw/nucleo.sh deleted file mode 100755 index ad0467b..0000000 --- a/fw/nucleo.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - - -# 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/. - - -set -euf - - -SCRIPT="$(realpath "$0")" -FW="$(dirname "$SCRIPT")" -ROOT="$(dirname "$FW")" -BUILD="${ROOT}/build" -BOOTLOADER_FIRMWARE="${BUILD}/fw/btl/zephyr/zephyr.bin" -APPLICATION_FIRMWARE="${BUILD}/fw/app/zephyr/zephyr.bin" -APPLICATION_FIRMWARE_SIGNED="${BUILD}/fw/app/zephyr/zephyr.signed.bin" -BOOTLOADER_FLASH_ADDRESS='0x8000000' -APPLICATION_FLASH_ADDRESS='0x8040000' -IMGTOOL="${ROOT}/imgtool.py" -KEY="${HOME}/mcuboot/key.pem" -BOARD='nucleo_f767zi' - - -set -x - -python "$IMGTOOL" sign \ - --version 0.0.0 \ - --header-size 0x200 \ - --slot-size 0xc0000 \ - --key "$KEY" \ - "$APPLICATION_FIRMWARE" \ - "$APPLICATION_FIRMWARE_SIGNED" -st-flash --connect-under-reset write "$BOOTLOADER_FIRMWARE" \ - "$BOOTLOADER_FLASH_ADDRESS" -st-flash --connect-under-reset write "$APPLICATION_FIRMWARE_SIGNED" \ - "$APPLICATION_FLASH_ADDRESS" diff --git a/fw/rtos/CMakeLists.txt b/fw/rtos/CMakeLists.txt deleted file mode 100644 index d9f116c..0000000 --- a/fw/rtos/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -# 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/. - -set(ZEPHYR_MODULES - "${CMAKE_CURRENT_SOURCE_DIR}/modules/cmsis" - "${CMAKE_CURRENT_SOURCE_DIR}/modules/hal_stm32" - "${CMAKE_CURRENT_SOURCE_DIR}/modules/mbedtls" - "${CMAKE_CURRENT_SOURCE_DIR}/modules/mcuboot" - PARENT_SCOPE -) - -set(ZEPHYR_BASE - "${CMAKE_CURRENT_SOURCE_DIR}/zephyr" - PARENT_SCOPE -) diff --git a/fw/rtos/meson.build b/fw/rtos/meson.build new file mode 100644 index 0000000..800153d --- /dev/null +++ b/fw/rtos/meson.build @@ -0,0 +1,3 @@ +subdir('modules') + +zephyr = meson.current_source_dir() / 'zephyr' diff --git a/fw/rtos/modules/meson.build b/fw/rtos/modules/meson.build new file mode 100644 index 0000000..14b14f5 --- /dev/null +++ b/fw/rtos/modules/meson.build @@ -0,0 +1,10 @@ +zephyr_modules = [ + meson.current_source_dir() / 'cmsis', + meson.current_source_dir() / 'hal_stm32', + meson.current_source_dir() / 'mbedtls', + meson.current_source_dir() / 'mcuboot', +] + +mcuboot = meson.current_source_dir() / 'mcuboot' +bootloader_firmware = mcuboot / 'boot' / 'zephyr' +imgtool = mcuboot / 'scripts' / 'imgtool.py' diff --git a/fw/sim/meson.build b/fw/sim/meson.build new file mode 100644 index 0000000..7667f9b --- /dev/null +++ b/fw/sim/meson.build @@ -0,0 +1,27 @@ +external_project = import('unstable-external_project') + +external_project.add_project( + configure_zephyr, + configure_options: [ + '--source-tree', application_source, + '--build-tree', meson.current_build_dir() / 'build', + '--board', 'native_sim/native/64', + '--zephyr-base', zephyr, + '--zephyr-modules', ';'.join(zephyr_modules), + ], + verbose: true, +) + +simulation = custom_target( + 'simulation', + output: ['simulation-linux-amd64.exe'], + command: [ + build_zephyr, + '--build-tree', meson.current_build_dir() / 'build', + '--binary-name', 'zephyr.exe', + '--target-name', 'simulation-linux-amd64.exe', + ], + build_by_default: true, + install: true, + install_dir: '/', +) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..eb7f9ad --- /dev/null +++ b/meson.build @@ -0,0 +1,20 @@ +project( + 'iot-contact', + default_options: { + 'prefix': '/', + }, +) + +subdir('tools') + +fs = import('fs') +css = fs.copyfile( + meson.current_source_dir() / 'simple.css' / 'simple.css', + 'simple.css', + install: true, + install_dir: '/', +) + +subdir('fw') +subdir('pcb') +subdir('web') diff --git a/pcb/.gitignore b/pcb/.gitignore index 8d6124a..7132856 100644 --- a/pcb/.gitignore +++ b/pcb/.gitignore @@ -2,3 +2,5 @@ fp-info-cache *.lck *auto_saved_files* +*-backups +_autosave*kicad* diff --git a/pcb/CMakeLists.txt b/pcb/CMakeLists.txt deleted file mode 100644 index 8d2c49a..0000000 --- a/pcb/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -project(iot-contact-pcb LANGUAGES NONE) - -include(kicad) - -set_property(GLOBAL PROPERTY JOB_POOLS kicad=1) - -set(schematic "${CMAKE_CURRENT_SOURCE_DIR}/iot-contact.kicad_sch") - -kicad_schematic_pdf( - "schematic" - "${CMAKE_CURRENT_BINARY_DIR}/schematic.pdf" - "${schematic}" -) - -kicad_bom_csv( - "bom" - "${CMAKE_CURRENT_BINARY_DIR}/bom.csv" - "${schematic}" -) diff --git a/pcb/iot-contact.kicad_sch b/pcb/iot-contact.kicad_sch index 77ac199..9eee96f 100644 --- a/pcb/iot-contact.kicad_sch +++ b/pcb/iot-contact.kicad_sch @@ -8,7 +8,7 @@ (title "iot-contact") ) (lib_symbols - (symbol "Connector:Conn_01x02_Socket" + (symbol "Connector:Conn_01x05_Socket" (pin_names (offset 1.016) (hide yes) @@ -17,15 +17,15 @@ (in_bom yes) (on_board yes) (property "Reference" "J" - (at 0 2.54 0) + (at 0 7.62 0) (effects (font (size 1.27 1.27) ) ) ) - (property "Value" "Conn_01x02_Socket" - (at 0 -5.08 0) + (property "Value" "Conn_01x05_Socket" + (at 0 -7.62 0) (effects (font (size 1.27 1.27) @@ -50,7 +50,7 @@ (hide yes) ) ) - (property "Description" "Generic connector, single row, 01x02, script generated" + (property "Description" "Generic connector, single row, 01x05, script generated" (at 0 0 0) (effects (font @@ -85,47 +85,11 @@ (hide yes) ) ) - (symbol "Conn_01x02_Socket_1_1" - (polyline - (pts - (xy -1.27 0) (xy -0.508 0) - ) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) - ) - ) + (symbol "Conn_01x05_Socket_1_1" (polyline (pts - (xy -1.27 -2.54) (xy -0.508 -2.54) - ) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) - ) - ) - (arc - (start 0 -0.508) - (mid -0.5058 0) - (end 0 0.508) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) + (xy -1.27 5.08) (xy -0.508 5.08) ) - ) - (arc - (start 0 -3.048) - (mid -0.5058 -2.54) - (end 0 -2.032) (stroke (width 0.1524) (type default) @@ -134,123 +98,6 @@ (type none) ) ) - (pin passive line - (at -5.08 0 0) - (length 3.81) - (name "Pin_1" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "1" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - (pin passive line - (at -5.08 -2.54 0) - (length 3.81) - (name "Pin_2" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "2" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - ) - (embedded_fonts no) - ) - (symbol "Connector:Conn_01x03_Socket" - (pin_names - (offset 1.016) - (hide yes) - ) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (property "Reference" "J" - (at 0 5.08 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Value" "Conn_01x03_Socket" - (at 0 -5.08 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "~" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "Generic connector, single row, 01x03, script generated" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "ki_locked" "" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "ki_keywords" "connector" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "ki_fp_filters" "Connector*:*_1x??_*" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (symbol "Conn_01x03_Socket_1_1" (polyline (pts (xy -1.27 2.54) (xy -0.508 2.54) @@ -287,204 +134,9 @@ (type none) ) ) - (arc - (start 0 2.032) - (mid -0.5058 2.54) - (end 0 3.048) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) - ) - ) - (arc - (start 0 -0.508) - (mid -0.5058 0) - (end 0 0.508) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) - ) - ) - (arc - (start 0 -3.048) - (mid -0.5058 -2.54) - (end 0 -2.032) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) - ) - ) - (pin passive line - (at -5.08 2.54 0) - (length 3.81) - (name "Pin_1" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "1" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - (pin passive line - (at -5.08 0 0) - (length 3.81) - (name "Pin_2" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "2" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - (pin passive line - (at -5.08 -2.54 0) - (length 3.81) - (name "Pin_3" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "3" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - ) - (embedded_fonts no) - ) - (symbol "Connector:Conn_01x04_Socket" - (pin_names - (offset 1.016) - (hide yes) - ) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (property "Reference" "J" - (at 0 5.08 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Value" "Conn_01x04_Socket" - (at 0 -7.62 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "~" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "Generic connector, single row, 01x04, script generated" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "ki_locked" "" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "ki_keywords" "connector" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "ki_fp_filters" "Connector*:*_1x??_*" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (symbol "Conn_01x04_Socket_1_1" - (polyline - (pts - (xy -1.27 2.54) (xy -0.508 2.54) - ) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) - ) - ) (polyline (pts - (xy -1.27 0) (xy -0.508 0) - ) - (stroke - (width 0.1524) - (type default) - ) - (fill - (type none) - ) - ) - (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) @@ -494,10 +146,10 @@ (type none) ) ) - (polyline - (pts - (xy -1.27 -5.08) (xy -0.508 -5.08) - ) + (arc + (start 0 4.572) + (mid -0.5058 5.08) + (end 0 5.588) (stroke (width 0.1524) (type default) @@ -555,7 +207,7 @@ ) ) (pin passive line - (at -5.08 2.54 0) + (at -5.08 5.08 0) (length 3.81) (name "Pin_1" (effects @@ -573,7 +225,7 @@ ) ) (pin passive line - (at -5.08 0 0) + (at -5.08 2.54 0) (length 3.81) (name "Pin_2" (effects @@ -591,7 +243,7 @@ ) ) (pin passive line - (at -5.08 -2.54 0) + (at -5.08 0 0) (length 3.81) (name "Pin_3" (effects @@ -609,7 +261,7 @@ ) ) (pin passive line - (at -5.08 -5.08 0) + (at -5.08 -2.54 0) (length 3.81) (name "Pin_4" (effects @@ -626,6 +278,24 @@ ) ) ) + (pin passive line + (at -5.08 -5.08 0) + (length 3.81) + (name "Pin_5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) ) (embedded_fonts no) ) @@ -2610,6 +2280,16 @@ ) (wire (pts + (xy 241.3 93.98) (xy 245.11 93.98) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0718babd-5e61-41eb-8188-33c1e5c2c2c4") + ) + (wire + (pts (xy 29.21 82.55) (xy 35.56 82.55) ) (stroke @@ -2660,16 +2340,6 @@ ) (wire (pts - (xy 241.3 102.87) (xy 243.84 102.87) - ) - (stroke - (width 0) - (type default) - ) - (uuid "1d27dae0-43b8-4c5d-8a53-0e780a7d9beb") - ) - (wire - (pts (xy 170.18 58.42) (xy 166.37 58.42) ) (stroke @@ -2770,16 +2440,6 @@ ) (wire (pts - (xy 241.3 97.79) (xy 243.84 97.79) - ) - (stroke - (width 0) - (type default) - ) - (uuid "3c7e0cc7-91bf-41c2-99bc-b56fabfb0484") - ) - (wire - (pts (xy 158.75 114.3) (xy 158.75 142.24) ) (stroke @@ -2820,6 +2480,16 @@ ) (wire (pts + (xy 241.3 91.44) (xy 245.11 91.44) + ) + (stroke + (width 0) + (type default) + ) + (uuid "5434de51-f264-4d32-9a62-d6f617624c67") + ) + (wire + (pts (xy 114.3 53.34) (xy 116.84 53.34) ) (stroke @@ -2880,6 +2550,16 @@ ) (wire (pts + (xy 241.3 83.82) (xy 245.11 83.82) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6c5416b3-8486-43d2-a4ce-6a4be340559a") + ) + (wire + (pts (xy 170.18 53.34) (xy 170.18 58.42) ) (stroke @@ -2890,43 +2570,43 @@ ) (wire (pts - (xy 91.44 97.79) (xy 109.22 97.79) + (xy 241.3 86.36) (xy 245.11 86.36) ) (stroke (width 0) (type default) ) - (uuid "7cacf695-e4dd-4107-81df-54e2713a513b") + (uuid "7bb55973-3d84-4ee7-b6b9-e5fc95e4fe2f") ) (wire (pts - (xy 133.35 130.81) (xy 133.35 128.27) + (xy 91.44 97.79) (xy 109.22 97.79) ) (stroke (width 0) (type default) ) - (uuid "7e8208d1-8e17-44cb-a01e-27f145506f19") + (uuid "7cacf695-e4dd-4107-81df-54e2713a513b") ) (wire (pts - (xy 129.54 43.18) (xy 135.89 43.18) + (xy 133.35 130.81) (xy 133.35 128.27) ) (stroke (width 0) (type default) ) - (uuid "7e82e63a-c2f1-41da-91fb-37e7590a34ee") + (uuid "7e8208d1-8e17-44cb-a01e-27f145506f19") ) (wire (pts - (xy 241.3 74.93) (xy 243.84 74.93) + (xy 129.54 43.18) (xy 135.89 43.18) ) (stroke (width 0) (type default) ) - (uuid "7ff4d5b8-9eb4-4129-ab5e-fcfe279a3d60") + (uuid "7e82e63a-c2f1-41da-91fb-37e7590a34ee") ) (wire (pts @@ -2940,13 +2620,13 @@ ) (wire (pts - (xy 241.3 91.44) (xy 243.84 91.44) + (xy 241.3 88.9) (xy 245.11 88.9) ) (stroke (width 0) (type default) ) - (uuid "82e76253-9dad-4e06-890b-3c6580d4271c") + (uuid "830105cb-b7a4-486c-9905-375b2ac42ebe") ) (wire (pts @@ -3120,26 +2800,6 @@ ) (wire (pts - (xy 241.3 88.9) (xy 243.84 88.9) - ) - (stroke - (width 0) - (type default) - ) - (uuid "bd32fc53-2d64-4e5b-bfb7-6ff41106e415") - ) - (wire - (pts - (xy 241.3 100.33) (xy 243.84 100.33) - ) - (stroke - (width 0) - (type default) - ) - (uuid "c0f3e087-4d08-45ef-bd3a-8c6f528a7689") - ) - (wire - (pts (xy 135.89 43.18) (xy 135.89 63.5) ) (stroke @@ -3220,16 +2880,6 @@ ) (wire (pts - (xy 241.3 77.47) (xy 243.84 77.47) - ) - (stroke - (width 0) - (type default) - ) - (uuid "d7acbacc-050b-4c59-a5d3-449739214648") - ) - (wire - (pts (xy 29.21 69.85) (xy 29.21 82.55) ) (stroke @@ -3260,16 +2910,6 @@ ) (wire (pts - (xy 241.3 105.41) (xy 243.84 105.41) - ) - (stroke - (width 0) - (type default) - ) - (uuid "ea53adc0-baa4-40d7-a0b3-640d08b56738") - ) - (wire - (pts (xy 55.88 90.17) (xy 66.04 90.17) ) (stroke @@ -3290,16 +2930,6 @@ ) (wire (pts - (xy 241.3 86.36) (xy 243.84 86.36) - ) - (stroke - (width 0) - (type default) - ) - (uuid "f3dd7834-6263-40f4-9340-5f1c1a44fa6f") - ) - (wire - (pts (xy 33.02 95.25) (xy 35.56 95.25) ) (stroke @@ -4107,26 +3737,25 @@ ) ) (symbol - (lib_id "power:+3V3") - (at 166.37 58.42 90) + (lib_id "Connector:Conn_01x05_Socket") + (at 250.19 88.9 0) (unit 1) (exclude_from_sim no) (in_bom yes) (on_board yes) (dnp no) - (fields_autoplaced yes) - (uuid "8dc38ef5-ad5d-4198-87b9-50e0c72e169c") - (property "Reference" "#PWR06" - (at 170.18 58.42 0) + (uuid "8abbe99b-a4dc-440e-9eca-761a29b3f878") + (property "Reference" "J5" + (at 251.46 87.6299 0) (effects (font (size 1.27 1.27) ) - (hide yes) + (justify left) ) ) - (property "Value" "+3V3" - (at 162.56 58.4199 90) + (property "Value" "Conn_01x05_Socket" + (at 251.46 90.1699 0) (effects (font (size 1.27 1.27) @@ -4134,8 +3763,8 @@ (justify left) ) ) - (property "Footprint" "" - (at 166.37 58.42 0) + (property "Footprint" "TerminalBlock_WAGO:TerminalBlock_WAGO_236-405_1x05_P5.00mm_45Degree" + (at 250.19 88.9 0) (effects (font (size 1.27 1.27) @@ -4143,8 +3772,8 @@ (hide yes) ) ) - (property "Datasheet" "" - (at 166.37 58.42 0) + (property "Datasheet" "~" + (at 250.19 88.9 0) (effects (font (size 1.27 1.27) @@ -4152,8 +3781,8 @@ (hide yes) ) ) - (property "Description" "Power symbol creates a global label with name \"+3V3\"" - (at 166.37 58.42 0) + (property "Description" "Generic connector, single row, 01x05, script generated" + (at 250.19 88.9 0) (effects (font (size 1.27 1.27) @@ -4161,117 +3790,58 @@ (hide yes) ) ) - (pin "1" - (uuid "79de4807-fb45-4a6c-8f72-b7beada5fb9e") - ) - (instances - (project "" - (path "/5defd195-0277-4d04-9f5f-69e505c9845c" - (reference "#PWR06") - (unit 1) - ) - ) - ) - ) - (symbol - (lib_id "Device:LED") - (at 194.31 129.54 90) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "a18015d1-4ba3-4469-b302-93bb256ec205") - (property "Reference" "D3" - (at 198.12 129.8574 90) - (effects - (font - (size 1.27 1.27) - ) - (justify right) - ) - ) - (property "Value" "green" - (at 198.12 132.3974 90) - (effects - (font - (size 1.27 1.27) - ) - (justify right) - ) - ) - (property "Footprint" "LED_SMD:LED_1206_3216Metric" - (at 194.31 129.54 0) + (property "MPN" "236-405" + (at 260.35 96.012 0) (effects (font (size 1.27 1.27) ) - (hide yes) ) ) - (property "Datasheet" "https://s3-us-west-2.amazonaws.com/catsy.557/Dialight_CBI_data_598-1206_Apr2018.pdf" - (at 194.31 129.54 0) + (property "Manufacturer" "WAGO Corporation" + (at 260.604 93.218 0) (effects (font (size 1.27 1.27) ) - (hide yes) ) ) - (property "Description" "LED_ACT: Firmware active" - (at 185.166 143.764 90) - (effects - (font - (size 1.27 1.27) - ) - (justify right) - ) + (pin "3" + (uuid "f6371d9a-5e12-449a-b54a-fae342c0ad08") ) - (property "MPN" "598-8270-107F" - (at 194.31 129.54 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) + (pin "4" + (uuid "2ed21cf7-6b19-4337-ba57-0d86f2172d6a") ) - (property "Manufacturer" "Dialight" - (at 194.31 129.54 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) + (pin "5" + (uuid "54231faf-ba13-48ef-9437-f0bd433787d0") ) (pin "2" - (uuid "93474e55-5fe8-4dd1-9634-063f4d85bf3b") + (uuid "cbcad884-9c06-4de9-a8e1-86ef47db1684") ) (pin "1" - (uuid "50ab0127-dc13-43a3-8f87-157c61e57591") + (uuid "6edee8d4-ba9a-4079-87be-d50c29ed3fbd") ) (instances - (project "iot-contact" + (project "" (path "/5defd195-0277-4d04-9f5f-69e505c9845c" - (reference "D3") + (reference "J5") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 116.84 53.34 0) + (lib_id "power:+3V3") + (at 166.37 58.42 90) (unit 1) (exclude_from_sim no) (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced yes) - (uuid "a9fdb3b7-e62e-4e35-b95e-2b5451d40781") - (property "Reference" "#PWR02" - (at 116.84 59.69 0) + (uuid "8dc38ef5-ad5d-4198-87b9-50e0c72e169c") + (property "Reference" "#PWR06" + (at 170.18 58.42 0) (effects (font (size 1.27 1.27) @@ -4279,16 +3849,17 @@ (hide yes) ) ) - (property "Value" "GND" - (at 116.84 58.42 0) + (property "Value" "+3V3" + (at 162.56 58.4199 90) (effects (font (size 1.27 1.27) ) + (justify left) ) ) (property "Footprint" "" - (at 116.84 53.34 0) + (at 166.37 58.42 0) (effects (font (size 1.27 1.27) @@ -4297,7 +3868,7 @@ ) ) (property "Datasheet" "" - (at 116.84 53.34 0) + (at 166.37 58.42 0) (effects (font (size 1.27 1.27) @@ -4305,8 +3876,8 @@ (hide yes) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 116.84 53.34 0) + (property "Description" "Power symbol creates a global label with name \"+3V3\"" + (at 166.37 58.42 0) (effects (font (size 1.27 1.27) @@ -4315,46 +3886,46 @@ ) ) (pin "1" - (uuid "dbac907f-00ce-4688-80a3-aa16c1570783") + (uuid "79de4807-fb45-4a6c-8f72-b7beada5fb9e") ) (instances (project "" (path "/5defd195-0277-4d04-9f5f-69e505c9845c" - (reference "#PWR02") + (reference "#PWR06") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Conn_01x02_Socket") - (at 248.92 74.93 0) + (lib_id "Device:LED") + (at 194.31 129.54 90) (unit 1) (exclude_from_sim no) (in_bom yes) (on_board yes) (dnp no) - (uuid "ab915a24-5892-4750-b69f-bf601f5b3660") - (property "Reference" "J5" - (at 250.19 74.9299 0) + (uuid "a18015d1-4ba3-4469-b302-93bb256ec205") + (property "Reference" "D3" + (at 198.12 129.8574 90) (effects (font (size 1.27 1.27) ) - (justify left) + (justify right) ) ) - (property "Value" "Conn_01x02_Socket" - (at 250.19 77.4699 0) + (property "Value" "green" + (at 198.12 132.3974 90) (effects (font (size 1.27 1.27) ) - (justify left) + (justify right) ) ) - (property "Footprint" "TerminalBlock_WAGO:TerminalBlock_WAGO_236-402_1x02_P5.00mm_45Degree" - (at 248.92 74.93 0) + (property "Footprint" "LED_SMD:LED_1206_3216Metric" + (at 194.31 129.54 0) (effects (font (size 1.27 1.27) @@ -4362,8 +3933,8 @@ (hide yes) ) ) - (property "Datasheet" "~" - (at 248.92 74.93 0) + (property "Datasheet" "https://s3-us-west-2.amazonaws.com/catsy.557/Dialight_CBI_data_598-1206_Apr2018.pdf" + (at 194.31 129.54 0) (effects (font (size 1.27 1.27) @@ -4371,16 +3942,17 @@ (hide yes) ) ) - (property "Description" "normally closed contact" - (at 262.128 79.756 0) + (property "Description" "LED_ACT: Firmware active" + (at 185.166 143.764 90) (effects (font (size 1.27 1.27) ) + (justify right) ) ) - (property "MPN" "236-402" - (at 248.92 74.93 0) + (property "MPN" "598-8270-107F" + (at 194.31 129.54 0) (effects (font (size 1.27 1.27) @@ -4388,8 +3960,8 @@ (hide yes) ) ) - (property "Manufacturer" "WAGO Corporation" - (at 248.92 74.93 0) + (property "Manufacturer" "Dialight" + (at 194.31 129.54 0) (effects (font (size 1.27 1.27) @@ -4398,49 +3970,32 @@ ) ) (pin "2" - (uuid "9c8b6afb-bb3d-404f-967e-581c812b3355") + (uuid "93474e55-5fe8-4dd1-9634-063f4d85bf3b") ) (pin "1" - (uuid "428b547f-53a8-4158-9a2a-ed056b73bc0a") + (uuid "50ab0127-dc13-43a3-8f87-157c61e57591") ) (instances - (project "" + (project "iot-contact" (path "/5defd195-0277-4d04-9f5f-69e505c9845c" - (reference "J5") + (reference "D3") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Conn_01x03_Socket") - (at 248.92 88.9 0) + (lib_id "power:GND") + (at 116.84 53.34 0) (unit 1) (exclude_from_sim no) (in_bom yes) (on_board yes) (dnp no) - (uuid "b8e7e67c-4ba1-45c3-949c-ed1de34a8889") - (property "Reference" "J6" - (at 250.19 87.6299 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Value" "Conn_01x03_Socket" - (at 250.19 90.1699 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Footprint" "TerminalBlock_WAGO:TerminalBlock_WAGO_236-403_1x03_P5.00mm_45Degree" - (at 248.92 88.9 0) + (fields_autoplaced yes) + (uuid "a9fdb3b7-e62e-4e35-b95e-2b5451d40781") + (property "Reference" "#PWR02" + (at 116.84 59.69 0) (effects (font (size 1.27 1.27) @@ -4448,25 +4003,25 @@ (hide yes) ) ) - (property "Datasheet" "~" - (at 248.92 88.9 0) + (property "Value" "GND" + (at 116.84 58.42 0) (effects (font (size 1.27 1.27) ) - (hide yes) ) ) - (property "Description" "AC voltage supply" - (at 259.08 92.71 0) + (property "Footprint" "" + (at 116.84 53.34 0) (effects (font (size 1.27 1.27) ) + (hide yes) ) ) - (property "MPN" "236-403" - (at 248.92 88.9 0) + (property "Datasheet" "" + (at 116.84 53.34 0) (effects (font (size 1.27 1.27) @@ -4474,8 +4029,8 @@ (hide yes) ) ) - (property "Manufacturer" "WAGO Corporation" - (at 248.92 88.9 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 116.84 53.34 0) (effects (font (size 1.27 1.27) @@ -4483,19 +4038,13 @@ (hide yes) ) ) - (pin "3" - (uuid "2d15e7e0-56e4-496b-a237-9cd8ed4fd444") - ) - (pin "2" - (uuid "fa05bfdf-dde9-46a5-b86a-16de418107e2") - ) (pin "1" - (uuid "ab74c3af-f504-4aaa-80da-750726060fa7") + (uuid "dbac907f-00ce-4688-80a3-aa16c1570783") ) (instances (project "" (path "/5defd195-0277-4d04-9f5f-69e505c9845c" - (reference "J6") + (reference "#PWR02") (unit 1) ) ) @@ -4788,98 +4337,6 @@ ) ) (symbol - (lib_id "Connector:Conn_01x04_Socket") - (at 248.92 100.33 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "f86d0087-ccb7-44bf-be0e-e6c0a5836284") - (property "Reference" "J7" - (at 250.19 100.3299 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Value" "Conn_01x04_Socket" - (at 250.19 102.8699 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Footprint" "TerminalBlock_WAGO:TerminalBlock_WAGO_236-404_1x04_P5.00mm_45Degree" - (at 248.92 100.33 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "~" - (at 248.92 100.33 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "motor connector" - (at 258.318 105.41 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "MPN" "236-404" - (at 248.92 100.33 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Manufacturer" "WAGO Corporation" - (at 248.92 100.33 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "dd173b75-bf5d-418c-900b-22588dbf6f8e") - ) - (pin "4" - (uuid "d08e74f4-7939-4c87-985a-5c55f3282a4e") - ) - (pin "3" - (uuid "4fa4265e-7a54-4aee-91ee-fc3e359ec77e") - ) - (pin "2" - (uuid "889f97b8-0784-45ed-82f3-d450f0dfd89d") - ) - (instances - (project "" - (path "/5defd195-0277-4d04-9f5f-69e505c9845c" - (reference "J7") - (unit 1) - ) - ) - ) - ) - (symbol (lib_id "power:GND") (at 33.02 78.74 180) (unit 1) @@ -5141,28 +4598,8 @@ (justify left top) ) ) - (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) - ) - ) - (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) - ) - ) (pin "AC_PHASE" bidirectional - (at 241.3 91.44 0) + (at 241.3 88.9 0) (uuid "b45797bb-cca3-49c0-86c4-955a6b44d60c") (effects (font @@ -5171,28 +4608,8 @@ (justify right) ) ) - (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) - ) - ) - (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) - ) - ) (pin "MOT_PHASE_1" bidirectional - (at 241.3 102.87 0) + (at 241.3 91.44 0) (uuid "ead288da-2d52-42f6-b402-c382468e36d4") (effects (font @@ -5202,7 +4619,7 @@ ) ) (pin "MOT_PHASE_2" bidirectional - (at 241.3 105.41 0) + (at 241.3 93.98 0) (uuid "e9687363-d732-4f1b-99ef-f6609013c187") (effects (font @@ -5212,7 +4629,7 @@ ) ) (pin "CONTACT_1" bidirectional - (at 241.3 74.93 0) + (at 241.3 83.82 0) (uuid "45229719-3224-4355-bc91-87ebcb939c01") (effects (font @@ -5222,7 +4639,7 @@ ) ) (pin "CONTACT_2" bidirectional - (at 241.3 77.47 0) + (at 241.3 86.36 0) (uuid "b1fc0b36-ff3b-4224-9ca0-41809406e0d1") (effects (font diff --git a/pcb/meson.build b/pcb/meson.build new file mode 100644 index 0000000..2c73e57 --- /dev/null +++ b/pcb/meson.build @@ -0,0 +1,49 @@ +schematic_files = [ + 'iot-contact.kicad_sch', + 'contacts.kicad_sch', + 'ethernet.kicad_sch', + 'io.kicad_sch', + 'power.kicad_sch', + 'processor.kicad_sch', +] + +schematic = custom_target('schematic', + output: ['schematic.pdf'], + command: [ + 'kicad-cli', + 'sch', + 'export', + 'pdf', + '--output', meson.current_build_dir() / 'schematic.pdf', + meson.current_source_dir() / 'iot-contact.kicad_sch', + ], + depend_files: schematic_files, + build_by_default: true, + install: true, + install_dir: '/', +) + +bom = custom_target('bom', + output: ['bill-of-materials.csv'], + command: [ + 'kicad-cli', + 'sch', + 'export', + 'bom', + '--fields', + 'Reference,Description,Value,Footprint,Manufacturer,MPN,Datasheet', + '--output', meson.current_build_dir() / 'bill-of-materials.csv', + meson.current_source_dir() / 'iot-contact.kicad_sch', + ], + depend_files: schematic_files, + build_by_default: true, + install: true, + install_dir: '/', +) + +fs = import('fs') +kicad_pcb = fs.copyfile( + meson.current_source_dir() / 'iot-contact.kicad_pcb', + install: true, + install_dir: '/', +) diff --git a/pcb/processor.kicad_sch b/pcb/processor.kicad_sch index 41b29b9..9b6b558 100644 --- a/pcb/processor.kicad_sch +++ b/pcb/processor.kicad_sch @@ -7,10 +7,2343 @@ (title_block (title "iot-contact") ) - (lib_symbols) + (lib_symbols + (symbol "MCU_ST_STM32F4:STM32F427VITx" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "U" + (at -20.32 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "STM32F427VITx" + (at 12.7 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_QFP:LQFP-100_14x14mm_P0.5mm" + (at -20.32 -66.04 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + (hide yes) + ) + ) + (property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32f427vi.pdf" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "STMicroelectronics Arm Cortex-M4 MCU, 2048KB flash, 256KB RAM, 180 MHz, 1.8-3.6V, 82 GPIO, LQFP100" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "Arm Cortex-M4 STM32F4 STM32F427/437" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "LQFP*14x14mm*P0.5mm*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "STM32F427VITx_0_1" + (rectangle + (start -20.32 -66.04) + (end 20.32 68.58) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + ) + (symbol "STM32F427VITx_1_1" + (pin input line + (at -25.4 63.5 0) + (length 5.08) + (name "NRST" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -25.4 58.42 0) + (length 5.08) + (name "BOOT0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "94" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -25.4 53.34 0) + (length 5.08) + (name "VREF+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "21" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -25.4 48.26 0) + (length 5.08) + (name "PH0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "RCC_OSC_IN" bidirectional line) + ) + (pin bidirectional line + (at -25.4 45.72 0) + (length 5.08) + (name "PH1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "RCC_OSC_OUT" bidirectional line) + ) + (pin bidirectional line + (at -25.4 40.64 0) + (length 5.08) + (name "PE0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "97" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D2" bidirectional line) + (alternate "FMC_NBL0" bidirectional line) + (alternate "TIM4_ETR" bidirectional line) + (alternate "UART8_RX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 38.1 0) + (length 5.08) + (name "PE1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "98" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D3" bidirectional line) + (alternate "FMC_NBL1" bidirectional line) + (alternate "UART8_TX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 35.56 0) + (length 5.08) + (name "PE2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ETH_TXD3" bidirectional line) + (alternate "FMC_A23" bidirectional line) + (alternate "SAI1_MCLK_A" bidirectional line) + (alternate "SPI4_SCK" bidirectional line) + (alternate "SYS_TRACECLK" bidirectional line) + ) + (pin bidirectional line + (at -25.4 33.02 0) + (length 5.08) + (name "PE3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_A19" bidirectional line) + (alternate "SAI1_SD_B" bidirectional line) + (alternate "SYS_TRACED0" bidirectional line) + ) + (pin bidirectional line + (at -25.4 30.48 0) + (length 5.08) + (name "PE4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D4" bidirectional line) + (alternate "FMC_A20" bidirectional line) + (alternate "SAI1_FS_A" bidirectional line) + (alternate "SPI4_NSS" bidirectional line) + (alternate "SYS_TRACED1" bidirectional line) + ) + (pin bidirectional line + (at -25.4 27.94 0) + (length 5.08) + (name "PE5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D6" bidirectional line) + (alternate "FMC_A21" bidirectional line) + (alternate "SAI1_SCK_A" bidirectional line) + (alternate "SPI4_MISO" bidirectional line) + (alternate "SYS_TRACED2" bidirectional line) + (alternate "TIM9_CH1" bidirectional line) + ) + (pin bidirectional line + (at -25.4 25.4 0) + (length 5.08) + (name "PE6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D7" bidirectional line) + (alternate "FMC_A22" bidirectional line) + (alternate "SAI1_SD_A" bidirectional line) + (alternate "SPI4_MOSI" bidirectional line) + (alternate "SYS_TRACED3" bidirectional line) + (alternate "TIM9_CH2" bidirectional line) + ) + (pin bidirectional line + (at -25.4 22.86 0) + (length 5.08) + (name "PE7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "38" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D4" bidirectional line) + (alternate "FMC_DA4" bidirectional line) + (alternate "TIM1_ETR" bidirectional line) + (alternate "UART7_RX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 20.32 0) + (length 5.08) + (name "PE8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "39" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D5" bidirectional line) + (alternate "FMC_DA5" bidirectional line) + (alternate "TIM1_CH1N" bidirectional line) + (alternate "UART7_TX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 17.78 0) + (length 5.08) + (name "PE9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "40" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DAC_EXTI9" bidirectional line) + (alternate "FMC_D6" bidirectional line) + (alternate "FMC_DA6" bidirectional line) + (alternate "TIM1_CH1" bidirectional line) + ) + (pin bidirectional line + (at -25.4 15.24 0) + (length 5.08) + (name "PE10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "41" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D7" bidirectional line) + (alternate "FMC_DA7" bidirectional line) + (alternate "TIM1_CH2N" bidirectional line) + ) + (pin bidirectional line + (at -25.4 12.7 0) + (length 5.08) + (name "PE11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "42" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI11" bidirectional line) + (alternate "ADC2_EXTI11" bidirectional line) + (alternate "ADC3_EXTI11" bidirectional line) + (alternate "FMC_D8" bidirectional line) + (alternate "FMC_DA8" bidirectional line) + (alternate "SPI4_NSS" bidirectional line) + (alternate "TIM1_CH2" bidirectional line) + ) + (pin bidirectional line + (at -25.4 10.16 0) + (length 5.08) + (name "PE12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "43" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D9" bidirectional line) + (alternate "FMC_DA9" bidirectional line) + (alternate "SPI4_SCK" bidirectional line) + (alternate "TIM1_CH3N" bidirectional line) + ) + (pin bidirectional line + (at -25.4 7.62 0) + (length 5.08) + (name "PE13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "44" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D10" bidirectional line) + (alternate "FMC_DA10" bidirectional line) + (alternate "SPI4_MISO" bidirectional line) + (alternate "TIM1_CH3" bidirectional line) + ) + (pin bidirectional line + (at -25.4 5.08 0) + (length 5.08) + (name "PE14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "45" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D11" bidirectional line) + (alternate "FMC_DA11" bidirectional line) + (alternate "SPI4_MOSI" bidirectional line) + (alternate "TIM1_CH4" bidirectional line) + ) + (pin bidirectional line + (at -25.4 2.54 0) + (length 5.08) + (name "PE15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "46" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI15" bidirectional line) + (alternate "ADC2_EXTI15" bidirectional line) + (alternate "ADC3_EXTI15" bidirectional line) + (alternate "FMC_D12" bidirectional line) + (alternate "FMC_DA12" bidirectional line) + (alternate "TIM1_BKIN" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -2.54 0) + (length 5.08) + (name "PD0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "81" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN1_RX" bidirectional line) + (alternate "FMC_D2" bidirectional line) + (alternate "FMC_DA2" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -5.08 0) + (length 5.08) + (name "PD1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "82" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN1_TX" bidirectional line) + (alternate "FMC_D3" bidirectional line) + (alternate "FMC_DA3" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -7.62 0) + (length 5.08) + (name "PD2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "83" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D11" bidirectional line) + (alternate "SDIO_CMD" bidirectional line) + (alternate "TIM3_ETR" bidirectional line) + (alternate "UART5_RX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -10.16 0) + (length 5.08) + (name "PD3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "84" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D5" bidirectional line) + (alternate "FMC_CLK" bidirectional line) + (alternate "I2S2_CK" bidirectional line) + (alternate "SPI2_SCK" bidirectional line) + (alternate "USART2_CTS" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -12.7 0) + (length 5.08) + (name "PD4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "85" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_NOE" bidirectional line) + (alternate "USART2_RTS" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -15.24 0) + (length 5.08) + (name "PD5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "86" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_NWE" bidirectional line) + (alternate "USART2_TX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -17.78 0) + (length 5.08) + (name "PD6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "87" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D10" bidirectional line) + (alternate "FMC_NWAIT" bidirectional line) + (alternate "I2S3_SD" bidirectional line) + (alternate "SAI1_SD_A" bidirectional line) + (alternate "SPI3_MOSI" bidirectional line) + (alternate "USART2_RX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -20.32 0) + (length 5.08) + (name "PD7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "88" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_NCE2" bidirectional line) + (alternate "FMC_NE1" bidirectional line) + (alternate "USART2_CK" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -22.86 0) + (length 5.08) + (name "PD8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "55" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D13" bidirectional line) + (alternate "FMC_DA13" bidirectional line) + (alternate "USART3_TX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -25.4 0) + (length 5.08) + (name "PD9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "56" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DAC_EXTI9" bidirectional line) + (alternate "FMC_D14" bidirectional line) + (alternate "FMC_DA14" bidirectional line) + (alternate "USART3_RX" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -27.94 0) + (length 5.08) + (name "PD10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "57" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D15" bidirectional line) + (alternate "FMC_DA15" bidirectional line) + (alternate "USART3_CK" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -30.48 0) + (length 5.08) + (name "PD11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "58" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI11" bidirectional line) + (alternate "ADC2_EXTI11" bidirectional line) + (alternate "ADC3_EXTI11" bidirectional line) + (alternate "FMC_A16" bidirectional line) + (alternate "FMC_CLE" bidirectional line) + (alternate "USART3_CTS" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -33.02 0) + (length 5.08) + (name "PD12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "59" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_A17" bidirectional line) + (alternate "FMC_ALE" bidirectional line) + (alternate "TIM4_CH1" bidirectional line) + (alternate "USART3_RTS" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -35.56 0) + (length 5.08) + (name "PD13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "60" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_A18" bidirectional line) + (alternate "TIM4_CH2" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -38.1 0) + (length 5.08) + (name "PD14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "61" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "FMC_D0" bidirectional line) + (alternate "FMC_DA0" bidirectional line) + (alternate "TIM4_CH3" bidirectional line) + ) + (pin bidirectional line + (at -25.4 -40.64 0) + (length 5.08) + (name "PD15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "62" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI15" bidirectional line) + (alternate "ADC2_EXTI15" bidirectional line) + (alternate "ADC3_EXTI15" bidirectional line) + (alternate "FMC_D1" bidirectional line) + (alternate "FMC_DA1" bidirectional line) + (alternate "TIM4_CH4" bidirectional line) + ) + (pin power_out line + (at -25.4 -45.72 0) + (length 5.08) + (name "VCAP_1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "49" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_out line + (at -25.4 -48.26 0) + (length 5.08) + (name "VCAP_2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "73" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at -7.62 73.66 270) + (length 5.08) + (name "VBAT" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at -5.08 73.66 270) + (length 5.08) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at -2.54 73.66 270) + (length 5.08) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "19" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 73.66 270) + (length 5.08) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "28" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -71.12 90) + (length 5.08) + (name "VSS" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -71.12 90) + (length 5.08) + (hide yes) + (name "VSS" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "27" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -71.12 90) + (length 5.08) + (hide yes) + (name "VSS" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "74" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -71.12 90) + (length 5.08) + (hide yes) + (name "VSS" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "99" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 2.54 73.66 270) + (length 5.08) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "50" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 2.54 -71.12 90) + (length 5.08) + (name "VSSA" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "20" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 5.08 73.66 270) + (length 5.08) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "75" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 7.62 73.66 270) + (length 5.08) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "100" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 10.16 73.66 270) + (length 5.08) + (name "VDDA" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "22" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 25.4 63.5 180) + (length 5.08) + (name "PA0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "23" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN0" bidirectional line) + (alternate "ADC2_IN0" bidirectional line) + (alternate "ADC3_IN0" bidirectional line) + (alternate "ETH_CRS" bidirectional line) + (alternate "SYS_WKUP" bidirectional line) + (alternate "TIM2_CH1" bidirectional line) + (alternate "TIM2_ETR" bidirectional line) + (alternate "TIM5_CH1" bidirectional line) + (alternate "TIM8_ETR" bidirectional line) + (alternate "UART4_TX" bidirectional line) + (alternate "USART2_CTS" bidirectional line) + ) + (pin bidirectional line + (at 25.4 60.96 180) + (length 5.08) + (name "PA1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "24" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN1" bidirectional line) + (alternate "ADC2_IN1" bidirectional line) + (alternate "ADC3_IN1" bidirectional line) + (alternate "ETH_REF_CLK" bidirectional line) + (alternate "ETH_RX_CLK" bidirectional line) + (alternate "TIM2_CH2" bidirectional line) + (alternate "TIM5_CH2" bidirectional line) + (alternate "UART4_RX" bidirectional line) + (alternate "USART2_RTS" bidirectional line) + ) + (pin bidirectional line + (at 25.4 58.42 180) + (length 5.08) + (name "PA2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "25" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN2" bidirectional line) + (alternate "ADC2_IN2" bidirectional line) + (alternate "ADC3_IN2" bidirectional line) + (alternate "ETH_MDIO" bidirectional line) + (alternate "TIM2_CH3" bidirectional line) + (alternate "TIM5_CH3" bidirectional line) + (alternate "TIM9_CH1" bidirectional line) + (alternate "USART2_TX" bidirectional line) + ) + (pin bidirectional line + (at 25.4 55.88 180) + (length 5.08) + (name "PA3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "26" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN3" bidirectional line) + (alternate "ADC2_IN3" bidirectional line) + (alternate "ADC3_IN3" bidirectional line) + (alternate "ETH_COL" bidirectional line) + (alternate "TIM2_CH4" bidirectional line) + (alternate "TIM5_CH4" bidirectional line) + (alternate "TIM9_CH2" bidirectional line) + (alternate "USART2_RX" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D0" bidirectional line) + ) + (pin bidirectional line + (at 25.4 53.34 180) + (length 5.08) + (name "PA4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "29" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN4" bidirectional line) + (alternate "ADC2_IN4" bidirectional line) + (alternate "DAC_OUT1" bidirectional line) + (alternate "DCMI_HSYNC" bidirectional line) + (alternate "I2S3_WS" bidirectional line) + (alternate "SPI1_NSS" bidirectional line) + (alternate "SPI3_NSS" bidirectional line) + (alternate "USART2_CK" bidirectional line) + (alternate "USB_OTG_HS_SOF" bidirectional line) + ) + (pin bidirectional line + (at 25.4 50.8 180) + (length 5.08) + (name "PA5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "30" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN5" bidirectional line) + (alternate "ADC2_IN5" bidirectional line) + (alternate "DAC_OUT2" bidirectional line) + (alternate "SPI1_SCK" bidirectional line) + (alternate "TIM2_CH1" bidirectional line) + (alternate "TIM2_ETR" bidirectional line) + (alternate "TIM8_CH1N" bidirectional line) + (alternate "USB_OTG_HS_ULPI_CK" bidirectional line) + ) + (pin bidirectional line + (at 25.4 48.26 180) + (length 5.08) + (name "PA6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "31" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN6" bidirectional line) + (alternate "ADC2_IN6" bidirectional line) + (alternate "DCMI_PIXCLK" bidirectional line) + (alternate "SPI1_MISO" bidirectional line) + (alternate "TIM13_CH1" bidirectional line) + (alternate "TIM1_BKIN" bidirectional line) + (alternate "TIM3_CH1" bidirectional line) + (alternate "TIM8_BKIN" bidirectional line) + ) + (pin bidirectional line + (at 25.4 45.72 180) + (length 5.08) + (name "PA7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "32" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN7" bidirectional line) + (alternate "ADC2_IN7" bidirectional line) + (alternate "ETH_CRS_DV" bidirectional line) + (alternate "ETH_RX_DV" bidirectional line) + (alternate "SPI1_MOSI" bidirectional line) + (alternate "TIM14_CH1" bidirectional line) + (alternate "TIM1_CH1N" bidirectional line) + (alternate "TIM3_CH2" bidirectional line) + (alternate "TIM8_CH1N" bidirectional line) + ) + (pin bidirectional line + (at 25.4 43.18 180) + (length 5.08) + (name "PA8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "67" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "I2C3_SCL" bidirectional line) + (alternate "RCC_MCO_1" bidirectional line) + (alternate "TIM1_CH1" bidirectional line) + (alternate "USART1_CK" bidirectional line) + (alternate "USB_OTG_FS_SOF" bidirectional line) + ) + (pin bidirectional line + (at 25.4 40.64 180) + (length 5.08) + (name "PA9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "68" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DAC_EXTI9" bidirectional line) + (alternate "DCMI_D0" bidirectional line) + (alternate "I2C3_SMBA" bidirectional line) + (alternate "TIM1_CH2" bidirectional line) + (alternate "USART1_TX" bidirectional line) + (alternate "USB_OTG_FS_VBUS" bidirectional line) + ) + (pin bidirectional line + (at 25.4 38.1 180) + (length 5.08) + (name "PA10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "69" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D1" bidirectional line) + (alternate "TIM1_CH3" bidirectional line) + (alternate "USART1_RX" bidirectional line) + (alternate "USB_OTG_FS_ID" bidirectional line) + ) + (pin bidirectional line + (at 25.4 35.56 180) + (length 5.08) + (name "PA11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "70" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI11" bidirectional line) + (alternate "ADC2_EXTI11" bidirectional line) + (alternate "ADC3_EXTI11" bidirectional line) + (alternate "CAN1_RX" bidirectional line) + (alternate "TIM1_CH4" bidirectional line) + (alternate "USART1_CTS" bidirectional line) + (alternate "USB_OTG_FS_DM" bidirectional line) + ) + (pin bidirectional line + (at 25.4 33.02 180) + (length 5.08) + (name "PA12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "71" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN1_TX" bidirectional line) + (alternate "TIM1_ETR" bidirectional line) + (alternate "USART1_RTS" bidirectional line) + (alternate "USB_OTG_FS_DP" bidirectional line) + ) + (pin bidirectional line + (at 25.4 30.48 180) + (length 5.08) + (name "PA13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "72" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "SYS_JTMS-SWDIO" bidirectional line) + ) + (pin bidirectional line + (at 25.4 27.94 180) + (length 5.08) + (name "PA14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "76" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "SYS_JTCK-SWCLK" bidirectional line) + ) + (pin bidirectional line + (at 25.4 25.4 180) + (length 5.08) + (name "PA15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "77" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI15" bidirectional line) + (alternate "ADC2_EXTI15" bidirectional line) + (alternate "ADC3_EXTI15" bidirectional line) + (alternate "I2S3_WS" bidirectional line) + (alternate "SPI1_NSS" bidirectional line) + (alternate "SPI3_NSS" bidirectional line) + (alternate "SYS_JTDI" bidirectional line) + (alternate "TIM2_CH1" bidirectional line) + (alternate "TIM2_ETR" bidirectional line) + ) + (pin bidirectional line + (at 25.4 20.32 180) + (length 5.08) + (name "PB0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "35" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN8" bidirectional line) + (alternate "ADC2_IN8" bidirectional line) + (alternate "ETH_RXD2" bidirectional line) + (alternate "TIM1_CH2N" bidirectional line) + (alternate "TIM3_CH3" bidirectional line) + (alternate "TIM8_CH2N" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D1" bidirectional line) + ) + (pin bidirectional line + (at 25.4 17.78 180) + (length 5.08) + (name "PB1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "36" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN9" bidirectional line) + (alternate "ADC2_IN9" bidirectional line) + (alternate "ETH_RXD3" bidirectional line) + (alternate "TIM1_CH3N" bidirectional line) + (alternate "TIM3_CH4" bidirectional line) + (alternate "TIM8_CH3N" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D2" bidirectional line) + ) + (pin bidirectional line + (at 25.4 15.24 180) + (length 5.08) + (name "PB2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "37" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 25.4 12.7 180) + (length 5.08) + (name "PB3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "89" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "I2S3_CK" bidirectional line) + (alternate "SPI1_SCK" bidirectional line) + (alternate "SPI3_SCK" bidirectional line) + (alternate "SYS_JTDO-SWO" bidirectional line) + (alternate "TIM2_CH2" bidirectional line) + ) + (pin bidirectional line + (at 25.4 10.16 180) + (length 5.08) + (name "PB4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "90" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "I2S3_ext_SD" bidirectional line) + (alternate "SPI1_MISO" bidirectional line) + (alternate "SPI3_MISO" bidirectional line) + (alternate "SYS_JTRST" bidirectional line) + (alternate "TIM3_CH1" bidirectional line) + ) + (pin bidirectional line + (at 25.4 7.62 180) + (length 5.08) + (name "PB5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "91" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN2_RX" bidirectional line) + (alternate "DCMI_D10" bidirectional line) + (alternate "ETH_PPS_OUT" bidirectional line) + (alternate "FMC_SDCKE1" bidirectional line) + (alternate "I2C1_SMBA" bidirectional line) + (alternate "I2S3_SD" bidirectional line) + (alternate "SPI1_MOSI" bidirectional line) + (alternate "SPI3_MOSI" bidirectional line) + (alternate "TIM3_CH2" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D7" bidirectional line) + ) + (pin bidirectional line + (at 25.4 5.08 180) + (length 5.08) + (name "PB6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "92" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN2_TX" bidirectional line) + (alternate "DCMI_D5" bidirectional line) + (alternate "FMC_SDNE1" bidirectional line) + (alternate "I2C1_SCL" bidirectional line) + (alternate "TIM4_CH1" bidirectional line) + (alternate "USART1_TX" bidirectional line) + ) + (pin bidirectional line + (at 25.4 2.54 180) + (length 5.08) + (name "PB7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "93" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_VSYNC" bidirectional line) + (alternate "FMC_NL" bidirectional line) + (alternate "I2C1_SDA" bidirectional line) + (alternate "TIM4_CH2" bidirectional line) + (alternate "USART1_RX" bidirectional line) + ) + (pin bidirectional line + (at 25.4 0 180) + (length 5.08) + (name "PB8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "95" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN1_RX" bidirectional line) + (alternate "DCMI_D6" bidirectional line) + (alternate "ETH_TXD3" bidirectional line) + (alternate "I2C1_SCL" bidirectional line) + (alternate "SDIO_D4" bidirectional line) + (alternate "TIM10_CH1" bidirectional line) + (alternate "TIM4_CH3" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -2.54 180) + (length 5.08) + (name "PB9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "96" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN1_TX" bidirectional line) + (alternate "DAC_EXTI9" bidirectional line) + (alternate "DCMI_D7" bidirectional line) + (alternate "I2C1_SDA" bidirectional line) + (alternate "I2S2_WS" bidirectional line) + (alternate "SDIO_D5" bidirectional line) + (alternate "SPI2_NSS" bidirectional line) + (alternate "TIM11_CH1" bidirectional line) + (alternate "TIM4_CH4" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -5.08 180) + (length 5.08) + (name "PB10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "47" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ETH_RX_ER" bidirectional line) + (alternate "I2C2_SCL" bidirectional line) + (alternate "I2S2_CK" bidirectional line) + (alternate "SPI2_SCK" bidirectional line) + (alternate "TIM2_CH3" bidirectional line) + (alternate "USART3_TX" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D3" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -7.62 180) + (length 5.08) + (name "PB11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "48" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI11" bidirectional line) + (alternate "ADC2_EXTI11" bidirectional line) + (alternate "ADC3_EXTI11" bidirectional line) + (alternate "ETH_TX_EN" bidirectional line) + (alternate "I2C2_SDA" bidirectional line) + (alternate "TIM2_CH4" bidirectional line) + (alternate "USART3_RX" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D4" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -10.16 180) + (length 5.08) + (name "PB12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "51" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN2_RX" bidirectional line) + (alternate "ETH_TXD0" bidirectional line) + (alternate "I2C2_SMBA" bidirectional line) + (alternate "I2S2_WS" bidirectional line) + (alternate "SPI2_NSS" bidirectional line) + (alternate "TIM1_BKIN" bidirectional line) + (alternate "USART3_CK" bidirectional line) + (alternate "USB_OTG_HS_ID" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D5" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -12.7 180) + (length 5.08) + (name "PB13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "52" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "CAN2_TX" bidirectional line) + (alternate "ETH_TXD1" bidirectional line) + (alternate "I2S2_CK" bidirectional line) + (alternate "SPI2_SCK" bidirectional line) + (alternate "TIM1_CH1N" bidirectional line) + (alternate "USART3_CTS" bidirectional line) + (alternate "USB_OTG_HS_ULPI_D6" bidirectional line) + (alternate "USB_OTG_HS_VBUS" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -15.24 180) + (length 5.08) + (name "PB14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "53" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "I2S2_ext_SD" bidirectional line) + (alternate "SPI2_MISO" bidirectional line) + (alternate "TIM12_CH1" bidirectional line) + (alternate "TIM1_CH2N" bidirectional line) + (alternate "TIM8_CH2N" bidirectional line) + (alternate "USART3_RTS" bidirectional line) + (alternate "USB_OTG_HS_DM" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -17.78 180) + (length 5.08) + (name "PB15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "54" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI15" bidirectional line) + (alternate "ADC2_EXTI15" bidirectional line) + (alternate "ADC3_EXTI15" bidirectional line) + (alternate "I2S2_SD" bidirectional line) + (alternate "RTC_REFIN" bidirectional line) + (alternate "SPI2_MOSI" bidirectional line) + (alternate "TIM12_CH2" bidirectional line) + (alternate "TIM1_CH3N" bidirectional line) + (alternate "TIM8_CH3N" bidirectional line) + (alternate "USB_OTG_HS_DP" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -22.86 180) + (length 5.08) + (name "PC0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN10" bidirectional line) + (alternate "ADC2_IN10" bidirectional line) + (alternate "ADC3_IN10" bidirectional line) + (alternate "FMC_SDNWE" bidirectional line) + (alternate "USB_OTG_HS_ULPI_STP" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -25.4 180) + (length 5.08) + (name "PC1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "16" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN11" bidirectional line) + (alternate "ADC2_IN11" bidirectional line) + (alternate "ADC3_IN11" bidirectional line) + (alternate "ETH_MDC" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -27.94 180) + (length 5.08) + (name "PC2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "17" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN12" bidirectional line) + (alternate "ADC2_IN12" bidirectional line) + (alternate "ADC3_IN12" bidirectional line) + (alternate "ETH_TXD2" bidirectional line) + (alternate "FMC_SDNE0" bidirectional line) + (alternate "I2S2_ext_SD" bidirectional line) + (alternate "SPI2_MISO" bidirectional line) + (alternate "USB_OTG_HS_ULPI_DIR" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -30.48 180) + (length 5.08) + (name "PC3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "18" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN13" bidirectional line) + (alternate "ADC2_IN13" bidirectional line) + (alternate "ADC3_IN13" bidirectional line) + (alternate "ETH_TX_CLK" bidirectional line) + (alternate "FMC_SDCKE0" bidirectional line) + (alternate "I2S2_SD" bidirectional line) + (alternate "SPI2_MOSI" bidirectional line) + (alternate "USB_OTG_HS_ULPI_NXT" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -33.02 180) + (length 5.08) + (name "PC4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "33" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN14" bidirectional line) + (alternate "ADC2_IN14" bidirectional line) + (alternate "ETH_RXD0" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -35.56 180) + (length 5.08) + (name "PC5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "34" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_IN15" bidirectional line) + (alternate "ADC2_IN15" bidirectional line) + (alternate "ETH_RXD1" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -38.1 180) + (length 5.08) + (name "PC6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "63" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D0" bidirectional line) + (alternate "I2S2_MCK" bidirectional line) + (alternate "SDIO_D6" bidirectional line) + (alternate "TIM3_CH1" bidirectional line) + (alternate "TIM8_CH1" bidirectional line) + (alternate "USART6_TX" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -40.64 180) + (length 5.08) + (name "PC7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "64" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D1" bidirectional line) + (alternate "I2S3_MCK" bidirectional line) + (alternate "SDIO_D7" bidirectional line) + (alternate "TIM3_CH2" bidirectional line) + (alternate "TIM8_CH2" bidirectional line) + (alternate "USART6_RX" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -43.18 180) + (length 5.08) + (name "PC8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "65" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D2" bidirectional line) + (alternate "SDIO_D0" bidirectional line) + (alternate "TIM3_CH3" bidirectional line) + (alternate "TIM8_CH3" bidirectional line) + (alternate "USART6_CK" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -45.72 180) + (length 5.08) + (name "PC9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "66" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DAC_EXTI9" bidirectional line) + (alternate "DCMI_D3" bidirectional line) + (alternate "I2C3_SDA" bidirectional line) + (alternate "I2S_CKIN" bidirectional line) + (alternate "RCC_MCO_2" bidirectional line) + (alternate "SDIO_D1" bidirectional line) + (alternate "TIM3_CH4" bidirectional line) + (alternate "TIM8_CH4" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -48.26 180) + (length 5.08) + (name "PC10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "78" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D8" bidirectional line) + (alternate "I2S3_CK" bidirectional line) + (alternate "SDIO_D2" bidirectional line) + (alternate "SPI3_SCK" bidirectional line) + (alternate "UART4_TX" bidirectional line) + (alternate "USART3_TX" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -50.8 180) + (length 5.08) + (name "PC11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "79" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI11" bidirectional line) + (alternate "ADC2_EXTI11" bidirectional line) + (alternate "ADC3_EXTI11" bidirectional line) + (alternate "DCMI_D4" bidirectional line) + (alternate "I2S3_ext_SD" bidirectional line) + (alternate "SDIO_D3" bidirectional line) + (alternate "SPI3_MISO" bidirectional line) + (alternate "UART4_RX" bidirectional line) + (alternate "USART3_RX" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -53.34 180) + (length 5.08) + (name "PC12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "80" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "DCMI_D9" bidirectional line) + (alternate "I2S3_SD" bidirectional line) + (alternate "SDIO_CK" bidirectional line) + (alternate "SPI3_MOSI" bidirectional line) + (alternate "UART5_TX" bidirectional line) + (alternate "USART3_CK" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -55.88 180) + (length 5.08) + (name "PC13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "RTC_AF1" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -58.42 180) + (length 5.08) + (name "PC14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "RCC_OSC32_IN" bidirectional line) + ) + (pin bidirectional line + (at 25.4 -60.96 180) + (length 5.08) + (name "PC15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "ADC1_EXTI15" bidirectional line) + (alternate "ADC2_EXTI15" bidirectional line) + (alternate "ADC3_EXTI15" bidirectional line) + (alternate "RCC_OSC32_OUT" bidirectional line) + ) + ) + (embedded_fonts no) + ) + ) + (text "See AN4488 to get started" + (exclude_from_sim no) + (at 184.15 34.544 0) + (effects + (font + (size 1.27 1.27) + ) + ) + (uuid "82f61e74-c865-4393-826a-066e2a341f3e") + ) (hierarchical_label "BTN_REBOOT" (shape input) - (at 114.3 139.7 270) + (at 105.41 179.07 270) (effects (font (size 1.27 1.27) @@ -21,7 +2354,7 @@ ) (hierarchical_label "~{JTAG_RESET}" (shape input) - (at 114.3 38.1 90) + (at 34.29 35.56 90) (effects (font (size 1.27 1.27) @@ -43,7 +2376,7 @@ ) (hierarchical_label "UART_TX" (shape output) - (at 142.24 38.1 90) + (at 62.23 35.56 90) (effects (font (size 1.27 1.27) @@ -54,7 +2387,7 @@ ) (hierarchical_label "LED_UPD" (shape output) - (at 142.24 139.7 270) + (at 154.94 179.07 270) (effects (font (size 1.27 1.27) @@ -65,7 +2398,7 @@ ) (hierarchical_label "JTAG_TMS" (shape bidirectional) - (at 119.38 38.1 90) + (at 39.37 35.56 90) (effects (font (size 1.27 1.27) @@ -76,7 +2409,7 @@ ) (hierarchical_label "BTN_WIPE" (shape input) - (at 116.84 139.7 270) + (at 107.95 179.07 270) (effects (font (size 1.27 1.27) @@ -87,7 +2420,7 @@ ) (hierarchical_label "JTAG_TDI" (shape input) - (at 124.46 38.1 90) + (at 44.45 35.56 90) (effects (font (size 1.27 1.27) @@ -98,7 +2431,7 @@ ) (hierarchical_label "LED_PWR" (shape output) - (at 139.7 139.7 270) + (at 152.4 179.07 270) (effects (font (size 1.27 1.27) @@ -109,7 +2442,7 @@ ) (hierarchical_label "LED_ACT" (shape output) - (at 144.78 139.7 270) + (at 157.48 179.07 270) (effects (font (size 1.27 1.27) @@ -131,7 +2464,7 @@ ) (hierarchical_label "JTAG_TCK" (shape input) - (at 116.84 38.1 90) + (at 36.83 35.56 90) (effects (font (size 1.27 1.27) @@ -142,7 +2475,7 @@ ) (hierarchical_label "JTAG_TDO" (shape output) - (at 121.92 38.1 90) + (at 41.91 35.56 90) (effects (font (size 1.27 1.27) @@ -153,7 +2486,7 @@ ) (hierarchical_label "UART_RX" (shape input) - (at 139.7 38.1 90) + (at 59.69 35.56 90) (effects (font (size 1.27 1.27) @@ -173,4 +2506,384 @@ ) (uuid "fa84533f-5191-4139-bd31-6669d829fda6") ) + (symbol + (lib_id "MCU_ST_STM32F4:STM32F427VITx") + (at 120.65 102.87 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "492f8748-c9dd-4fe0-bb34-6c5556772be7") + (property "Reference" "U1" + (at 125.3333 171.45 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "STM32F427VITx" + (at 125.3333 173.99 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_QFP:LQFP-100_14x14mm_P0.5mm" + (at 100.33 168.91 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + (hide yes) + ) + ) + (property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32f427vi.pdf" + (at 120.65 102.87 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "STMicroelectronics Arm Cortex-M4 MCU, 2048KB flash, 256KB RAM, 180 MHz, 1.8-3.6V, 82 GPIO, LQFP100" + (at 120.65 102.87 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MPN" "STM32F427VIT6TR" + (at 120.65 105.41 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Manufacturer" "STMicroelectronics" + (at 120.65 102.87 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "92" + (uuid "e4c4e477-4df4-4d22-8137-7a3809c6a3a2") + ) + (pin "48" + (uuid "e589f154-9286-4327-906d-cfcbabc2ed20") + ) + (pin "99" + (uuid "447c55fd-f080-44d5-9ade-8e60cbe2c7b0") + ) + (pin "6" + (uuid "bc5ece86-6932-465d-8fb3-96d527622132") + ) + (pin "9" + (uuid "244fae6a-9e98-499a-ace9-1ce09c8e7a0e") + ) + (pin "8" + (uuid "02fcc468-73a3-4047-beda-87bebeeba025") + ) + (pin "66" + (uuid "d49ec73f-033a-4e20-95bf-39854d574dbf") + ) + (pin "11" + (uuid "70fed43a-7e2a-4b89-ba1f-e09256b7dedd") + ) + (pin "22" + (uuid "e802dfae-c3a2-4b0d-8229-8bb8b8522018") + ) + (pin "76" + (uuid "4c3961b5-f729-4932-bbe0-56280aba52fa") + ) + (pin "70" + (uuid "2903d135-0c3e-4e73-bded-cd59b65e7d5e") + ) + (pin "87" + (uuid "a947f40e-d1a2-4d06-9eb9-f013a0c915f0") + ) + (pin "19" + (uuid "a8b1c0f1-c3af-4402-bade-8c6256f16fa9") + ) + (pin "80" + (uuid "02b9a60d-dfac-43a4-bd6a-5082d897d4a4") + ) + (pin "86" + (uuid "52fbcef4-5dee-4eb1-935d-931b3f04f6b1") + ) + (pin "39" + (uuid "2838effe-cd57-46fc-8d66-296dedf993eb") + ) + (pin "10" + (uuid "88383fd5-5c3b-4ed1-8946-f4dc542ad054") + ) + (pin "59" + (uuid "59092238-689f-4239-aa98-a6d90ca6e83f") + ) + (pin "32" + (uuid "f007a9ff-b969-44ba-b252-2ccc6bb6f0ae") + ) + (pin "58" + (uuid "2961db49-ca2d-4545-bb6a-66b4af18f94d") + ) + (pin "36" + (uuid "251e434d-20b9-4ea5-8dff-4230f7493345") + ) + (pin "27" + (uuid "ce7b188e-a0c1-4270-b6c7-008f03ca1195") + ) + (pin "57" + (uuid "39d4daca-1ba3-4059-8055-da23f2975c6f") + ) + (pin "1" + (uuid "550e6611-fcde-4cb5-9ac9-1642bc900ebd") + ) + (pin "77" + (uuid "e5ff3c99-6188-4806-a6c7-b673e51b68fe") + ) + (pin "18" + (uuid "a47353ca-4018-47d7-90a8-00c875b1259f") + ) + (pin "95" + (uuid "793262f3-13c3-45a3-8faa-9e2400884ac7") + ) + (pin "38" + (uuid "ad433341-962b-4e0a-bf6d-b6fea2c19633") + ) + (pin "63" + (uuid "64d9fce3-4cb0-49c2-afd9-105d338da8c0") + ) + (pin "68" + (uuid "b5661107-f766-4c36-944e-067090eb2f15") + ) + (pin "78" + (uuid "f62235a3-0419-4c08-9da6-46f639d10a22") + ) + (pin "7" + (uuid "3935ca3c-f812-4727-95e9-dadecd0c0991") + ) + (pin "37" + (uuid "05843a20-ac2f-4dbc-80b2-64dffa0de78c") + ) + (pin "72" + (uuid "0479f1c0-23cd-4067-b96c-e8ddc65c2d2a") + ) + (pin "3" + (uuid "4f229d09-ada9-4e8c-b176-f6d36f45264f") + ) + (pin "30" + (uuid "1e6bae45-5e01-4bf0-a18d-5d2ec8709808") + ) + (pin "69" + (uuid "d59137af-158e-41f0-983a-86e714f0aad7") + ) + (pin "33" + (uuid "55778e22-5558-4006-82e8-5b0f09e2ff4e") + ) + (pin "61" + (uuid "fae60b9e-5c19-43cd-9b7d-5b3241a97831") + ) + (pin "45" + (uuid "e45b7856-2a64-44c0-be85-2c7bfec51717") + ) + (pin "43" + (uuid "627bfaa0-96e7-4025-a603-ead11fe35601") + ) + (pin "40" + (uuid "4caf1a8c-40fc-4bb3-bf0c-cc4d93ef37f2") + ) + (pin "4" + (uuid "3d9ebefa-f59b-4e06-938d-1dd3806d271c") + ) + (pin "83" + (uuid "d4022d04-6001-46a0-ae6e-459fc0fe3f65") + ) + (pin "53" + (uuid "f0a250e3-4d4d-48b2-a3ae-3f6db2df4b41") + ) + (pin "67" + (uuid "15f8da82-96ee-4dcd-97be-c331c670d09a") + ) + (pin "12" + (uuid "e8cf13e6-5fd0-4750-a95f-c368d18ecb7e") + ) + (pin "98" + (uuid "1e8cfcf6-cc76-4680-a5a1-6c8f76564755") + ) + (pin "97" + (uuid "f68fa204-b9f2-4bc5-b296-2da3b7b41264") + ) + (pin "13" + (uuid "1c2cba00-bf11-4091-9dfc-149eb9bb8817") + ) + (pin "21" + (uuid "9c811c3e-e36f-407d-8b65-cc96cfe2efa3") + ) + (pin "94" + (uuid "ae2f126d-8464-403f-9438-0df971e0f204") + ) + (pin "14" + (uuid "5e6686fb-9870-4c13-9418-c9ad8871bf27") + ) + (pin "52" + (uuid "0f3a7e62-c9b9-4ba9-a8be-24cb17048257") + ) + (pin "51" + (uuid "c0bd4607-b468-4695-a75e-4556bb0094f5") + ) + (pin "23" + (uuid "1d346cd4-81d2-4fd3-bee8-1a6ad366a2cb") + ) + (pin "100" + (uuid "fa7de910-9474-4b02-962c-17453a5f154e") + ) + (pin "15" + (uuid "d493a4b5-1d57-4f14-b0cf-73664b02fc10") + ) + (pin "28" + (uuid "1548f5e8-da80-4288-9b2c-a38d4803de1e") + ) + (pin "5" + (uuid "129c2caf-3c43-4437-b059-baecfcab4286") + ) + (pin "60" + (uuid "fe65aed0-c2b8-4f16-a135-ef6b654502d6") + ) + (pin "35" + (uuid "fbf675cc-c3b0-4daa-9dad-25bef691f099") + ) + (pin "96" + (uuid "ebba91a6-f183-426c-8799-c16680169d65") + ) + (pin "55" + (uuid "f805788e-8802-4ab0-9c51-1867b993cf81") + ) + (pin "84" + (uuid "b48c5bb8-28e1-4ab6-a0ec-d94bab6586d9") + ) + (pin "73" + (uuid "35967f2b-6e7c-4aa1-a594-7ad9abc5da85") + ) + (pin "71" + (uuid "88260419-7ff4-495c-a186-1a0e7d3a8c63") + ) + (pin "54" + (uuid "26dcd4ca-b3bf-45b4-b8e7-ccb19970bd9e") + ) + (pin "42" + (uuid "09e62a1b-53ae-4eb8-809c-64e68ed81c69") + ) + (pin "47" + (uuid "c6fc5476-19fd-435e-a463-881c93804e9d") + ) + (pin "91" + (uuid "d02d4056-fe2e-4daa-a143-c204b1bf37ea") + ) + (pin "74" + (uuid "3417c800-b462-438d-a01f-f44f95701fa0") + ) + (pin "46" + (uuid "55e8539e-2e12-4ae9-90f5-e4621301863d") + ) + (pin "62" + (uuid "ac2d1c2f-c9cf-42fd-ac51-839b403c7301") + ) + (pin "88" + (uuid "06c3cf56-13be-412b-a237-a0d81a74776c") + ) + (pin "85" + (uuid "9c60823c-a7d0-40d6-92f7-e004ff5bc1ef") + ) + (pin "56" + (uuid "d594f236-7eb2-40b8-b825-583db410fa20") + ) + (pin "89" + (uuid "38e3a7c2-95eb-4b4a-bc8d-bbf473caa7c6") + ) + (pin "25" + (uuid "caed367f-2304-4e0b-bc72-91f4230b17e2") + ) + (pin "24" + (uuid "c2e8512b-4396-46fe-b4e2-3f8582201e40") + ) + (pin "90" + (uuid "ec58a3b6-da4c-45f1-ae00-6c0c64654711") + ) + (pin "49" + (uuid "1a055044-8224-4cc3-a1d0-fb096c7514a8") + ) + (pin "34" + (uuid "cc142d85-c151-4d1d-8e47-3063ca34ad65") + ) + (pin "44" + (uuid "29edf8b5-d32e-4513-aecc-97229a7e9b3f") + ) + (pin "93" + (uuid "990e0d4b-69a5-4cc1-83e7-32e0bd3c5d39") + ) + (pin "75" + (uuid "ee6ea2b1-ab95-421e-ae26-ecbd1e522a74") + ) + (pin "64" + (uuid "10658c1a-bb4e-4577-8c91-0415c41c65f3") + ) + (pin "29" + (uuid "e7895fc0-5283-42c4-99d2-cc7b8e7f0f5f") + ) + (pin "20" + (uuid "076f5566-5c99-472d-8f89-7a9f86b5a0a9") + ) + (pin "41" + (uuid "55c5213b-38ac-430e-a202-825f937f1767") + ) + (pin "2" + (uuid "b1f20a59-96d6-4148-b780-935fbe64f61a") + ) + (pin "82" + (uuid "043494cc-e4d2-4aed-bb53-f8e1ea43edb6") + ) + (pin "79" + (uuid "b3520875-78ad-4332-a117-21758f1a696a") + ) + (pin "31" + (uuid "abfa66ef-f9f2-471d-b941-e88366a6554c") + ) + (pin "65" + (uuid "1bc89573-5e09-4c25-bea3-3c6f17a8d2a7") + ) + (pin "81" + (uuid "599b4cd4-767f-43d0-aecd-18b1a328488b") + ) + (pin "16" + (uuid "b4c5a137-2ad8-4076-951c-d7327bff27c8") + ) + (pin "26" + (uuid "536b12dc-aebf-44dd-ac4f-3965f2fb06a4") + ) + (pin "50" + (uuid "ef7cb854-ad7b-4bda-b033-17dd2a7c56a8") + ) + (pin "17" + (uuid "cb873fee-b490-4aef-bbb5-33682c40daaa") + ) + (instances + (project "" + (path "/5defd195-0277-4d04-9f5f-69e505c9845c/9e600826-010a-409d-9a37-ea8e6fbe6058" + (reference "U1") + (unit 1) + ) + ) + ) + ) ) diff --git a/simple.css b/simple.css new file mode 160000 +Subproject 9f62bf3630812239712693886af032311c2dfa3 diff --git a/cmake/LICENSE.txt b/tools/LICENSE.txt index d0a1fa1..d0a1fa1 100644 --- a/cmake/LICENSE.txt +++ b/tools/LICENSE.txt diff --git a/tools/build_zephyr.py b/tools/build_zephyr.py new file mode 100755 index 0000000..1d9e783 --- /dev/null +++ b/tools/build_zephyr.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + + +# 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/. + + +import argparse +import multiprocessing +import shutil +import subprocess +import pathlib + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Build a Zephyr GNU Make build", + ) + + parser.add_argument("-B", "--build-tree", required=True) + parser.add_argument("-b", "--binary-name", required=True) + parser.add_argument("-n", "--target-name", required=True) + + args = parser.parse_args() + + build_tree = pathlib.Path(args.build_tree) + output_dir = build_tree.parent + + subprocess.run( + [ + "make", + f"-j{multiprocessing.cpu_count()}", + "-C", + f"{str(build_tree)}", + ], + shell=False, + check=True, + ) + + shutil.copy( + build_tree / "zephyr" / args.binary_name, + output_dir / args.target_name + ) + + +if __name__ == "__main__": + main() diff --git a/tools/configure_zephyr.py b/tools/configure_zephyr.py new file mode 100755 index 0000000..e709063 --- /dev/null +++ b/tools/configure_zephyr.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 + + +# 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/. + + +import argparse +import subprocess + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Configure a Zephyr CMake build", + ) + + parser.add_argument("-S", "--source-tree", required=True) + parser.add_argument("-B", "--build-tree", required=True) + parser.add_argument("-b", "--board", required=True) + parser.add_argument("-z", "--zephyr-base", required=True) + parser.add_argument("-m", "--zephyr-modules", required=False) + parser.add_argument("-c", "--extra-config", required=False) + parser.add_argument("-k", "--signing-key", required=False) + parser.add_argument("--prefix", required=False) + parser.add_argument("--libdir", required=False) + parser.add_argument("--bindir", required=False) + + args = parser.parse_args() + + command = [ + "cmake", + f"-S{args.source_tree}", + f"-B{args.build_tree}", + f"-DBOARD={args.board}", + f"-DZEPHYR_BASE={args.zephyr_base}", + ] + + if args.zephyr_modules is not None: + command.append(f"-DZEPHYR_MODULES={args.zephyr_modules}") + + if args.extra_config is not None: + command.append(f"-DEXTRA_CONF_FILE={args.extra_config}") + + if args.signing_key is not None: + command.append(f"-DCONFIG_BOOT_SIGNATURE_KEY_FILE=\"{args.signing_key}\"") + + subprocess.run(command, shell=False, check=True) + + +if __name__ == "__main__": + main() diff --git a/tools/deploy.py b/tools/deploy.py new file mode 100755 index 0000000..26048e8 --- /dev/null +++ b/tools/deploy.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + + +import argparse +import subprocess +import pathlib + + +SCRIPT = pathlib.Path(__file__) +SOURCE_ROOT = SCRIPT.parent.parent.resolve() +ARTIFACTS_DEFAULT = SOURCE_ROOT / "build" / "artifacts" + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Use OpenSSH and rsync to deploy artifacts", + ) + + parser.add_argument( + "-a", + "--artifacts", + default=ARTIFACTS_DEFAULT, + help="local path to artifacts folder", + ) + parser.add_argument( + "-H", "--host", default="cloud", help="target `Host` name from ~/.ssh/config" + ) + parser.add_argument( + "-p", + "--path", + default="/srv/http/deploy.xengineering.eu/public/git/iot-contact/main/", + help="remote path to destination folder on server", + ) + parser.add_argument( + "-d", + "--dry-run", + action="store_true", + help="do not execute command and instead print it", + ) + + args = parser.parse_args() + + command = [ + "rsync", + "-av", + "--delete", + f"{str(pathlib.Path(args.artifacts).resolve())}/", + f"{args.host}:{args.path}", + ] + + if args.dry_run: + print(command) + else: + subprocess.run(command, shell=False, check=True) + + +if __name__ == "__main__": + main() diff --git a/tools/meson.build b/tools/meson.build new file mode 100644 index 0000000..85ddbb3 --- /dev/null +++ b/tools/meson.build @@ -0,0 +1,2 @@ +configure_zephyr = meson.current_source_dir() / 'configure_zephyr.py' +build_zephyr = meson.current_source_dir() / 'build_zephyr.py' 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/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/index.html b/web/index.html new file mode 100644 index 0000000..b31dcea --- /dev/null +++ b/web/index.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" type="text/css" href="simple.css"> + <title>IoT contact</title> + </head> + <body> + <main> + <h1>IoT contact</h1> + + <h4>Printed circuit board</h4> + <ul> + <li><a href="iot-contact.kicad_pcb">iot-contact.kicad_pcb</a></li> + <li><a href="schematic.pdf">schematic.pdf</a></li> + <li><a href="bill-of-materials.csv">bill-of-materials.csv</a></li> + </ul> + + <h4>Firmware</h4> + <ul> + <li><a href="application.signed.bin">application.signed.bin</a></li> + <li><a href="bootloader.bin">bootloader.bin</a></li> + <li><a href="simulation-linux-amd64.exe">simulation-linux-amd64.exe</a></li> + </ul> + </main> + </body> +</html> diff --git a/web/meson.build b/web/meson.build new file mode 100644 index 0000000..f8c2024 --- /dev/null +++ b/web/meson.build @@ -0,0 +1,6 @@ +website = fs.copyfile( + meson.current_source_dir() / 'index.html', + 'index.html', + install: true, + install_dir: '/', +) |