Industrial Fidget Controller

From Hacklab.TO Public Wiki
(Redirected from HL0106)
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.