Introduction: A Talking Temperature and Humidity Sensor - Si7021 and Little Buddy Talker
The "Little Buddy Talker" is a small device that allows you to add a simple voice output to your Arduino projects. It contains a limited set of 254 words and can be connected to Arduino or other microcontrollers via SPI.
The Little Buddy Talker (LBT) was developed by Patrick Mitchell, more information can be found on his website www.engineeringshock.com. LeRoy Miller has developed a library to simplify the usage of the LBT called word100 and Matt Ganis has developed a interesting script to simplify the reading of numbers that uses the word100 library.
In the following I will describe a simple talking thermometer / hygrometer based on the Si7021 sensor, an Arduino and the Little Buddy Talker. So far it is hardly more than a prove of concept. I used the Si7021 breakout from Adafruit and just combined the Si7021 sample script from Adafruit with the script by Matt Ganis. You also will have to install the Adafruit Si7021 and the Word100 libraries.
Step 1: Materials
Little Buddy Talker - 25 CA$. I got mine from the Kickstarter project.
More information at www.engineeringshock.com.
Si7021 breakout - I used the Adafruit breakout, about 7 US$.
A detailed description and instructions are found on the Adafruit website.
Arduino Uno - I used the Monkmakesduino, but any version should work.
A breadboard, some jumper cables, headphone or speaker.
You will need to install certain libraries.
The Word100 library can be found at https://github.com/kd8bxp/Word100
The Si7021 library by Adafruit can be found here: https://github.com/adafruit/Adafruit_Si7021
The original of Matt Ganis' script can be found at http://mganis.blogspot.de/
Step 2: Setting Up of the Device
Setting up the device is quite simple and fast: the Little Buddy Talker is connected to the Arduino via SPI, to the Si7021 breakout via I2C.
- Connect the ports marked Gnd, Vin, Scl and Sda on the sensor to ports GND, 5V, A5 and A4 of the Arduino.
- Connect the 5V, GD, DI, SC and CS ports of the 'Little Buddy Talker' to ports 5V, GND, 11, 13 and 10 of the Arduino. A breadboard and jumper wires could be helpful.
- Connect a speaker or a headphone to the audio port of the LBT.
- Install the required libraries in the Arduino IDE.
- Upload the example script (see next step) to your Arduino.
The results of the measurements are shown on the serial monitor and spoken. Measurements are taken about twice a minute, which can be adjusted in the script very easily changing a 'delay' value.
A central but natural limitation of the Little Buddy Talker is the restricted set of words. 'point' is a missing word, making it harder to 'speak' floating point numbers. So while the Si7021 is able to measure temperature more precisely, I reduced the information to whole numbers.
Humidity values are given as relative humidity in %. Unfortunately the term 'percent' is missing as well. So I tried to substitute it with a combination of 'per' and 'centi', even though 'per-centi' sounds a bit ridiculous. At the time of writing, there is a Kickstarter project for a larger version with more than 1000 words, the 'Big Buddy Talker', that may allow to circumvent this limitations.
Once the script is on the Arduino, you can run the device powering it by a power pack. I used this setup to place it in the fridge, with the speakers of a headset outside. It was still working at -19°C.
In the case of large changes of humidity or temperature, the sensor needs some minutes to adjust. So be patient and wait until the values have stabilized.
Step 3: The Script, and Project Outlook
You may download the script from here. As mentioned, it is just a compilation of the works of others, with some minor adjustments. You may modify the script as you like, but please keep the copyright comments of Matt Ganis and LeRoy Miller.
Attached you also find a list of the terms the Little Buddy Talker is able to speak, an excerpt from LeRoy Millers documentation.
Just to let the Little Buddy Talker say numbers from -99 to 99, a simpler script would be sufficient. But I would like to use this script and application as a test for similar constructs with other sensors that may report long numbers as values, e.g. light or color sensors. Stay tuned.
Another example for a combination of LBT and a sensor can be found here: https://www.instructables.com/id/A-Talking-UV-index-Measuring-Device-Using-the-VEML/
Any hints, remarks and corrections are welcome.