Interactive Cauldron With Hologram

by teamrhoepsilonkappatau in Design > 3D Design

33 Views, 0 Favorites, 0 Comments

Interactive Cauldron With Hologram

Interactive Cauldron Hologram
Screenshot 2025-11-06 123442.png
Screenshot 2025-11-06 123644.png
Screenshot 2025-11-06 125705.png

In 2023, 34% of Americans were planning to cut back on spending on Halloween decorations in lieu of economic difficulties. In light of this, we wanted to create an economical, interesting Halloween decoration.

Our design is a decoration that interacts with trick-or-treaters and hands out candies during Halloween. The main shape of the decoration consists of a cauldron, with a hollow interior that will be filled with candy. There is a Pepper’s Ghost illusion (“hologram”) on the top of the cauldron that changes based on user interactions. The cauldron, hologram, and audio components will interact with trick-or-treaters when activated by a load cell and PIR sensor.

Supplies

Materials.jpg

Tools

  1. 3D Printer
  2. Monitor
  3. Set of metric Allen keys
  4. Keyboard
  5. Laptop
  6. Safety Glasses
  7. Soldering Iron
  8. Hot Glue Gun
  9. Wire stripper

Materials

  1. Raspberry Pi 3B+
  2. 5” LCD Screen [can use any screen with HDMI, can modify mount to adapt to this]
  3. LED strip
  4. Black Filament
  5. Orange Filament
  6. PIR Sensor
  7. USB Speaker w/ microphone
  8. Load Cell
  9. HX711 Amplifier
  10. Acrylic sheet (9.5” by 5”) (We used 1/16” thickness)
  11. HDMI to HDMI Cable (12”)
  12. ¼” spacers (can 3D print these)
  13. Female to Female Jumper Wires
  14. Extension cord
  15. Power strip
  16. 5V MicroUSB power adapter (2x)
  17. AC Power Adapter
  18. M4 Bolts (25mm)
  19. M2.5 Bolts
  20. M3 Bolts
  21. M3 Heat Inserts
  22. M3 Nuts
  23. M2 Bolts
  24. Electrical Tape
  25. Solder
  26. Hot Glue Sticks

Software Needed

Operating System: Raspberry Pi OS Full

System-wide packages:

  1. dnsmasq
  2. hostapd
  3. fbi

Environment packages:

  1. sounddevice
  2. numpy
  3. threading
  4. queue
  5. wave
  6. flask
  7. flask_socketio
  8. fbi

Print All Parts

Print the cauldron and plate in Bambu Slicer (or any other slicer software) with 15% Infill, Rectangular infill. You will need the following:

1x Top Pumpkin

1x Bottom Pumpkin

1x Bottom Plate

63x Chains


The GrabCAD can also be found here: https://grabcad.com/library/interactive-cauldron-hologram-1

Create Acrylic Plate

Acrylic Plate.png
  1. Cut out an acrylic plate with dimensions 9.5” x 4.8” x 0.0625” (1/16" thickness)
  2. Follow the drawing below to drill out the holes.

If you have access to a CNC machine, you can use the DXF file linked in step 1 to make these holes as well.

Prepare HX711

step3_hx711.jpg
hx711-header.jpg
  1. Using a wire stripper, strip off some of the insulation of the four load cell wires. The wires we received were very thin, so we twisted them multiple times to create a braid. Then, using a soldering iron, solder the wires to the HX711. The red wire goes to E+, the black wire goes to E-, the white wire goes to A-, and the green wire goes to A+.
  2. We also used hot glue to secure the wires to the HX711.
  3. Snap a 4-pin segment from the provided pin headers. Solder this to the other side of the HX711 (the one marked with VCC, GND, DT, SCK)

Create Load Cell Apparatus

Load Cell.png
step4_loadcell.jpg
  1. Build the load sensor apparatus and attach it to the bottom of the cauldron. Use M4 nuts and bolts with 1/4" and 1/2" spacers. Note that spacers must be used to raise up the load cell to get accurate scale readings!


Note: We took the acrylic plate off the load cell in the second image to better show what the hardware looks like. The finished product should have the plate covering the load cell.

Install the PIR Sensor Onto the Cauldron

step5_pir.jpg
step5_pir_2.jpg
  1. Using M2.5 bolts, attach the PIR in the "nose" of the cauldron. There are extrusions for you to put the bolts into. Please note that these extrusions are a little fragile, so try your best not to put too much stress on them.

Wire the Load Cell and PIR to the Raspberry Pi

Wiring Diagram.png
  1. Follow the wiring diagram above to connect the F-F jumper wires from the PIR and the load cell to the Raspberry Pi. For reference:
  2. Both VCC (red) wires need to go to 5V
  3. GND (black) can go to any Ground on the Raspberry Pi.
  4. PIR DOUT goes to GPIO21 (yellow)
  5. HX711 SCK goes to GPIO26 (pink)
  6. HX711 DT goes to GPIO4 (blue)

Prepare Pi Files

IMG_8553.png

Raspberry Pi 3B+ requires 5V DC power.

  1. Unzip folder on personal device (https://drive.google.com/file/d/1OZ-RrEJ59icTGlfvFKjDhFrZLB8iW7AL/view?usp=sharing)
  2. Copy folder to USB Drive
  3. Insert USB Drive to Raspberry Pi via USB 3.0 or 2.0 port
  4. Copy the “Webserver” folder and its contents exactly into the Raspberry Pi’s home directory
  5. Check below for the folder hierarchy
  6. Raw code is pasted below for review.

~/Webserver/

|

|------venv/

|------sounds/

| |------pir/

| | |---Come closer denielle.wav

| | |---Come Closer.wav

| | |---Grab some candy if you dare.wav

| | |---Hey kid want some candy Alex.wav

| | |---Hey kid want some candy.wav

| | |---Reach into my mouth for some candy.wav

| | |---Reach into my mouth.wav

| | |---Stranger danger.wav

| |------weight/

| | |---Put that back James.wav

| | |---Put That Back Alex.wav

| |

|------images/

| |---open.png

| |---closed.png

|------static/

| |---socket.io.min.js

|------templates/

| |---index.html

|------app.py


Wav files in pir/ and weight/ can include custom wav files. MUST BE WAV FORMAT, ALL SEPARATE NAMES.


Below is the .py for review. You do not need to download this.

Downloads

Create Virtual Environment

IMG_8554.png
IMG_8555.png
  1. Open up Thonny, and create a virtual environment by pressing on the path in the bottom left corner, and click on new virtual environment
  2. Navigate in the file explorer popup to …/Webserver/venv/, then press create new virtual environment.

Download Systemwide Packages

IMG_8557.png

In the terminal, type (without quotation marks):

  1. “sudo apt update”
  2. “sudo apt upgrade -y”
  3. “sudo apt install dnsmasq hostapd fbi -y”
  4. “sudo systemctl stop dnsmasq”
  5. “sudo systemctl stop hostapd” (Temporarily stop to prevent conflicts)
  6. “nano /path/to/your/venv/pyvenv.cfg”
  7. Change the line “include-system-site-packages = false” from false to true
  8. Press Ctrl + O, Enter, Ctrl + X

Download Environment Packages

terminal.png
  1. In the terminal, activate the virtual environment with “source ~/Webserver/venv/bin/activate”
  2. In the terminal, type (without quotation marks):
  3. “pip install sounddevice processing numpy”
  4. “deactivate”

Setting Up Access Point

terminal1.png
terminal2.png
terminal3.png

In the terminal, type (without quotation marks):

  1. "sudo nano /etc/dhcpcd.conf"
  2. add the following to the bottom:


interface wlan0

static ip_address=10.0.0.1/24

nohook wpa_supplicant


  1. Ctrl + O, Enter, Ctrl + X
  2. "sudo service dhcpcd restart"
  3. "sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig"
  4. "sudo nano /etc/dnsmasq.conf"
  5. Add the following:


interface=wlan0

dhcp-range=10.0.0.2,10.0.0.20,255.255.255.0,24h


  1. Ctrl + O, Enter, Ctrl + X
  2. "sudo nano /etc/hostapd/hostapd.conf"
  3. Add the following:


interface=wlan0

driver=nl80211

ssid=CauldronNetwork

hw_mode=g

channel=6

wmm_enabled=0

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wpa=2

wpa_passphrase=cauldronadmin

wpa_key_mgmt=WPA-PSK

rsn_pairwise=CCMP


  1. Ctrl + O, Enter, Ctrl + X
  2. "sudo nano /etc/default/hostapd"
  3. find the line "#DAEMON_CONF="""
  4. Replace with DAEMON_CONF="/etc/hostapd/hostapd.conf"

Managing Services

Enable everything by typing in these into terminal:

  1. "sudo systemctl unmask hostapd"
  2. "sudo systemctl enable hostapd"
  3. "sudo systemctl enable dnsmasq"
  4. "sudo systemctl start hostapd"
  5. "sudo systemctl start dnsmasq"

Type these into terminal (NOTE, RUNNING THIS WILL DISABLE PI WIFI, MAKE SURE ALL PACKAGES ARE DOWNLOADED):

  1. "sudo systemctl disable NetworkManager"
  2. "sudo systemctl disable wpa_supplicant"

Reboot pi with "sudo reboot"

After rebooting, type in terminal “iw dev”

  1. If wlan0 says AP, everything is fine, close terminal
  2. If wlan0 says managed, type these into terminal
  3. “sudo rfkill unblock wlan”
  4. “sudo ip link set wlan0 down”
  5. “sudo iw dev wlan0 set type __ap”
  6. “sudo ip link set wlan0 up”
  7. If needed, reboot again

Running the Program + Startup

IMG_8559.png
  1. Open Thonny code editor
  2. Ensure that the interpreter is currently using the virtual environment (Check bottom right for ~/Webserver/venv/bin/python##
  3. Open app.py, to run manually, press run and display will force onto screen

Running Program on Startup (Optional):

  1. In the pi’s terminal, type (without quotation marks):
  2. “nano ~/.bashrc”
  3. Go to the end of the file and add this line:
  4. “sudo python3 /home/pi/Webserver/app.py &”
  5. If the step above did not work, then you need to replace /home/pi/Webserver/app.py with YOUR relative path to the app.py file
  6. Press Ctrl + O, Enter, Ctrl + X
  7. Type in terminal “sudo reboot” to reboot the pi

NOTE: If auto start does not work, it is likely an issue with your hostapd or dnsmasq not initializing the access point before the file runs. To fix this, undo step 12 and run manually with Thonny

Assembly

Speaker.jpg
IMG_20251107_123745037.jpg
IMG_20251107_123651413.jpg
IMG_20251107_123056897.jpg
  1. Attach the Raspberry Pi along the bottom of the acrylic plate with 4 M2.5 bolts. Use 1/4" spacers between the plate and the Raspberry Pi to prevent damage to the Pi.
  2. Secure the LCD screen to the bent acrylic piece with M3 bolts, using 1/4" spacers. Important: the screen must be oriented with the HDMI port on the right side.
  3. Get a power strip, and place the 2 microUSB power adapters and the AC adapter next to each other. Place the 3D printed housing over them, and use M2.5 bolts to attach the housing top over them. Make sure that all the wires go through the top hole.
  4. Connect the 2 microUSB power adapters to the screen and the Raspberry Pi. Make sure the power brick is outside of the Cauldron, and the wires are routed through the hole included in the back of the cauldron.
  5. Place the acrylic plate assembly (with LCD screen and Raspberry Pi) on the top half of the cauldron, securing it with 4 M3 bolts.
  6. Install the LED strips on the bottom half of the cauldron, using an adhesive. Make sure the back of the LED strip wraps around the inside. Ensure that the power cable for the LED strip is placed away from the mouth of the cauldron. You may have to route the LED strips under the PIR sensor.
  7. Using 2 M5 bolts, attach the USB speaker to the back of the bottom half of the cauldron. Make sure the speaker faces towards the mouth. Plug in the USB associated with the speaker into the Raspberry Pi.

Connecting to the Pi Remotely

uncheck.png
gui.png
  1. Connect to the Pi's network, "CauldronNetwork"
  2. password is "cauldronadmin"
  3. Use google chrome on a separate device
  4. Goto "chrome://flags/#unsafely-treat-insecure-origin-as-secure"
  5. Add the Pi's ip to the box below (http://10.0.0.1:5000) and enable the flag
  6. Restart chrome and open http://10.0.0.1:5000
  7. Ip may be different depending on your config. Check the ip by hovering your mouse over the top right corner with the ↑↓
  8. Website will always be hosted on port 5000, so visit the website at https://YOUR_IP:5000.
  9. To properly initialize (autonomous mode), enable and disable microphone once upon startup
  10. Use headphones, and keep device away from pumpkin microphone to prevent feedback loop


Finishing Touches

Finished Pumpkin.jpg
  1. Place the top half of the cauldron onto the bottom half, aligning the holes with each other. The two halves should snap together nicely.
  2. Place the chain links onto the cauldron by hooking all the chains into each other, and into the loops that surround the top and bottom halves of the cauldron.
  3. Use an HDMI to HDMI cable to connect the screen to the Raspberry Pi.
  4. Run the program, and have fun!


You may also customize what the hologram displays by inserting your own MP4 files. Feel free to edit the code to add your custom interactions and voice lines!