jeudi 27 avril 2017

Un système Open Source Sprinkler alimenté par Arduino Yun



An Open Source Sprinkler System powered by Arduino Yun
Une unité de commande d'arrosoir pour jardin qui peut être contrôlée via web et smartphone grâce à Arduino Yun.

À l'approche de l'été, nos plantes et nos jardins ont besoin d'un arrosage régulier pour rester luxuriante et verte comme nous l'aimons. Il n'est pas facile de se souvenir toujours d'arroser les plantes et les jardins et essayer de toujours être à la maison à la même heure tous les jours, alors nous nous demandions, au lieu de prendre un certain temps chaque jour pour arroser des plantes et des fleurs, ne serait-il pas préférable de Profitez de notre passion pour l'électronique et réalisez-nous un système automatique pour faire cela pour nous? C'est l'idée à la base du projet que nous allons vous montrer dans cet article, qui comprend une unité de contrôle pour un sprinkleur de jardin basé sur Arduino Yun et un tableau de relais qui peut s'interconnecter avec lui. L'unité de commande peut gérer un nombre configurable de sorties, un capteur de pluie et peut être programmé via une interface Web accessible depuis n'importe quel PC ou smartphone connecté à votre réseau domestique. En configurant adéquatement le routeur où le sprinkleur sera installé, vous pourrez même contrôler le système à partir d’Internet.

Mais pourquoi avons-nous employé un Arduino Yun, au lieu d'un Arduino commun? La réponse est que cela nous permet, grâce à son matériel qui prend en charge nativement les connexions sans fil et les protocoles Internet, pour gérer l'arrosage via le Web ou le smartphone grâce à une interface conçue pour les appareils mobiles.

LE PROJET

Arduino Yun est l'âme de notre unité de contrôle. Le projet profite pleinement des caractéristiques principales de cet Arduino, c'est-à-dire la possibilité d'exécuter simultanément une distribution Linux (grâce au Système Atheros sur puce) et des croquis (sur le microcontrôleur ATMega32u4 qu'il possède). Le système d'exploitation Linux est chargé de la gestion de l'interface graphique, de la mémorisation de la programmation et de l'activation des sorties à des horaires définis, tandis que l'esquisse exécutant sur le microcontrôleur prend en charge l'interface avec le matériel externe: capteur de pluie, panneau de commande avec déviateurs (facultatif) Et le relais qui active les électrovannes.

Dans la photo 1, vous pouvez voir le diagramme logique fonctionnel: l'interface Web développée à l'aide de bibliothèques JavaScript selon le paradigme AJAX (voir encadré), reçoit des données et envoie des commentaires vers certaines pages écrites en langage PHP et exécutées par le serveur Web uhttpd.
Les pages PHP, par conséquent, communiquent avec l'esquisse à travers la bibliothèque Bridge (utilisée pour le bridage du matériel Arduino basé sur Atmega et de l'Atheros SoC) tandis que la programmation et les événements sont enregistrés dans une base de données SQLite. Certains scripts PHP sont exécutés périodiquement par le crontab (le planificateur) du système d'exploitation Linux et ils s'occupent de l'activation de la programmation et de la suppression périodique des événements et du journal. L'esquisse gère le panneau de commande, lit l'état à partir du capteur de pluie et active les sorties (électrovannes, pompes ...) par des relais externes.

Schéma

Pour que les gicleurs puissent gérer notre système d'irrigation, nous devons le connecter à certains éléments externes. Pour simplifier ces connexions, nous avons préparé un bouclier qui nous permet de gérer un système avec un maximum de quatre électrovannes, un capteur de pluie et un panneau de commande externe avec quatre commutateurs et quatre LED d'état. Le circuit pour le blindage est composé d'un régulateur de tension qui est crucial pour alimenter Arduino (via Vin) et par un certain nombre de sorties pour les LED et les sorties pour la gestion des électrovannes, en plus de quatre entrées pour les déviateurs du panneau de commande qui sont optionnel.

PWR est le connecteur de prise de courant, et il a besoin d'une tension continue comprise entre 8 et 15 V, filtrée par les condensateurs C1 et C2 et stabilisée à 5 V par le régulateur U1 intégré. La broche OUT de U1 fournit ses 5 V par rapport à GND au côté gauche du pont JP5V, qui est utilisé pour décider de la source d'alimentation du système: si nous voulons alimenter Arduino Yun à travers le bouclier, il faut fermer Le cavalier entre le contact central et le contact gauche (dans ce cas 5 V viennent de la diode Schottky D1), alors que si nous voulons alimenter tout à l'aide du Yun, cela doit être alimenté par un adaptateur dédié et le cavalier doit être fermé à droite. Dans ce cas, nous ne devons pas alimenter le Jack PWR du bouclier, car le bouclier lui-même est alimenté par les 5 V d'Arduino, également via D1. En plus de la source d'alimentation, la ligne 5 V gère également les résistances pull-up R2, R4, R6, R8 sur les sorties reliées aux déviateurs et R9, connectées à l'entrée dédiée pour le capteur RAIN. Dans les pages suivantes, nous allons expliquer comment utiliser ce dernier.
Les sorties sont sur OUT1, OUT2, OUT3 et OUT4 (D2, 3, 4, 5 d'Arduino respectivement) et fournissent le niveau logique élevé lorsque les électrovannes doivent être ouvertes; Ils sont conçus pour piloter les signaux TTL acceptables de la carte relais et alimenter indépendamment les bobines des relais.

Mise en place d'Arduino

Afin d'utiliser le sprinkleur, nous devons d'abord installer certains logiciels dans le système d'exploitation Linux.

En utilisant un client SSH (vous pouvez utiliser PuTTY sur Windows, sur Linux et Mac OS, vous avez la commande ssh), nous nous connectons à la console d'Arduino Yún et insérez nos informations de connexion (par défaut, root est l'utilisateur et arduino est le mot de passe ). Nous nous assurons également que Yun est connecté à Internet.

D'abord, nous exécutons les commentaires pour actualiser la liste des paquets disponibles pour l'installation, soit:

Mise à jour opkg

Opkg est le gestionnaire de paquetages de notre distribution Linux; Grâce à cette commande, nous pouvons installer ou désinstaller des applications et des programmes. Pour installer l'interpréteur PHP (version 5), nous pouvons entrer le commentaire opkg install php5. Le gestionnaire de paquets téléchargera la dernière version disponible - avec les conditions préalables possibles - et l'installera dans la figure.

Nous utilisons opkg encore une fois pour installer tous les autres paquets nécessaires pour le sprinkleur:

Opkg installe php5-cgi php5-cli php5-mod-curl php5-mod-json php5-mod-pdo php5-mod-pdo-sqlite zoneinfo-core zoneinfo-europe

 Nous activons l'interpréteur PHP dans le serveur Web uhttpd en éditant son fichier de configuration avec la commande:

Nano / etc / config / uhttpd


Nous devons effacer le hashtag (#) au début de la ligne par rapport à l'extension .php comme illustré en figure.




Nous appuyons simultanément sur CTRL et X, puis nous entrons Y pour confirmer la modification. Enfin, nous redémarrons le serveur Web avec la commande:


/etc/init.d/uhttpd redémarré


Pour vérifier si notre Yun est maintenant en mesure d'exécuter des pages php, nous pouvons créer un exemple en tapant les commentaires suivants:

Cd /www/

echo "<? = Phpinfo (); ?> "> ehpinfo.php


Maintenant, si nous ouvrons un navigateur sur notre ordinateur et nous entrons l'adresse IP d'Arduino Yun dans la barre d'URL suivie de /phpinfo.php, nous pourrions pouvoir voir la page d'informations de l'interprète php comme indiqué sur la figure.


INSTALLATION

Maintenant, nous allons télécharger la dernière version du logiciel à partir du dépôt Github. Allons-nous sur https://github.com/lucadentella/irrighino et cliquez sur le bouton Télécharger ZIP: après quelques instants, nous aurons une archive compressée sur notre PC avec tout ce qu'il faut pour installer notre sprinkleur.

Prenons une carte microSD et insérez-la sur notre PC; Nous allons créer un dossier appelé arduino et, dans le dossier, nous allons créer un dossier appelé www. Maintenant, nous copions le dossier du site Web qui se trouve dans l'archive que nous avons téléchargée de Github, dans le dossier www; Enfin, nous renommons le dossier du site Web vers un sprinkleur. Si nous avons tout fait correctement, la carte microSD aura un contenu similaire à ce qui est montré dans la figure et nous pourrons insérer la carte mémoire dans la fente dédiée de notre Arduino.




Tout en étant connecté à Arduino via SSH, nous saisissons la commande crontab et, pour modifier la configuration du planificateur, après avoir appuyé sur le bouton "I", nous entrons trois lignes, comme indiqué sur la figure. Nous appuyons sur ESC pour sauvegarder la configuration, puis on tape: wq et appuyez sur ENTER. Les trois lignes s'activent, chaque minute (* * * * *), le script qui contrôle s'il y a un événement planifié pour activer et une fois par jour (de 00:05 à 00:10) le script pour nettoyer les événements et les journaux.


Nous ne disposons que d'une seule étape supplémentaire: chargement de l'esquisse contenue dans le dossier Sketch dans l'archive Github. Puis, en utilisant l'IDE d'Arduino, nous ouvrons l'esquisse sprinkler.ino et nous la téléchargeons sur notre Yun.

LES LIAISONS

Pour piloter les électrovannes, il faut utiliser des relais externes fonctionnels alimentés par 5 V et pilotés par les broches de sortie de l'Arduino. À cette fin, le bouclier utilise le connecteur OUT, avec une source d'alimentation +5 V, une masse et quatre broches numériques d'Arduino pour activer autant de relais. Le connecteur est conçu pour piloter le module 4 relais 5vdc. Ce tableau est équipé de 4 relais avec bobines à 5 V et échange permettant de commuer des charges électriques fonctionnant avec un maximum d'environ 240 V et absorbant jusqu'à 10 A (max.); Chaque relais est activé en amenant l'entrée de commande à un niveau logique élevé (de 1,6 à 5 Vcc), donc cette carte est idéale pour actionner les signaux logiques fournis par le blindage, aussi parce que son absorption de puissance, sur chaque entrée, est Juste quelques milliamps, ce qui est compatible même avec les logiques CMOS et CMOS HC. Toutes les entrées sur la carte à 4 relais sont opto-isolées, afin que nous puissions faire une séparation galvanique entre la carte et le circuit de commande, si cela nécessite un besoin; Dans chaque opto-isolateur, l'anode de la diode d'émetteur d'entrée (1 broche) est reliée à son entrée respective à travers une résistance de limitation de courant et la cathode est commune à toutes les cathodes des LED et aux autres optocoupleurs et est reliée à l'entrée COM. Si vous souhaitez renoncer à l'isolation, vous devez faire un pont entre GND et COM.

Chaque relais est également doté d'une LED d'état placée sur le bord de la carte.

Les électrovannes couramment utilisées pour les systèmes d'arrosage de jardin sont alimentées par 24 V; Par conséquent, nous aurons besoin d'un transformateur de puissance avec un "secondaire" qui fournira la tension et le courant nécessaires pour alimenter toutes les électrovannes. L'un des terminaux secondaires sera connecté aux électrovannes et l'autre au noeud commun des relais, comme le montre le schéma de cette page (connexions). Si vous avez une seule électrovanne, vous pouvez utiliser la connexion indiquée sur la figure, où vous pouvez trouver un exemple de connexion valide pour une électrovanne pilotée par une seule carte de relais.

Si les électrovannes sont enterrées dans un puisard, vous devrez toujours utiliser des connecteurs étanches ou des boîtes de jonction (IP65).

Le capteur de pluie est généralement composé de contacts inter-numérisés qui sont mis à la terre et chaque fois qu'il pleut, l'eau les relie, ce qui détermine une forte diminution de la résistance; Le capteur est connecté à l'entrée RAIN puis, lorsqu'il est sec, il permet au D10-Pin d’Arduino d'accéder à la logique 1, alors que dans des conditions humides, la résistance à l'eau agit comme une partition avec R9 et D10 présente une tension si basse qu'elle correspond À la logique zéro.

Certains capteurs, d'autre part, travaillent grâce à un matériau poreux qui se dilate lorsqu'il est mouillé et pousse le levier d'un micro-interrupteur, tout en soulageant le levier lorsqu'il se dessèche; Ces capteurs sont très précis et réglables, car vous pouvez utiliser une vis pour augmenter ou diminuer la distance du micro-interrupteur afin qu'il ne puisse être poussé qu'avec une certaine expansion et donc avec un volume d'eau réglé absorbé.

Quoi qu'il en soit, le capteur peut être directement connecté à l'une des broches numériques d'Arduino à travers une résistance de retrait; Si vous choisissez d'utiliser le bouclier que nous avons proposé dans cet article, il vous suffit de le connecter à la boîte de connexion nommée RAIN.

Enfin, vous pouvez également équiper votre sprinkleur avec un panneau de contrôle physique, afin de l'utiliser manuellement sans avoir besoin d'un ordinateur: le panneau de configuration est composé d'un interrupteur avec trois positions stables (ON, AUTO, OFF) et une LED d'état Pour chaque sortie. La position du commutateur est lue à travers une broche analogique d'Arduino Yun, comme indiqué dans la boîte correspondante, grâce à la connexion particulière de deux résistances permettant d'obtenir une valeur de tension pour chaque position.

Chaque commutateur de panneau, par conséquent, est utilisé pour forcer manuellement une condition sur la sortie correspondante et donc dans les électrovannes correspondantes; Cette condition est signalée par la LED spécifique. SW1 se réfère à OUT1, qui est signalé par LD1, SW2 à OUT et LD2 et ainsi de suite.
Si nous allumons le commutateur en position ON, la sortie correspondante est activée, alors que si nous la mettons en position OFF, la sortie est désactivée. Si nous la quittons dans une position intermédiaire (AUTO), la sortie suivra la programmation programmée par nous. Le panneau a une priorité plus élevée que l'interface graphique, donc si nous définissons une sortie OFF sur le panneau, cela sera désactivé sur l'interface graphique et nous ne pourrons pas modifier son état.
Le bouclier est déjà équipé des boîtes de bornes auxquelles on peut relier les quatre commutateurs et les broches auxquelles on peut connecter les LED: pour les LED, vous devez faire attention et bien connecter l'anode et la cathode aux broches comme indiqué dans la sérigraphie (L'anode correspond normalement à l'extrémité plus longue).

 Le blindage est également équipé d'un régulateur de tension (5 V) qui vous permet d'alimenter indépendamment tous les composants externes par rapport à Arduino. Grâce au jumper JP5V, vous pouvez choisir d'utiliser l'alimentation provenant d'Arduino ou d'un adaptateur externe (9-12 V DC) connecté directement au blindage.

 Utilisation du sprinkleur

Voyons maintenant comment nous pouvons utiliser notre unité de contrôle de l'arrosage en mode distant: à partir d'un PC, ouvrez votre navigateur Internet et, dans la barre d'URL, tapez l'adresse Web http: // <ip_arduino_yun> / sd / sprinkler; De cette page pourra accéder à l'écran de contrôle de notre unité.

L'interface est divisée en trois onglets: Runtime, où vous avez la possibilité de piloter manuellement les sorties, le Setup, où vous pouvez programmer des activations hebdomadaires et Events, où vous pouvez afficher une liste avec les événements les plus récents (activations, modifications de configuration ... ).

Chaque sortie peut être configurée dans trois états: ON - sortie activée; OFF - la sortie est désactivée ou la sortie AUTO suit la programmation. Si la sortie est configurée à l'aide du panneau externe, les commandes correspondantes sur l'interface Web seront désactivées, le panneau a, en fait, une priorité plus élevée.


 La phase de programmation est très simple, les événements sont réunis dans un tableau où les colonnes représentent les jours de la semaine et les sorties simples (V1 ...). Chaque ligne représente un intervalle de 5 minutes: en cliquant sur une cellule, vous pouvez définir un événement d'activation. Vous pouvez redimensionner et déplacer des événements à l'aide de votre souris (pour modifier sa durée), vous pouvez également le déplacer sur une autre sortie. En cliquant sur un événement, il est sélectionné et vous verrez un bord plus sombre autour de lui pour mettre en surbrillance votre sélection.

  
Vous pouvez sélectionner ou désélectionner plusieurs événements en cliquant de nouveau sur eux tout en appuyant sur Maj.

Enfin, vous pouvez supprimer tous les événements sélectionnés en appuyant sur DEL.


 Personnalisation du sprinkleur

Bien que le projet que vous pouvez télécharger à partir de Github est configuré pour fonctionner hors de la boîte avec le bouclier que nous avons réalisé, l'arrosoir est conçu pour être facilement personnalisable pour répondre à vos besoins.

En ouvrant le fichier include.php, qui se trouve dans le dossier PHP, vous pouvez éditer le nombre de sorties, leur nom et la couleur correspondante, comme indiqué sur la figure. Vous pouvez également ajouter le comportement en cas de pluie (arrêt immédiat des actions planifiées et / ou pas de nouvelle activation) ou désactiver complètement si votre système ne l'inclut pas.



 Les connexions entre Arduino et les périphériques externes peuvent également être personnalisées à l'aide de l'esquisse. Tout le mappage entre les périphériques et les broches sur lesquels les périphériques sont connectés a été défini dans un fichier spécifique, appelé config.h, que nous avons signalé dans la liste 1. Vous pouvez donc modifier les broches qui sont connectées aux relais, aux commutateurs, aux LED Et au capteur de pluie simplement en indiquant dans le fichier config.h les broches Arduino désirées. Rappelez-vous, dans le cas où vous allez appliquer d'autres boucliers à Arduino en plus des sprinklers, vérifiez toujours qu'ils ne sont pas déjà utilisés par les applications respectives avant d'attribuer des E / S dans config.h.

 Assurez-vous toujours que le nombre de sorties configurées dans l'interface Web correspond au nombre de sorties (OUT_x) défini dans l'esquisse et rappelez-vous de mettre à jour l'esquisse principale.

Enfin, si vous n'allez pas installer un panneau de contrôle externe, vous pouvez également inhiber les fonctions associées à la commande manuelle en mettant USE_SWITCHES constant sur false.

Très bien, avec cela dit, nous avons fini, nous espérons vraiment que vous avez apprécié ce projet!


 https://www.open-electronics.org/an-open-source-sprinkler-system-powered-by-yun/



Aucun commentaire:

Enregistrer un commentaire