Build Your Own Contactless Temperature Sensor
By Dave Hoover for Mouser Electronics
Edited June 3, 2021 (Originally Published August 11, 2020)
The COVID-19 pandemic has presented hardships for businesses and consumers around the globe. Even businesses that
have been categorized as essential have had to seek solutions to ensure they are operating safely and
efficiently. Unfortunately, enterprises such as hospitals and warehouses prone to large gatherings run a
heightened risk of contracting the virus. The solution? An economic contactless wrist temperature sensor that
ensures essential workers can safely enter the workplace without endangering their co-workers or any manual
temperature gauge operators.
The TTI Family of Companies (FOC), which includes Mouser Electronics and the TTI Semiconductor Group (TSG), has
combined its resources to develop an open-source, contactless wrist temperature sensor that is cost-effective
and efficient. The temperature sensor was designed and prototyped by a TSG company, Connected Development (CD),
specializing in hardware and software design services. CD tapped into TTI FOC’s wide range of component
distributors and services, with contributions from TTI, Symmetry Electronics, and Mouser Electronics, to develop
this open-source design. CD’s temperature sensor design centers on a Silicon Labs microcontroller starter
kit, a TE thermopile for temperature measurements, a TDK piezoelectric buzzer for audio feedback, and Cree LEDs
for a visual cue.
TTI’s employees are using the temperature sensor at their warehouses. Employees simply hold up their wrist
to the sensor to receive a reading of their temperature accompanied by a beeping noise and a red or green light
that indicates whether they are at or above the acceptable temperature range.
The contactless wrist temperature sensor could benefit several use cases, including hospitals, warehouses,
retail, and offices. Although the sensor is not available for sale, the design has been made open source to
allow engineers to develop the product independently. The following is a detailed reference guide to walk
intermediate-level engineers through the steps it takes to build this technology.
Project Materials and Resources
The following information pertains to the various components used in the contactless wrist temperature sensor
project. The links can be accessed to order relevant parts and download helpful datasheets technical information
or complete project bill of materials (BOM) link here.
Bill of Materials (BOM)
- 634-SLSTK3301A–Silicon
Labs EFM32 Tiny Gecko TG11 Starter Kit
- 824-TSD305-2C55–TE
TSD305 Digital Thermopile Sensor
- 810-PS1240P02CT3–TDK
Piezoelectric Buzzer
- 941-CLX6FFKCCKNNQDGB
–Cree PLCC6 3 in 1 SMD LED
- 932-MIKROE-511–Jumper
Wires (To connect starter kit to sensor, buzzer, and LEDs. Note: gender and length can vary based on
mechanical
design. The current design uses eight separate jumper wires. (See Install
Electrical section below.)
- 538-68768-0404–USB Cable (For
powering the device. Note: Length and brand selection is not imperative–any USB mini cable will work.)
Software
Useful Links and Resources
Mechanical
The mechanical design of the temperature sensor is beyond the scope of this project article. Care should be taken
to provide a design that is ergonomically sound and capable of rapidly taking temperatures for individuals of
various heights. The display and LED should be easy to see while holding your wrist within close proximity to
the temperature sensor. The design should not require the user to have to keep the wrist at an uncomfortable
angle during measurements, nor should it require additional personnel to operate.
Project Technology Overview
The contactless temperature sensor utilizes the TE
TSD305 Digital Thermopile Sensor to measure object temperature. The Silicon
Labs EFM32 Tiny Gecko TG11 Starter Kit is used to collect temperature sensor information from the
thermopile and to notify the end-user of results.
The thermopile is also used to detect whether a human body is within close proximity to the measurement station.
The Silicon Labs starter kit microcontroller constantly regulates the thermopile for temperature fluctuations.
If the temperature rises above 90˚ Fahrenheit, it is assumed that a human body is close by, prompting a
measurement cycle to begin. The microcontroller then awaits a consistent measurement, which is achieved by
capturing three readings in a row within one degree. Once a stable measurement is captured, the temperature is
displayed on the Silicon Labs starter kit LCD. The TDK
Piezoelectric Buzzer sounds a short beep accompanied by a green light from the Cree
PLCC6 3 in 1 SMD LED (if the temperature is below 100.4˚Fahrenheit), or a long beep with a red LED light
(if the temperature is greater than 100.4˚Fahrenheit). All temperature thresholds mentioned here can easily be
modified by changing a setting within the code.
Operational Flowchart
The following flowchart (Figure1) demonstrates the high-level operation
of the temperature sensor.
Figure 1: Flowchart offering a high-level demonstration of how the
temperature
sensor operates. (Source: Connected Development)
Silicon Labs EFM32 Tiny Gecko TG11 Starter Kit
The Silicon
Labs EFM32 Tiny Gecko TG11 Starter Kit includes the microcontroller for the temperature sensor, all
necessary power regulators, a USB connector for power, and an LCD for displaying the temperature and user
prompts. All peripherals (such as a thermopile,
piezoelectric
buzzer, and LED)
are connected to the starter kit using jumper
wires. (See the following Install Electrical section).
TE Digital Thermopile Sensor
The Silicon
Labs microcontroller communicates with the TE
thermopile via I2C reads and writes. The TE sensor includes an ambient temperature sensor and
the thermopile used to calculate calibration offsets. The algorithm for reading measurements and applying
calibration offsets to determine the final object temperature can be found in the TE
TSD305 Digital Thermopile Sensor Data Sheet.
TDK Piezoelectric Buzzer
A PWM (pulse-width modulation)-capable GPIO (General Purpose I/O) pin on the Silicon Labs microcontroller is used
to drive the piezoelectric
buzzer.
Cree PLCC6 3 in 1 SMD LED
The temperature sensor only requires a green and red LED
for visual cues (the temperature itself is displayed on the Silicon
Labs starter kit LCD). The LEDs can be controlled with simple GPIO writes from the Silicon Labs
microcontroller.
Simplicity Studio Software
The software development tool used for the project is Silicon Labs’ Simplicity Studio IDE (Integrated
Development Environment). Instructions related to installing Simplicity Studio are found in the Set Up Silicon Labs Tools and Environment section below.
Developing the Temperature Sensor
Perform the following steps to develop the contactless temperature sensor:
- Set Up Silicon Labs Tools and Environment
- Retrieve Project Code from Github
- Import Project Code into Simplicity Studio
- Install Electrical
- Set Up Mechanical
- Calibrate and Tune
- Procure a Silicon
Labs EFM32 Tiny Gecko TG11 Starter Kit.
- Register for or Log In to the Silicon Labs site.
- Follow the Getting Started with EFM32 Tiny Gecko 11 Instructions (Note: Run
installer as
administrator when installing Simplicity Studio per “Step 2: Download and Install Simplicity
Studio”.)
- Log in to your Silicon Labs account from Simplicity Studio. The login screen will pop up by default
(Figure 2).
- Select “Install by Device” when Simplicity Studio Installation Manager window pops up
(Figure 3).
- Plug your Silicon Labs starter kit into a USB port on your computer. (Note: The screenshot used in Figure 3
shows a Giant Gecko (instead of Tiny); however, the Tiny Gecko install will look similar.)
Figure 2: Silicon Labs login screen within Simplicity Studio. (Source:
Simplicity Studio)
Figure 3: Install by Device. (Source: Simplicity Studio)
- Double click on your starter kit that is now listed in the “Connected devices" pane and click "Next"
(Figure 4).
- Continue to click "Next" with default options selected.
- Accept the MLA (License Agreement), click “Finish” and wait for installation to complete.
- Click on the device and then the “Getting Started” tab (Figure 5).
Figure 4: Starter kit listed in the "Connected devices" pane. (Source:
Simplicity Studio)
Figure 5: Getting Started tab. (Source: Simplicity Studio)
- Choose a software example (such as “blink”) from the “Software Examples” section
(Figure 6). (Note: While not the required selection, blink is a simple software that can
easily
prove that the Simplicity Studio installation, compiling, and the microcontroller code download are working
properly.
- After clicking on the “blink” project (see step 11 above), a pop-up dialog appears asking to
confirm, create the new project, and switch to the Simplicity IDE perspective. Click “Yes”.
(Figure 7).
Figure 6: Software Examples section. (Source: Simplicity Studio)
Figure 7: Confirmation Dialog Box (Source: Simplicity Studio)
- Compile the project using the “hammer icon” (Figure 8).
- Debug the project using the “bug icon” (Figure 9).
- Run the project once the debugger is launched by clicking on the “run icon”. Breakpoints can be
set,
and single-stepping is enabled, etc. (Figure 10).
Figure 8: Compile the project. (Source: Simplicity Studio)
Figure 9: Debug the project. (Source: Simplicity Studio)
Figure 10: Run the project. (Source: Simplicity Studio)
- Download and run the application by clicking on the “profile icon”. A dialog box will
appear
showing download progress. Once complete, the code will execute on the target (Figure 11).
- Make a change to the blink rate in the code by modifying the src/blink.c file, line 75. The Delay() function
call indicates the time between each LED blink cycle in milliseconds. Modify this number to a
different
number of milliseconds and then re-compile and download (see steps 13-16 above), and observe the LED blink
rate
changes that take place on the target.
Figure 11: Debug the project. (Source: Simplicity Studio)
- Figure 10: Download the project. (Source: Simplicity Studio)
- Retrieve Project Code from GitHub: Contactless Temperature
Sensor GitHub Repository
- IMport Project Code into Simplicity Studio
Import Project Code into Simplicity Studio
Navigate to the Simplicity IDE tab in Simplicity Studio (Figure 12) and import the Contactless
Temperature Sensor code downloaded from Github by selecting “File”, “Import”, Browse to
the
project code directory, and select the file. Click “Next>” and “Finish” to import the
project.
Figure 12: Import the Contactless Temperature Sensor project. (Source:
Simplicity Studio)
Install Electrical
Jumper
wires can connect the thermopile,
buzzer,
and LEDs
to the Silicon
Labs starter kit. Reference the Silicon Labs EFM32 Tiny Gecko TG11
Starter Kit User's Guide for the starter kit pinouts and header definitions. Access the TE
TSD305 Digital Thermopile Sensor Data Sheet for the TE thermopile pinout.
- The code example provided uses the following starter kit pins:
- Thermopile VDD: Exp Header, pin 20 (3V3)
- Thermopile GND: Exp Header, pin 1 (GND)
- Thermopile I2C SDA: Exp Header, pin 16 (PD6, I2C_SDA)
- Thermopile I2C SCL: Exp Header, pin 15 (PD7, I2C_SCL)
- Piezoelectric Signal: J101, pin 7 (PC1)
- Piezoelectric GND: J101, pin 15 (GND)
- RGB LED (Red): J101, pin 6 (PC0)
- RGB LED (Green): Exp Header, pin 10 (PC8)
- RGB Gnd: J101, pin 15 (GND)
Be sure not to exceed the microcontroller’s maximum current draw specification. A resistor should be
put in series with each LED to limit current. The resistor value can be chosen appropriately based on the
desired LED brightness.)
Set Up Mechanical
The project’s mechanical design will vary depending on the application and beyond this article’s
scope.
Calibrate and Tune
Differences in environment, distance/proximity to the measurement target, and target location of the measurement
(forehead, wrist, palm, etc.) can make a difference in the detected temperature. An offset (in degrees) is
applied in the code to convert from a typical wrist temperature detected by the thermopile to an internal body
temperature. This offset can easily be changed in the compiled code to account for such differences. In
addition, the design could be modified mechanically to accommodate different measurement targets such as the
forehead.
Using the Device
Once the unit is assembled and coded per the instructions above, the device is ready to use. The temperature
sensor will turn on automatically when power is applied. Once powered, the device waits for a body’s
proximity to be detected per the flowchart in (Figure 1). The temperature is then measured per
the same flowchart, and results are displayed. The device then waits for the next user/proximity detection.
Expanded Features
The following enhancements could be added to the project in the future:
Separate Proximity Sensor
A separate proximity sensor could inform a user of their distance from the sensor to provide a more accurate and
consistent measurement.
Enhanced Features
Adding a larger display, better speaker, and other enhanced features such as voice feedback could further improve
the device’s usability.
Author Bio
Dave Hoover, VP Advanced
Technology
With nine US patents to his name and over 25 years of experience in the wireless industry, Dave
Hoover has the development experience to make your project a success. He has successfully brought many M2M and
cellular phone projects to market while managing large projects and working with engineering teams across the
globe. He can adapt to your tools and processes, or implement known best practices to deliver your project on
time, on spec and on budget.