Project Name: Electronic Skee Ball

Project Functional Description:


Group 1 intends to create a more electronically enabled, miniature rendition of a traditional “skee-ball” machine to provide an alternative means of playing the game and an interface better suited for individuals with various disabilities or incapacities. In the traditional game, a user rolls a ball up a ramp (approximately 8 feet at approximately a 30 degree incline from the ground) with the goal of landing the ball in any of several holes positioned at the top end of the ramp. Landing the ball in certain holes yields a number of points assigned to that hole, and failing to land the ball in a hole yields zero points for that throw. A user is given a set number of rolls to earn points before the game is “over”, and the goal of the game is to maximize the number of points earned.

In Group 1’s rendition of the game, the ball is no longer rolled, but instead pushed up the ramp with a motor-driven mechanism when the user holds down a button for a certain amount of time. A longer button press results in a greater driving force from the launching mechanism, analogous to a “harder” roll. Likewise, the direction of the motorized mechanism is controlled by the user’s movement of a joystick; i.e., the direction of launch mimics the orientation of the joystick. Upon landing the ball in a hole, the user earns points, and a short sound indicating success is played on an attached speaker. The point value corresponding to the hole is added to the user’s score, which is displayed on an electronic display for the user to view throughout the duration of the session. When there is no game in session, the display shows the highest score achieved on the game, including all previous sessions. While the user is pressing the button for launch, the display shows a “progress bar”: as the user holds the button, the bar grows in width, and when it reaches full width, the ball is launched even if the button is still being held. Whether the user lands the ball in a hole or not, the ball is caught by the body of the game and returned to an area near its starting location to be retrieved by the user for additional attempts. If the ball inadvertently leaves the body of the game entirely (i.e., if it escapes all of the holes and the surrounding catching area), then the user may manually retrieve the ball and reinsert it into the game. After three attempts, the session is over, and a user may choose to start another session by moving the joystick and/or pressing the button to launch the ball.

“Scoring” is defined by the detection of an object within one of the designated scoring holes of the game. Shortly after the ball is launched, a scoring window is started. During this window, the central computer repeatedly reads from ultrasonic sensors positioned within each hole. If the distance read by any sensor drops below an experimentally determined threshold, the game assumes that the ball has entered that hole, so it halts reading from sensors and awards the user the points associated with that hole. If no sensor detects the ball within the scoring window, the game assumes that the ball has missed all holes entirely, so it halts reading from the sensors and awards the user zero points. During this window, usage of the button and joystick is disabled.

A single “session” is defined as a state in which the user has three attempts to launch the ball and score points. A session is started when the user makes an attempt to move or launch the ball (via interaction with the joystick or push button) while there is currently no session active. A session is ended when there is already an active session and the user completes three attempts. Thus, the skee-ball game has two states, denoted as “idle” and “active”: the idle state refers to the state between sessions, when a user is free to start a session, and the active state refers to the state in which a session already exists and a user is actively trying to score points within three attempts. After a given session is completed, the display shows the user's final total score for that session for a short window of time before reverting back to displaying the all-time high score of the game.

The launching mechanism involves the usage of two small wheels that quickly accelerate to propel the ball forward. One of these wheels is controlled by a motor, and when the motor spins, this wheel undergoes an angular acceleration, pressing the ball against the opposing wheel and effectively launching it forward. As mentioned before, the duration of the button press controls the power of the motor, which in turn controls the acceleration of the wheel and ultimately the initial speed of the ball as it leaves the launching mechanism. The launching mechanism does not have any effect on the direction of the ball; instead, the entire mechanism itself is rotated from below via the joystick interface described above.

The geometry of the game itself is analogous to a scaled-down version of the conventional geometry. Team 1’s rendition is three feet in length (i.e., along the axis running through the joystick and the ramp) and one foot wide (i.e., along the axis running through the joystick and perpendicular to the ramp). The first approximately eight inches along the three-foot dimension serve as the area for retrieving the ball, controlling the direction of launch via the joystick, and launching the ball via the push button. The launch mechanism itself sits on a circular plate eight inches in diameter which hosts the ball and the launching motor. This plate is rotated to aim the ball by a joystick-controlled motor from below. To the left of the plate is a cut-out cylindrical shape having diameter of approximately two inches which serves as the retrieval mechanism for the ball, i.e., the ball moves up the ramp, lands in a hole, and rolls down through this cylindrical region to be easily retrieved by the user. The launching mechanism itself consists of two small (approximately two inches in diameter) rubber wheels that serve to propel the ball. The wheels are oriented such that their center axes are parallel to the flat plane which hosts the launching mechanism. One wheel supports the ball from below, and this wheel is directly controlled by the DC motor. The other wheel supports the ball from above, and this wheel is left free to spin; it is not controlled by any powered mechanism. To launch the ball, the user retrieves the ball, places it between the wheels, then uses the button to power the motor. The motor quickly accelerates the lower wheel, and the ball is propelled forward.

The power requirements of the game consist of four different voltage levels and variable current requirements. The DC motor requires 24V and 10A to function properly in the worst case. Thus, wall power (approximately 120V at 60Hz) is supplied to a 24V 10A power supply which directly powers the DC motor driver.The next required power level is 6V at 2.5A, used by the servo motor which orients the launching mechanism. This level is achieved by using the aforementioned 24V supply and a buck converter to step down to 6V at a maximum of 2.5A. The next required voltage level is 5V, used by the LCD display and five ultrasonic sensors. Together, these draw about 0.7A in the worst case. Thus, this power level is achieved using a 5V LDO regulator with a maximum output current of 1A. Finally, the last required voltage level is 3.3V, used by the external speaker, the analog joystick, and microcontroller pins. Together, these draw roughly 1A in the worst case, so another LDO regulator is used with a maximum output current of 1A.

The “stretch” functionality of the Electronic Skee Ball Machine includes the usage of a virtual alphanumeric keyboard for users to input a “username” or other form of identification string to designate themselves on a leaderboard prior to the beginning of a session. The keyboard will be displayed on the same electronic display used to show the score and other information, and the user may "type" on it by navigating between characters using the joystick and selecting the desired character by pressing the push button. At the completion of each session, if the total achieved score is within the top three highest ever achieved, the score and identification string will be saved to the according rank. Furthermore, when there is no active session, the display will show the top three highest scores achieved in the game, displaying both the identification string and the score achieved.

The "stretch" functionality of the Electronic Skee Ball Machine also includes the ability for the user to select between two distinct "game modes." With this functionality, when there is no active session, the user will be prompted on the display to select between two game modes rather than simply pressing the button or moving the joystick to start a session. The name of each game mode will be displayed, and the user will be able to use the joystick to move between them and will use the button to make a selection. This added text on the display will be shown below the high score or leaderboard that is present between sessions, described above. Once the user selects a game mode, the game will proceed as usual, meaning that the button will be used for ball launching and the joystick will be used for launch orientation as described above. The first game mode will be the "standard mode", which is exactly the same as the "three tries to score" game described above. The second game mode will be a "race" game mode in which the user has no predefined number of attempts to score points but rather is given a short window of time to score. During this time, the user can attempt to score as many times as possible.

Project Specific Design Requirements (PSDRs):

  1. PSDR #1: (Hardware): An ability for a microcontroller to write text to an LCD character display using the SPI protocol.
  2. PSDR #2 (Hardware): An ability for a microcontroller to transmit WAV file data to an amplifier breakout using the I2S protocol.
  3. PSDR #3 (Hardware): An ability for a microcontroller to drive a DC motor with variable power using PWM signal generation.
  4. PSDR #4 (Hardware): An ability for a microcontroller to read from an array of ultrasonic sensors via GPIO pins.
  5. PSDR #5 (Hardware): An ability for a microcontroller to convert analog input from an external joystick to a digital signal using analog to digital conversion.
  6. Stretch PSDR #1 (Software) An ability to accept user input from a virtual alphanumeric keyboard displayed on an LCD character display.
  7. Stretch PSDR #2 (Software): An ability to transition between the standard game mode and the race game mode.