Hack d'un portail, communication sans fil

Bonjour, je rencontre un problème de communication sans fil sur mon projet :grin:

Mon portail était automatisé autrefois. Il ne reste que les vérins, je me suis donc lancé dans l'automatisation. :fearful:

Voici le matos dont je dispose :
Arduino Leonardo
315Mhz RF link kit
315Mhz télécommande sans fil (sans rolling code)

  • une carte 4 relais et un régulateur de tension 12-24V --> 5V pour alimenter l'arduino et la carte relais depuis une batterie
    Arduino 1.0.1 sous debian stable. Virtualwire 1.9
    Bref.
    Pour commencer, avant de décoder le code envoyé par la télécommande, je voudrais déjà que la carte me confirme comme quoi elle reçoit bien quelque chose.
    Voici le code utilisé :
#include <VirtualWire.h>

uint8_t buf[VW_MAX_MESSAGE_LEN]; // Tableau qui va contenir le message recu (de taille maximum VW_MAX_MESSAGE_LEN)
uint8_t buflen = VW_MAX_MESSAGE_LEN; // Taille maximum de notre tableau
const char a = 2; //sortie pour un relais

void setup() {   
  Serial.begin(4800);
  while (!Serial) {
  }; // wait for serial port to connect. Needed for Leonardo only
  Serial.println("communication sans fil");
  vw_set_ptt_inverted(true);
  vw_setup(1000);	 // Bits per sec
  vw_set_rx_pin(11);
  vw_rx_start();
  Serial.println("Recepteur pret");
  pinMode(a, OUTPUT);  // initialize the digital pin as an output.
}

void loop() {
  if (vw_wait_rx_max(200)) // Si un message est recu dans les 200ms qui viennent
  {
    digitalWrite(13, HIGH);  // un message est reçu
    digitalWrite(a, HIGH);
    if (vw_get_message(buf, &buflen)) // le message est correct
    {
      Serial.print("on a : ");
      for (byte i = 0; i < buflen; i++)
      {
        Serial.print(buf[i]);
        Serial.print("");
      }
      Serial.println(""); 
    }
    delay(1000);
  }
  digitalWrite(13, LOW);
  digitalWrite(a, LOW);
}

Si un message (même incorrect) est reçu, la LED L doit s'allumer et un relais doit changer d'état. La patte DATA du récepteur est branché sur la borne 11 de l'arduino. Le récepteur reçoit quelque chose puisque au voltmètre la sortie data passe de 1.7V à 0V temporairement après l'appui sur la télécommande. Sur la console série, je voit bien les messages "communication sans fil" et "recepteur pret". Rien d'autre, désespérément rien. Ni LED ni relais, ni message série. Pas d'erreur de compil pourtant.

Mes questions sont les suivantes : virtualwire est-il adapté à mon utilisation ? Si non, que puis-je utiliser ? Si oui, je suis passé à côté de quelque chose mais quoi ?

Bonjour

VirtualWire implémente un protocole particulier. Il te faut VW de chaque coté (emetteur et récepteur).

Apparemment ce n'est pas le cas de cette télécommande.
D'ailleurs sur le site de Seed, ils l'associent avec ce récepteur : http://www.seeedstudio.com/depot/codecadaptive-wireless-relay-p-550.html

Mais pas de panique. Ca veut juste dire qu'il va falloir le faire "à la main" sans VW comme cela à été fait pour le protocole Blyss : http://arduino.cc/forum/index.php/topic,109892.0.html

Il va falloir que tu analyses le protocole de transmission de cette télécommande pour implémenter le code de réception sur ta Léonardo.
Tu peux utiliser un Analyseur Logique, et si tu n'en a pas, utiliser ton Arduino pour cela : http://arduino.cc/forum/index.php/topic,69885.0.html

Petite question : quel est l'intérêt de l'arduino ? Parce que si c'est juste faire une réparation, il y a des kits relais sans fil sur la baie pour 20€.

Merci Barbudor pour les précisions. Je vais d'abord chercher un oscillo dans mon entourage et si ça n'est pas possible j'essayerai l'arduillo (arduino oscillo). Je vous tiens au courant quand j'aurais décodé un peu le bousin.

L'intérêt de l'arduino par rapport au relais sans fil c'est la gestion des tempo : 15s d'ouverture et 15s de fermeture et la possibilité d'ouvrir un battant puis l'autre avec une seule pression sur un bouton. Dans le cas où ces tempos ne seraient pas suffisamment précises (cas d'un fort vent qui ferait forcer les vérins), je rajouterait des fins de courses. Mais je n'en suis pas encore là, j'espère que les tempos suffiront.

De plus je pourrait ajouter un détecteur de passage du facteur par la suite puisque la boite aux lettres est à côté.

Bonjour

quelques pistes :
-tenter RCswitch GitHub - sui77/rc-switch: Arduino lib to operate 433/315Mhz devices like power outlet sockets. côté Arduino en espérant que la télécommande utilise une des puces fréquemment rencontrées dans les télécommandes low cost sans code tournant
-ouvrir la télécommande pour repérer la puce réalisant l'encodage
-si ça de donne rien demander à SeedStudio des infos sur l'encodage
-en dernier ressort utilser un analyseur logique ou a défaut Audacity sur PC (après avoir atténué le signal à décoder) pour étudier le codage
Un oscilloscope courant ne permet pas en général d'acquérir en totalité et avec une bonne résolution les trames émises. Le PC et la carte son donnent de meilleurs résultats. La déformation du signal apportée par la carte son sur ce type de signaux ne géne pas pour analyser les impulsions.

majoux:
L'intérêt de l'arduino par rapport au relais sans fil c'est la gestion des tempo : 15s d'ouverture et 15s de fermeture et la possibilité d'ouvrir un battant puis l'autre avec une seule pression sur un bouton. Dans le cas où ces tempos ne seraient pas suffisamment précises (cas d'un fort vent qui ferait forcer les vérins), je rajouterait des fins de courses. Mais je n'en suis pas encore là, j'espère que les tempos suffiront.

De plus je pourrait ajouter un détecteur de passage du facteur par la suite puisque la boite aux lettres est à côté.

bonjour
pourquoi ne pas avoir pris ça en reception ?
http://www.seeedstudio.com/depot/codecadaptive-wireless-relay-p-550.html
ça decharge l'arduino de la tache de decodage de la reception
tu n'a plus qu'à te préoccuper sur l'arduino de la gestion de la cinematique.

petite remarque annexe : si tu reside en France, il me semble que le 315 MHz n'est pas autorisé libre

je comprends ce que tu veux dire : plutôt que d'utiliser un kit RF 312mHz, j'aurai pu prendre cette carte avec relais intégré et brancher la sortie du relais sur l'arduino. Pas con mais bon la carte n'etant pas faite pour ça à la base je n'y ai pas pensé.
Pour le 315mHz en France : oups !

OK avec Artouste sur le statut de la fréquence 315MHz , non seulement en France mais dans toute la CEE

Les fréquences autorisées en Europe pour les systèmes de commandes à distances de faibles puissances sont :

26.957 MHz
//
27.283 MHz Fréquences parfois perturbées par les CiBistes (perturbation de plus en plus rare)
Document ARCEP / ART
*
40.660 MHz
//
40.700 MHz Fréquences sous-exploitées en France = Bonnes performances
Document ARCEP / ART
*
433.920 MHz. Fréquences très utilisées : portes, portails, alarmes, carillon, interphone sans fils...
Risque de grosses perturbations en centres villes.
(Exception pour le matériel fonctionnant en 433 "FM")
Document ARCEP / ART
*
868.000 MHz
//
870.000 MHz. La portée radio, un jour excellente, un jour médiocre,
est le point faible de cette gamme de fréquence. (perturbation par le réseau GSM en 900 MHz ?)
Document ARCEP / ART

source : Augmenter la portée d'un émetteur RF - Page 2

majoux:
je comprends ce que tu veux dire : plutôt que d'utiliser un kit RF 312mHz, j'aurai pu prendre cette carte avec relais intégré et brancher la sortie du relais sur l'arduino. Pas con mais bon la carte n'etant pas faite pour ça à la base je n'y ai pas pensé.
Pour le 315mHz en France : oups !

oui voilà
utiliser le contact sec du relais ou mieux repiquer le niveau logique de la commande du relais (et déconnecter sa bobine pour limiter la consommation globale)

pour le 315 MHz (non autorisé libre) voir

ce que vous me dites est finalement une bonne nouvelle : je n'aurais jamais de perturbations et je peux donc programmer mon arduino sur un front descendant du signal 315mHz ! Peu importe le signal qui arrive, je suis le seul à utiliser la fréquence. Je précise que je suis en pleine campagne donc je ne risque pas de faire dérailler un train ou faire buguer un robot chirurgien.

majoux:
Je peux donc programmer mon arduino sur un front descendant du signal 315mHz ! Peu importe le signal qui arrive
... je suis le seul à utiliser la fréquence. Je précise que je suis en pleine campagne donc je ne risque pas de faire dérailler un train ou faire buguer un robot chirurgien.

affirmation à la fois péremptoire et parfaitement illusoire :grin:
la bande des 315 est utilisée déjà en radionav et avec des puissances d'emissions qui n'ont rien à voir avec "ton émetteur" mais que ton recepteur va se faire un malin plaisir de "chopper" (et je ne parle même pas là des "harmoniques baveuses" 8)

OK donc j'ai démonté la télécommande qui contient une puce HS1527 prise en charge par la librairie RC-SWITCH
Je teste tout ça et je vous dis.

Merci al1fch !