In the 1987 movie Predator, Arnold Schwarzenegger’s character fights an alien enemy in a dark, foggy rainforest. He is stumped when no amount of camouflage hides him and his comrades from this mysterious foe. They realize all too late the Predator has thermal vision and can track humans by sensing their body temperature.
Thermal vision isn’t reserved for sci-fi aliens: snakes, frogs, fish and mosquitos are among many animals that sense heat. Salmon hunt in murky waters by sensing their prey’s body heat, akin to the Predator hunting Schwarzenegger. Mosquitoes know where to find you on a cool summer evening by detecting your warm body temperature.
What if you could join the ranks of these thermal-sensing animals? What if you could add temperature detection to your assortment of senses? Sensory expansion technology allows you to do this by passing temperature information to your brain via a separate sensory input. Read more about sensory expansion technology on our blog post or by watching our co-founder Dr. David Eagleman’s TED Talk or in his book Livewired.
Expanding your senses to detect temperature
We hooked up the Neosensory Buzz — a vibratory wristband — to a few contactless temperature sensors to create a temperature-to-touch sensory expansion device. These contactless temperature sensors read energy in the mid-infrared range, which allows them to accurately detect the heat signature of objects in their field of view.
After hooking this up, the motors on Buzz vibrate to indicate the temperature of objects around you. Pass your arm near a bookshelf and know which books have just been put back. Walk through a parking lot and point out which cars have been parked for a while versus which have just turned off their engines. Check if a frying pan is hot without scalding your fingers. Notice which corners of your house are leaking hot air in the winter. Wear this temperature sensing wristband around for a while and you’ll find all sorts of cool tricks that come with this new sense.
Make your own temperature sensing wristband
We’ll walk you through how you can create your own temperature sensing wristband using our Arduino Bluefruit SDK for Neosensory Buzz.
We used the following materials in our temperature sensing wristband:
- Neosensory Buzz wristband
- Feather nRF52 or nRF52840 Express
- 2x Infrared Thermometers – MLX90614
- 4x 10 kΩ pull-up resistors (included with MLX90614 from Adafruit)
- Lithium-Ion Polymer Battery
- FeatherWing Protoboard
- Battery switch (optional)
- Male Headers (should be included with boards)
- Watch strap
- Soldering iron
- Needle and thread
To connect your SI1145 UV and IR sensor breakout board to your Feather, you’ll need to make the following connections:
|V in||3.3V Output|
Additionally, SCL and SDA need pull-up resistors. Connect a 4.7 kΩ resistor between your SCL line and power and another between SDA and power.
Create breadboard connections
It’s a good idea to test your hardware and your connections on a breadboard. Try making all your circuitry and uploading the code to make sure it works. You’ll also need to reprogram the I2C address of one of your thermometers before you connect both of them to your Feather. While you could do that after soldering one thermometer to your protoboard and before soldering the second, it’ll be easiest to do on a breadboard.
Solder headers to Feather
Using a breadboard for support, solder male headers to the through-holes on your Feather board. Make sure that the long sides of the headers are coming out the top of the board, as shown above.
Solder protoboard to Feather
Making sure to orient the Feather protoboard such that the labels align with the appropriate pins on the Feather, solder your protoboard to your Feather. Note: optionally, come back to this step after making the connections on your Feather protoboard in the next step.
Solder thermometers to protoboard
Time to make the appropriate connections that you’ll need to get your board working. While you can choose your own path and make the connections however you see best, here is a diagram showing how we made the necessary connections on our protoboard.
Note: Make sure you’ve followed the step below called “Set I2C address” before soldering multiple thermometers to your board!
Attach to wrist strap and connect battery
Use the four mounting holes in the Feather to sew the electronics to a wrist strap. Plug your battery into your Feather (use a battery switch if you want to be able to turn this off without unplugging the battery).
Note: The Feather board conveniently comes with onboard battery charging built in, so all that’s needed to charge the battery is to plug a micro-usb cable into your Feather. You’ll see a yellow light indicating that the battery is charging.
Your temperature sensing wristband is fully assembled!
Follow the instructions for installing the Neosensory Arduino Bluefruit SDK. Make sure you can run the example code on your board and can cause your Buzz to vibrate from the Feather.
Next, download and install the MLX90614 Arduino Library from Sparkfun. With a single thermometer connected to your Feather, make sure you can run the MLX90614_Serial_Demo sketch. You should be able to see temperatures printing to your serial port.
Set I2C address
Now, with just a single thermometer attached, run the MLX90614_Set_Address sketch. This will change the I2C address of the attached thermometer. Since these thermometers ship with identical addresses, your Feather will not be able to talk to two simultaneously unless you change the address of one thermometer. So make sure you run this script before soldering both thermometers to your Feather!
Then, download the code from this repository and load it onto your Buzz. You’re all set to expand your perception and learn to sense nearby temperatures! The two thermometers each talk to one motor on Buzz. When each thermometer detects temperatures higher than the average, the corresponding motor will vibrate. The higher the change in temperature, the stronger the vibration. If the thermometer detects a temperature less than the average, Buzz will vibrate with a different, distinct texture. See the ReadMe.md file for more information.
If you have any questions regarding this project or another project you’re working on, visit the Neosensory developer Slack. If you create your own project and would like to share it, email us at firstname.lastname@example.org – we’ll feature select projects on our site in the coming months!
By Mike Perrotta, Scientist