Salut kammo,
merci pour ta réponse.
L'idée c'est de faire une petite alarme maison (je n'ai pas besoin d'une sécurité à toute épreuve, une solution maison me suffit), un capteur PIR pour détection de présence, un algo aux petits oignons pour les "faux utiles" (chats etc ...), un buzzer 95db, et un moyen de désactiver l'alarme à distance facilement (genre un plip personnalisé).
Alors sur le piratage, vraiment si quelqu'un s'amuse à ça, il a vraiment du temps à perdre, je n'ai rien de grande valeur, c'est juste pour éloigner les "petites frappes" qui voudraient "s'amuser" ... bref tout ça pour dire que je n'ai pas besoin d'une sécurité très forte (mais l'idée du code secret dynamique est à creuser).
Coté environnement c'est très simple : plein air, le dispositif sera positionné en hauteur au dessus des ouvertures et ne sera à désactiver que lorsque je serai dessous (genre quand je rentre chez moi en pleine nuit).
Pour l'autonomie idem, c'est un autre sujet, mais c'est pris en compte dans mon projet (d'où le 3.7V) je ne veux pas percer mes murs et amener le jus, et je dispose déjà du matériel (batterie + panneau solaire).
Le smartphone j'y ai pensé mais plutôt dans un seconde temps si cela m'amuse via wifi pour une gestion des horaires de "surveillance" plus fine et souple.
Le BT bof, comme c'est pour éloigner les gêneurs, l'alarme va se déclencher très très très rapidement et c'est une technologie avec laquelle je rencontre systématiquement des problèmes d'appairage et que je fuis dés que possible.
Le code (d'une complexité sans nom) :
#include <IRremote.h>
const int LED_ROUGE = 0;
const int LED_VERTE = 1;
const int CODE_SECRET0 = 0xABCABC; //Touche 1
const int CODE_SECRET1 = 0xDEFDEF; //Touche 2
const int CODE_SECRET2 = 0x123123; //Touche 5
int pinLed[2] = {2, 3}; //déclaration et initialisation du tableau avec les valeurs des pins
int pinIR = 10; //set D10 as input signal pin
int codeSecret[3] = {0,0,0};
IRrecv irrecv(pinIR);
decode_results signals;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // enable input from IR receiver
//Boucle d'initialisation des modes et mise à 5V
for (int i = 0; i < 2; i++) // i va nous servir pour parcourir le tableau
{
pinMode(pinLed[i], OUTPUT); //On intialise les pins en sorties
digitalWrite(pinLed[i], HIGH); //On eteint les LEDs
}
//On allume la LED Rouge pour simuler l'alarme active et le code non reconnu
digitalWrite(pinLed[LED_ROUGE], LOW);
//On s'assure que la led verte est éteinte
digitalWrite(pinLed[LED_VERTE], HIGH);
}
void loop()
{
//On vérifie qu'un signla a été reçu
if (irrecv.decode(&signals))
{
//On filtre les signaux inutiles des télécommandes basiques
if (signals.value== 0xFFFFFFFF)
{
irrecv.resume(); //si c'est un signal inutile on passe au suivant
}
//Sinon on stock le code dans un tabeau
else
{
Serial.println(signals.value, HEX);
nouvelleTouche(signals.value);
irrecv.resume(); // Receive the next value
}
}
delay(200);
//On vérifie le code secret
if (codeSecret[0] == CODE_SECRET0 && codeSecret[1] == CODE_SECRET1 && codeSecret[2] == CODE_SECRET2 )
{
//On allume la LED Rouge pour simuler l'alarme active et le code non reconnu
digitalWrite(pinLed[LED_ROUGE], HIGH);
//On s'assure que la led verte est éteinte
digitalWrite(pinLed[LED_VERTE], LOW);
//On attend pour simuler que l'alarme a été désactivé
delay(5000);
//On allume la LED Rouge pour simuler que l'alarme se réactive
digitalWrite(pinLed[LED_ROUGE], LOW);
//On éteint la led verte
digitalWrite(pinLed[LED_VERTE], HIGH);
//On réinitialise le code secret
codeSecret[0] = 0;
codeSecret[1] = 0;
codeSecret[2] = 0;
}
}
void nouvelleTouche(int code)
{
codeSecret[0] = codeSecret[1];
codeSecret[1] = codeSecret[2];
codeSecret[2] = code;
}
kammo:
ET UN POST QUI RESPECTE LES REGLES!!
Ah ben mince j'ai lu le règles avant de poster justement et je pensais les respecter (mis à part les liens à la place des images, j'avoue j'ai pas fait attention). Si c'est cela c'est corrigé ![]()
OLG