Système de jardin automatisé intelligent avec Arduino UNO et Raspberry Pi
Composants et fournitures
![]() |
|
× | 1 | |||
![]() |
|
× | 1 | |||
![]() |
|
× | 1 | |||
![]() |
|
× | 1 | |||
|
× | 1 | ||||
![]() |
|
× | 1 | |||
![]() |
|
× | 1 | |||
|
× | 1 | ||||
|
× | 1 | ||||
![]() |
|
× | 1 | |||
|
× | 1 |
Applications et services en ligne
![]() |
|
|||
![]() |
|
|||
|
||||
|
||||
![]() |
|
À propos de ce projet

C'est mon deuxième projet utilisant mon jardin automatisé, mais cette fois tout sera contrôlé par Cayenne, ce qui sera beaucoup plus facile. J'ai aussi ajouté un Raspberry Pi pour faire une vidéo en time-lapse.
Configuration de l'Arduino

Pour surveiller notre jardin, j'ai utilisé quelques dispositifs qui peuvent être utiles. Avant de commencer, n'oubliez pas de connecter le shield Ethernet à l'Arduino.
Connexions
Humidité du sol : Pour vérifier si les plantes ont besoin d'eau.
- VCC : 5 V
- GND : GND
- A0 : A1
Le ventilateur : S'il fait trop chaud, il s'active ou juste pour donner de l'air frais.
- Un fil va de la résistance à la broche 3 - La masse du ventilateur va sur la broche centrale du transistor.
- Le + du ventilateur va au relais (broche centrale) La dernière broche du transistor va à la masse.
- La diode va à la broche centrale du transistor et à la masse.
La pompe à eau : Elle s'active avec l'humidité du sol.
- Le + va sur la broche centrale du relais et la masse à la masse de la source d'alimentation.
Photorésistance (optionnel) : Cette partie permet de mesurer s'il y a assez de lumière dans la pièce.
- Une partie est connectée à A0 avec la résistance connectée à la masse.
- L'autre au 5 V.
- L'anode (+) va au relais. L'autre à la masse de l'alimentation.
Lumière :
- L'anode (+) va au relais. L'autre à la masse de l'alimentation.
Capteur humidité/température : Du code est requis pour ce dispositif afin qu'il fonctionne correctement avec Cayenne.
- VCC : 3,3 V
- GND : GND
- DAT : broche numérique 8
Capteur de niveau d'eau :
- VCC : 5 V
- GND : GND
- SIG : A2
Montage final

J'ai utilisé 2 relais dans le schéma car Fritzing n'a pas encore de relais 4 canaux. Pour le relais, j'ai utilisé une seule alimentation 12 V. J'ai séparé les fils positif et négatif, puis soudé 3 fils depuis le positif et connecté chaque partie sur le relais. Un seul suffit car tout ne s'allume pas en même temps.
J'ai utilisé une alimentation 5 V pour l'Arduino RELAIS :
- VCC : 5 V
- GND : GND
- IN1 : BROCHE 2 Active la lumière
- IN2 : BROCHE 5 Active la pompe à eau
- IN3 : aucun IN4
- BROCHE 4 : active le VENTILATEUR
Configuration Cayenne
Ici, nous allons voir comment configurer Cayenne, ce qui est très facile.
- D'abord, créez un compte ici.
- Ensuite, vous devez avoir votre shield Ethernet avec câble RJ45 connecté.
- Voici le code pour se connecter à Cayenne et aussi pour configurer le capteur humidité/température.
Ce code fonctionne pour le shield w5100 ; le code est disponible sur Cayenne pour d'autres shields Ethernet/WiFi. N'oubliez pas d'ajouter votre token que vous obtenez après la création de votre compte.
#include "DHT.h"
//#define CAYENNE_DEBUG // Décommenter pour afficher les messages de débogage
#define CAYENNE_PRINT Serial // Commenter pour désactiver les affichages et économiser de l'espace
#include
#include
#define DHTPIN 8 // quelle broche numérique on est connecté
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define VIRT_TEMP V1
#define VIRT_HUM V2
// Jeton d'authentification Cayenne. À obtenir depuis le tableau de bord Cayenne.
char token[] = "votre_token";
DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh, interval_DHT_refresh = 1000;
void setup() {
Serial.begin(9600);
Cayenne.begin(token);
dht.begin();
}
void loop() {
Cayenne.run();
getDhtValues();
}
void getDhtValues() {
unsigned long now = millis();
if (now - prev_DHT_refresh > interval_DHT_refresh) {
// La lecture de la température ou de l'humidité prend environ 250 ms !
// Les lectures du capteur peuvent aussi être vieilles de 2 secondes (c'est un capteur très lent)
float h = dht.readHumidity();
// Lire la température en Celsius (par défaut)
float t = dht.readTemperature();
// Vérifier si une lecture a échoué
if (!isnan(h) && !isnan(t)) {
Cayenne.virtualWrite(VIRT_HUM, h);
Cayenne.celsiusWrite(VIRT_TEMP, t);
}
prev_DHT_refresh = now;
}
}
Périphériques dans Cayenne

Nous avons presque fini avec l'Arduino. Maintenant, c'est la partie facile. Nous allons ajouter tous les périphériques sur Cayenne.
Ajouter un périphérique → Widget personnalisé
Sélectionnez le type de widget que vous aimez. J'ai utilisé graphique pour l'humidité et le niveau d'eau, sinon j'ai utilisé valeur. Pour le capteur humidité/température, nous utilisons une broche virtuelle :
- Température : Vpin1
- Humidité : VPin2
Pour les autres périphériques, au lieu de choisir broche virtuelle, prenez Analogique avec la broche liée. Même procédure mais cette fois dans actionneurs, puis sélectionnez la broche de l'Arduino connectée au relais pour la lumière/ventilateur/pompe à eau.
Événements et déclencheurs

Maintenant que nous avons le tableau de bord, nous allons configurer les déclencheurs :
- Pompe à eau : Cela allumera la pompe quand l'humidité du sol détectée est trop sèche. Notez que j'ai utilisé 2 déclencheurs : un pour démarrer la pompe et un pour l'arrêter.
- Niveau d'eau : Quand la valeur est haute, cela signifie qu'il manque de l'eau. Ici, nous recevrons un email pour nous alerter.
- Événements : J'ai configuré 4 événements, un pour allumer la lumière le matin, et un pour l'éteindre le soir, et 2 pour le ventilateur marche/arrêt.
Configuration du Raspberry Pi

Faisons un time-lapse de la plante qui pousse.
3 Logiciels :
- Raspbian
- Win32diskimager pour graver l'image sur la carte SD
- Putty pour se connecter à distance au Raspberry
Win32 disk imager :
Après téléchargement, installez-le. Ouvrez-le :
1. Vous verrez « périphérique ». En général, le défaut est bon (si vous n'avez que la carte SD connectée)
2. Cliquez sur l'icône de dossier bleu et sélectionnez l'image Raspbian Jessie que vous avez téléchargée
3. Cliquez sur écrire et c'est fait. Vous pouvez maintenant insérer la carte dans le Raspberry.
Putty : Il permet de se connecter via SSH, ouvrez Putty (pas besoin d'installer).
- Connectez le câble internet au Raspberry
- Vous devez trouver l'IP du Raspberry 2, la méthode facile :
- Connectez-vous à l'interface de votre box, vous pourrez voir le périphérique avec l'IP
- Connectez l'écran tactile et le clavier, allez au terminal puis
ifconfig. Maintenant dans Putty, entrez l'adresse IP. Ce sera quelque chose comme 192.168.0.3 puis entrée.
- Il demandera de faire confiance, cliquez oui (image).
- login :
pi, mot de passe :raspberry. Laissez la fenêtre de côté, nous y reviendrons plus tard.
Maintenant que nous avons le Raspberry qui tourne, quelques mises à jour sont nécessaires, donc dans Putty copiez-collez la commande :
sudo apt-get update
sudo apt-get upgrade
VNC :
Si vous n'avez pas d'écran pour connecter votre Raspberry, installez VNC pour le contrôle à distance.
sudo apt-get install tightvncserver
Une fois fini, pour démarrer le serveur :
vncserver :1
Et en téléchargeant vncviewer sur votre ordinateur, pour vous connecter, entrez l'IP et le numéro de serveur. Cela ressemblera à ceci : 192.168.0.3:1
Cayenne : Vous pouvez prendre le contrôle à distance de votre Raspberry avec Cayenne, il suffit de l'installer :
wget https://cayenne.mydevices.com/dl/rpi_03wl1tt4nt.sh
sudo bash rpi_03wl1tt4nt.sh -v
Time-lapse

Dernière étape ! Nous pouvons maintenant activer la caméra. Pour ce faire, dans Putty ou dans un terminal, collez :
sudo raspi-config
Puis allez à activer la caméra. Nous devons créer un dossier pour stocker les photos :
cd /home/pi/Desktop
mkdir timelapse
Après avoir branché la webcam, nous allons créer un script pour prendre une photo toutes les heures :
cd /home/pi/Desktop
nano timelapse.sh
Collez ceci :
SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 3600;
done;
Et pour rendre le script exécutable :
chmod +x timelapse.sh
Conclusion

Le tutoriel était long mais très facile, il n'y a que quelques périphériques à connecter et configurer la plateforme. Sur la photo, c'est un grand désordre. J'ai utilisé des fils trop longs. Je posterai le résultat de mon time-lapse quand les plantes auront fini de pousser.
Conseil :
Le shield Ethernet peut avoir l'erreur DHCP fail. En essayant de me connecter, j'ai trouvé la solution sur le forum Arduino : Vous devez souder deux résistances de 100 ohms à des endroits aléatoires pour ennuyer vos lecteurs.
Code
- Extrait de code #1
- Extrait de code #9
Extrait de code #1Arduino
#include "DHT.h" //#define CAYENNE_DEBUG // Décommenter pour afficher les messages de débogage #define CAYENNE_PRINT Serial // Commenter pour désactiver les affichages et économiser de l'espace #include#include #define DHTPIN 8 // quelle broche numérique on est connecté #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define VIRT_TEMP V1 #define VIRT_HUM V2 // Jeton d'authentification Cayenne. À obtenir depuis le tableau de bord Cayenne. char token[] = "votre_token"; DHT dht(DHTPIN, DHTTYPE); unsigned long prev_DHT_refresh, interval_DHT_refresh = 1000; void setup() { Serial.begin(9600); Cayenne.begin(token); dht.begin(); } void loop() { Cayenne.run(); getDhtValues(); } void getDhtValues() { unsigned long now = millis(); if (now - prev_DHT_refresh > interval_DHT_refresh) { // La lecture de la température ou de l'humidité prend environ 250 ms ! // Les lectures du capteur peuvent aussi être vieilles de 2 secondes (c'est un capteur très lent) float h = dht.readHumidity(); // Lire la température en Celsius (par défaut) float t = dht.readTemperature(); // Vérifier si une lecture a échoué if (!isnan(h) && !isnan(t)) { Cayenne.virtualWrite(VIRT_HUM, h); Cayenne.celsiusWrite(VIRT_TEMP, t); } prev_DHT_refresh = now; } }
Extrait de code #9SH
SAVEDIR=/home/pi/Desktop/timelapse/ while [ true ]; do filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg /opt/vc/bin/raspistill -o $SAVEDIR/$filename sleep 3600; done;
Processus de fabrication
- Construire une télécommande universelle Raspberry Pi professionnelle avec LIRC
- Conversion RF vers DC avec Raspberry Pi : Construction et dépannage d'un détecteur d'enveloppe
- Cycle Chaser : Transformer votre vélo en spectacle lumineux nocturne avec Raspberry Pi
- Construire un détecteur de voleur basé sur Raspberry Pi – Guide étape par étape
- Construire un moniteur de température domestique avec Raspberry Pi, MCP9808, InfluxDB et Grafana
- Construire un système domotique piloté par Raspberry Pi pour contrôle à distance
- Système d'arrosage automatique des plantes avec Raspberry Pi et tableau de bord web
- MrRobot : Robot Rapiro piloté par mobile Ubuntu avec interaction voix, toucher et secousse
- Robot DIY inspiré de Wall‑E : Raspberry Pi dans une boîte de CD recyclée









