2023-2024 S2 Groupe 4 Jules BEZIAT et Solenne HARO¶
Le pot de fleur connecté¶
Nous souhaitons fabriquer un pot de fleur connecté. L'idée est simple : fini les plantes qui manquent d'eau. Nous souhaitons créer un pot de fleur qui transmet les besoins de la plante à l'utilisateur.
lien vers notre git : https://git.cohabit.fr/jules.beziat/Projet_plante_connectee.git
Matériel utilisé:
- Imprimante Bambu Lab présente au Fablab
- Découpe laser présente au Fablab
- Un capteur d'humidité (Grove-Moisture sensor) -> https://wiki.seeedstudio.com/Grove-Moisture_Sensor/
- Une carte Arduino Uno pour le prototypage
- Un Esp32 pour la version définitive
- Un écran LCD I2C
LE POT¶
Nous souhaitons réaliser un pot de fleur qui puisse accueillir une plante de petite taille.
Vous trouverez le fichier de notre pot dans les fichiers en fin de page, source : pot_fleur-Revolve.stl
Une fois la conception réalisé sur Freecad, nous avons imprimé notre pot à l'aide d'une imprimante Bambu Lab du fablab.
filament |
28.06 m 85.03 g |
temps d'impression |
2h4m |
Image 1 : Pot en 3D réalisé sur le logiciel Freecad
LE BOITIER ELECTRIQUE¶
Nous avons réalisé une boite sur freecad pour pouvoir ranger notre carte arduino et les différents câbles.
Image 2 : Réalisation sur Freecad de la boite
Nous avons ensuite gravé la face supérieur de notre boîte.
Image 3 : Boîte finalisée avec la gravure (face supérieure)
Utilisation de l'écran LCD¶
AfficherCacher
Nous utilisons un écran LCD I2C.
La première difficulté est de réussir à écrire le message Hello World sur l'écran. Pour ce faire nous avons téléchargé la bibliothèque LiquidCrystal I2C par Franck de Barbander. Ensuite nous avons utilisé le code d'Arduino suivant pour faire afficher le message :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Hello, world!");
}
void loop()
{
}
Malheureusement, rien ne s'affiche avec ce code.
Alors nous avons utilisé le code suivant pour trouver le problème :
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Attendre l'ouverture du port série
Serial.println("\nI2C Scanner");
}
void loop() {
byte error, address;
int nDevices = 0;
Serial.println("Scanning...");
for (address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
} else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // Wait 5 seconds for next scan
}
Ce code renvoie I2C "device found at address 0x3F"
Donc nous avons trouvé l'erreur, elle se trouve sur cette ligne de code : LiquidCrystal_I2C lcd(0x27,16,2)
ce n'est pas 0x27 mais 0x3F
Ainsi nous pouvons mettre en place le code permettant de lire l'humidité de notre écran :
(nous avons décidé que la plante manque d'eau à partir de 12% d'humidité)
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
int soil;
void setup() {
lcd.init();
lcd.backlight();
pinMode(soil, INPUT);
Serial.begin(9600);
}
void loop() {
int soil = analogRead(A0);
int valeur = map(soil, 0, 1023, 0, 100); //map est une fonction qui permet de passer de 0 à 1023 à 0 à 100
Serial.println(valeur); // Imprimer la valeur d'humidité sur le moniteur série
Serial.println(soil);
lcd.clear(); // Effacer l'écran LCD avant de mettre à jour
lcd.setCursor(0, 0);
lcd.print("Moisture Value:");
if (valeur < 12){
lcd.setCursor(4, 1);
lcd.print("arrose moi !");}
else {
lcd.setCursor(0, 0);
lcd.print("Moisture Value:");}
lcd.setCursor(0, 1);
lcd.print(valeur);
lcd.print(" %");
delay(500);
}
Montage¶
Nous avons réalisé le cablage suivant :
Image 4 : Câblage de notre système
Puis nous avons positionné la carte Arduino Uno dans la boîte pour obtenir le résultat suivant :
Image 5 : Test du capteur dans de la terre humide, affichage du pourcentage d'humidité.
Conclusion¶
Il est possible d'imaginer des pistes d'amélioration pour ce projet comme utiliser un ESP32 pour recevoir directement les données de l'état de la plante sur un téléphone. Ainsi, nous avons effectué le prototypage mais il est possible d'imaginer de nombreuses améliorations pour une version définitive.
Si vous avez des questions, n'hésitez pas à nous contacter par mail : jules.beziat@etu.u-bordeaux.fr et solenne.haro@u-bordeaux.fr