The goal was to automate a model roller coaster (made of the popular Knex building toy) using an Arduino and an iOS application. The iOS app communicates with an Arduino which controls the three motors and sensor incorporated into the station. This allows the operator to control the coaster and guest to interact with it.
Each year during Rochester Institute of Technology's Imagine RIT festival, the RIT Theme Park Enthusiasts have an exhibit featuring a large scale model roller coaster. Previously, the model's only powered feature was its lift hill which was difficult to control and had no guest interaction. The Station Controller simplifies the use of the lift hill by club members while also adding features for guest interaction.
The station has three main "moving" components. These include the lift hill, the station gates, and the dispatch system. There is also a sensor to detect the car.
The Arduino which controls all components is connected via Bluetooth to the operator iOS device. That iOS device acts as a "master controller" which can control all components without limitation. Up to seven guest devices can connect to the operator device via multipeer.
Basic demo of the three components working together.
Operator Interface
The operator interface allows all components to be controlled without limitation. The operator can also choose to disable guest access and activate auto dispatch which dispatches the train after prolonged periods of inactivity.
Guest Interface
The guest interface allows spectators to interact with the model with a more "realistic" roller coaster feel, and without the risk of interrupting the functionality of the coaster.
Shown when train is sitting in station and gates are closed.
Shown when station gates are open. Guests can only dispatch the train when the gates are closed.
Shown when the train is not in the station, triggered by the IR sensor on the platform. Guests cannot open gates or dispatch while a ride is in progress.
Full walk-through demo of the project.
Full project source code is available on GitHub.