Title: Wearable Tracking Device for Miners
By: sunnyiut
Previous Blogs | |
---|---|
01: Introduction | 02: The Kit |
03: Review_MSP432P401R | 04: Review_430BOOST-SHARP96 |
05: Review_BOOSTXL-SENSORS | 06: Review_DLP7970ABP |
07: Project proposal update | 08: TFT interfacing |
Design Challenge: Safe and Sound Wearables
Blog number: 09
Intro:
This blog is based on MSP432P401r and OPT3001 Light sensor interface.
The OPT3001 Light Sensor will provide the ambient light intensity measurement.
According to my project proposal I have to design a wearable device mounted on the wrist of the Miners.
This wearable device consists of several sensors to collect environmental information.
In this blog post, I'll focus on
- the interfacing of the OPT3001 and the MSP432P401r MCU
- display the ambient light intensity on TFT
- send data to PC UART for graphical representation
Components:
Compiler:
MikroC pro for ARM - from MikroElektronika
Firmware:
Full source code and circuit diagram can be found in LIBSTOCK.
dependencies -
- OPT3001.c [ambient 2 click]
- mikroplot UART.c [mplot]
libraries -
- TFT
- TFT def
TI’s OPT3001 is an ambient light sensor. It’s a single-chip lux meter with infrared rejection. That measures only the visible
part of the light spectrum (mimicking the human eye’s response to light).
The sensor comes with BOSXL-SENSORS [sensors boosterpack] and communicates with the MSP432 Launchpad using I2C.
- operates at 3.3v
- can produce hardware interrupt
OPT3001 I2C address = 0x47 (ADD pin is connected to SCL) [default in booasterpack]
OPT3001 I2C address = 0x44 (ADD pin is connected to GROUND)
Interfacing:
#define OPT3001_I2C_ADDR 0x47 // ADD pin is connected to SCL) char tmp_data[3]; /******************************************************************************* configuring OPT3001 Ambient Light sensor *******************************************************************************/ void OPT3001_Configuration(){ tmp_data[0] = 0x01; // Configuration register tmp_data[1] = 0xC6; // Set Mode of conversion operation field as tmp_data[2] = 0x10; // 11 - Continuous conversions I2C1_Write(OPT3001_I2C_ADDR,tmp_data,3,END_MODE_STOP); // Send 3 bytes (tmp_data) } /******************************************************************************* reading ambient light data from OPT3001 sensor *******************************************************************************/ float Get_OPT3001_Data() { unsigned int DataSum; float Ambient_Data; tmp_data[0] = 0x00; // Ambient Light Result register address I2C1_Write(OPT3001_I2C_ADDR,tmp_data,1,END_MODE_RESTART); // Send byte (tmp_data[0]) I2C1_Read(OPT3001_I2C_ADDR,tmp_data,2,END_MODE_STOP); // Read light data and store it in tmp_data DataSum = ((tmp_data[0] << 8) | tmp_data[1]); // Justify Ambient values tmp_data[0] = tmp_data[0] >> 4; // Justify exponent data DataSum = DataSum << 4; // Justify fractional results DataSum = DataSum >> 4; Ambient_Data = 0.01 * (2 << tmp_data[0]) * DataSum; // Lux equation if (Ambient_Data >= 5000.0) // The most useful ALS range is in the 1 to 1,000 lux range Ambient_data = 5000.0; //Ambient_Data /= 10; // Lux to percents conversion return Ambient_Data; // Return ambient data }
Circuit Diagram:
MSP432P401r with OPT3001 TFT display connection
OUTPUT :
When tested in my room it gives a reading of about 163 LUX.
Initialization screen indoor ambient light intensity
I have used "mikroplot" to graphically present the data over a time period. The MSP432 Launchpad communicates with the PC GUI through UART @ 57600 BAUD.
graph maintains ~163 LUX at indoor room light reading falls down to ~40 LUX with a transparent plastic placed on the sensor
I have checked the response of the sensor with a smart phone flash light placed beside [horizontally] it. Reading goes up to ~2000 LUX.
variation of reading while moving the light source front and back -
That's the end of this blogpost. In my next blog, I'll interface the BME280 sensor and display the output data on TFT.
Top Comments
Nice update.
I am curious about what value you think having the light sensor on board will provide?
Granted, knowing the lighting conditions of the working environment could be useful, especially if the…
also, the brightness of the display can be changed automatically ... though i've not included it in the firmware.