Week 7
April 22, 2025
Hello everyone, welcome back to my blog! This week, I introduced two new sensors to the circuit—one for detecting ammonia and another for detecting VOCs (volatile organic compounds)—in addition to my existing Fermion MEMS odor sensor. The goal: to get a more nuanced and accurate picture of what’s actually in the air and better distinguish between types of odors, especially ones that could indicate sweat.
Once I wired the new sensors into the Arduino Nano and validated that they were logging clean data, I began collecting readings for different scent sources: Garlic, Vinegar, Perfume, Nail Polish Remover, etc. These samples were chosen to represent a spectrum from “body-odor-like” to “pleasant/fragrant.” I then cleaned the data—removing the warm-up period for each sensor—and visualized it using scatter plots and histograms.
To better understand how the scents clustered based on sensor readings, I applied KMeans clustering and visualized the data using PCA (Principal Component Analysis). The clusters were visibly distinct, suggesting that the combination of odor, VOC, and ammonia readings provides strong separation between scent profiles.
From there, I trained a Random Forest classifier on the data and also exported a Decision Tree model to simplify the logic. This tree now guides the behavior of the red LED on my device: if the sensor data looks more like Garlic or Vinegar (the odors are composed more sweat-like), the LED turns on. If it resembles Perfume or Nail Polish Remover, it stays off. I translated these rules into Arduino if-else logic that runs in real time.
By expanding the sensor array and integrating machine learning, my device is evolving from a basic odor detector into a smart, context-aware tool. Next week, I plan to incorporate real or synthetic sweat data into the system to push the model further toward its final purpose: detecting human body odor with accuracy and reliability.
Thanks and stay tuned!
Leave a Reply
You must be logged in to post a comment.