The industrial fidget controller (IFC) was originally conceived as a joke (fidget spinners were a fad in 2017 at Hacklab 2.0).
The IFC was eventually crowdfunded by members to become a reality.
The intent was design an industrial control panel with an assortment of 22mm industrial buttons, indicators, and other tactile elements as a fidget toy for visitors.
Do-ocracy Policy
Members of Hacklab are invited to extend/enhance the functionality of the IFC in keeping with do-ocracy.
It is requested that these changes only be conducted after consulting the builder of the IFC: changes to PLC ladder logic, or any hardware/electrical modifications.
These features or changes are suggested and encouraged!
Come up with useful or silly ways to use the switch entities in Home Assistant to trigger things like a disco ball or other project/device.
Come up with labels for the switches, or even decal inserts for LED indicators.
TODO List
TODO: Install second keystation in workshop.
TODO: Build PCB backlights for keystations and install.
TODO: Spin up ESP+IR Blaster device to control shop air cleaner.
TODO: Potentially install coin-acceptor box into future Snake Pit installation.
Documentation
Hardware Overview
The IFC is installed in the members bin storage area directly under the HackTouch 3.0 screen.
The IFC can also be converted to a portable display/demo, as the electrical enclosure is mounted supported by a frame made of 2020 metric aluminum extrusion.
The IFC uses an Automation Direct C0-11DD1E-D Click PLC, with expansion modules C0-16CDD1, and 2x C0-16NE3.
Internally there is a terminal strip to organize front-panel wiring from the switches to PLC contacts.
This unit is mains AC powered (requires NEMA C-14 power cable), and requires a Ethernet connection for Home Assistant integration for reliability.
Functionality
Each switch on the front panel, as well as remote devices (through connectors J1 thru J4) are exposed to Home Assistant using a MODBUS TCP integration to poll the PLC at a 5 second interval.
Note: polling frequency is limited by Home Assistant due to stability issues with the MODBUS TCP plugin. The PLC can support a much higher polling frequency.
Certain button or switch combinations can create light animations as a reward for fidgeting. More Easter eggs may be added as time progresses.
Inside the enclosure an electro-mechanical counter keeps track of the total number of button pushes this installation serves to satisfied customers. If you are quiet, the electro-mechanical counter can be audibly heard.
There are 2x remote keystations, each featuring a key-switch, a toggle switch, and a future LED back-light for the switch.
There is also a separate coin-acceptor box intended for wall-mounting. This box permits donation-triggered events using Home Assistant. The global donation total, and the 'transaction' total (value after no further coins deposited for 30 seconds) are exposed in Home Assistant as float entities.
Note: the global donation total only appears to update ever $0.50 even though the coin acceptor and PLC logic correctly tracks values to $0.05. This is a Home Assistant problem.
Button Mapping
Entities are exposed to Home Assistant based on the switch contact or LED indicator corresponding to the location below.
All entities are prefaced with IFC_* where * is the device address (eg: A1, B2, etc).
Push buttons B1, B2, C1, C2, C3, D2, D3 have been configured as latching switches and can be used to enable or disable specific Home Assistant output devices (eg: a disco ball).
Circuit breakers A1 + A4-A8 are configured like any other input device to the PLC and do not involve any mains AC voltage (the entire front-panel is powered by +24VDC and is grounded for safety regardless).
Expansion Connectors
Note: J1-J4 are NOT hot-pluggable. Please power down the unit before disconnecting these.
Connectors are GX16 8-contact connectors, bulkhead-pin, plug-socket and standard keying.
J1 and J2 Key-Stations
Pin
Wire Colour
Designation
PLC Contact
1
GRN
GND
2
GND/WHT
GND
3
ORG
Toggle Switch
3-X1, or 3-X3
4
ORG/WHT
Key Switch
3-X2, or 3-X4
5
BLU
N/C
6
BLU/WHT
Backlight Enable (Future)
2-Y6, or 2-Y7
7
BRN
+24V
8
BRN/WHT
+24V
J3 Expansion
This is an unimplemented future expansion which permits 4 switch contacts.
Pin
Wire Colour
Designation
PLC Contact
1
GRN
GND
2
GND/WHT
GND
3
ORG
SW1
3-X5
4
ORG/WHT
SW2
3-X6
5
BLU
SW3
3-X7
6
BLU/WHT
SW4
3-X8
7
BRN
+24V
8
BRN/WHT
+24V
J4 - Coin Acceptor
Warning: The coin acceptor mechanism requires +12V - do not connect it to J1, J2, or J3 or damage will occur.
Pin
Wire Colour
Designation
PLC Contact
1
GRN
GND
2
GND/WHT
GND
3
ORG
GND
COM2
4
ORG/WHT
RS232 TX
COM2
5
BLU
6
BLU/WHT
7
BRN
+12V
8
BRN/WHT
+12V
Home Assistant Integration
The PLC has been assigned the hostname IFC.in.hacklab.to
The configuration.yaml has been patched with the MODBUS integration, with each relevant address being mapped to an entity in Home Assistant.
All IFC entities are prefaced with IFC_*. Most are buttons as covered under Button Mapping, and others are associated with the J1/J2/J3 expansion connectors, or the coin acceptor.