Splitflap large-scale driver project

Goal

Drive 120 modules easily from a single USB port, with full per-module status feedback.

Requirements

  • Drive 120 modules from a single USB port
  • Full status feedback from every module to the controller (error counts and current fault status)
  • Multi-color status LED per module for ease of identifying issues
  • Easy to assemble

Nice-to-haves

  • Additional fault monitoring
  • current draw
  • temperatures of drivers and/or a subset of motors?
  • motor supply voltage
  • Cheaper than 10 Arduino Unos + 30 driver PCBs

Current Plan of Record

Github branch: esp32controller

Open questions are checkboxes below.

  • Single ESP32 “master” board
  • Driver board
  • Cables
  • Power
  • 12V screw terminal
  • 5V screw terminal
  • GND screw terminal
  • Data
  • Clock
  • Motor data
  • Motor latch
  • Sensor data
  • Sensor latch
  • LED
  • Output enable
  • 74HCT595 shift registers (2x) + TPL7407L drivers (3x) (pending validation) for output
  • 74HCT165 shift register (1x) for sensor input
  • Shared clock line (but output + input separately as half-duplex, so 74HCT165 runs with SPI Mode 2 and 74HCT595 runs with SPI Mode 0)
  • 74HCT244 [schmitt-trigger? only on nexperia parts?] buffer (1x)
  • out latch
  • in latch
  • output-enable (w/ pull-up/down to default to off)
  • clock
  • MOSI (doesn’t need to be buffered, but good idea to keep it in sync with clock?)
  • WS2812b leds (4x)
  • 12V screw terminals - input + “thru” output for chaining a few together
  • Temperature limits - NTC per motor, alerts in pairs
  • TBD NTC per motor