From Hacklab.TO Public Wiki
Jump to navigation
Jump to search
What is the Industrial Fidget Controller?
- 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.