summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2 dayspcb: Remove resistors for ESD protectionxengineering
It is hard to say if these are necessary. For sure they are not necessary anymore when the device is assembled inside the case. Thus the risk is taken to provide some more space and reduce assembly effort.
2 dayspcb: processor: Add MAC EEPROMxengineering
This chip provides a globally unique EUI-48 MAC address. This address will be printed on the device enclosure. The IPv6 link-local address of the device can be directly calculated from this MAC address. Thus a commissioning software can directly access the device when the user types in this MAC address without any discovery protocol.
3 dayspcb: io: Add required voltage dividersxengineering
They are required to drive the transistors properly.
3 dayspcb: Use red LED for error indicationxengineering
The idea of the red LED used to be to indicate power delivery to the board independent of firmware. While this is good to know it adds the constraint that even without firmware the LED should light up. Furthermore it should stop lighting up when the firmware takes over the blinking with different colors. This was solved with a NOT gate. This adds more parts to the assembly at the cost of rare space. To reduce space consumption this feature is removed. The effect is that the user cannot distinguish anymore if the board has an issue with power supply or with not running firmware. This is acceptable because the user cannot do anything about both issues. Developers have the chance to e.g. connect the UART to validate if the firmware is running.
3 dayspcb: Remove reset buttonxengineering
It is required to save as much place as possible on the PCB. There used to be these reset methods: - JTAG reset - button reset - power-cycle - firmware-based reset Taking away the button reset option is reasonable since for the development and production use case there are still enough options. Developers should use the JTAG reset or power-cycle and users will anyway use firmware-based resets (e.g. during updates) or power-cycles which is anyway most intuitive to users.
3 dayspcb: Solve external and PoE power supplyxengineering
Now there are 6 locations for 3 zero Ohm resistors. Three places to power by PoE and three to power externally. Never all of them should be placed.
3 dayspcb: Add F1 to protect AC devicesxengineering
3 dayspcb: power: Add 5V supply based on external inputxengineering
3 daysgitignore: Add `datasheets`xengineering
This folder contains datasheets of the components. Because of unclear license situation they are ignored to avoid legal issues on re-distribution.
3 daysdoc: api: Add README.md and flatten future.md structurexengineering
This makes it later possible to diff the planned `current.md` with the `future.md`. When the firmware is feature-complete the diff should be empty.
3 daysdoc: api: future: Add first draftxengineering
3 daysdoc: Add CC-BY-SA licensexengineering
3 dayspcb: Connect RMII, MDIO and PHY resetxengineering
4 dayspcb: Add NOT-logic for power LEDxengineering
The status LED should always display on color either constantly on or blinking. To make sure even without firmware this is given a NOT gate is added.
5 dayspcb: Switch to one RGB LEDxengineering
This is more space efficient and makes it easier to label the LEDs. There is just one "status LED" lighting up in different colors compared to one "update LED", "power LED" and "activity LED".
5 dayspcb: io: Add first draft for normally open contactxengineering
5 dayspcb: io: Finish draft for motor controlxengineering
5 dayspcb: Move version detection to processor schematicxengineering
5 dayspcb: io: Add 230 VAC logicxengineering
5 dayspcb: Switch to three wire connectorsxengineering
5 dayspcb: Draw Edge.Cuts outlinexengineering
5 dayspcb: ethernet: Add initial schematicxengineering
2025-05-28pcb: processor: Add TODO for MAC EEPROMxengineering
2025-05-25pcb: processor: Finish first schematicxengineering
2025-05-24Merge PCB and versioning improvementsxengineering
- deploy `iot-contact.kicad_pcb` file for easy ordering - add PCB versioning and process to update it
2025-05-24Add RELEASE.mdxengineering
To allow features like PCB version detection the version encoding requires manual intervention. A release checklist like this allows to reliably execute such tasks.
2025-05-24pcb: Add versions.tsv and reserve v0.1.0-pre1xengineering
This table is the result of running: ./tools/resistor_selector.py --output pcb/versions.tsv Additionally the table was manually edited. The first column now contains version strings to reserve resistor combinations. This is used to keep track of existing versions, their resistor values and related ADC values. The latter will be added to the firmware too.
2025-05-24pcb: Invert button signalsxengineering
Making them active-low makes it easier to reset the MCU. For the wipe functionality it does not make a role since it will simply be defined in Devicetree.
2025-05-24pcb: Add voltage divider for PCB versioningxengineering
This voltage divider provides an analog voltage between GND and +3.3V to indicate which hardware revision this board is. Thus the same firmware image can be used on multiple PCB versions compensating the hardware differences in software. The resistor combinations are calculated by `tools/resistory_selector.py`.
2025-05-24tools: resistor_selector: Raise precision to 6xengineering
This had an actual effect on the output giving more available options.
2025-05-24pcb: Replace J6 & J7 by bigger J5xengineering
This reduces the electrical contacts which is possible and necessary because of size constraints.
2025-05-24pcb: gitignore: Add _autosave*kicad*xengineering
These files seem to be present since KiCad 9.0 and should not be tracked with version control.
2025-05-24pcb: U1: Add STM32F427VIT6TRxengineering
2025-05-24web: Deploy iot-contact.kicad_pcbxengineering
This can be used to order the PCB depending on the manufacturers software capabilities.
2025-05-24Merge build system improvementsxengineering
- remove flash targets (replaced by easy to flash `factory-image.bin`) - replaced installation step by copy targets - provide `factory-image.bin` and `update-image.bin`
2025-05-24artifacts: Provide `{factory,update}-image.bin`xengineering
This presents only the `factory-image.bin` and `update-image.bin` for MCU firmware. A separate bootloader image is not available. The reason is that the `factory-image.bin` is used during production once (flashing at default boot address) to set up the device. Later only the `update-image.bin` of future versions would be required to remotely update devices.
2025-05-24Remove redundant file name in Meson codexengineering
2025-05-24Provide `factory-image.bin` with Mesonxengineering
This automatically creates `build/artifacts/factory-image.bin` with the Meson build system. The resulting file can simply be moved to the virtual file system of the `nucleo_f767zi` board to flash bootloader and application making the board ready for operation and remote updates.
2025-05-24tools: Add `make_factory_image.py`xengineering
This script combines a bootloader firmware and a signed and confirmed MCUboot application firmware to one factory image which can be loaded to the default boot address of the microcontroller.
2025-05-24tools: Format Python scripts with `black`xengineering
2025-05-24fw: app: Provide confirmed image in build treexengineering
This prepares the upcoming `factory-image.bin` which can be flashed to the default boot address of the microcontroller.
2025-05-24Remove installation stepxengineering
Using the installation step to copy selected artifacts into one folder was anyway a hack. This commit shows that the complexity can be reduced by adding copy targets. The `build/artifacts` folder contains the selected artifacts, they are always up to date, the user does not have to call the install step separately and the target definitions do not require install-related keyword arguments.
2025-05-24Remove `st-flash`-based build targetsxengineering
This was used since flashing was complex. Thus the build system should help making it easier. The new approach is more to provide artifacts by the build system which are easy to flash / remote-update. A `factory-image.bin` and `update-image.bin` should be provided.
2025-05-24tools: Add `resistor_selector.py`xengineering
This tool helps to select resistors for voltage dividers indicating PCB versions.
2025-05-24Revert "fw: app: Enable CONFIG_NO_OPTIMIZATIONS"xengineering
This reverts commit 184a41809c66868992c90ce9d420b8e4dc46253b. The change worked well for the `native_sim` board. Nevertheless the application firmware for the real microcontroller was not usable at all anymore. This regression is fixed by simply reverting the commit. Later it could be introduced only for the `native_sim` board with an overlay.
2025-05-07Merge branch 'settings'xengineering
This adds the HTTP GET /settings.json API. Writing settings is only supported via the Zephyr shell.
2025-05-07fw: app: Enable CONFIG_NO_OPTIMIZATIONSxengineering
This disables compiler optimization and allows easier debugging.
2025-05-07fw: app: http: Refactor settings handlerxengineering
2025-05-07fw: app: http: Set settings content type to text/jsonxengineering
2025-05-07fw: app: Encode settings with JSON libxengineering