Skip to content

Conversation

JensOgorek
Copy link
Contributor

@JensOgorek JensOgorek commented Jun 17, 2025

This is the updated version of an External Expander module (from #131). Since the changes were quite significant, it moved to its own branch and will get its own pull request.
This should work for multiple Plexus, but will be verified later.
The main difference between the original External Expander and the Plexus Expander is that we use RS485 chips between them to handle the communication.

  • Adapt code from External Expander to fit Plexus expander
  • simplify Id from 1-9
  • update UART communication for RS485 module build in
  • automatic activation of "external mode"
  • Successful test on breadboard
  • Successful test with the ESP32s3 (Plexus ESP) being connected to p0 instead of core
  • Successful test on Robotbrain with Zauberzeug Plexus Module (core -> p0 -> plexus)
  • verify double message inside broadcast with same timestamp -> broadcast now working with run_step correctly
  • update proxy to be chainable, when used with an expander
    • a = plexus.Input(12) for example
    • working correctly with core -> plexus
    • modify proxy module to work with chained proxies
    • working correctly with core -> p0 -> plexus
  • OTA over UART
    • OTA over UART for Core ESP
    • Increase OTA performance
    • OTA over UART to p0
    • OTA over UART with data verification to p0
    • OTA over UART for Plexus with different firmware (for ESP32s3)
    • fixed functionality (bridges)
  • review & refactor
    • Remove debug code
  • Extra features
    • add addressing to ota flashing (for Plexus)
    • fix restarting (Plexus)
    • keep adressing mode active after restart
    • test updated plexus flashing
  • check if core -> p0 -> plexus remain stable
  • documentation
    • update documentation with extra features
    • update tools.md

This will be updated to work more or less standalone. See #158


Based on Feature request: #34

Future updates:

  • verify multiple Plexus connected to 1 Esp with the same UART port

@JensOgorek JensOgorek added this to the 0.8.0 milestone Jun 17, 2025
@JensOgorek JensOgorek self-assigned this Jun 17, 2025
@JensOgorek JensOgorek added the enhancement New feature or request label Jun 17, 2025
@JensOgorek JensOgorek changed the title Plexus expander Add Plexus expander module Jun 17, 2025
@JensOgorek JensOgorek marked this pull request as ready for review September 1, 2025 14:13
@JensOgorek JensOgorek mentioned this pull request Sep 1, 2025
12 tasks
@falkoschindler
Copy link
Collaborator

Without reviewing the code in detail, the PR can be roughly summarized as follows:

  • new Expandable base class
  • new PlexusExpander module (runs on core ESP or expander)
  • expander chaining is made possible
  • addressing other ESPs
  • over-the-wire update via UART

In view of discussion #158 we chose to rethink the whole concept of multiple ESPs on a serial bus and came up with a concept which doesn't rely on one ESP controlling all processes and communication on all other ESPs. It can be implemented as extension of this PR or as a completely new one. But major parts of the code can be recycled. See #158 (comment).

@JensOgorek JensOgorek modified the milestones: 0.8.0, 0.9.0 Oct 8, 2025
@JensOgorek JensOgorek marked this pull request as draft October 9, 2025 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants