Étape 2: Code d’Arduino
Initialisation
Seulement la WDT (WatchDogTimer) et les bibliothèques RFM sont inclus. La WDT est utilisé dans le cas où l’Arduino est suspendu quelque part et avec la WDT, il aurait remis par lui-même. Cependant avec cette boîte, l’Arduino jamais perdu lui-même jusqu'à présent.
Le code est attaché et devrait être assez simple. On suppose que vous savez que des choses au moins à mi-chemin le lire.
Le code de l’Arduino pourrait ressembler familier comme il a été copié à partir de différentes sources, modifié et mis en place.
N’obtenez pas trop pointilleux sur la NodeID ; garder 2 chiffres puisque vous n’aurez probablement plus de 90 nœuds dans votre maison. Ne changez pas le nombre de chiffres, ou vous devrez le changer presque partout plus tard.
Définir la bande de fréquence telle que fournie par le module que vous avez acheté. Le ChannelFreq peut devoir être ajustée aux normes où vous vivez ; le nombre est en Hertz.
// RFM69#define NODEID 21 //unique for each node on same network Floor&Room&Node#=X&XX&X#define NETWORKID 666 //the same on all nodes that talk to each other#define GATEWAYID 1#define FREQUENCY RF69_433MHZ#define ENCRYPTKEY "1234567890ABCDEF" //exactly the same 16 characters/bytes on all nodes!#define ChannelFreq 434520000
La structure du message doit être le même sur votre réseau entier
typedef struct { // Radio packet formatint nodeID; // node identifierint devID; // device identifierint cmd; // read or write long intVal; // integer payloadfloat fltVal; // floating payloadchar payLoad[32]; // string payload} Message;
Les boutons ne étaient pas directement attachés pour le 3.3V, mais pour les broches de données Arduino alors qu’ils pourraient être allumés et éteints comme le souhaitaient.
Aussi, il y a beaucoup de variables pour stocker des horodatages, statut et précédentes-état des boutons.
Programme d’installation
Évidemment les goupille-modes sont « out » pour le pouvoir et « in » pour la presse-bouton. Un clin de boutons pour montrer que la phase d’installation terminée, puis ils passent dans leur état normal.
Boucle
L’Arduino vérifie d’abord si elle a reçu une commande du serveur OH. La commande est analysée à l’extérieur de la boucle-code.
Puis l’état des boutons sont lus si la situation a changé depuis la dernière itération. Notez que rien n’est envoyé jusqu'à présent.
Selon l’état des touches, le relais s’ouvre ou se ferme à activer ou désactiver la la machine à café.
Après que les couleurs du bouton changent selon leur état. Il était plus logique pour moi de faire ça au lieu de les modifier directement pendant le bouton-lecture-statut.
Proche de la fin de la boucle, l’état du relais est renvoyée vers le serveur OH ainsi que l’état du bouton bleu. Statut de rouge et vert ne sont pas envoyés dès qu’elles sont contrôlées par l’état du relais
Les forces de signal (RSSI) sont envoyés vers le serveur OH afin de connaître la puissance du signal pour les deux sens : d’et vers la passerelle RFM.
Notez qu’il existe une durée du tampon « StateChangeInterv » dans le code. Ce qui est écrit pour les gars drôles qui viennent à votre domicile pour voir après combien de fois sur/hors circuit le fusible grillera, ou la machine à café remonter dans la fumée... La variable (ici la valeur 2,5 sec) empêche un changement de statut pendant 2,5 secondes. La machine peut donc passer qu’après ce délai variable ; et les gens seront désintéresseront très rapidement...
Le BlueBlink est initié uniquement par le serveur de OH 30 minutes avant que la machine est censé pour éteindre. En appuyant sur la touche clignotante bleue, il se transforme en un bleu fade et l’éteindre de temps est censé pour passer à la prochaine 00 ou 30 minutes après l’heure. Bien sûr 30 minutes avant d’éteindre, le clignotant sera de retour.