summaryrefslogtreecommitdiff
path: root/pcb
AgeCommit message (Collapse)Author
5 dayspcb: Fail build in case of bad ERCxengineering
The electrical rules check already found multiple significant hardware design issues. Thus the build has to fail to indicate these issues early.
5 dayspcb: Add TODO for RJ45 connectorxengineering
Adding this TODO text and marking the termination and shielding related pins as unconnected makes the ERC clean. This allows to right now fail the build in case of bad ERC. This is preferred to not unintentionally inject other issues. The RJ45 connector and shielding / termination has to be reworked anyway.
5 dayspcb: power: Add DC fusexengineering
While the AC fuse is more critical it still might be a good idea to not completely rely on the fuse of the PoE PSE.
6 dayspcb: Use `kicad-cli` with Meson `find_program()`xengineering
This gives better user feedback when the program is not available (as currently in the latest Debian stable version).
6 dayspcb: Add ERC report to build and deploy treesxengineering
The report of the KiCad electrical rules check (ERC) is added with this commit to the default build and also written to the deploy tree. Since there are still minor issues a failing ERC will not yet break the build. This will be introduced later by adding the `--exit-code-violations` flag to the `kicad-cli sch erc` call.
7 dayspcb: power: Fix missing pull-up on regulator ENxengineering
The +3.3V regulator has an enable (EN) pin. This was connected to the power-good (PG) output of the +5V regulator. It was overlooked that the PG pin is an open-collector pin and thus a pull-up resistor is required. This issue was found with the KiCad electrical rules check (ERC).
7 dayspcb: processor: Fix missing pull-up on STM32 RESETxengineering
This is a significant design bug which would leave the RESET line of the MCU in a floating state. Thanks to ERC this is detected early.
7 dayspcb: Fix +3V3 and +3.3V confusionxengineering
ERC brought up that those two global power labels were mixed. This is of course a design bug which is now fixed by consistently using +3.3V.
7 dayspcb: Remove 4-pin blind connectorxengineering
The old concept was to have three connectors: - 2-pin for contact loop - 3-pin for AC supply (PE, N, L) - 4-pin for blind connection (PE, N, L_UP, L_DOWN) The new concept is: - 2-pin for contact loop - 3-pin for AC supply (L) and blind connection (L_UP, L_DOWN) This saves the PCB space for one of the biggest parts. Furthermore it reduces space constraints for the PCB routing. The removed neutral and protective earth pins should not be a problem. It is less convenient for mounting since additional connectors between the supply and blind cable are required but apart from that N and PE would not have safety benefits in the current design. This used to be different when an aluminium case was considered at least as option. But the requirements for PE connection of the two halves of the housing would have a huge space requirement. Thus an anyway cheaper plastic case is the current goal.
8 daysOnly build tar archive by defaultxengineering
Everything else is implicitly build by default since it should contribute to the tar archive.
9 dayspcb: power: Add `PWR_FLAG` symbolsxengineering
This resolves ERC issues. The ERC complains that an power input is not fed by a power output if there is a component like a ferrite bead or 0 Ohm resistor between the two. The `PWR_FLAG` tells the ERC that it was explicitly checked that this is not a mistake.
9 dayspcb: Fix open line ERC issuexengineering
9 dayspcb: Select fuse holderxengineering
9 dayspcb: Remove wipe button pull-up resistorxengineering
The internal pull-up resistor of the STM32 can be used.
9 dayspcb: Reset part annotationsxengineering
9 dayspcb: power: Add 3.3 V regulatorxengineering
9 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.
9 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.
10 dayspcb: io: Add required voltage dividersxengineering
They are required to drive the transistors properly.
10 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.
10 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.
10 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.
10 dayspcb: Add F1 to protect AC devicesxengineering
10 dayspcb: power: Add 5V supply based on external inputxengineering
10 dayspcb: Connect RMII, MDIO and PHY resetxengineering
11 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.
11 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".
11 dayspcb: io: Add first draft for normally open contactxengineering
11 dayspcb: io: Finish draft for motor controlxengineering
11 dayspcb: Move version detection to processor schematicxengineering
12 dayspcb: io: Add 230 VAC logicxengineering
12 dayspcb: Switch to three wire connectorsxengineering
12 dayspcb: Draw Edge.Cuts outlinexengineering
12 dayspcb: ethernet: Add initial schematicxengineering
2025-05-28pcb: processor: Add TODO for MAC EEPROMxengineering
2025-05-25pcb: processor: Finish first schematicxengineering
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-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-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-04-07Simplify website structure and drop Hugoxengineering
A static site generator is currently not really required. A static index.html is currently sufficient.
2025-04-05web: Replace file copying by Meson installationxengineering
This makes the build system code way less hacky and more modular.
2025-04-05Deploy schematic and BOM to websitexengineering
These important design files should be deployed with the website.
2025-04-05pcb: Switch from CMake to Mesonxengineering
This allows to install the PCB-related files easier to the website which is built with Meson.
2025-04-01pcb: gitignore: Add *-backupsxengineering
KiCad based on the not committed user settings saves backups in iot-contact-backups. Excluding those backups from Git is important to not double-track changes.
2025-04-01pcb: Update to KiCad 9.xxengineering