Detecting Driver Drowsiness Based Force Sensitive Resistors.

The Force Sensitive Resistor, or FSR is one of those parts that fills bins in interaction design labs across the world. It’s a simple guy, a finicky guy, but it has its place in the maker toolbox.
A FSR is just what it sounds like – a resistor that changes its resistance with force. So if you press, sit, or punch it, its resistance changes. The finicky part tends to be when people want it to measure force with any sort of precision. It’s really not good for that, so if you need something sense even approximate weight or quantitative force, this is not your guy. But if you need something that will let you know if someone is sitting in a chair, or hugging a stuffed animal, this is it!
FSRs come in a wide variety of sizes, the larges ones can get a bit expensive, but you can probably find one to fit your project.

Hooking it up, and why

The FSR changes its resistance with force. It ranges from near infinite when not being touched, to under 300ohms when pressed really hard. So we can measure that change using one of the Arduino’s analog inputs. But to do that we need a fixed resistor (not changing) that we can use for that comparison (We are using a 10K resistor). This is called a voltage divider and divides the 5v between the FSR and the resistor.
The analog read on your arduino is basically a voltage meter. At 5V (its max) it will read 1023, and at 0v it will read 0. So we can measure how much voltage is on the FSR using the analogRead and we will have our force reading.
The amount of that 5V that each part gets is proportional to its resistance. So if the the FSR and the resistor have the same resistance, the 5V is split evenly (2.5V) to each part. (analog reading of 512)
But if the FSR is pressed on pretty hard, reading only 1K of resistance, the 10K resistor is going to soak up 10 times as much of that 5V. So the FSR would only get .45V. (analog reading of 92)
And if something is barely pressing on it, the FSR may be 40K of resistance, so the FSR will soak up 4 times as much of that 5V as the 10K resistor. So the FSR would get 4V. (analog reading of 819)
Some basic stats

These stats are specifically for the Interlink 402, but nearly all FSRs will be similar. Checking the datasheet will always illuminate any differences
  • Size: 1/2" (12.5mm) diameter active area by 0.02" thick (Interlink does have some that are as large as 1.5"x1.5")
  • Price: $7.00 from the Adafruit shop
  • Resistance range: # Infinite/open circuit (no pressure), 100K ohms (light pressure) to 200 ohms (max. pressure)
  • Force range: Force range: 0 to 20 lb. (0 to 100 Newtons) applied evenly over the 0.125 sq in surface area
  • Power supply: Any! Uses less than 1mA of current (depends on any pullup/down resistors used and supply voltage)
  • Datasheet (note there are some mathematical inconsistencies in here)

DROWSINESS DETECTION TECHNIQUES

If car technologies are going to prevent or at least warn of driver fatigue, what symptoms does the driver give off that can be detected? According to research, there are multiple categories of technologies that can detect driver fatigue. The first is the use of cameras to monitor a person’s behaviour. This includes monitoring their pupils, mouth for yawning, head position, and a variety of other factors. The next of these technologies is voice recognition. Often a person’s voice can give off clues on how fatigued they are. The detail explanation of the underlying techniques of drowsiness detection that are mostly used for the detection purpose: • ECG and EEG • LBP (Local Binary Pattern) • Steering Wheel Movement (SWM) • Optical Detection

part II of this article will be updated soon.

Code

int fsrAnalogPin = 0; // FSR is connected to analog 0
int LEDpin = 11; // connect Red LED to pin 11 (PWM pin)
int fsrReading; // the analog reading from the FSR resistor divider
int LEDbrightness;

void setup(void) {
Serial.begin(9600); // We'll send debugging information via the Serial monitor
pinMode(LEDpin, OUTPUT);
}

void loop(void) {
fsrReading = analogRead(fsrAnalogPin);
Serial.print("Analog reading = ");
Serial.println(fsrReading);

// we'll need to change the range from the analog reading (0-1023) down to the range
// used by analogWrite (0-255) with map!
LEDbrightness = map(fsrReading, 0, 1023, 0, 255);
// LED gets brighter the harder you press
analogWrite(LEDpin, LEDbrightness);

delay(100);
}

Picture of Simple code for analog FSR measurements
simpletestout.gif










DROWSINESS DETECTION TECHNIQUES If car technologies are going to prevent or at least warn of driver fatigue, what symptoms does the driver give off that can be detected? According to research, there are multiple categories of technologies that can detect driver fatigue. The first is the use of cameras to monitor a person’s behaviour. This includes monitoring their pupils, mouth for yawning, head position, and a variety of other factors. The next of these technologies is voice recognition. Often a person’s voice can give off clues on how fatigued they are. The detail explanation of the underlying techniques of drowsiness detection that are mostly used for the detection purpose: • ECG and EEG • LBP (Local Binary Pattern) • Steering Wheel Movement (SWM) • Optical Detection 

fsrpulldownsch.gif










Comments

Popular posts from this blog

LCD/LED TV FLASH BIOS / EPROM programming with Serial Flash Memory - W25Q32FV

Sony Bravia 55" Double image / Image Flickering ( CKV - Clock Vertical Signal ) LED Panel Repairing

Calculate RPM with Hall effect Sensor