CAN bus
Devices that put real signals on the wire.
Where the gauges only listen, these transmit — which is why every one of them proves the bus is safe before it sends anything at all.
CANBus Injector
A standalone in-car unit carrying the system's GPS antenna and two optically isolated digital inputs, and putting all of it onto the vehicle's bus for the rest of the fleet to consume. Position and motion go out ten times a second, UTC once a second, and each input publishes the moment it changes as well as on a heartbeat.
Frame IDs and rates are configurable from the app and survive reboots. Bus speed can be left on automatic, where the unit finds it by listening, or pinned when you already know the answer.
| Publishes | GPS position, motion and time; two isolated inputs |
|---|---|
| Inputs | 2 × optically isolated, debounced |
| Bus speed | Automatic discovery, or pinned from the app |
| Status | RGB light — colour names the subsystem, pattern the detail |
CANBus Knob
A rotary selector read off a resistor ladder and injected as a single frame, so anything on the bus can act on where the driver has set it. A turn goes out immediately; between turns the frame repeats on a steady heartbeat, so a listener that joins late still learns the position.
The detent voltages are measured on the bench rather than assumed from the resistor arithmetic, so the reading survives real components with real tolerances. An external status light can be mounted where an installer will actually see it.
| Positions | 4 detents, reported with their own range |
|---|---|
| Publishes | One frame: position, wiper voltage, turn count, time held |
| Cadence | Immediately on every turn, plus a configurable heartbeat |
| Status | Onboard colour light, plus an external LED |
The safety sequence
Every transmitting unit runs the same sequence at power-on, and it is not skippable:
| Discover | Listen at each bus speed in turn until real traffic answers. Never transmit on an unconfirmed speed — sending at the wrong rate turns every frame into an error frame. |
|---|---|
| Survey | Take an inventory of the IDs already in use. If anything is using an ID this unit wants, stop here. |
| Inject | Transmit, and keep listening. A foreign frame bearing one of our IDs at any point means the assumption was wrong. |
| Blocked | Permanently silent, cleared only by a power cycle. A clash means something else owns that ID, and retrying would keep disturbing it. |
Transmission is restricted at the point of sending, not merely by convention — a unit is structurally unable to emit a frame outside its own configured set.