Introduction: MVRK’s Mandalorian Tracking Fob
It’s May the 4th, otherwise known as Star Wars Day, a holiday very near and dear to our hearts. This year we decided to celebrate it a bit differently than years past. With an experiential tech and maker-project, we took a complex approach and turned it into a simplified at-home project as we made our version of a device inspired by one of our favorite shows.
This Instructable assumes you have some prior knowledge or experience with Arduino or other microcontroller development boards. If you feel comfortable with that, you'll do fine here! Check out the supplies below to get started!
Disclaimer: This post is in no way affiliated with Disney, Disney+, or Lucasfilm. Further, MVRK does not guarantee or warranty these instructions. Please be safe and build under parent supervision.
You'll also want to grab the model for 3D printing from below.
And download the code below. This project requires the ESP32 boards to be install in the Arduino IDE. For full instructions, check out the official github for Arduino ESP32 here.
Step 1: How It Works
The MVRK version of the tracking fob uses Bluetooth Low Energy (BLE) to track down keys, a phone, or other BLE enabled devices or beacons. We used an ESP32 bluetooth enabled microcontroller and a small LiPo battery to connect to a BLE device and track its signal strength. The closer the tracking fob gets to the selected device (or bounty), the stronger the signal strength and the faster the light on the front flashes.
Step 2: What Is Bluetooth Low Energy (BLE)?
Bluetooth Low Energy (BLE) is a Bluetooth standard designed to provide reduced power consumption while maintaining the same effective range as regular Bluetooth. BLE devices act like bluetooth servers and advertise their connection information every few seconds to the surrounding area. The advertising interval is different for every device and is even configurable on some devices. If you're not familiar with BLE, it should all start to make sense in the next section.
Step 3: The Code
This part can get a little tricky. BLE devices don't all advertise at the same interval, nor do all devices all incoming connections. Before getting started here, we strongly suggest getting a BLE scanning app for your phone. If you're on iOS like us, BLE Scanner works great. These apps will allow you to see BLE devices around you and connect to them to learn about the services they offer. BLE services are worth talking about here as they're essential to how you'll be connecting to the device you want to track.
All services have a universally unique identifier (UUID) so as not to get mixed up with other nearby devices. Within every service, you'll find a characteristic. these also have UUIDs. These characteristics may be read, write, write without response, notify, etc. There's others, but that's for another time. See the picture above about services and characteristics. It's easiest to think of services like folders and characteristics like files within those folders.
If you want to learn more about services and characteristics, click here for a fantastic beginner's guide to the GATT Bluetooth Standard.
Every BLE device that you can connect to using this tracker has a UUID that it uses to advertise its presence to nearby devices. You will likely need an app like the one mentioned earlier in order to find it. Once you've found the device in your app, connect to it. Remember that every BLE device is different, so it may take some trial and error to find the right UUID, but once you do, just plug it into the code as advertisedDevice. Everything in the code is commented, so you can find what you're looking for.
Next we're after the characteristic. Some devices use an advertising service that is different than the one containing the characteristic we want. If this is the case, grab that different UUID and plug it in at serviceUUID, otherwise, just set serviceUUID equal to advertisedDevice. Now, within the service you've connected to, look for a read characteristic. The app may give you a full length UUID, or it may only be 4 characters. Either is fine as the UUID definition in the code will account for it. Plug that UUID into characteristicUUID and you're all done!
Flash the board, open up the serial monitor and see what you get! If all is well, it should connect up to your device and start registering an RSSI value (received signal strength indicator). The lower the RSSI value, the stronger the signal strength. RSSI is a good indicator of proximity but is not perfect. If your light isn't quite blinking how you want it, scroll down to the bottom of the code and adjust the values. There's comments there explaining how.
As a note, not all BLE devices will work with this tracker. Some devices will refuse connection. Others will disconnect automatically after a few moments. And some just won't advertise the UUID necessary to connect. We've had success with phones, key finders, and even a BB8 Sphero! Leave comments below as let us know what you're tracking!
Step 4: Soldering
Pretty straight forward here. Connect up the cathode pin of your LED to the GND pin on your board and the anode pin to PIN2. You can change this if you like, just be sure to leave a little wiggle room for the LED to fit where it needs to go. We used a couple short jumpers and some heat shrink to get hooked up here.
Step 5: 3D Model and Printing
The model is suitable for most 3D printing applications. We used an Elegoo Mars resin printer and printed it in white. It turned out great and resin printing can really bring out the finer detail in a print. But that's not totally necessary here. a well tuned filament printer should do just as well. Just be sure you have proper supports and you should be fine!
Step 6: Painting / Weathering
Painting and weathering a prop is one of the most fun things you can do as a maker. Making it "yours" and giving every scratch and ding a backstory is special. So we won't tell you exactly how to do your tracking fob, but we can give you a few tips.
We gave the main base of the tracker a light coat of matte black spray paint and used Rub 'N Buff to fill in the metallic looking parts, as well as add in a few scratches. No need to go too heavy with this stuff. I little goes a long way.
The antenna turned out great when we gave it a black base and used a technique called dry brushing to add in brown and red highlights to look like rust.
There's no wrong way to do it, but if you're new to these concepts, there are tons of great video tutorials out there. Good luck and share yours in the comments!