Quel technologie et/ou composants utiliser pour transmission d'un code ?

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é :wink:

OLG