Arctic Arcade Project
by damianvandenbighelaar in Workshop > Laser Cutting
69 Views, 0 Favorites, 0 Comments
Arctic Arcade Project
This is a school assignment in which the goal was to design and construct an arcade machine using a Raspberry Pi. It had to be portable, light, and if possible cheap, so we did our best to make something that met those and the more specific requirements.
Supplies
To start this project you'll need quite a few supplies. These are the following:
Screen/monitor; no larger than 10"
Raspberry Pi 4; other versions have not been tested but might work
Triplex wood; and access to a laser cutting machine
Speaker; it can also be a speaker set as long as there is 1 AUX input to control all of them
Micro SD card; to put the data for the Raspberry Pi on
HDMI to VGA adapter; for the screen, if you choose to use a different screen this might not be needed
Dualshock 3 (Playstation 3 controller); any Dualshock controller is fine as long as it has a USB cable with it.
Paint; any colour you want
USB-C charger; as power supply for the Raspberry Pi
Extention cord; at least 2 outlets to provide power for the screen and Raspberry Pi
Access to a laser cutting machine; as long as it is capable of cutting wood of the thickness of the wood you use it should be fine
Specific supplies that we used:
1x Packard Bell VT700 Monitor - bought from second hand store
1x Cellevia Power AC/DC-CL-DT12/3 - one of our project members personal one
2x Visaton Inbouw Speaker - https://www.bol.com/nl/nl/p/visaton-vs-fr7-4/9200000050197356/?bltgh=sn08y4UNsU8zb7wqQHBOrA.uW5-7upuAfryC-Nnu0NLzA_0_14.18.ProductTitle
2x Esperanza PC Controller - https://www.bol.com/nl/nl/p/esperanza-pc-controller-warrior/9200000055963182/?bltgh=urX3VKkljlmYQUS10ahOqg.vKzOeymdo8BU8TI1vWtGUg_0_8.12.ProductTitle
1x VGA to HDMI - https://www.bol.com/nl/nl/p/hdmi-kabels-hdmi-naar-vga-adapter-hdmi-male-to-vga-female-full-hd-1080p/9300000018781552/?bltgh=lY9SuQUn-pInCQnLuIVFdA.gLOzVFbjPzGOjpwbjkZPtQ_0_10.11.ProductTitle
1x Raspberry Pi 4 - from school but you can buy one from various places online
1x Arduino Uno - from school but you can buy one from various places online
1x Extention cord with 3 outlets - from one of our project members
1x dark blue paint bucket - from school
~2 meter2 triplex wood - from school
Laser Cutting
We used a laser cutting machine to cut the panels to shape, this machine uses .DXF files as instructions for cutting. All of our files are attached to this step, there is some pairs in there but they are all in seperate files.
Use every file only once, however you can combine some of them to cut them out of the same plate of wood.
Since I cannot explain how to operate every laser cutting machine out there I will have to assume that you already know how to operate the one you have access to or are able to get instructions on how to operate the machine from someone who is experienced with the machine you have access to.
Setup the Raspberry Pi
The raspberry pi does not come with games on it, or the software to run old console/arcade games so you'll have to install those yourself. luckily one of my project members has written out this explanation on how to do it:
"You take a micro sd card and format it to be used by the raspberry pi and install Retorpie with Etcher IO to flash the card. you insert it into the Raspberry and let it install then you take a USB stick with a file named "retropie" with a copy of the roms and insert it into the Raspberry. after which it will copy the info on it"
ROMS = the game(s) files
Sound Sensitive LED Strip
For adding extra flair to the Arcade machine, a programable LED strip that is controlled by an Arduino Uno. for this we decided a sound sensor would be best to react to the sounds of the games of the arcade and a code to let the Arduino control the LED strip.
the code is written as followed.
#include <Adafruit_NeoPixel.h>
// Define pin connections
const int soundSensorPin = 2; // Digital pin for the sound sensor
const int ledPin = 6; // Digital pin for the LED strip
const int numLEDs = 30; // Number of LEDs in the strip
// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numLEDs, ledPin, NEO_GRB + NEO_KHZ800);
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Set up the sound sensor pin as input
pinMode(soundSensorPin, INPUT);
// Initialize the LED strip
strip.begin();
strip.show(); // Initialize all pixels to 'off'
}
void loop() {
// Read the sound sensor value
int sensorValue = digitalRead(soundSensorPin);
// Print the sensor value for debugging
Serial.println(sensorValue);
// If the sensor detects a sound (assuming a HIGH signal indicates a detected sound)
if (sensorValue == HIGH) {
// Turn on the LEDs with a certain color
setColor(strip.Color(255, 0, 0)); // Red color
} else {
// Turn off the LEDs
setColor(strip.Color(0, 0, 0)); // Off
}
// Add a short delay to stabilize the sensor reading
delay(10);
}
// Function to set color of all LEDs in the strip
void setColor(uint32_t color) {
for (int i = 0; i < numLEDs; i++) {
strip.setPixelColor(i, color);
}
strip.show(); // Update the strip with the new colors
}
Pin Definitions:
The sound sensor is connected to D2, and the LED strip data pin is connected to D6.
Setup Function:
Initializes serial communication for debugging.
Sets the sound sensor pin as input.
Initializes the LED strip.
Loop Function:
Reads the digital value from the sound sensor.
Prints the sensor value to the serial monitor for debugging.
If a sound is detected (HIGH signal from the sensor), the LEDs turn red.
If no sound is detected (LOW signal), the LEDs are turned off.
The setColor function is used to set the color of all LEDs in the strip.
Additional Notes
Adjust the number of LEDs (numLEDs) to match the actual number of LEDs in your strip.
You can modify the setColor function to change colors or create different visual effects based on the sensor readings.
Ensure you have a sufficient power supply for your LED strip, especially if you have many LEDs.
Gluing the Wood
For this step all you have to do is glue the wood. We just used the wood glue available to us at school but you can use basically any glue as long as it is decently strong because this thing is rather big and needs a lot of strength.
There is tabs on the sides of the panel shapes as you might have already noticed, those tabs will simultaniously show you what plates to attach to what other plates because they only fit where they are supposed to, as well as increase the surface that you can apply glue onto a bit.
But leave the top front plate (the 'hood') for now because it will be easier to put all the components in into the construction without that plate there.
Mounting the Components
Once all the wood panels are glued together properly and the programs and game is installed on the Raspberry Pi you can move onto putting all the components into place.
The exact layout of the components is unimportant to the function of the machine. Though, we recommend to put the Raspberry towards the back as it is the closest it can be to the screen.
The image provided of the internals is very messy but that is to show that it really doesn't matter, you can make it as tidy or messy as you want in there, as long as everything connects it is fine.
The screen is mounted on the slanted plate on top (the 'windshield').
- The USB-C charger goes into the Raspberry Pi USB-C port to provide power
- The controllers get plugged into the Raspberry Pi USB ports
- The cable of the screen goes into the extension cord together with the USB-C charger
- Then HDMI to VGA connect the Raspberry Pi HDMI port and the screen VGA Cable
- AUX audio jack of the speakers connect to the Raspberry Pi as well.
Testing
Before gluing the final plate it is good to test if everything works. The game, the sound, the lights, etc.
We ourselves had an issue where the screen would keep turning off when mounted in its position, we fixed that by taking it off, opening it up, and unplugging the power cable and plugging it back in properly a few times.
Once everything is working you can glue the 'hood' on and that is it finished.