Isn’t it a pain when you go check your mailbox only to find that you have no mail? Look no further than TMail - a device that will send you a text when you’ve got mail! Designed to have a minimal installation process, TMail is a device using an Arduino microcontroller that can slide into your mailbox, and uses pressure sensors to detect changes in weight, which reflect whether an item has been placed in your mailbox. Using Twilio (an online message relay service) and your home’s wifi connection, TMail will then promptly send you a text: “You’ve got mail!” Underlying this product is the idea that your time is valuable. Mail shouldn’t be a hassle. TMail makes sure it stays that way.

Technical Description:

TMail accomplishes a lot with just a few parts. It uses two Arduino Uno boards, 3 pressure sensors (force sensitive resistor pads), a 200 ohm resistor, 3 1N4004 diodes, 4 red LEDs, two Bluetooth HC-05 modules (master and slave), a 16x2 LCD screen with an i2c/SPI backpack, and a whole lot of wire.

The Arduino boards power two circuits - the pressure sensing circuit which detects mail and the LCD screen circuit which notifies you in your home. Let's first understand the pressure sensing circuit. The 3 pressure sensors are force sensitive resistors. They have "nearly infinite" resistance (around 10M ohms) when detecting no pressure, and significantly decrease in resistance as more and more weight is detected on the pressure pad. These pressure sensors are used in a voltage divider circuit with a 200 ohm resistor. The output voltage is measured via a connection to the Arduino at pin A4. Voltage Dividers are defined by the equation V(out) = V(in)*(R2/(R1+R2)), with V(in) being the 5V from the Arduino, R2 being the 200 ohm resistor and R1 being the pressure sensor in this case. As such, V(in) should be near 0 when there is no weight on the pressure sensor and should be some value based on the weight of the mail. This allows us to extrapolate a voltage threshold and consequently a resistance value and ultimately- based on research online, a weight - beyond which we can be certain that there is actually mail present. The pressure sensors are placed in parallel rather than in series in order to ensure that even if a piece of mail is only on top of one of the pressure sensors, current can still pass through the circuit and the Arduino can measure the output voltage. Essentially, mail can be placed on sensor 1 OR sensor 2 OR sensor 3. Additionally, 1N4004 diodes were used in order to ensure that current all flowed in one direction (though in hindsight, this seems rather superfluous).

Taking a look at the circuit diagram above, one will also notice that there are 4 LEDs in use. These were solely for aesthetic purposes. These LEDs were placed behind the "TMail" plexiglass panel at the front of the product to provide a red glow to the letters.

Working in tandem with the pressure sensors is the HC-05 Bluetooth Master Module, henceforth referred to as the "master module". The Arduino constantly reads the output voltage from the voltage divider circuit. In the Arduino code, a specific resistance threshold (which variated from 3.5k ohms to 5k ohms; resistances above these values meant that there was no mail present) is set. Above this threshold, the master module is coded to send the character '0' to the slave module, indicating that no mail is present. Below this threshold, the character '1' is sent, indicating that there is mail. A character is sent every second, and the output voltage, resistance, and weight are checked every 15 seconds. There is a noticeable latency between sending data through the master module and having it reach and/or be processed by the slave module. This fifteen second gap between measurements is coded in to account for the hardware's latency. Checking the voltage, resistance, and weight with this time gap improves the reliability of TMail as it limits the possibility of "false alarms" stemming from fluctuations in the readings from the pressure sensors.

Lastly, the slave module receives the '0's and '1's from the master module and is connected to a 16x2 LCD screen conveniently located in one's home. Since this LCD screen uses an i2c/SPI backpack to simplify connections, the Adafruit Liquid Crystal Library was used to work with this and code what displays on the screen. The Arduino powering the slave module and LCD screen is coded so that if the slave module receives a '0', the LCD screen displays, "Hey Luv (this name is personalized for the owner)! No mail...". If the slave module receives a '1', the LCD screen changes to reflect this change, displaying, "Hey Luv! You've got mail!" These notifications flash on and off every second in order to catch a person's eye and effectively notify him/her.

Our Code:

Please see the google doc link in the "Try it out" section for our final code, as well as the code we were using when trying to get text messaging to work.


TMail, as its name suggests was intended to notify an individual of the arrival of his/her mail via text. As we were unsuccessful in working with Twilio to send SMS, we switched to using Bluetooth to provide notifications via a small LCD screen in a person's home. Perhaps "BMail" would be a more appropriate name.

Built With

Share this project: