After running for 10 years the pinball machine finally broke. Rather than scrapping it, we determine what was wrong and pulled out the driver board and the connection to the Linux machine. We replaced both of these with a board we designed and built consisting of an Arduino Mega, a set of solid state relays, and other assorted parts. We also replaced the 5 front panel gas-discharge displays with solid state displays we built. We wront a complete pinball program for this configuration and, after some experimentation, had a working pinball machine again. Unfortunately, there is a bad connection between the board and the front displays that arose which we haven't been able to fix due to Covid restrictions. We fixed it, but it has broken again. We plan to work on this in the new year.
In addition to playing pinball (when we can) we actually have done some research in the IoT area.
I have a sign outside my office. Not really a sign, but actually a chrome tablet running a kiosk app displaying a synamically updated image. The image tells mu current status, if I"m available, when I"ll be back, how to reach me, etc. The convenient thing is that it is automatically updated so I don't have to worry about it. It uses bluetooth to see if I"m in my office, a motion sensor to see if I have visitors, an off-the-hook circuit to see if I'm on the phone, and has access to my Google calendar. For Covid, it checks if I"m active on my home machine, if I'm currently using Zoom, and if I"m in my "office" Zoom meeting where people can just join me. Based on this and a set of 25-30 rules it decides what to display and updates the display accordingly.
We wee this as a specific instance of a more general problem, that of "programming" a set of IoT devices based on a complex set of conditions. IFTTT is insufficient even for something as simple as our sign. We needed something more complex. We build UPOD as a prototype for experimenting with this. It uses a prioritized set of rules and a synamic set of sensors, conditions, and actions. we have interfaces for our sign as well as smarthab and smarthings. Most of our research here has been on developing user interfaces that are understandable, programmable and debuggable by the non-programmer.
We felt that our sign was reasonably useful and wanted to make it available to others and make it more convenient to use, simplifying the interfaces, adding a mobile front end, and addressing the various issues and problems that we saw in the original implementation.
To accomplish this we have been working on a number of projects that should work together to provide a practical implementation of our sign and of a user interface for controlling IoT devices. We first have developed iQsign, a cloud-based implementation of a smart sign. While this doesn't provide physical signs right now, it does provide a web page and an image that can be updated either automatically or manually through a mobile application. (Our current sign is just a kiosk application displaying such a web page.) It is available at iQsign web site and we are developing a mobile version of this interface. Next we are developing a mobile/web application (using dart/flutter) for programming this sign and other mobile devices. We are also developing a mobile application for providing the necessary information for such control. Finally, we have developed a cloud-based back end to support our view of IoT programming.
We have a ho train layout that we want to control from our computer. we want to ensure that trains do not collide and try to prevent derailments for various reasons. We have designed a circuit that will let us control switches and signals via WIFI. We have embedded about 80 sensors into the tracks to help determine the current state and are planning to install a camera to provide additional information. We will be installing LocoFI controllers in our various engines so that they can also be controlled via computer. The SHORE system is designed to control all this while providing safety. It also should let us provide a high-level description of a route for a train that it will then implement.