Skip to content

IoT + More Test Panel#408

Merged
ducky64 merged 125 commits intomasterfrom
funparts
Jul 9, 2025
Merged

IoT + More Test Panel#408
ducky64 merged 125 commits intomasterfrom
funparts

Conversation

@ducky64
Copy link
Copy Markdown
Collaborator

@ducky64 ducky64 commented Jun 10, 2025

A panel of mostly misc IoT devices, meant to be a fabrication test of the recent compiler and infrastructural changes. And the sublayout KiCad plugin.

Top-level boards:

  • add BLE joystick
  • replace can-adapter with OBD adapter
  • add IoT rollerblinds and curtain crawler, all variations on a IoT brushed-DC motor driver
  • replace IoT LED driver with a puck design and higher frequency LED drivers

Library additions:

  • Change JLC postprocessing script to support merging BoMs, for panelization
  • Add SeriesPowerFuse to support non-PPTC fuses
  • Add base categories MagneticSensor and MagneticSwitch, distinct from Magnetometer which has a analog response
    • Add A1304 linear hall-effect sensor
    • Add AH1806 hall effect switch
  • Add I2C bitbang adpater, to convert digital lines to I2C lines
  • Add Nano2 fuseholder
  • Add XBox Elite joystick block and footprint
  • Add TPS92200 buck LED driver, higher frequency (and smaller inductor) than the current one
  • Add DRV8870 DC motor driver
  • Add JST XH, Molex Picoblade connectors.
  • Add JST PH connector super-class.
  • Add J1962 (OBDII) footprint
  • Add Mp2722 bidirectional buck converter for single-cell LiIon

Fixes:

  • Add optional signal_out_abs to AnalogSource.from_supply
  • MCP73831: make stat output line optional
  • Add CAN (TWAI) to ESP32C3

TODO:

  • JstPhSmVerticalJlc should inherit JsPhSmVertical
  • A1304 should be magnetometer type
  • unify switching buck LED drivers
  • delete I2cControllerBitBang.digital_external_from_link - unreferenced
  • deprecate SeriesPowerPptcFuse
  • add MP2722, possibly as separate PR
  • use MP2722, in BLE joystick
  • jlc_postprocess script should take and merge optional BoMs separately
  • integrate buck / boost converter refactors
  • future PR: clean up categories (again)

@ducky64 ducky64 marked this pull request as ready for review July 9, 2025 08:12
@ducky64 ducky64 requested a review from Copilot July 9, 2025 08:12
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds and updates IoT device example panels, including LED drivers, roller blinds, curtain crawlers, CAN/OBD adapters, and a BLE joystick. It also extends the JLC postprocessing script to merge multiple BOMs for panelization and includes KiCad prerouted blocks and footprint updates.

  • Introduce new board topologies and connectors for various IoT devices
  • Refactor example scripts to use shared connectors and dummy sinks, and update refinements
  • Enhance jlcpcb_pcba_postprocess.py to support merging multiple BOM CSV files

Reviewed Changes

Copilot reviewed 70 out of 75 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
examples/test_iot_led_driver.py Use solder‐pad sinks instead of connectors; add generic Qwiic expansion; update refinements
examples/test_iot_blinds.py New roller blinds and curtain crawler board examples with power in/out connectors and tests
examples/test_can_adapter.py Replace legacy CAN adapter with OBD2 connector and unified transceiver setup
examples/test_ble_joystick.py Add BLE joystick example using MP2722 charger and Arduino‐style joystick mappings
examples/jlcpcb_pcba_postprocess.py Add --merge_boms option to merge multiple BOMs into one for panelization
examples/prerouted_blocks/*.kicad_pcb Add and tweak prerouted KiCad PCB blocks for TPS54202 variants
examples/edg.pretty/*.kicad_mod Add new QFN‐22 footprint file
Comments suppressed due to low confidence (3)

examples/jlcpcb_pcba_postprocess.py:11

  • [nitpick] CLI options conventionally use hyphens; consider renaming --merge_boms to --merge-boms for consistency with common argparse style.
parser.add_argument('--merge_boms', type=str, nargs='*',

examples/jlcpcb_pcba_postprocess.py:186

  • The new --merge_boms feature would benefit from an updated module docstring or top‐level usage comment explaining its behavior.
  if args.merge_boms:

examples/test_iot_led_driver.py:68

  • [nitpick] Inline comment is a bit terse; consider clarifying that this pin is used for power‐good sensing or monitoring.
      self.connect(self.qwiic.pwr.as_digital_source(), self.mcu.gpio.request('qwiic_pwr'))  # as sense line

from edg import *


class PowerInConnector(Connector):
Copy link

Copilot AI Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar PowerInConnector exists in test_iot_blinds.py; consider extracting shared connectors into a common module to reduce duplication.

Copilot uses AI. Check for mistakes.
@ducky64 ducky64 merged commit 0354529 into master Jul 9, 2025
12 checks passed
@ducky64 ducky64 deleted the funparts branch July 9, 2025 08:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants