WaterPi : Arrosage et surveillance intelligents à distance pour plantes d'intérieur
Composants et fournitures
| Composant | Quantité |
|---|---|
| Raspberry Pi 1 Model B | 1 |
| Arduino UNO | 1 |
| Capteur température/humidité DHT11 (4 broches) | 1 |
| Capteur d'humidité du sol YL-69 | 1 |
| Capteur de niveau d'eau | 1 |
| Écran LCD 16×2 standard | 1 |
| Moteur pompe à eau | 1 |
| Relais 5V | 1 |
| Support 4 piles AA | 1 |
Applications et services en ligne
- Amazon Web Services AWS IoT
- Amazon Web Services AWS DynamoDB
- Johnny-Five (bibliothèque JavaScript pour robotique/IoT)
À propos du projet
Introduction
Ce système s'adresse aux personnes qui aiment les plantes d'intérieur mais sont trop occupées pour s'en occuper quotidiennement. Cultiver des plantes demande du temps et des efforts : arrosage régulier, etc. On oublie parfois, ou on voyage beaucoup. WaterPi aide en automatisant les tâches régulières. Comme il est contrôlable à distance, les propriétaires peuvent intervenir sur l'arrosage quand nécessaire.
Le système surveille la température et l'humidité ambiante, l'humidité du sol, arrose la plante à distance, puis sauvegarde toutes les données dans DynamoDB via AWS IoT. Les données collectées sont visualisées par graphiques pour mieux comprendre les conditions où la plante prospère.
Le Raspberry Pi exécute une application Node.js pour contrôler capteurs et pompe. J'utilise la bibliothèque Johnny-Five. Pour communiquer avec AWS, j'utilise le SDK AWS IoT pour JavaScript.
Étape 1 : Configurer DynamoDB
Créez une table :
- Nom : waterpi_sensor_data
- Clé de partition : key (type String)
- Ajouter clé de tri : timestamp (type String)
Étape 2 : Configurer AWS IoT
- Créez un « thing » nommé raspi-water-pump
- Créez une policy : nom pump-policy, Action iot:*, Ressource *, Allow
- Créez un certificat (1-Click). Téléchargez clé publique, clé privée, certificat.
- Activez le certificat, attachez la policy, attachez le thing.
- Créez une règle :
- Nom : saveToDynamoDB
- Attribut : *
- Filtre de sujet : sensor/data
- Action : Insérer le message dans une table de base de données
- Table : waterpi_sensor_data
- Valeur clé de hachage : ${topic()}
- Valeur clé de tri : ${timestamp()}
- Rôle : créez un nouveau rôle et autorisez
Étape 3 : Préparer l'Arduino
Les capteurs d'humidité du sol et de niveau d'eau donnent une sortie analogique. Au lieu de les brancher directement sur le Pi, j'utilise l'Arduino pour lire ces valeurs analogiques et les envoyer au Pi en numérique via Firmata.
- Installez Arduino IDE si nécessaire.
- Ouvrez Fichier → Exemples → Firmata → StandardFirmata
- Téléversez sur l'Arduino
Câblage capteur humidité sol → Arduino :
- VCC → Broche 7
- GND → GND
- AO (sortie analogique) → A1
Câblage capteur niveau d'eau → Arduino :
- (+) → Broche 4
- (-) → GND
- S → A0
Connectez l'Arduino au Raspberry Pi via USB. Placez le capteur d'humidité dans le pot et le capteur de niveau dans le réservoir d'eau.
Étape 4 : Préparer le Raspberry Pi
Câblage écran LCD, DHT11, pompe via relais :
- DHT11 : S → GPIO4 (broche 7), (+) → 3V3 (broche 1), (-) → GND (broche 25)
- LCD I2C : VCC → 5V (broche 2), GND → GND (broche 6), SDA → GPIO2 (broche 3), SCL → GPIO3 (broche 5)
- Relais pompe : S → GPIO18 (broche 12), (+) → 5V (broche 4), (-) → GND (broche 20)
Pompe à eau avec relais et pack piles : La pompe a deux câbles. L'un au relais, l'autre au pack piles. L'autre câble du pack piles au relais. Voir schéma.
Étape 5 : Lancer l'application Node.js sur le Pi
Le Pi doit être connecté à Internet (Ethernet ou WiFi). Node.js doit être installé.
git clone git@github.com:demirhanaydin/waterpi-node.git
cd waterpi-node
npm install
Placez vos fichiers certificat (clé publique, clé privée, certificat) dans le dossier certs. Téléchargez le certificat racine CA depuis AWS, sauvegardez comme rootCA.pem dans certs.
Éditez device.js et mettez à jour les chemins de fichiers. Récupérez IOT_DEVICE_URL depuis AWS IoT (cliquez sur votre thing), format : https://XXXXXXXXX.iot.us-east-1.amazonaws.com.
Lancez :
sudo node index.js
Si tout est bon, les valeurs des capteurs s'affichent sur l'écran LCD. Les données sont envoyées à AWS IoT toutes les 20 secondes et apparaissent dans DynamoDB.
Étape 6 : Lancer l'application web
Application Sinatra basique qui visualise les données DynamoDB avec Highcharts. Contrôle aussi la pompe à distance : clic sur démarrer/arrêter → publie un événement sur AWS IoT → le Pi le traite et démarre/arrête la pompe.
Ruby doit être installé.
git clone git@github.com:demirhanaydin/waterpi-web.git
cd waterpi-web
bundle install
Placez vos fichiers certificats (clé publique, privée, certificat, rootCA) dans certs. Éditez boot.rb avec vos identifiants AWS (clé d'accès et secret depuis Security Credentials).
Lancez :
ruby app.rb
Ouvrez https://localhost:4567/ → graphiques des données capteurs depuis DynamoDB. Cliquez « start » → la pompe arrose la plante.
Photos du développement
Plusieurs photos du projet en cours de développement sont disponibles.
Félicitations !
Code
Code source Node.js Raspberry Pi
Clonez le code sur le Pi, ajoutez vos fichiers certificats AWS IoT sous certs, mettez à jour device.js avec l'URL de votre thing AWS IoT :
github.com/demirhanaydin/waterpi-node
Client Web WaterPi
N'oubliez pas de mettre à jour boot.rb avec vos identifiants :
github.com/demirhanaydin/waterpi-web
Schémas
Disponibles dans la section « Schémas » : schémas Fritzing (pi-wout-camera.fzz, arduino.fzz) et photo du câblage.
Processus de fabrication
- ADLINK lance une solution MCM avancée pour la surveillance d'installations à distance et la maintenance prédictive
- Système aquaponique piloté par Raspberry Pi : guide de construction et code
- Centre Énergie Domestique : Surveillance panneaux solaires PV, thermiques et températures pièces avec Raspberry Pi et Moteino
- Surveillance météo à distance avec Raspberry Pi 3 et PubNub
- Construire un système de surveillance température et lumière multi-capteurs avec Raspberry Pi et DS18B20
- Maîtriser le contrôle des capteurs et actionneurs sur Raspberry Pi : Accéléromètre, Servo et Streaming de données
- Système de sécurité domestique Raspberry Pi : Détection de mouvement PIR + Alertes par e-mail avec caméra
- GE finalise l'acquisition de SmartSignal, renforçant la surveillance à distance et le diagnostic prédictif
- Cisco lance une surveillance IoT gérée dans le cloud pour les environnements IT et OT