HalloweenTracker

by aidanhong8 in Circuits > Wireless

62 Views, 1 Favorites, 0 Comments

HalloweenTracker

IMG_0674.JPG
IMG_0657.PNG
HalloweenTracker

Recently, Halloween participation has been dipping. We believe that this issue is due to lack of safety. To address this issue, we decided to create a Halloween Tracker that complements a costume well while also providing safety features like alerting cars of their presence, tracking location anonymously and discreetly, and being able to signal for help.


Skill level needed: Intermediate-Advanced

Skills needed: Swift development, Python development, C++ Development, Soldering, Circuitry

Cost: >$20

Build time: 1-2 days

Supplies

Electronics

  1. TP4056 USB-C Module
  2. 3.7V LiPo 2000mAh Battery
  3. WS2812B RGB Led Strip
  4. Mini Pushbutton Switch
  5. ESP32-WROOM-32E-N4
  6. Rocker Switch
  7. 10k Ohm Resistor
  8. Hookup Wires
  9. Perf boards

Tools

  1. 3D Printer
  2. Filament
  3. Soldering Iron
  4. Solder
  5. Electrical Tape/Heat Shrink
  6. Wire stripper
  7. Alligator clips (recommended)
  8. Multimeter (recommended)
  9. Mac
  10. iPhone

Others

  1. String

Optional

  1. USB-A → USB-C Adapter

Download the CAD File

imagee.png

First, download this CAD file. This CAD file is what we will use for the build.


This CAD has 2 modes: compact mode and spacious mode. If you want to make it spacious, print 2 front covers. If you want to make it compact, print 1 front cover and 1 back cover.


Use a 3D printer to print it out. The files are already in stl. These files are dimensionless, so if you slice, ensure you allow the software to convert to mm. You can also scale as needed.

Create the Circuit

edd_halloween2025-project_bb.jpg

Note: Always check the polarity of your wires (Black = -, Red = +)

We will be creating the electronics portion of this project. It should be able to turn on with a switch, have button input, and turn on the LED strip. However, there will be a need to prepare some electronics to test and make them ready for assembly. The other colored wires are data/signal wires that send/receive data from other components.

First, we will need to prepare the TP 4056 USB-C Module. Solder the LiPo battery’s red wire to the B+ on the TP 4056. Solder the LiPo batter’s black wire to the B- on the TP 4056.

DO NOT ever connect these two wires together, which will lead to an electrical short. This phenomena is very harmful, which can cause fires and explosions.

After making sure that this isn’t the case, solder the rocker switch’s red wire to the OUT+ and solder a black to the OUT-. This will help make sure you can turn off your circuit at any moment. Be sure to test if the circuit is working using the multimeter. You should be able to just check the voltage between the rocker switch and OUT- wire.

Toggle the switch on and off to make sure that voltage returns a value on your multimeter when it is on. If something doesn’t seem right then make sure you wired all of the wires properly: red on + and black on -.

Now, you can either use a breadboard or perf board, which have their own benefits. These instructions will not dive too much into the differences. But, a key difference is that a perf board will need to be soldered with a lot more work. However, it does give a sizable decrease in size to more easily fit your electronics into the design. With a breadboard, you can just try plugging everything together.

The switch should go into one of the vertical, red rails(+) on the edges of the breadboard. The OUT- from the TP 4056 module should go into the vertical, black rail(-). Now, you will need to connect the ESP32 to the board. You will need to connect the 5v pin to the red rail, and the ground pin to the black rail. Then, the GND wire on the LED strip should be connected to the black rail. The 5V wire should connect to the red rail. A different colored wire, not red or black, should connect the DO (Digital Output) or data line to PIN 23 on your ESP32.

The mini push button should be mounted with a pair of outside legs facing towards the red and black vertical rails. One of the legs will be connected to the red rail. The other pair will have the 10k Ω resistor that will go from the button to the black rail and have another differently colored wire, not red or black, that should connect from the button to the PIN 22 on your ESP32.

Code

Screenshot 2025-11-06 at 1.48.11 PM.png
Screenshot 2025-11-06 at 1.55.23 PM.png
Screenshot 2025-11-06 at 1.55.43 PM.png

https://github.com/GSWForever8/HalloweenTracker


Fork this repo. This is for the Swift App as well as the ESP32 code.


For the login/authentication, create a firebase account. To do so, first go to console.firebase.google.com, create a new project, click through all the prompts(they're not important for this project). Then, go to Build, Authentication, Get Started, and Email/Password. Configure as needed.


Then, fork the GitHub Repo for the iOS app under the iOS folder. Open it in Xcode.


Then, download the GoogleService-Info.Plist file and drag it into your Xcode workspace.


You will need to download these dependencies via Swift Package Manager:

FirebaseCore

FirebaseAuth

FirebaseFirestore


In VSCode, open the run.py from the flask folder in the GitHub Repo. Download all necessary dependencies, then create a virtual environment. Execute the program using python run.py or python3 run.py.


For the server, install necessary dependencies via this command:

pip install -r requirements.txt


Once you're done with that, download the .ino file from the GitHub Repo and open it in an Arduino IDE. Upload the code into the ESP32.


You will need to download these dependencies for the ESP32:

Adafruit NeoPixel

NimBLEDevice

Preferences

Solder the Electronics

Screenshot 2025-11-06 at 1.45.17 PM.png

With a perf board, solder bare wire along two edges to create power rails like a breadboard. One edge will be your positive rail and the opposite edge will be your ground rail.

Solder the ESP32 header pins to the perfboard, then connect the ESP32's 5V pin to the positive rail and GND pin to the ground rail with short wires.

Solder the rocker switch wire to the positive rail and the TP4056's OUT- wire to the ground rail. Keep the battery and TP4056 module off the board and only connected by wires for easy replacement.

Solder the pushbutton to the perfboard. Connect one button leg to GPIO pin 22 on the ESP32 with a wire.

From that same leg, solder the 10kΩ resistor to the ground rail.

Connect the opposite button leg directly to the ground rail.

For the LED strip, solder the red wire to the positive rail, black wire to the ground rail, and data wire to GPIO pin 23 on the ESP32.

Make sure that everything has power using the multimeter to test for voltage.

Assemble the Product

IMG_0664.JPG
IMG_0674.JPG

Once you're done soldering, first, wrap all exposed joints between fires with electrical tape. Then, tape the LED strip down to a hole. Put the button in the hole for the nose. Then, put the USB-C charger in the slot designed for it, which is on the side. Fit the switch into the bigger hole near the top. Fit the rest of the electronics in, then tape another front cover/back cover to the back. Drill a hole through the stem and fit a string through it, then knot it to close it.


Congrats. You're done.