Équipement sans fil NooLite et maison intelligente (partie 2). Arduino Mega Server

image

Nous passons donc à la deuxième partie de notre histoire sur l'intégration de la commande sans fil nooLite dans les systèmes domotiques. Et dans cette partie, nous parlerons du module de contrôle nooLite MT1132 et de son intégration dans le populaire système Arduino Mega Server. Cela étend les capacités AMS déjà très développées en contrôlant sans fil les lumières et les appareils électriques de votre maison intelligente.

À propos de la première partie


La première partie de cette série a parlé du fonctionnement de la commande sans fil nooLite et de la façon dont vous pouvez contrôler cet équipement à partir de croquis sur Arduino. Et dans la première partie, des informations détaillées ont été données sur la connexion du module MT1132 et sa programmation. Et cela nous aidera beaucoup maintenant.

Pourquoi?

Parce que Arduino Mega Server est Arduino. Et tout ce qui est écrit dans l'article précédent est également vrai pour Arduino Mega Server. Par conséquent, avant de lire cet article, il est recommandé de vous familiariser avec la première partie du cycle.

Quelques mots sur Arduino Mega Server


Arduino Mega Server est un système multifonctionnel avec de nombreuses fonctionnalités uniques. Vous pouvez en savoir plus à ce sujet sur le site Web du projet. Il décrit clairement et avec des "images" ses principales caractéristiques. En bref, c'est le système d'exploitation pour les contrôleurs Arduino. Et les capacités du contrôleur nu diffèrent des capacités du contrôleur avec AMS à bord de la même manière que les capacités de l'ordinateur nu diffèrent des capacités d'un ordinateur avec Windows ou Linux à bord.

Il s'agit d'une comparaison figurative, mais elle donne une bonne idée de ce qu'est le Arduino Mega Server.

Intégration


Voyons maintenant comment le module de contrôle MT1132 est intégré au système. Physiquement, la connexion du module n'est pas différente de la connexion à un Arduino Mega ou Arduino Due, décrit dans un article précédent. Par conséquent, je vous renvoie à nouveau à l'article précédent afin de ne pas répéter la même chose ici.

Avec des fils - alimentation, terre et RX pour recevoir les commandes de contrôle d'Arduino et le module est prêt à fonctionner. Vraiment, nooLite MT1132 est le champion de la facilité de connexion de l'équipement au microcontrôleur.

La partie logicielle est également très similaire à celle décrite dans l'article précédent et coïncide avec elle de 85%. Les différences ne concernent que les variables et fonctions spécifiques à AMS, que nous examinerons en détail dans cet article.

Noyau de gestion NooLite


Par le noyau de contrôle nooLite, nous entendons un code qui exécute les fonctions de base de génération de commandes et de contrôle du module MT1132 (qui, à son tour, envoie des commandes à l'air).

Ce code, conformément à l'idéologie de la structure modulaire AMS, est conçu comme un module distinct et est une unité logique distincte du système. Ce module peut être activé (si vous avez besoin du contrôle nooLite) ou désactivé (si vous n'avez pas besoin du contrôle nooLite).

image

Ceci est avantageux en ce qu'il permet d'économiser la mémoire précieuse du microcontrôleur et n'utilise pas ce module pour ceux qui n'ont pas besoin de contrôle nooLite. Le module peut être désactivé dynamiquement (alors que la mémoire n'est pas sauvegardée), et peut être désactivé au stade de la compilation en commentant simplement une ligne de code.

//#define NOO_FEATURE

Et dans ce cas, toute la mémoire occupée par le module reste libre. Le système est conçu de manière à reconnaître automatiquement ou non le module compilé et à traiter correctement cet événement.

image

Pour la commodité des utilisateurs, des informations sur l'état de tous les modules du système sont affichées dans le tableau de bord dans l'en-tête du site. Et là, vous pouvez immédiatement voir leur statut en ce moment. Cela fonctionne à la fois dans la version Arduino Mega et la version Arduino Due.

Code du module du noyau NooLite


Voyons maintenant le code du module «noo» du système Arduino Mega Server. Ces fonctions qui ont été discutées dans l'article précédent, je vais les omettre ici. Si soudain vous ne comprenez pas quelque chose, revenez à l'article précédent et relisez-le à nouveau.

Le code du module est encadré dans les directives de compilation conditionnelle, qui sont utilisées pour activer ou désactiver la compilation du code du module conformément à vos instructions.

#ifdef NOO_FEATURE


#endif

Ensuite, les conclusions sont définies auxquelles le module MT1132 est connecté (la 19e sortie est facultative, elle sert à confirmer l'envoi réussi de la commande par le module)

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

Et le lettrage des canaux est réglé (juste pour la facilité d'utilisation)

byte const NOO_CHANNEL_1 = 0;
byte const NOO_CHANNEL_2 = 1;

Actuellement, seuls deux canaux sont utilisés, mais rien ne vous empêche d'ajouter quelques lignes de code et d'utiliser les 32 canaux.

Le module est initialisé par la fonction

void nooInit() {
  Serial1.begin(9600);
  modulNoo = MODUL_ENABLE;
  started("nooLite");
}

dans lequel Serial1 est initialisé à une fréquence standard de 9600, le module est affecté à l'état "ENABLE" et un message de test est affiché dans Serial pour contrôler le processus d'initialisation.

La fonction «principale» qui forme les commandes et les fonctions «wrapper» qui simplifient les commandes à la limite sont décrites en détail dans l'article précédent. C'est tout le cœur du contrôle nooLite. Maintenant, nous pouvons accéder librement à toutes les fonctions de contrôle de n'importe où dans le code Arduino Mega Server. Et contrôlez l'équipement nooLite de quelque façon que ce soit.

Voici le code complet du noyau de contrôle nooLite.

Code noyau complet
/*
Modul nooLite
part of Arduino Mega Server project
*/

#ifdef NOO_FEATURE

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

byte const NOO_CHANNEL_1 = 0; // channel (address) 0...31 (MT1132)
byte const NOO_CHANNEL_2 = 1;
byte const NOO_CHANNEL_3 = 2;
byte const NOO_CHANNEL_4 = 3;
byte const NOO_CHANNEL_5 = 4;

void nooInit() {
Serial1.begin(9600);
modulNoo = MODUL_ENABLE;
started(«nooLite»);
}

void nooWork() {

}

void nooSendCommand(byte channel, byte command, byte data, byte format) {
byte buf[12];

for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}

buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;

int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}

buf[10] = lowByte(checkSum);
buf[11] = 170;

for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}

void nooBind (byte ch) {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind (byte ch) {nooSendCommand(ch, 9, 0, 0);}

void nooOn (byte ch) {nooSendCommand(ch, 2, 0, 0);}
void nooOff (byte ch) {nooSendCommand(ch, 0, 0, 0);}
void nooTrigger(byte ch) {nooSendCommand(ch, 4, 0, 0);}
void nooCancel (byte ch) {nooSendCommand(ch, 10, 0, 0);}

void nooUp (byte ch) {nooSendCommand(ch, 3, 0, 0);}
void nooDown (byte ch) {nooSendCommand(ch, 1, 0, 0);}
void nooRevers (byte ch) {nooSendCommand(ch, 5, 0, 0);}

void nooValue (byte ch, byte v) {nooSendCommand(ch, 6, v, 1);}

#endif // NOO_FEATURE

Interface de liaison et de déliement


Étant donné que l'Arduino Mega Server nous fournit une interface luxueuse, nous pouvons l'utiliser pour toutes les fonctions de travail avec le module et le système nooLite lui-même. Nous n'aurons rien à faire manuellement, la communication avec toutes les fonctions du système nooLite se fera en utilisant des éléments d'interface standard que vous connaissez lorsque vous travaillez avec des sites sur Internet. Il s'agira de boutons, de listes déroulantes, etc.

Commençons par les blocs d'alimentation de «liaison» et de «déliement» de l'interface. Tout est extrêmement simple ici: dans la liste déroulante, vous sélectionnez le numéro de canal souhaité, puis sélectionnez le type d'action - «Lier» ou «Dissocier» et cliquez sur «Soumettre». Voici de brèves instructions sur ce qu'il faut faire après avoir cliqué sur le bouton «Soumettre». En général, tout se fait très simplement et avec élégance.

image

Vous pouvez «lier» et «délier» des blocs en n'importe quelle quantité et sur n'importe quel canal (il peut y avoir autant de blocs d'alimentation sur un canal et ils s'allumeront simultanément, car ils sont sur le même canal).

Ici, vous devez seulement vous rappeler que dans l'assemblage 0.14, le contrôle sur deux canaux est implémenté. Si deux canaux ne vous suffisent pas, vous pouvez, par analogie, ajouter un contrôle pour le nombre de canaux dont vous avez besoin (jusqu'à 32).

Interface de contrôle


Voyons maintenant comment est organisée l'interface de gestion des appareils nooLite dans AMS. Dans le menu système, il y a un élément «Management nooLite». Lorsque vous cliquez dessus, une page s'ouvre avec laquelle vous pouvez allumer et éteindre les appareils nooLite sans fil. Comme je l'ai dit, dans la version 0.14, le contrôle est organisé sur deux canaux. Ils sont appelés «Block 1» et «Block 2» (ce qui signifie des blocs de gradateur d'alimentation sans fil nooLite).

image

Nous cliquons sur "Block 1" et nous voyons un joli bouton - c'est l'interface de contrôle du premier bloc d'alimentation. Vous pouvez connecter l'éclairage ou tout autre appareil électrique (de puissance correspondante) à cet appareil et ... contrôler de manière pratique et confortable son allumage et extinction en appuyant sur ce bouton.

L'interface Arduino Mega Server est adaptative, ce qui signifie que vous pouvez contrôler l'allumage et l'extinction des appareils électriques directement à partir de votre smartphone - l'interface se "pliera" et la pelle sera grande et facile à appuyer sur le smartphone.

image

Ce n'est pas tout. En plus d'allumer et d'éteindre simplement les appareils, le système nooLite vous permet de faire beaucoup d'autres choses, par exemple, baisser (modifier en douceur) la luminosité des lampes ou régler la puissance de charge requise. Un autre élément d'interface est conçu pour cela - un widget pour régler la puissance et la gradation.

Widget d'alimentation et de gradation


Sur le deuxième canal, il y a deux éléments d'interface - un bouton marche / arrêt et un widget de réglage de l'alimentation. En utilisant ce widget, vous pouvez définir la puissance, classée en pourcentage du maximum. Il s'agit d'une solution universelle adaptée à la plupart des cas.

Vous pouvez également connecter au gradateur sans fil nooLite (par exemple, SU111-300) un lustre dans votre chambre ou un appareil électrique qui nécessite un réglage de la puissance (dans les limites de la puissance nominale de votre unité d'alimentation) et vous pouvez facilement installer la puissance souhaitée directement depuis la page Web.

image

Si vous avez besoin d'ajuster la puissance d'une manière différente, par exemple, avec une plus grande précision ou de manière non linéaire, vous pouvez changer le widget standard en ajustant le code source (qui, bien sûr, est entièrement accessible).

L'image montre le moment où la puissance est réglée à 20% du maximum. Dans le même temps, vous pouvez changer automatiquement la puissance de l'esquisse sur l'Arduino. Par exemple, avec ce système, cela ne vaut rien d'organiser le "réveil de l'aube" si à la mode maintenant, lorsque la luminosité des lampes augmente lentement et "naturellement" vous réveille le matin. Et sans fils! Puissance et contrôle, il suffit d'intégrer le dimère dans une lampe ou un lustre.

Le widget et le bouton fonctionnent indépendamment. Cela signifie que vous pouvez régler la puissance dont vous avez besoin (luminosité) et après l'avoir éteinte puis rallumée, la puissance installée sera économisée, ce qui est très pratique.

Autres fonctions


Le document Nootekhnika décrivant les commandes de contrôle de l'instrument nooLite contient de nombreuses commandes supplémentaires, dont certaines sont déjà présentes dans le noyau, d'autres non. Si vous avez besoin d'autres commandes, vous pouvez les ajouter vous-même, car ce n'est pas du tout difficile et le système a déjà de nombreux exemples.

Conclusion


Nous avons donc examiné l'intégration du module de contrôle nooLite MT1132 dans l'Arduino Mega Server et le principe d'organisation de l'interface de gestion matérielle nooLite . Avec un noyau de contrôle intégré, vous pouvez facilement contrôler les appareils nooLite d'AMS dans votre maison intelligente.

À ce sujet, le deuxième article a pris fin, et dans le troisième article de la série, vous vous familiariserez avec le concept absolument fantastique du système Arduino Mega Server «100 en 1», lorsqu'un contrôleur avec AMS à bord vous remplace par de nombreux appareils et systèmes et vous fait économiser leur coût.

Et cela sera illustré sur l'exemple d'une station de soudage, que nous fabriquerons littéralement à partir de rien - à partir d'un dimère nooLite sans fil.

PS

Arduino Mega Server est un système polyvalent et flexible qui peut être intégré avec à peu près n'importe quoi.Par conséquent, les entreprises intéressées à vulgariser leurs technologies et à élargir la base d'utilisateurs sont invitées à coopérer - votre équipement peut également être facilement intégré au système Arduino Mega Server populaire.

Avoir votre propre module (et site Web) dans l'Arduino Mega Server est une très bonne idée.

Les première , troisième et quatrième parties du cycle.

Addition . Une chaîne Youtube est ouverte et voici une vidéo promo du Arduino Mega Server, qui montre comment travailler avec un vrai système.

Source: https://habr.com/ru/post/fr389293/


All Articles