The scene shop at University of Virginia is the only access route for some rehearsal studios. This poses a unique problem when it comes to ensuring the machine tools aren’t used without proper supervision. The previous system relied on a physical key switch that actuated a large contactor that isolated power from the stationary tools. Managing access to a system with physical keys is challenging when it comes to a changing user base. The current iteration of access management relies on a Raspberry Pi running node red, a touch screen, and a magnetic stripe reader.
All UVA students and staff are issued an ID card with a magnetic stripe. By registering the unique identifier stored on the card to a user I am able to grant or restrict access based on a set of predefined rules. All registered users are able to turn on the shop power Monday – Friday between the hours of 8AM and 5PM. If a standard user wants to turn on the power outside of this window a second authorized user is required to swipe their card. This system ensures that student workers are not working in the shop alone. Advanced users (staff) are able to turn on shop power anytime without a secondary user. All activity is saved to the internal log as well as a small photo that is captured each time power is turned on.
In addition to being able to view the log on the built in touch screen the log can be accessed publicly via the web. The university network is quite restrictive and does not provided static IP addresses or port forwarding which would normally be required for this type of functionality. To get around this restriction the unit connects to a remote VPN server using wireguard. This allows the Raspberry Pi to serve up the internal webpage when the external DNS is directed to it through the VPN.
The touch screen, Raspberry Pi, camera, and magnetic stripe reader are all housed inside of a plastic enclosure along with a power supply and solid state relay that drives the contactor. To expand the capabilities of the system I opted to add a small wireless router to enable other devices to communicate with the Raspberry Pi. This enabled other devices in the shop to send data back to Node Red or receive commands via MQTT messages.
With the IoT capability now in the shop I created a device that uses current switches to detect when a stationary tool is powered on. The tool state is sent to Node Red via an MQTT message. Node Red then starts a counter for that specific tool to track how long it has been running and sends a message to turn on the dust collector. There is a separate Wi-Fi device connected to the dust collector that turns it on and off based on a MQTT message. In order to prevent excessive starts and stops of the dust collector there is a count down timer that starts counting when the last tool turns off. This timer is configurable via the touch screen. With this system I can display a counter of the runtime of each specific tool over the life of the tool. Currently nothing is being done with this data, but it is interesting to see how frequently different tools are utilized.