BACKGROUND // I had been milling over the idea for awhile about whether you could use olfactory triggers to wake someone up. It seemed like a simple, fun project to practice my electronics, python and mobile application skills. I then started thinking about how you could use it to subtly indicate certain shifts in the day, like ‘it’s time to start wrapping up’ type of messages. This eventually evolved into a curiosity about whether I could influence other people behavior…


OBJECTIVE // Construct device to condition my coworkers to leave the office everyday when they smell the signal scent. Then while anonymously tracking the presence of people in the office, see if I can manipulate the time that they leave if I start to slide the release time.


……………(1)  Python

……………(2) Raspberry Pi Zero

……………(3) Rapid Prototyping [FDM]

……………(4) Bluetooth Low Energy

……………(5) WiFi


>> Programming:

1.  Web-based: HTML, Javascript, PHP

2.  Mobile: Java (Android Studio)

3.  Embedded: Arduino/C

>> Soldering

TEAM // Jack Boland

ROLE // Mechanical Engineering; Electrical Prototyping; Software Development


My first attempt was to create a quick FDM adapter to a Citrus Magic can with a small solenoid that would trigger the aerosol can. The system was going to be controlled by a Raspberry Pi Zero but unfortunately, when I built the prototype, the solenoid wasn’t strong enough to overcome the can’s nozzle force so it didn’t work.


NEXT PROTOTYPE // After this, I decided to try to hack an existing off the shelf mechanism to control the release of a scent. Timed aerosol air freshners are common (and cheap) so I bought one, sliced it open, and started to sort out exactly what its little PCB board was doing. I initially thought it could be worthwhile to try and salvage the board as I was worried if I tried to run the gear mechanism/motor directly, it might draw too much current and fry my RPi. Ultimately, it didn’t seem like I could use the PCB exactly how I wanted, so I tried driving it off the board, and it worked fine!


PYTHON, RPI, & NETWORK MONITORING // Now that the device was deploying the scent, I had to build the program to run the clock and interface with the app via BLE. The other key part to this program was that it was going to track the devices on the network. My theory was that because everyone’s phone most likely connected and disconnected to the local network as then entered and exited the building, if I could identify the MAC addresses of the phone that correspond to an employee, I could determine when they left every day.

So I wrote a program that would survey the network every 5 minutes and return a list of all the MAC addresses on the network. It would then compare this list to the previous devices that were on the network. If a device had joined, or left, I would log the timestamp in a file for that specific address. 

WHAT’S NEXT // There are two final technical details that need to be sorted out before I can start the test. I am having issues with disconnecting and reconnecting the BLE, which is used to update the alarm time. Additionally, the python script does not seem to be launch properly when it is called autonomously on power up of the hardware. I believe this is because it is calling the script prior to initializing the Bluetooth chip.

Once these bugs are sorted, the plan is to start with a month-long conditioning of the office, in which I deploy the same scent every day at 4:45pm. After the conditioning period is complete, I will start shifting the release time slowly over the course of a couple weeks to see if I can influence the time that everyone leaves. I of course have no intention of surveilling my coworkers, so the addresses are collected anonymously and only correlated to a phone after the study is over and the participants have provided their permission.