This system measures temperature and sends the measurement to an Android phone via Bluetooth Low Energy (BTLE). The microcontroller is a Silicon Labs C8051F931, the Bluetooth breakout board is a Nordic nrf8001, and the temperature sensor breakout board is a TI TMP102.
The micro talks to the nrf8001 using SPI and to the TMP102 using I2C. The system was debugged using Saleae Logic 8 Analyzer.
The microcontroller code was ported from the Adafruit Bluefruit project which was authored by Kevin Townsend and running on an Arduino Uno. KT did a great job. Porting the code from the Arduino to the Silabs 8051 was a nightmare but I made it work. Hey! I am an analog guy mostly, so give me a break!
I am using UART Services for this project, so I was able to test the interface using Nordic’s NRF UART app on the Android. Later, I had my son take the Nordic code and modify it to interface with the temp sensor.
The C8051F931 is implemented here on one of the Silabs Toolstick target boards. Power can be provided external to the board or use an on-board LR44 battery that is boosted up using a SMPS boost converter built into the F931. To make things simple for this demo, I used a separate 2032 coin cell to power the radio and the temp sensor.