|
Arduino et Radio
|
Tutoriel sur l'Arduino. Mise à jours le 15/02/2015 11:26
Une vieille, mais solide sirène extérieure traine dans mon garage, je décide donc de commencer par là. Mes petites connaissances en connectiques, me permettre, comprendre le fonctionnement de la sirène. Elle a besoin d'une alimentation 12 volts, une batterie et un circuit fermé qu’il suffira d’ouvrir pour quel fonctionnement pour 3 minutes de hurlement.
Je fais donc un trou dans la façade de la maison puis je me repique sur le réseau électrique qui traine dans le grenier pour installer une alimentation 12v récupérer dans un vieux PC comme ça j'ai aussi du 5v disponible pour les modules arduino. Pour l'instant, c'est de la récupération ça me coute rien. Maintenant il reste plus qu'à rendre tout ça utilisable.
Il faut :
Un arduino nano sur trouvé sur ebay en Europe pour 4,52€.
Un module récepteur Radio Fréquence toujours sur ebay et en Europe a 2,67€.
Un doubles module relais et encore sur ebay a 3,00€.
Des câbles Dupont mâles-mâles, mâle-femelle et femelles-femelles, environ 6€ le lot de 120 soit 40 par types.
Total 16.19 transport compris.
  
Je vais utiliser une plaque d'essai pour simplifier :

Le Schéma :

Le Code à partir de l'exemple de la librairie RCSwith :
/*
Simple example for receiving
http://code.google.com/p/rc-switch/
*/
#include
#define RELAY1 6 // Les commande de relaie en 6 et 7
#define RELAY2 7
#define telecomandeT1 15036929_9987654 // Ce qui sera reçu en cas de déclenchement
#define telecomandeT2 15036929_6677845 // En cas de mode panique a venir
RCSwitch mySwitch = RCSwitch();
void setup() {
//Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
// Tout est là on va juste regarde ce que l'on reçoit en mode de-bug.
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
} else {
/* Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() ); */
}
mySwitch.resetAvailable();
}
}
| |
Voilà le récepteur de la sirène est assembler. On va créer la centrale, qui devra recevoir et émettre. Attention, les modules Arduino ne peuvent pas faire les deux en même temps.
Il existe beaucoup de documentations à ce sujet, mais je profite de ce moment pour vous parler de la programmation de l'Arduino. Il y a deux fonctions obligatoires Setup et Loop vous avez compris pour setup c'est l'endroit ou on définit tous les paramètres et loop, c'est la boucle perpétuellement en attente d'événements.
Dans loop les commandes sont exécuter ligne par ligne a chaque cycle de la boucle seules les fonctions dépendantes d'une interruption-stop de processus le temps que l'événement soit traiter et continue de que cela est fait.
Par défaut il n'y a pas de gestion de l'heure donc on ne peut pas dire par exemple que la sirène sonne pendant 3 minutes, il faudra un délai, mais imaginons que l'on mette la commande "délai(60000*3) ;" et bien pendant 3 minutes le système sera interrompu et ne pourra rien faire d'autre. Ce n'est pas le but recherché. Vous comprenez maintenant pourquoi j'ai opté pour un relai dans la sirène, il suffit de changer seulement l'état de celui-ci pour que ça sonne ou pas, de cette manière le module est toujours à l'écoute de l'interruption. Il faut donc que je trouve une solution pour ne pas bloquer l'arduino de la centrale dans une boucle ou un délai trop longs.
La nuit porte conseille donc a demain... il presque 2 heures 1/2 du mat...

Le montage si dessus fonctionne. tout le code demain Lundi 16/02/2015.
|
|
|
|
|
|