mercredi 24 janvier 2018

Arduino : Episode 2 : reception de trames 433Mz avec la bibliothque RC-Switch


J'ai passé pas mal de temps sur d'autres choses que l'arduino.
Je me suis essayé à l'ESP8266, au microcontrolleur ATMEGA328P et suis également revenu sur Raspberry Pi (Zero en général ou 2 occasionnellement) avec certain modules.

Mais mon projet avançant, je dois aller plus en profondeur, via l’Arduino.
Du coup, Avec mon Raspberry PI 2 j'ai réussi à envoyer et recevoir des trames 433Mz (pas avec le Pi0W), et j'ai voulu porter mon résultat sur Arduino.
Avec mon Arduino Nano, je n'ai jamais réussi, alors je me suis acheté un Arduino Uno, et aucun problème de côté pour la réception.
(edit 30/10/18:mes soudures étaient mauvaise, j'ai du jeter le Nano)

Voici un petit récapitulatif
-Brancher son Arduino Uno à son ordinateur
-Télécharger et installer le logiciel ARDUINO IDE 
-Dans Outils Type de carte: Sélectionnez votre modèle de Arduino
-Dans Outils PORT COM: sélectionnez le port disponible
-Si vous avez un modèle type Nano: vous devrez également choisir le procésseur (c'est marqué dessus)
-Récupérer une librairie (https://github.com/sui77/rc-switch)  et cliquez sur le bouton vert à droite "Clone or Download" puis "Download Zip"
-Injectez la librairie avec Croquis / Inclure une bibliothèque / Ajouter la bibliotheque .Zip et selectionnez le fichier téléchargé juste avant.

-Trouvez un exemple à envoyer à l'Arduino:
Fichier / exemple / RC-Switch / Received Demo-Advance
on trouve 2 onglets qui seront tous deux injectés (s'il en manque le téléversement échouera)

(ajout perso:
j'ai ajouté sur l'onglet received demo advanced le clignotement de la led interne à l'arduino pour être sûr qu'elle recoit les informations, la LED TX faisait déjà le job


#include

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2

  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);

}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
      digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(2000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(200);                       // wait for a second

  }
}

-Vérifiez le code avec l'icone de coche
-Téléversé avec l'icone de fléche (juste à côté)
-Ouvrez le moniteur serie (icone de loupe à droite)

-Branchements : Vue que je découvre FRITZING  pour le moment, le schéma sera un peu moche, veuillez m'excuser.
VCC du module sur 5V de l'arduino
GND du module sur GND de l'arduino
l'une des broche DATA sur D2 de l'arduino


En utilisant une commande de ce type, je reçois bien des trames


Ce qui n'était pas facile à faire avec un arduino Nano, deviens enfantin avec un Arduino UNO.
Méfiez vous de votre matériel, je reviendrai certainement avec la clef pour le NANO.
[edit]07/08/2018 : Finalement j'ai racheté un arduino Nano, où les broches étaient déjà soudé. Je n'ai rencontré aucun problème. Donc il va falloir que je revoit mes compétences en soudure.

!!!! Le lendemain de la rédaction de cet article, j'ai retenté ce point, et n'y suis arrivé qu'en fin de journée. J'ai opté pour un câble plus court USB pour le téléversement du code, et sa forme m'obligeait à passer par un port USB de la station de travail LENOVO Thinkpad. Les téléversements ne fonctionnait jamais. En passant directement depuis un port USB de l'ordinateur: toujours avec le câble USB bizarre, plus de problème.
=> ne pas utiliser les ports usb des stations de travail .


!!!! Il faut bien que la console soit configuré sur un Baud de 9600, sinon rien ne s'affiche

1 commentaire: