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

Bonjour à tous,

Je souhaite transmettre un code secret à distance à mon Arduino (nano) qui sera alimenté par des batteries LiPo 3.7V.
Je suis parti sur une transmission par IR, et j'ai effectué quelques tests.
Pour cela j'ai utilisé :

L'idée est de taper un code (enregistrer en dur dans le code) depuis la télécommande pour que l'arduino agisse. Ex : 1538 et hop il déverrouille la porte.

Au départ le port série faisait apparaître beaucoup de code fantôme ... en ajoutant quelques délais et conditions je suis arrivé à un résultat satisfaisant.
Génial ! jusqu'au moment où je me suis aperçu que cela fonctionnait bien car la télécommande était à 20 cm et pile en face du récepteur, et que dés que je prends de l'angle ou que je m'éloigne, les codes reçus sont complètement erronés.

Du coup je viens prendre conseil : le choix de la transmission par IR est elle la bonne ?
Si oui :

  • que faire pour que cela fonctionne à quelques mètres (5m) et légèrement en biais ?
  • Un meilleure émetteur ?
  • Un meilleur récepteur ?
  • Un meilleur code ? (je ne l'ai pas sou la main mais je le mettrai si nécessaire (c'est très basique)
    Si non :
  • RF ? quels composants ?
  • BT ? quels composants ?
  • autre ?

D'avance merci pour votre aide,
OLG

Salut
Il y a quelques années, les télécommandes de centralisation étaient en IR.
Je n'ai jamais vu un tel système fonctionner correctement, je les ai toujours remplacés par des systèmes radio.
La distance est sans nul doute un problème de conception et de puissance, pour ça faut voir le montage. Tu peux piloter ta TV à plus de 5m sans souci.
Pour moi, le mieux c'est une radio à code tournant.
Rien n'est imprenable, tout peut être piraté, mais si tu veux piloter à 5m, oublie le RFID, même actif, c'est cher. Enfin je crois.

Le plus complexe, c'est l'environnement. On n'a aucune info: bunker armé, plein air, entre des étages?

Tu veux taper un code sur une télécommande, pourquoi pas appuyer sur un seul bouton? Envoyer des codes IR à 5m, c'est possible, mais je te raconte pas à quel point c'est facile de sniffer les codes :wink:

Aussi, gaffe à l'autonomie. Une sécurité qui tombe en panne c'est pire que rien.

On attend plus d'infos: du code entre balises, des composants, des précisions.

ET UN POST QUI RESPECTE LES REGLES!!

Quitte à te balader avec un clavier et un système radio et aussi une batterie...
pourquoi pas depuis ton smartphone?
Une fois appairé, un module bluetooth me semble plutôt sûr... Sauf encore une fois si le contexte ne le permet pas ou si tu veux protéger un coffre plein d'or...

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

Je commencerais par changer les piles.

Si ça ne marche pas mieux, une vieille télécommande a une portée d'une dizaine de metres.

kayel:
Je commencerais par changer les piles.

Si ça ne marche pas mieux, une vieille télécommande a une portée d’une dizaine de metres.

Les piles sont neuves, tout comme le matériel.
J’ai également testé avec la télécommande de ma TV en ayant changé les piles pour le test également.
La conclusion est que c’est un peu mieux avec la télécommande de la TV mais de peu (je gagne quelques centimètres …)

Alors, c'est le recepteur qui déconne, ou votre montage, ou l'environnement qui pose problème.

Vous savez comme moi que la portée d'une télécommande dépasse quelques centimetres.

Kayel a plein de fois raison.

On ne sait toujours rien sur l’environnement.
Si ton capteur IR est en extérieur, en plein soleil, doute toi bien que ça va pas aller.
S’il est derrière une vitre, pareil.
je ne donne que des exemples évidents…

A voir aussi le montage, et le code.

Aussi, je viens de m’en rappeler, j’ai cette saleté de télécommande. Selon qu’on appuie “longtemps” ou pas, elle n’envoie pas les mêmes codes.
Alors déjà que les boutons sont vraiment de la daube, en plus, elle envoie des codes franchement au pif.
Enfin presque: si j’appuie sur un bouton, elle envoie par exemple ‘1’. Si je rappuie de suite, ‘2’. Si j’envoie ‘1’, que j’attends, je rappuie, elle renvoie’1’. Si je reste appuyé, elle envoie ‘3’.
Alors sincèrement, pour faire un lecteur mp3 pour la salle de bains, c’est bien, mais j’irais pas miser la sécurité de ma maison sur ce bidule.

Cependant, comme j’avais pété la télécommande de mon décodeur TNT, je me suis aperçu que la télécommande chinoise pouvait permettre de changer de chaînes, coup de bol c’est les mêmes codes.
Elle marchait mal, vu que c’est de la daube, mais la portée était très correcte.

Tu devrais poster ton montage, même si c’est dessiné (proprement)) à la main, et le code entre balises </> (au dessus des smileys) pour pouvoir fouiner et voir ce qui peut déconner.
Tu fais tes tests sur breadboard? Gaffe aux contacts foireux.

Ca vaut le coup de tester avec une télécommande piles chargées à fond, celle de la chaîne hifi ou du blueray (je sais pas ce qu’on peut bien posséder avec une télécommande en fait:D ) et faire un test.
Si ça, ça marche pas, on sera sûrs que c’est un souci de réception.
Faut vraiment être sûr, sinon on trouvera pas.

Si tu veux développer ce système pour le fun, bon courage, j’en ai plein les bottes d’en baver avec le bluetooth.
Si c’est pour sécuriser vraiment, je peux t’assurer qu’une bête alarme d’auto sera bien plus facile à installer. C’est sûr, c’est moins ‘challenge’.

Merci a vous deux pour vos réponses.

Coté environnement non pas que je ne veuille pas être plus précis mais il n’est pas évident pour un néophite de savoir ce qui est utile ou non. Comme je le disais le capteur sera au dessus des ouvertures, mais il est vrai je ne l’ai pas précisé ce sera à l’extérieur de la maison, le but n’est pas de déclencher une alarme une fois que les voleurs sont entrés mais de les faire fuir avant même qu’il aient eu le temps de forcer la fenêtre ou la porte.

Bref capteur à 2m50 de hauteur sur le mur à l’extérieur de la maison. Capteur IR orienté vers le bas pour être “naturellement” dirigé vers l’emetteur (que j’aurai dans la main).
Donc pas particulièrement exposé au soleil, ni lampadaire, pas d’obstacle (ni vitre ni rien).

Le code je l’avais ajouté au premier post mais le revoilà :

#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;
}

Le schéma je ne l’ai pas mais euh c’était très simple :

  • la broche “data” du récepteur sur le pin 10
  • la led rouge sur le pin 2 avec une resistance 220ohms
  • la led verte sur le pin 3 avec une resistance 220ohms

Tout ça sur une breadboard bas de gamme (le coup des mauvais contacts je n’ai pas testé).
Les deux télécommandes avec lesquelles je fais les tests (la samsung de ma TV) et l’autre me donne le même problème, au de quelques dizaines de centimètres les codes reçus sont aléatoires.

Les piles sont chargées à fond elle sont neuves ET rechargées.

Oui il a un coté fun dans ce que je veux faire, ça m’amuse de construire cela, mais surtout je pense que cela répondra a mon besoin.

L’alarme de voiture tu penses à quoi ?

Je te parle d'alarmes auto parce que c'est simple à monter (vraiment simple, sauf dans une auto lol).
C'est du 12v, donc avec une batterie de 12v et un panneau solaire 5w (cloture electrique par exemple), il est autonome.

Je pense à ça parce que, en 5v, tu vas devoir jongler pour pouvoir installer une sirène qui crie fort (c'est dissuasif). les sirène d'alarme de voiture ou moto sont autonomes (batterie interne) et hurlent vraiment fort.

En sécurité auto, on installe soit des capteurs UltraSons, qui "regardent" le volume intérieur de ton auto toutes les n secondes. Si le volume intérieur a changé, c'est que quelque chose bouge dedans.

Mai il y a un autre truc sympa: les MicroOndes.
On les appelle aussi capteurs périmétriques. Ca émet des ondes tout autour, comme une sphère, et ça voit si qch bouge.
Tu as peut-être déjà vu des voitures qui font un flash de clignotant quand tu t'en approches, sans hurler ni rien déclencher, mais juste pour te mettre au courant qu'elle est sous surveillance. C'est ça.

Les capteurs de mouvement sont pas chers et polyvalents, mais j'ai peur qu'en extérieur ça soit délicat. De plus, en se déplaçant lentement, ils ne voient rien. (déjà fait niahahahaha)

Tout ça peut être fait sur Arduino et te coûtera peut-être même moins cher, surtout, défaire une alarme faite maison c'est horrible. les démineurs ont toujours la trouille de tomber sur une bombe conçue par un neuneu amateur parce qu'il ne fait rien selon les conventions. pareil avec les alarmes.

Enfin, si je parle de microondes, c'est que tu peux laisser ce matériel DANS la maison. Ca passe à travers les murs normalement, sauf si tu as des murs de bunker...

Sur les portes et fenêtres, capteurs de choc, capteurs d'ouverture.
A l'intérieur, capteur de volume.

Et dans tout ça, notre télécommande?
bah justement, elle est fournie avec :smiley:
J'en ai eu une que j'avais montée, un bippeur, qui bip sur ta télécommande quand l'alarme commence à bosser. portée annoncée 1km, en réalité 200m c'est déjà bien.
Les bippeurs ont plusieurs fonction, tu peux démarrer un moteur ou ouvrir un coffre à distance. Ca laisse la place à des idées...

Je viens de me poser une question:

Un module Bluetooth peut-il permettre de reconnaître un smartphone?

L’idée: lorsque tu arrives chez toi, ton téléphone émet du bluetooth, l’alarme se coupe. Quand tu n’es plus à portée, elle s’active.

Si quelqu’un sait si c’est faisable, ça m’intéresse :wink:

Salut Kammo,

merci, c'est interessant je vais creuser l'idée de l'alarme voiture.
Et effectivement je pensais au fait que mon alarme maison puisse être déroutante et dissuasive pour les cambrioleurs "bas de gamme".

Pour le BT, je ne sais pas mais si tu veux une réponse à ta question il vaudrait mieux faire un post à part car noyé dans mon sujet tu as peu de chances d'avoir une réponse ... et en plus ça respecte pas les règles :stuck_out_tongue: :stuck_out_tongue:

OLG:
et en plus ça respecte pas les règles :stuck_out_tongue: :stuck_out_tongue:

Hm hm, c'est vrai, mais j'ai trouvé, c'est le RSSI.

Après quelque recherches, on peut activer/désactiver l'alarme en fonction qu'elle reçoit ou non le signal BT de ton téléphone.
Mais alors honnêtement, vu comme j'en bave à lui faire lire un nombre, oublions.

Encore une fois, on peut faire cette alarme avec arduino, mais je sais que les alarmes auto sont compactes et fiables.

Malheureusement je ne retrouve pas mon ancien fournisseur...
Attention, une alarme pétée d'options avec tout ce qu'il faut, ça coûte 50€ max

Certains capteurs ne te serviront pas: anti-soulèvement, antidémarrage, trackeur...
tu t'en doutes, mais pense bien à choisir les composants, une alarme entièrement à la carte.
il est TRES facile de mettre plusieurs capteurs de volume, ils se mettent en dérivation, pareil pour les chocs etc...