Système Intelligent de Surveillance de Plantes avec Windows 10 IoT
Composants et fournitures
- 1x Arduino Due (choisi pour son architecture ARM et sa tension 3,3V)
- 1x Raspberry Pi 2 Modèle B
- 1x Capteur de pression/température/altitude BMP180 (Adafruit, version chinoise utilisée)
- 1x ADC 16 bits ADS1115 (Adafruit, version chinoise utilisée)
- 4x Capteurs d'humidité du sol (SparkFun, versions chinoises avec module comparateur)
- 2x Servos Tower Pro MG996R
- 2x Relais (génériques)
- 1x Plaque d'essai (breadboard) générique
Applications et services en ligne
- Microsoft Visual Studio 2015
- Arduino IDE
À propos de ce projet
Introduction du projet
Ce projet vise à créer un système de surveillance et d'arrosage des plantes. La tâche principale est de contrôler les servos, les relais et de collecter les données d'humidité du sol. La grande majorité des capteurs utilisent un signal analogique en sortie, mais le Raspberry Pi ne possède pas de convertisseur analogique-numérique (ADC). Pour résoudre ce problème, j'ai utilisé un module ADC externe et une passerelle Arduino car ils intègrent un ADC. Lorsque l'on veut interagir avec l'environnement, on a généralement besoin de modulation de largeur d'impulsion (PWM). J'ai trouvé 3 façons de résoudre ce problème : le PWM logiciel, la passerelle Arduino, et l'utilisation d'un module/IC capable de PWM. J'ai implémenté les deux premières méthodes car j'avais déjà implémenté un dispositif I2C. L'ADC et le PWM sont très utilisés dans le monde Arduino, donc si on veut utiliser les GPIO du Raspberry Pi, on a généralement besoin d'au moins l'une de ces fonctionnalités.
L'Application

L'application dispose de deux modes : un mode automatique qui détecte si la plante a besoin d'eau, et un mode manuel où vous pouvez contrôler les servos et relais manuellement. Comme un servo peut tourner d'environ 180 degrés, un seul servo peut arroser seulement 2 plantes. Le mode automatique est le par défaut. Lors de la lecture des capteurs d'humidité, nous classons leur valeur en 5 catégories. La plus sèche est la catégorie 5, marquée en rouge sur l'interface. Son opposé, la catégorie 1, est marquée en vert. Une minuterie vérifie périodiquement ces valeurs et si la catégorie de "plante A" ou "plante B" dépasse le seuil acceptable (sol trop sec), elle arrose la plus sèche. Dans la même période, le programme vérifie et arrose les deux autres plantes ("plante C" et "plante D") de manière similaire, et ce à chaque période.
Les Composants
Servo SG90 :
Piloter un servo nécessite généralement une haute fréquence d'horloge GPIO. Le fournisseur par défaut n'est pas suffisant, j'ai donc utilisé le fournisseur "lightning". Il y a eu un problème avec la première alimentation du Pi. J'ai lu quelque part que le Pi pourrait avoir besoin d'une meilleure alimentation car les servos consomment beaucoup de courant comparé aux autres capteurs. Ces deux facteurs ont causé des problèmes de performance. Maintenant, avec le chargeur d'iPad, cela fonctionne beaucoup mieux mais ça hésite encore parfois. Un circuit servo avec alimentation externe pourrait résoudre le problème :

Et comme je le pensais, cela a résolu le problème et maintenant ça fonctionne parfaitement. J'ai connecté le Vcc du servo à la sortie 5V de l'alimentation et le signal reste le même avec une masse commune. Voici la nouvelle connexion :

Enfin, il n'est pas obligatoire de procéder ainsi. Peut-être qu'une meilleure alimentation pour le Raspberry Pi ou une amélioration logicielle résoudrait tous les problèmes avec le servo.
ADS1115 ADC 16 bits I2C :
J'ai essayé d'intégrer toutes les fonctions dans l'ADS1115. Mais c'est encore en développement. Par exemple, les registres de seuil ne sont pas définis et cela mériterait un projet/tutoriel dédié. Dans l'ensemble, c'est presque prêt pour être un driver ADC entièrement fonctionnel. Il peut y avoir quelques problèmes logiques et toutes les fonctions intégrées n'ont pas été complètement testées.
Capteur de température et pression BMP180 I2C :
Le driver BMP180 que j'ai utilisé est essentiellement le même que celui de ce projet. J'ai seulement modifié l'initialisation car elle n'était pas entièrement compatible avec le fournisseur lightning. Je suppose que la mesure de température et pression appartient à des projets comme station météo, surveillance de plantes et autres projets similaires.
Relais :
Piloter un relais nécessite de simples opérations GPIO. C'est assez facile à comprendre depuis le code source.
Circuit photodiode :
J'ai utilisé ce module car cette mesure pourrait être utile dans des projets similaires. Le circuit amplificateur se trouve dans la documentation du LTC 1050. La photodiode est une Osram BPW 21 optimisée pour la lumière du jour.
Passerelle Arduino :
Pour la passerelle, j'ai utilisé un Arduino Due car il dispose d'un bus I2C avec pull-up 3,3V. J'aurais pu utiliser un convertisseur de niveau de tension ou un autre bus avec vos propres pull-ups (si je ne me trompe, l'Arduino 2560 et d'autres cartes ont plusieurs bus I2C qui ne sont pas pull-up, donc on pourrait les utiliser). Le code est assez simple.
Capteur d'humidité du sol :
J'ai utilisé des versions chinoises avec modules comparateurs.
Résumé du projet
À mon avis, ce projet peut donner une idée de base sur comment arroser nos plantes et il y a des fonctionnalités que vous pourriez vouloir réutiliser dans vos propres projets :
- Communication avec une carte Arduino sur bus I2C (passerelle Arduino)
- ADC sur Raspberry Pi
- PWM sur Raspberry Pi (servo)
Projets futurs
- Connectivité Azure
- Application mobile avec Xamarin
- Remplacer l'I2C par Bluetooth pour communiquer avec l'Arduino
Code
Code Arduino
https://github.com/horvathm/plant-monitoring-system-arduino.git
Code Raspberry Pi
https://github.com/horvathm/plant-monitoring-system-raspberry.git
Schémas

Le schéma du circuit peut être trouvé dans la documentation du LTC 1050.

Processus de fabrication
- Poubelle intelligente : Une solution IoT cellulaire pour la gestion automatisée des déchets
- Construire une porte à reconnaissance faciale sécurisée avec Windows IoT et Raspberry Pi
- Surveillance Précise de Température et Humidité avec SHT15 sur Windows 10 IoT Core
- Installation de Windows 10 IoT Core sur Raspberry Pi 3 Model B+ : Guide Étape par Étape
- Construire un robot piloté par la parole avec Windows 10 IoT Core sur Raspberry Pi 2
- Étendre GoPiGo v2 sur Windows 10 IoT Core pour Raspberry Pi 3
- Système de surveillance à distance IoT pour réservoirs de pétrole et diesel
- Découvrez 8 avantages clés de la surveillance de poids de flotte pilotée par l'IoT
- Révolutionnez la gestion laitière grâce à la surveillance du niveau de lait par IoT