Bonjour et bravo tout d abord pour votre site plein de beau projet à explorer
je vous expose mon cas d’école,qui est en fait une solution pour un ami qui se lance dans une nouvelle activité.
Alors qu'on lui propose une solution technologique à plus de 1000 euros(une sorte de tapis sensor), il m a demande si je pouvais lui faire cela avec un arduino UNO, etant plutot oriente systeme et reseau et non un programmeur chevronné je me heurte à quelques problèmes.
j aimerais pouvoir inscrire sur une sd card le nombre de personne détecté toutes les heures grace a un PIR sensor et pouvoir interroger à distance grâce à un module gsm/3g cette sdcard ou envoyer un sms sur un telephone portable journalierement.
je pense que technologiquement cela doit etre faisable mais etant novice dans ce language j avoue que pour l instant tous mes essais sont infructueux,
le materiel utilise est un arduino UNO
1 data logger avec lecteur de carte sd et une pile pour RTC
1 PIR sensor (detecteur de proximité)
je vous mets mon code qui fonctionne actuellement pour la detection de personne
/*programme permettant de compter le nombre de personnes qui passent en inscrivant
la date et l heure sur une SDcard. les données devront etre consultable à distance*/
#include <Wire.h>
#include <RTClib.h>
#include <SD.h>
RTC_DS1307 RTC;
//temps de calibration du PIR à l'environnement
int calibrationTime = 10;
int ledPin = 13; // definition du pin pour la led
int inputPin = 2; // choix dela pin d entree pour le PIR
int pirState = LOW; // au demarrage nous nous assurons que rien n est detecte
int val = 0; // variable pour lire le status de la pin
void setup() {
pinMode(ledPin, OUTPUT); // declare la led comme sortie
pinMode(inputPin, INPUT); // declare le pir comme entree
Serial.begin(9600);
Wire.begin();
RTC.begin();
// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(__DATE__, __TIME__));
Serial.print("calibration du PIR en cours ");
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
delay(1000);
}
}
void loop(){
val = digitalRead(inputPin); // lire la valeur d entree
Serial.println(val);
if (val == HIGH) { // regarde si la valeur d entree est HIGH
digitalWrite(ledPin, HIGH); // on allume la led
if (pirState == LOW) {
DateTime now = RTC.now();
Serial.print("Une personne detecte ! ");
Serial.print("A ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.print(" Le ");
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.println("");
Serial.println();
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // on eteind la led
if (pirState == HIGH){
// on eteind
Serial.println("Fin de la detection!");
// on veut juste le changement de sortie pas d etat
pirState = LOW;
}
}
delay(3000);
}
Mon probleme maintenant c est qu apres de nombreux essais je n arrive pas a inscrire le nombre de personnes qui passent dans la sdcard avec la commande logfile.println
le but etant que l arduino envoit un message sous forme de sms ou de mail journalier avec le nombre de personnes comptés
j espere avoir avoir etait assez clair, si ce n est pas le cas je m excuse car je ne suis pas tres a l aise avec les forums
Merci de m'avoir lu