Antivol pour voiture avec Arduino

Bien sûr je ne serais jamais James Bond et mon « Aston-Martin » n’est pas vraiment semblable à sa voiture ! Mais pour rêver et croire que j’ai fait une bonne affaire, ma nouvelle acquisition a été baptisée « Aston-Martin » …… 🙂

Donc, c’est un vieux véhicule (1996), pas d’électronique, c’est un moteur avec carburateur et dans ce type de véhicule, il suffit de coupler deux fils au niveau de la clé pour que le moteur démarre. Pour l’instant seule partie mécanique est refaite. La carrosserie et l’intérieur, c’est en pourparler, mais avant qu’il n’attire trop les regards, une question : comment faire pour éviter un vol ?

Je me suis dit : un coupe-circuit et cela ralentira un peu les premiers venus, car je n’aime trop les alarmes qui « beuglent sans raison » et ça, c’est pas simple à réaliser. De plus dans ma région, on laisse les véhicules sans vitesse dans les parkings (grande densité) à charge de chacun de déplacer à la main le véhicule gênant, donc les alarmes aux mouvements, aux légers chocs, il faut oublier. Il y a encore les bloqueurs de volant, pas joli et avec ma flemme d’enlever et mettre le cadenas, ce système ne garantira pas grand chose en fin compte.

Coupe-circuit, comme antivol

Donc mon antivol avec Arduino sera basé sur le principe du coupe-circuit. Avant de le couper, le circuit, voici le cablâge original, attention c’est extrêmement simple !

antivol Arduino, schéma clé contact

Quelques mots d’explications :

  1. La clé à quatre positions
    • ACC : position pour enclencher uniquement les accessoires, on ne peut pas démarrer.
    • OFF : position pour mettre et retirer la clé de contact. Pas d’autre fonctions.
    • ON : Le contact est mis, les accessoires fonctionnent (phares, radios, etc).
    • START : position temporaire pour enclencher le démarreur.
  2. Le connecteur de bornes en bout de la clé
    • B , fil + de la batterie (fil blanc-raies rouges)
    • ST, commande du démarreur (fil noir-raies jaunes)
    • AC, accessoires (fil bleu)
    • IG, compte tour, (fil noir)
    • P, ? (fil blanc-raies rouges)
    • R , ? (fil jaune-raies noires)
  3. La batterie, dans notre cas seul le côté + nous intéresse. Le – est du ressort de la masse métallique de la voiture
  4. Le moteur avec son démarreur (en premier plan), En fait le fil ST commande le relais qui commande le moteur du démarreur, mais pour nous on parlera du démarreur.

L’idée du coupe-circuit comme antivol est le suivant, si l’on prend le faisceau de fils apparaissant en bout du contacteur (pour exemple, vous pouvez voir les anciens films ou l' »exemple » ci-dessous), il est simple de repérer (souvent les couleurs) et de créer le contact. Ce que j’envisage, c’est un circuit de contrôle entre les fils apparents et les organes, ce contrôle n’étant pas facilement visible et difficilement atteignable.

Comment devrait fonctionner ce coupe-circuit ?

On part du principe qu‘il est facile d’ouvrir la portière (même fermée à clé) et de trifouiller les câbles au niveau du contacteur de la clé de contact. Bien comme je suis un peu fainéant cet antivol couplé avec l’Arduino doit être simple d’utilisation, instinctif si on peut dire 🙂

Contrôle d’accès

Pour un antivol simple, j’ai misé sur un clavier pour introduire un mot de passe enregistré dans l’Arduino. Delà des relais pour couper ou non l’alimentation de la voiture. Bien sûr, avec du temps, il est simple de suivre les fils pour retrouver qui pilote quoi, mais pour éviter un vol rapide (vol d’usage) cela devrait être suffisant. De plus ce contrôle pourra être installé dans un boîtier relativement caché et solide.

Pour l’intégration de l’antivol principalement constitué d’un clavier, de relais et de l’Arduino sur le tableau de bord du véhicule, je n’ai que la place de l’autoradio (non souhaité) à disposition. Il n’était pas question d’ajouter de verrue disgracieuse. Donc l’ensemble envisagé qui ne doit pas excéder 50mm de hauteur.

L’Arduino Uno pourra entrer dans la place prévue malgré ses 53.3mm de largeur car au-delà de la face avant de l’antivol, l’espace s’élargit.

J’ai trouvé ce petit clavier de 65mm de long pour 50mm de large. Pour l’utilisation dans la voiture, il sera nécessaire de changer l’orientation des touches et d’imaginer une touche « Enter », pour valider le mot de passe et également d’une touche « Reset » en cas d’erreur.

Ce clavier est basé sur le chip TTP229.

clavier 16 touches

Premier programme

Mon réflexe a été de réaliser un petit programme simple pour un Arduino UNO basé sur la bibliothèque « Wire » et de traiter le signal SDO du clavier comme un signal série en lecture « pooling » style la routine loop() de l’Arduino. Cela a fonctionné, mais pas très bien 🙁 , il était difficile de trouver la touche appuyée.
Voici le programme simplifié, sinon vous pouvez télécharger le programme complet AutoSecur

#include <Wire.h> // bibliothèque pour interface I2C (SDA et SCL)

String StrPass = "1234567"; // mot de passe
String StrPassT = "";       // mot de passe introduit

void setup() { ... }

void loop() {
  Key=Read_Keypad();  //lecture de la touche appuiée
  if(Key){
    if(Key<11){  //appui sur une touche entre 1 et 10 (touche 10 correspond au 0)
      StrPassT=StrPassT+Key;  //constitution du mot de passe
    }
    if(Key>12 ){ //compare les mots de passe
      if(StrPassT == StrPass){
        // BINGO !! BINGO !!
      }
   }
  delay(300); //au pif
  }
}

Deuxième programme

Heureusement, il ya toujours des « sauveurs de l’humanité » sur Internet. Merci à lui « Prads« , lire l’article de « How I waste my time« . En utilisant le signal SDO comme interruption il est possible de trouver le bouton en « pression » et « relâché ». Pour mon utilisation un petit pont sur le P1/3 (voir article) et cela fonctionne à merveille.

Avec un simple papier imprimé et un petit plastique de protection « fixé …. », le système répond parfaitement. Maintenant il va falloir inverser le connecteur du clavier et effectuer un montage propre dans une jolie boite. Ne pas oublier une Led de contrôle et les relais et le système sera prêt à l’installation dans le véhicule.

Voici une copie d’écran du moniteur série pour l’appui sur le bouton 6.
Une première partie de configuration, puis c’est le jonglage entre l’attachement et de détachement de l’interruption.
C’est pas très joli comme style, mais c’est efficace et cela fonctionne très bien, comme vous pouvez le constater.

Le programme pour ce test, c’est ici : AutoSecur4 Mais attention ce n’est pas un programme pour l’exploitation, c’est « un truc » qui m’a servi à comprendre le logiciel de « Prads ».

Si vous ne voulez pas utiliser le programme proposé, il est possible de trouver une bibliothèque Arduino spécialement dédiée à ce clavier. Je n’ai pas testé cette bibliothèque.

Le système électronique

Sur ce schéma l’alimentation 12V vers 5V n’est pas mentionnée mais nécessaire, vous trouvez facilement sur le marché des blocs fermés, étanches qui effectue cette fonction.

Antivol Arduino, alimentation 5V

La séparation des « mondes » 12V auto et 5V Arduino est réalisée par un optocoupleur sur chaque sortie. Le principe de ce boîtier antivol, qui inclut l’Arduino, est que seul des fils « 12V » y entrent et en sortent, L’entier du 5V est interne.

Quelques explications

  1. Clavier selon description faite préalablement
  2. Arduino UNO et pour bien comprendre ses entrées/sorties voir l’article.
  3. Résistance pour limiter le courant (la tension) sur la led de l’optocoupleur. Pour un Sharp PC817, la résistance sera de 220Ω
  4. Optocoupleur, permet d’isoler la partie 5V (Arduino) de la partie 12V de la voiture. Un modèle du type du Sharp PC817 ou un 4N35 fera très bien l’affaire.
  5. Résistance pour limiter le courant dans l’optocoupleur. Une résistance de 220Ω sera adaptée si vous utilisez un transistor 2N2222 ou équivalent.
  6. Transistor 2N2222 ou équivalent TIP120 NPN Darlingtons
  7. Relais classiques de véhicule.

La partie électrique auto

Comme déjà vu et expliqué, on part du constat que le voleur potentiel s’est introduit dans le véhicule et a accès aux fils de la serrure de la clé de contact. Le système électronique, si le code n’est pas introduit, doit couper :

  1. l’alimentation générale pour éviter un démarrage sans démarreur (voiture poussée) ou avec démarreur (clé contact).
  2. l’alimentation du démarreur

Contrôle de circuit principal

Si le circuit principal de la voiture est coupé, le moteur ne peut pas démarrer. Que l’on pousse le véhicule puis enclenchement de la deuxième ou plus simplement par le démarreur. Donc l’électronique pilotera un relais qui coupe ou pas le circuit principal en fonction de l’introduction du code. Simple et efficace.

Contrôle du démarreur

Pourquoi ajouter un deuxième circuit de contrôle alors que cela n’est pas fondamentalement nécessaire ? Principalement pour garder le câblage original au niveau de la clé de contact.

Conclusion provisoire

Ajout de fonctionnalité

Comme toutes les Aston-Martin, la mienne a aussi la climatisation, le luxe quoi ! Le problème c’est que l’installation initiale n’est pas ….. optimum. J’ai donc décidé d’intégrer la gestion de la climatisation dans le système antivol avec l’Arduino, pour avoir « centrale électronique » comme tout véhicule actuel 🙂
Ceci explique pourquoi il n’y a pas de photos de l’installation réelle dans cette chronique, c’est encore en travaux.

Pour suivre l’intégration complet de l’antivol, il vous faudra lire l’article sur le pilotage de climatisation automobile.