Skip to content

projects/ janelia/ Mouse Joystick/

pycontrol_behavior_port_rj45_boundary_vertical

Block orb_weaver_private:pycontrol_behavior_port_rj45_boundary_vertical placed in / of mouse-joystick-pcb. pyControl behavior-port boundary on a VERTICAL, top-entry SHIELDED 8P8C RJ-45 jack: Molex 855085001, OW-CONN-RJ45-8P8C-THT-VERT, Cat5e, 16.5 mm tall, 1.5 A per contact, through-hole signal contacts plus two through-hole shell legs and two locator pegs.

Lifecycle routed
Family none (a private block)
Placement anchor (-39.98, -8) mm, rotation 270°, front side; as built: -39.98, -8 is off the 1 mm grid (review)
Sheet pycontrol_behavior_port_rj45_boundary_vertical.kicad_sch; sheet pins: the board's own arrangement
Drawing mouse-joystick-pcb-pycontrol_behavior_port_rj45_boundary_vertical.svg

On the Board

pycontrol_behavior_port_rj45_boundary_vertical on the board

Block 5 of the board view: 23.2 × 17.0 mm on the top side, its centre 38.4 mm left of and 8.0 mm above the board centre (X right, Y up, as the enclosure tables); 9 footprints. The picture is the top render clipped around the block, the rectangle the extent of its footprints' courtyards.

Description

pyControl behavior-port boundary on a VERTICAL, top-entry SHIELDED 8P8C RJ-45 jack: Molex 855085001, OW-CONN-RJ45-8P8C-THT-VERT, Cat5e, 16.5 mm tall, 1.5 A per contact, through-hole signal contacts plus two through-hole shell legs and two locator pegs. NOT Ethernet and no magnetics — the jack is a connector family, nothing more. The same front end as the horizontal pycontrol_behavior_port_rj45_boundary block: pin map 1 DIO-A, 2 GND, 4 DIO-B, 6 5V with pins 3, 5, 7, 8 explicitly no-connect; 100 ohm series resistance and a USBLC6-2P6 channel on both DIO lines, with the clamp on the connector side of the resistors and each line routing in one I/O pad and out the other; 100nF on the raw 5 V node; and the same 5 V branch exposing PYC_CONN_5V, the raw pin-6 node, and +5V_PYC, the same node through R32003 and a MBR120VLSFT1G series Schottky, for diode-ORing with other 5 V sources — pair it with usb2_vertical's +5V_USB. WATCH THE DIRECTION: pin 1 DIO-A carries the host's transmit and is the DEVICE'S RX; pin 4 DIO-B is the device's TX. Boundary pins are named by connector position, not by direction, so a board cannot mirror them by accident. R32003 IS A POLYFUSE POSITION, not protection: the pyControl port supplies a shared 1.0 A that also feeds the controller's own logic regulator, with no per-port fuse, so a fault on the board can reset the experiment controller. Populate a 1206 PPTC holding 250-500 mA when one is in the catalog; the 0.36 ohm resistor is only a stocked 1206 jumper, and the position must be populated or the branch is open. The USBLC6's clamp rail taps PYC_CONN_5V upstream of R32003 so it stays low-impedance and stays referenced if the fuse trips, which also means pin 6 must be present for the I/O clamps to have an upper reference. On a board that takes no port power, R32003 and D32001 can both be DNP. Pin 5 is DIO-C on some breakout ports and a POW-C sink driver output on others, so it is deliberately unconnected; do not repurpose it without fixing the port assignment first. The assigned port must be UART-capable. Two schematic differences from the horizontal block. This jack is shielded: both shell legs are pad SH, joined by the metal shell (duplicate_pad_numbers_are_jumpers), and this block ties SH directly to GND. If the cable shield ever needs isolating from signal ground, break that tie here and terminate through a pad/cap network instead — the same choice usb2 makes for the USB-C shell. And the DIO lines carry instrument taps: R32004 and R32005 (100 ohm) tap the board side of DIO-A and DIO-B to PYC_DIO_A_INST and PYC_DIO_B_INST, observe only; these are the block's own signals, so the taps live here. Ports PYC_DIO_A, PYC_DIO_B, PYC_CONN_5V, +5V_PYC and GND keep their names from the horizontal block; the two INST taps are added. The land pattern differs completely from the horizontal block, which is why this is a separate block and not a footprint swap. Signal rows are staggered at y = 0 (pins 1, 3, 5, 7) and y = -2.54 (pins 2, 4, 6, 8), 1.27 mm x pitch, 1.4 mm pads on a 0.89 mm drill, against the horizontal 43860-0001's y = 1.78 / 0 at 1.02 mm pitch on 1.5 mm pads. PAD ORDER REVERSES: pin 1 sits at x = 0 and ascends in +x to pin 8 at x = 8.89, where the horizontal starts pin 1 at x = +3.56 and descends. Two SH pads are 2.11 mm on a 1.6 mm drill at y = 9.4, far outboard of the signal rows, and the two 3.25 mm NPTH locators move from y = 4.32 to y = 6.35. No pad lands where it used to. Unlike the tier 1 terminal blocks and usb2_vertical, this footprint GROWS rather than shrinking: courtyard is x -4.66 to 13.55, y -4.70 to 13.10, roughly 18.2 x 17.8 mm, against the horizontal's x +/-8.00, y -5.84 to 9.65, roughly 16.0 x 15.5 mm, and the body no longer overhangs the board edge, so budget the area before placing. VERIFY PIN 1 PHYSICALLY against the latch and keyway, not against the footprint's local x order, because the two footprints number pads in opposite directions and a mirrored 8P8C map produces a silently crossed pyControl port; check against ../mouse-joystick-pcb/docs/pycontrol-port-pinout.md. The two locator holes are not optional — the part will not seat without them, they sit inside the connector body where it is tempting to route, and the shell legs punch every layer, so place all four holes before pouring GND or routing the port. Retention is the reason to prefer this part over the SMD OW-CONN-RJ45-8P8C-SMD-VERT fallback: insertion and extraction force goes into the board rather than into solder joints, on a rig that gets handled. The cable now leaves perpendicular to the board, so the enclosure in ../mouse-joysticks-mech needs an aperture above the jack plus clearance for the plug body, its latch, and the wire loop, well beyond the 16.5 mm jack height. Not pad-compatible with OW-CONN-438600001 or OW-CONN-RJ45-8P8C-SMD-VERT, and deliberately shares no equiv_group with either. Pinout is schematic-derived from the syringe-pump pyControl module and the pyControl H7 breakout, which agree on all eight positions, but it is CITED, NOT BENCH-VERIFIED — confirm continuity and cable polarity on real hardware before trusting a populated board. +5V_PYC leaves D32001 pad 1 into a port via, where a placing board picks the rail up.

Ports

The brief's shape, edge, class and meaning for each port, then what the board wires it to.

Port Shape Edge Class Wired to Board net Board class GPIO Meaning On this board
+5V_PYC passive east Default +5V_MCU /+5V_MCU PWR_5V Port 5 V after fuse position R32003 and Schottky D32001; diode-OR with +5V_USB.
GND passive east PWR_RETURN_LOCAL GND /GND PWR_RETURN_LOCAL Signal return, J32001 pin 2 and shell SH; clamp and bypass return.
PYC_CONN_5V passive east Default open: no-connect flag Raw port 5 V, J32001 pin 6, before R32003; the clamp's upper reference.
PYC_DIO_A_HOSTTX_SCL_MOSI bidirectional east Default PYC_UART_RX /PYC_UART_RX MCU_FINE GP1 DIO-A (J32001 pin 1) after R32001: controller TX, this board's RX; SCL or MOSI. UART RX from pyControl (UART0 RX); in as the MCU sees it
PYC_DIO_A_INST output east INSTRUMENT PYC_UART_RX_INST /PYC_UART_RX_INST INSTRUMENT Instrument tap of DIO-A through R32004 (100 ohm); observe only.
PYC_DIO_B_HOSTRX_SDA_MISO bidirectional east Default PYC_UART_TX /PYC_UART_TX MCU_FINE GP0 DIO-B (J32001 pin 4) after R32002: controller RX, this board's TX; SDA or MISO. UART TX to pyControl (UART0 TX); out as the MCU sees it
PYC_DIO_B_INST output east INSTRUMENT PYC_UART_TX_INST /PYC_UART_TX_INST INSTRUMENT Instrument tap of DIO-B through R32005 (100 ohm); observe only.

Parts

As placed on the board's sheet; 9 of 9 paired with the brief's references by symbol identity, the rest given the brief's role where the internal part has one, else the catalog's role slug; the placement is the Placement field of the board's symbol, else of the library's (D38); the manufacturer part and the LCSC number are the board's BOM's.

Reference Brief Part Value Role Placement Manufacturer part LCSC DNP
C301 C32001 OW-CAP-100N-0402-X5R-16V 100nF Port 5 V bypass at the clamp beside U301.5 (VBUS), on PYC_CONN_5V GRM155R62A104KE14D C162178
D301 D32001 OW-MISC-MBR120VLSFT1G MBR120VLSFT1G Diode-OR Schottky MBR120VLSFT1G C223608
J301 J32001 OW-CONN-RJ45-8P8C-THT-VERT RJ45-8P8C modular-jack 855085001 C588558
R301 R32001 OW-PASS-0402WGF1000TCE 100 DIO series current limit 0402WGF1000TCE C25076
R302 R32002 OW-PASS-0402WGF1000TCE 100 DIO series current limit 0402WGF1000TCE C25076
R303 R32003 OW-PASS-RL1206FR-070R36L 0.36 Polyfuse position (0.36 ohm jumper) beside U301.5 (VBUS), on PYC_CONN_5V RL1206FR-070R36L C327079
R304 R32004 OW-PASS-0402WGF1000TCE 100 Instrument tap series resistor 0402WGF1000TCE C25076
R305 R32005 OW-PASS-0402WGF1000TCE 100 Instrument tap series resistor 0402WGF1000TCE C25076
U301 U32001 OW-MISC-USBLC6-2P6 USBLC6-2P6 ESD clamp on DIO-A, DIO-B and 5 V USBLC6-2P6 C2827693

Operating Notes

  • Pin map of J32001: 1 DIO-A, 2 GND, 4 DIO-B, 6 port 5 V; pins 3, 5, 7 and 8 are no-connect. DIO-A carries the controller's TX, SCL or MOSI and is this board's RX; DIO-B is the controller's RX, SDA or MISO and this board's TX (board-interfaces pycontrol-behavior-port.md, the one invariant). Ports are named by connector position so a board cannot mirror them; cross to RX/TX once, at the MCU sheet.
  • Each DIO line passes a 100 ohm series resistor (R32001 on DIO-A, R32002 on DIO-B); U32001 (USBLC6-2P6) clamps both lines and the 5 V node on the connector side of the resistors, so each line routes in one I/O pad and out the other. The controller has nothing in series (its ports carry only an ESD array), so these resistors are the link's only current limit; 100 ohm into the clamp's 3.5 pF is far below the 8.7 us bit of 115200 8N1. USBLC6-2P6: 6 V minimum VBUS breakdown, 12 V typical clamp at 1 A 8/20 us, IEC 61000-4-2 level 4 (15 kV).
  • PYC_CONN_5V is the raw pin-6 node, bypassed by C32001 (100 nF) and the clamp's upper reference, so pin 6 must be wired for the clamps to reference; +5V_PYC is the same node through R32003 and D32001 (MBR120VLSFT1G, 20 V 1 A Schottky, 0.34 V max at 1 A, 0.6 mA leakage at 25 C) for diode-ORing with the USB block's +5V_USB. R32003 is a polyfuse position: the pyControl port shares one 1.0 A supply with the controller's own regulator and has no per-port fuse, so the stocked 0.36 ohm 1206 is a jumper until a 250 to 500 mA PPTC is in the catalog. R32003 and D32001 may be DNP on a board that takes no port power.
  • Not every port has a UART: Breakout 1.2 has one on ports 1, 3 and 4 only, the H7 breakout routes seven but the firmware declares none yet (pycontrol-behavior-port.md). Pin 5 is DIO-C on some ports and a POW-C sink-driver output on others, which is why it stays unconnected. The placing board records the port assignment and uses a UART-capable port; the pin map is cited from the syringe-pump module and H7 breakout schematics, not bench-verified.
  • R32004 and R32005 (100 ohm) tap DIO-A and DIO-B for the instrument port (INSTRUMENT class), observe only; these are the block's own signals, so the taps live here (convention 14).
  • Beyond the two instrument taps, the only schematic difference from the horizontal block: the jack is shielded and both shell legs (pad SH, joined by the shell) are tied to GND here; break that tie and terminate through a pad/cap network if the cable shield must float from signal ground.

Placement and Routing

Shielded jack and ESD clamp

J32001, U32001, C32001, R32003

J32001 brings DIO-A (pin 1), GND (pin 2), DIO-B (pin 4) and port 5 V (pin 6) onto the board; U32001 clamps DIO_A and DIO_B to GND and to PYC_CONN_5V at the connector. The shell pads SH return to GND.

  • Place: Place U32001 hard against J32001 pins 1 and 4 with a ground via at its pin 2; route DIO_A and DIO_B in one I/O pad and out the other so the clamp connection stays short.
  • Place: Verify J32001 pin 1 against the latch and keyway, not the footprint's local pad order: the vertical footprint numbers pads in the opposite direction to the horizontal one.
  • Place: Place the two SH shell-leg holes and the two 3.25 mm locator holes before pouring GND or routing the port; the part does not seat without them.
  • Route: DIO_A and DIO_B are short connector-side nets; GND from J32001 pin 2 is the clamp's return and must reach U32001 pin 2 directly.

DIO series resistors and instrument taps

R32001, R32002, R32004, R32005

R32001 and R32002 (100 ohm) stand between the clamped connector-side nets and the board's PYC_DIO_A and PYC_DIO_B ports; R32004 and R32005 (100 ohm) tap the board side of each line for the instrument port.

  • Place: Place R32001 and R32002 just inboard of U32001, so the clamp sits on the connector side; between them and the MCU it would protect nothing.
  • Route: PYC_DIO_A and PYC_DIO_B are Default-class logic to the MCU sheet, which assigns RX to DIO-A and TX to DIO-B.
  • Route: PYC_DIO_A_INST and PYC_DIO_B_INST are INSTRUMENT-class taps; they carry no drive.

Port 5 V, fuse position and diode-OR

D32001

C32001 bypasses the raw PYC_CONN_5V node; R32003 (fuse position) and D32001 (series Schottky) make +5V_PYC, the diode-ORable copy of the port's 5 V.

  • Place: Place C32001 at J32001 pin 6 and U32001 pin 5 with a short return; R32003 is a 1206 position, keep it accessible for the PPTC swap.
  • Route: PYC_CONN_5V and +5V_PYC are Default-class rails sized for the port's 1.0 A shared budget; +5V_PYC leaves at the port via to be ORed with +5V_USB.

Library Identity

Block orb_weaver_private:pycontrol_behavior_port_rj45_boundary_vertical
Resolution the placed id is in the library
Brief design_blocks/orb_weaver_private.kicad_blocks/pycontrol_behavior_port_rj45_boundary_vertical.kicad_block/pycontrol_behavior_port_rj45_boundary_vertical.brief.yaml, the block's brief
Published sheet 5a3e7d57327667b4
Published PCB a48b340410670fbc
Source lock symbol snapshot 4aad11a326b6c5bc, published 2026-10-14
Placed sheet d7a4722c22ca8bc8: matches the brief: its 9 parts by internal part, every port by name and shape; the file is the board's copy under its own designators
Netlist check ok on 2026-10-15: every pin on the brief's net; 12 identity records differ, the board's own instances