EmoPot : Pot de fleurs intelligent qui visualise la santé de votre plante
Composants et fournitures
| Arduino Nano R3 | × | 1 |
| Capteur d'humidité du sol DFRobot Gravity analogique pour Arduino | × | 1 |
| Écran OLED I2C 0,96" | × | 1 |
Outils et machines nécessaires
- Fer à souder
- Imprimante 3D
Applications et services en ligne
- Arduino IDE
À propos de ce projet
Dans ce projet, j'ai réalisé un pot de fleurs intelligent qui peut montrer l'émotion d'une plante 😜. Il utilise un capteur d'humidité du sol pour surveiller l'humidité et affiche une expression émotionnelle correspondant à ce niveau. Comme on sait que les plantes ont besoin d'eau pour vivre et que c'est comme de la nourriture pour elles, on peut dire que ça a du sens 😋. C'est un petit projet amusant pour faire un pot intelligent et surveiller visuellement le niveau d'humidité.
Ce pot affiche différentes expressions émotionnelles pour différents niveaux d'eau.
Après avoir réalisé ce projet, vous apprendrez :
- Comment utiliser un capteur d'humidité du sol et lire des données analogiques par l'ADC de l'Arduino
- Comment afficher des images sur un écran OLED
- Comment créer des animations et les afficher sur OLED avec Arduino
Partie matériel
Pour ce projet, il faut d'abord un pot de fleurs. J'ai conçu le pot avec un compartiment pour l'électronique en utilisant Fusion 360. Si vous avez une imprimante 3D, vous pouvez l'imprimer vous-même. Si vous n'en avez pas, pas de problème ! Vous pouvez utiliser n'importe quel pot de fleurs et faire une boîte pour l'électronique.







Pour la partie électronique, connectez :
- Arduino A5 → OLED SCL
- Arduino A4 → OLED SDA
- Arduino A0 → Capteur d'humidité Ao
Programmation
Le code a l'air compliqué mais il est très simple ! Au début, j'inclus quelques bibliothèques (vous devrez peut-être les télécharger) :
- Adafruit_GFX.h
- Adafruit_SSD1306.h
Après avoir ajouté ces bibliothèques, je crée des fonctions pour chaque frame d'animation pour chaque expression émotionnelle (Croyez-moi, ça prend une éternité). Dans la section setup, j'initialise l'affichage. Et dans la boucle loop, je lis la valeur du capteur en analogique sensorValue = analogRead(A0); puis je fais des conditions pour différents niveaux d'humidité et affiche les frames correspondantes à cette expression émotionnelle.
Voici quelques vidéos pour les différentes expressions émotionnelles selon le niveau d'humidité
Code complet (EmoPot Code)
#include
#include
#include
#include
#include
#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET);
int sensorValue = 0;
int xx = 40;
/****************************************** TRISTE ****************************************************/
// Frames d'animation pour l'expression "triste" (frame01 à frame121)
// ... (tableaux de bitmaps omis pour la brièveté, voir code source complet)
/************************************************* SOURIRE *************************************************/
// Frames d'animation pour l'expression "sourire" (frame02 à frame132)
// ... (tableaux de bitmaps omis pour la brièveté)
/************************************** NEUTRE ***************************************************/
// Frames d'animation pour l'expression "neutre" (frame03 à frame83)
// ... (tableaux de bitmaps omis pour la brièveté)
/*************************************** ÉBAHISSEMENT **************************************************************/
// Frames d'animation pour l'expression "ébahissement" (frame04 à frame94)
// ... (tableaux de bitmaps omis pour la brièveté)
/**************************************************** PLEURS **********************************************/
// Frames d'animation pour l'expression "pleurs" (frame05 à frame95)
// ... (tableaux de bitmaps omis pour la brièveté)
// Expression "confus"
const unsigned char PROGMEM framec[] = {
// ... (bitmap omis pour la brièveté)
};
/********************************************************************************************************************************/
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setFont(&FreeSans9pt7b);
display.setTextColor(WHITE);
display.setCursor(0,0);
}
void loop() {
sensorValue = analogRead(A0); // lecture analogique du capteur
if(sensorValue >= 80 && sensorValue < 250) {
// Sourire - humidité bonne
display.clearDisplay();
display.drawBitmap(xx, 0, frame02, 48, 48, 1);
display.display();
delay(30);
display.clearDisplay();
display.drawBitmap(xx, 0, frame012, 48, 48, 1);
display.display();
delay(30);
// ... (autres frames sourire)
}
else if(sensorValue >= 250 && sensorValue < 350) {
// Ébahissement
display.clearDisplay();
display.drawBitmap(xx, 0, frame04, 48, 48, 1);
display.display();
delay(50);
// ... (autres frames ébahissement)
}
else if(sensorValue >= 350 && sensorValue < 550) {
// Neutre
display.clearDisplay();
display.drawBitmap(xx, 0, frame03, 48, 48, 1);
display.display();
delay(60);
// ... (autres frames neutre)
}
else if(sensorValue >= 550 && sensorValue < 700) {
// Triste - manque d'eau
display.clearDisplay();
display.drawBitmap(xx, 0, frame011, 48, 48, 1);
display.display();
delay(70);
// ... (autres frames triste)
}
else if(sensorValue >= 700 && sensorValue < 800) {
// Pleurs - très sec
display.clearDisplay();
display.drawBitmap(xx, 0, frame05, 48, 48, 1);
display.display();
delay(30);
// ... (autres frames pleurs)
}
else {
// Confus - valeur hors plage
display.clearDisplay();
display.drawBitmap(xx, 0, framec, 48, 48, 1);
display.display();
delay(30);
}
}
Note : Les tableaux de bitmaps complets pour chaque frame d'animation sont très longs et ont été omis ici pour la lisibilité. Le code complet est disponible dans les fichiers du projet.
Processus de fabrication
- Centrale nucléaire Susquehanna : maintenance planifiée terminée, Unité 2 redémarrée
- Prévenir les Accidents de Chariot Élévateur : Conseils Essentiels pour Zéro Basculement
- La technologie d'horloge atomique réduit le vol de colis dans les livraisons en ligne
- Détection d'odeurs par IA : la technologie d'Aryballe révolutionne le business et les supply chains
- Facteurs critiques influençant les coûts de fabrication CNC – Partie II
- 7 indicateurs clés qu'il est temps de mettre à niveau votre générateur
- Pourquoi les pièces usinées sur mesure surpassent les pièces d'usine dans 4 domaines clés
- 10 projets DIY open-source innovants tirant parti de l'impression 3D
- Pelles expliquées : Types, utilisations et comment choisir la bonne pour votre projet