# iot-contact iot-contact is an IoT device to check if doors and windows are closed or open. Furthermore roller shutter motors should be controlled. ## Usage The firmware for iot-contact is cryptographically signed to only allow the device booting a firmware from a trusted source. The required key with both the private and the public part can be generated like this: ``` ./fw/zephyrproject/bootloader/mcuboot/scripts/imgtool.py \ keygen \ --key ~/mcuboot/key.pem \ --type ed25519 ``` The content of this repository can be build with CMake and Ninja. The signing key is passed to include the public part into the bootloader and used to sign the application firmware: ``` cmake -Bbuild -GNinja -DKEY=~/mcuboot/key.pem ninja -C build ./fw/sign.sh ~/mcuboot/key.pem ``` Exported files related to the printed circuit board (PCB) can be found in the build folder. ``` tree build/pcb ``` The resulting firmware can be flashed via a ST-LINK debugger / programmer. ``` st-flash --connect-under-reset write build/fw/bootloader/zephyr/zephyr.bin 0x8000000 st-flash --connect-under-reset write build/fw/zephyr/zephyr.bin.signed 0x8040000 ``` UART shell output can be retrieved with `picocom`. ``` picocom -b 115200 /dev/ttyACM0 ``` Finally the firmware can be erased from the device with the ST-LINK. ``` st-flash --connect-under-reset erase ``` [1]: https://docs.kicad.org/