Système d'arrosage automatique de plantes de bureau avec Arduino, WiFi et IFTTT
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Due | 1 |
| Andium Anduino WiFi | 1 |
| Arduino Zero | 1 |
| Capteur d'humidité de sol capacitif | 1 |
Applications et services en ligne
- Arduino IDE
- IFTTT
- Adafruit IO
À propos du projet
Motivation
Ici chez Andium, nous sommes super excités d'avoir enfin emménagé dans notre nouvel espace de bureau. Nous l'avons aménagé avec des murs couverts de tableaux blancs, de la nouvelle technologie brillante, et tout le confort de la maison. Cela a vraiment commencé à ressembler à la maison quand nous avons placé une poignée de ces amis verts feuillus dans l'espace !

Seulement, nous avons oublié de les arroser et en une semaine ou deux, nos amis feuillus ont commencé à ressembler à ça...

Échec.
Nous sommes une entreprise IoT, nous sommes meilleurs que ça. Comment se fait-il que nos plantes ne soient pas connectées à Internet ! Espérons que ce n'est pas trop tard pour ce petit gars, j'ai mis au point une solution en utilisant notre shield anduinoWiFi et IFTTT. Il est temps de donner une voix à nos plantes !
Mise en route
Si vous avez la main verte, vous avez probablement déjà arrêté de lire, mais si vous êtes comme moi et avez besoin de donner à vos plantes la capacité de supplier numériquement pour de l'eau, alors vous êtes au bon endroit.
Pour donner une voix à vos plantes, vous aurez besoin d'un Arduino Due, ou Zero, un shield anduinoWiFi, (ou tout autre Arduino connecté WiFi qui peut parler à Adafruit IO) et enfin un 'Capteur d'humidité de sol capacitif'. Oh, et un verre d'eau. (Donnez-le à votre plante quand nous aurons fini, elle vous remerciera par e-mail maintenant).

Capteur d'humidité
Le capteur d'humidité du sol est plutôt cool, il n'y a pas beaucoup de capteurs où l'on vous encourage réellement à le submerger dans de la terre humide, alors profitez-en tant que vous le pouvez. Pas trop quand même, prenez note de cette ligne...

Quoi que vous fassiez, ne submergez pas votre capteur en dessous de cette ligne blanche. Rien au-dessus ne tolérera bien l'exposition à l'humidité, soyez donc prudent lors de l'arrosage de vos plantes qui contiennent ce capteur.
Comment calibrer le 'Capteur d'humidité de sol capacitif'
Notre capteur capacitif a trois fils que nous connecterons à 3.3V (rouge), masse (noir), et (bleu - signal) broche analogique A1. Lorsque nous calibrons notre capteur, nous allons enregistrer la lecture de capacitance lorsque le capteur est complètement sec, puis prendre une deuxième lecture lorsque le capteur est submergé (jusqu'à la ligne blanche !) dans un verre d'eau. Cela nous donne nos seuils d'humidité relative extrêmes 0-100%.
Câblez votre capteur, exécutez ce sketch, et notez vos résultats. Pour référence, mon dryVal était 807 et mon wetVal était 415.
int inputPin = A1;
void setup() {
Serial.begin(115200);
delay(3000);
}
void loop() {
Serial.print("Raw val: ");
Serial.println(readHumidity());
delay(3000);
}
int readHumidity() {
int sensorVal = analogRead(inputPin);
return sensorVal;
}
Une fois que vous avez ces deux nombres, vous êtes prêt à configurer le mapping d'humidité relative. Considérez-vous calibré !
Le Sketch
#include <WiFi101.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "AnduinoLCD.h"
// Paramètres WiFi
#define WLAN_SSID "Andium"
#define WLAN_PASS "maybeitsjustpassword"
// Adafruit IO
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "yourusernname"
#define AIO_KEY "dosifje0j230fj32lksdfj230ff23"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
/****************************** Flux ***************************************/
// Configurer le flux pour la température
Adafruit_MQTT_Publish humidityVal = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/officePlants");
/*Créer une instance de AnduinoLCD */
AnduinoLCD LCD = AnduinoLCD(ST7735_CS_PIN, ST7735_DC_PIN, ST7735_RST_PIN);
int inputPin = A1;
const int dryVal = 807;
const int wetVal = 415;
int humidity = 0;
int humidityPrev = 0;
int relHumidity = 0;
void setup() {
Serial.begin(115200);
delay(3000);
// Connecter au WiFi et Adafruit.IO
connectToWiFi();
connectToAdafruit();
// Initialiser LCD
LCD.begin();
LCDinit();
}
void loop() {
// ping adafruit io quelques fois pour s'assurer que nous restons connectés
if(! mqtt.ping(3)) {
// reconnecter à adafruit io
if(! mqtt.connected()) connect();
}
humidity = readHumidity();
// convertir int temp en tableau char
char b[4];
String str;
str = String(humidity);
for(int i=0; i= 0) mqtt.disconnect();
Serial.println(F("Retrying connection..."));
delay(1000);
}
Serial.println(F("Adafruit IO Connected!"));
}
void displayHumidity(int humidity, int humidtyPrev) {
// effacer l'ancienne valeur
LCD.setTextColor(ST7735_BLACK);
LCD.setTextSize(2);
LCD.setTextWrap(true);
LCD.setCursor(40,60);
LCD.setTextSize(5);
LCD.print(humidityPrev);
LCD.setTextSize(2);
LCD.print("%");
// Afficher la nouvelle valeur
LCD.setTextColor(ST7735_WHITE);
LCD.setTextSize(2);
LCD.setTextWrap(true);
LCD.setCursor(40,60);
LCD.setTextSize(5);
LCD.print(humidity);
LCD.setTextSize(2);
LCD.print("%");
}
void connectToWiFi() {
// Se connecter au point d'accès WiFi.
delay(10);
Serial.print(F("Connecting to "));
Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println(F("WiFi connected!"));
}
void connectToAdafruit() {
// se connecter à adafruit io
connect();
}
void LCDinit() {
LCD.setBacklight(ON);
LCD.fillScreen(ST7735_BLACK); // effacer l'écran
LCD.showBanner(); // charger la bannière Andium
LCD.setTextColor(ST7735_WHITE);
LCD.setTextSize(2);
LCD.setTextWrap(true);
LCD.setCursor(0,40);
LCD.print("Humidity: ");
}
int readHumidity() {
int sensorVal = analogRead(inputPin);
relHumidity = map(sensorVal, dryVal, wetVal, 0, 100);
Serial.println("relHumidity");
Serial.print(relHumidity);
return relHumidity;
}
Copiez-collez ce sketch dans votre IDE et assurez-vous d'avoir ces bibliothèques installées :
- WiFi101
- Adafruit_MQTT
- AnduinoLCD
Ainsi que vos valeurs personnellement calibrées...
const int dryVal = 807;
const int wetVal = 415;
valeurs sèches et humides. Vers le bas du sketch quand nous lisons readHumidity() nous utilisons ces valeurs pour mapper 0-100% d'humidité relative. Donc maintenant nos valeurs liront 0% quand sec et 100% quand complètement saturé.
relHumidity = map(sensorVal, dryVal, wetVal, 0, 100);
Si tout se passe bien, et que votre Arduino se connecte au WiFi et Adafruit IO, vous devriez commencer à voir des lectures arriver toutes les 10 minutes. Voici un aperçu de nos lectures aujourd'hui.

Ne faites pas attention aux valeurs aberrantes plus tôt aujourd'hui, je publiais aussi pendant que je lisais ma capacitance brute non mappée pour déterminer mes valeurs sèches et humides.
Super, maintenant toutes les 10 minutes nous publions notre lecture d'humidité du sol. Maintenant, je m'en fiche un peu des lectures jusqu'à ce que je doive sauver mes plantes de la mort et les arroser. Utilisons IFTTT pour définir un seuil d'humidité et configurer une notification à envoyer pour qu'on nous rappelle d'arroser nos plantes !
Seuil IFTTT
En utilisant IFTTT, j'ai mis en place un seuil tel que lorsque l'humidité relative du sol descend en dessous de 20%, nos plantes assoiffées nous contacteront via Twitter (@andiumPlants) pour demander à être arrosées ! Voici un aperçu de la configuration.



C'est tout !
Quelle est la suite ?
Je laisse ça à vous ! Comment d'autre pouvons-nous donner créativement une voix à nos plantes et empêcher notre faune de dépérir. Prenez un anduinoWiFi et un capteur de sol et commencez à créer !
Code
Anduino
Une bibliothèque Arduino pour le shield Andium(Anduino). Transformez votre Arduino en AndiumNode. GitHub
Processus de fabrication
- Engrais : Science, Production et Avenirs Durables
- Construire un Spybot Arduino piloté par Bluetooth
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Solutions d'alimentation optimisées pour projets Arduino
- Morpion sur matrice LED MAX7219 avec boîtier en carton
- Évaluer la santé des plantes avec TinyML : guide pratique