Handz up !

Philippe Trinh – Ghislain Fayard

Envoyer un email sans les mains !

Un tapis sensitif déclenche une capture d’image par webcam, et l’envoie par mail.
(Application: dispositif sécuritaire, visioconférence pour les personnes âgées ne sachant pas se servir d’un ordinateur pour communiquer, photomaton automatisé…)

Materiel utilisé en INPUT: capteur de pression

 

 

Schéma Fritzing de l’installation :

 

Code Arduino :

int FSR_Pin = A0; //analog pin 0
void setup(){
Serial.begin(9600);
}
void loop(){
int FSRReading = analogRead(FSR_Pin);
Serial.println(FSRReading);
delay(150); //just here to slow down the output for easier reading
}

Code Processing :

import processing.serial.*;
import processing.net.*;
Client client;
boolean requestInProgress;
String responseString = » »;
int timeThreshold = 1;
int timeLastSent[] = {
hour(), minute() -1};
int prevSensorValue = 0;
boolean detection = false;
int threshold = 320;
int graphPosition = 0;
int linefeed = 10; //linefeed in ASCII
Serial myPort; //the serial port
int sensorValue = 0; //the value from the sensor
void setup(){
size(400,300);
//list all the available serial ports
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.bufferUntil(linefeed);

client = new Client(this, « ghislainfayard.fr », 80);

client.write(« GET /detect-script.php?sensorValue=321 HTTP/1.0\r\n »);
client.write(« HOST: ghislainfayard.fr\r\n\r\n »);
requestInProgress = true;
}
void draw() {
if (sensorValue > threshold) {
if (prevSensorValue < = threshold){ delay(100); if (sensorValue >threshold){
detection = true;
sendMail();
}
}
} else {
if (prevSensorValue > threshold) {
detection = false;
}
}
prevSensorValue = sensorValue;

if (client.available() > 0) {
responseString += char(client.read());

print(« l »);
} else {
if(responseString.length() > 0) {
if(requestInProgress == true) {
println(responseString);
requestInProgress = false;
responseString = » »;
checkNetClient();
}
}
}
}
void serialEvent(Serial myPort){
String myString = myPort.readStringUntil(linefeed);

if (myString != null){
sensorValue = int(trim(myString));

println(sensorValue);
drawGraph();
}
}
void drawGraph(){
int lineHeight = sensorValue /2;

if (detection) {
stroke(0,255,0);
} else {
stroke(255,0,0);
}

line(graphPosition, height, graphPosition, height – lineHeight);

if(graphPosition >= width) {
graphPosition =0;
background(0);
} else {
graphPosition++;
}
}
void sendMail() {
int[] presentTime = {hour(), minute()};

print(sensorValue + « \t »);
print(presentTime[0] + « : » + presentTime[1] + »\t »);
println(timeLastSent[0] + « : » + timeLastSent[1]);

if (presentTime[0] == timeLastSent[0]) {
if (presentTime[1] – timeLastSent[1] >= timeThreshold) {
println(« This is where you’d send a mail. »);
makeHTTPCall();
timeLastSent[0] = hour();
timeLastSent[1] = minute();
}
}

if (presentTime[0] != timeLastSent[0]) {
int minuteDifference = (60 – timeLastSent[1]) + presentTime[1];

if (minuteDifference >= timeThreshold) {
println(« This is where you’d send a mail »);
makeHTTPCall();

timeLastSent[0] = hour();
timeLastSent[1] = minute();
}
}
}
void makeHTTPCall() {
if(requestInProgress ==false){
client = new Client(this, « ghislainfayard.fr », 80);

String requestString = « /detect-script.php?sensorValue= » + sensorValue;

client.write(« GET  » + requestString +  » HTTP/1.0\n »);
client.write(« HOST: ghislainfayard.fr\n\n »);
requestInProgress = true;
}
}
void checkNetClient() {
if(client.available() > 0){
responseString += char(client.read());
print(« l »);
} else {
if(responseString.length() > 0){
if(requestInProgress == true){
println(responseString);
requestInProgress = false;
responseString = «  »;
}
}
}
}