0% ont trouvé ce document utile (0 vote)
43 vues10 pages

Poubelle Intelligente avec Arduino et Blynk

Le document présente un projet de poubelle intelligente utilisant un capteur ultrason pour mesurer le niveau de remplissage, affiché sur un écran LCD et signalé par des LED de différentes couleurs. Un buzzer alerte l'utilisateur lorsque le niveau critique est atteint, et une fonctionnalité de désactivation du buzzer est intégrée. Le système est également connecté à la plateforme Blynk pour un suivi à distance de l'état de la poubelle via une application mobile.

Transféré par

Sudburygdgjb
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
43 vues10 pages

Poubelle Intelligente avec Arduino et Blynk

Le document présente un projet de poubelle intelligente utilisant un capteur ultrason pour mesurer le niveau de remplissage, affiché sur un écran LCD et signalé par des LED de différentes couleurs. Un buzzer alerte l'utilisateur lorsque le niveau critique est atteint, et une fonctionnalité de désactivation du buzzer est intégrée. Le système est également connecté à la plateforme Blynk pour un suivi à distance de l'état de la poubelle via une application mobile.

Transféré par

Sudburygdgjb
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Examen Principal Sujet N°8: T/GLID N°31

• Présentation
montage des fonctionnalités du
on a travailler sur la poubelle intelligente qui consiste à utiliser un capteur ultrason pour mesurer la
distance entre les déchets et le couvercle de la poubelle. Cette mesure est utilisée pour calculer le
pourcentage de remplissage, qui est affiché en temps réel sur un écran LCD.
En complément, des LED de différentes couleurs (vert, jaune, bleu, rouge) indiquent visuellement le
niveau de remplissage :
• Vert pour une poubelle vide,
• Jaune et bleu pour des niveaux intermédiaires,
• Rouge pour signaler un remplissage critique.
Lorsqu'un seuil critique est atteint, un buzzer émet un son pour alerter l'utilisateur. Une
fonctionnalité supplémentaire permet à l'utilisateur de désactiver le buzzer à l'aide d'un bouton
[Link] plus, on a intègrer la plateforme Blynk pour surveiller à distance l'état de la poubelle via
une connexion Ethernet. Cela permet d'afficher en temps réel le pourcentage de remplissage et
l'état des LEDs sur une interface mobile.
Enfin, un aspect interactif est ajouté : l'état du bouton poussoir et le temps d'exécution de l'Arduino
sont également envoyés à l'application Blynk pour enrichir le suivi et le contrôle.
• Liste du matériel utilisé
Quantité Composant
1 Arduino Uno R3
1 capteur de distance à ultrasons HC-SR04
1 Basé sur MCP23008, 32 (0x20) Écran LCD 16x2 (I2C)
1 Bouton-poussoir

220 Ω Résistance
1 10 kΩ Résistance
4
1 Vert LED
1 Jaune LED
1 Bleu LED
1 Rouge LED
1 Buzzer piézoélectrique
• Image du montage issu de tinkercad

• Code arduino
(RQ:L'affichage correspond au pourcentage de
remplissage, et non au pourcentage de capacité restante)
#include <LiquidCrystal_I2C.h> // Driver Library for the LCD Module

// Initialisation de l'écran LCD I2C


LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C et taille du LCD

// Broches analogiques pour les capteurs


const int ledBleu = A3;
const int ledRed = 5; // LED rouge
const int ledYellow = 3; // LED jaune
const int ledGreen = 2; // LED verte
const int trigPin = 9;
const int echoPin = 8;
const int BUZZER_PIN = 6;
const int BUTTON_PIN = 7;
float duration, distance;
bool buzzerStop = false;

void setup() {
[Link](); // Initialisation de l'écran LCD
[Link](); // Activer le rétroéclairage de l'écran

// Configurer les broches des LED comme sorties


pinMode(ledGreen, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledBleu, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT);

// Configurer les broches du capteur ultrason comme sorties/entrées


pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

[Link](9600);

// Initialiser les LED à l'état éteint


digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledGreen, LOW);
digitalWrite(ledBleu, LOW);
}

void loop() {
// Générer un signal ultrason avec le capteur
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Calculer la durée et la distance


duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.0343) / 2; // Conversion en cm

// Afficher la distance sur le moniteur série


[Link]("Distance: ");
[Link](distance);

// Calculer le pourcentage de remplissage et l'afficher


[Link](0, 0); // Début de la première ligne
int r = constrain(100 - distance, 0, 100); // Calcul du pourcentage, contraint entre 0 et 100
char buffer[16]; // Tampon pour la chaîne formatée
sprintf(buffer, "Remplissage:%d%%", r); // Construire la chaîne
[Link](buffer); // Afficher la chaîne formatée

[Link](0, 1); // Début de la deuxième ligne

// Gestion des LED selon la distance mesurée


if (distance > 100) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, LOW);
digitalWrite(ledBleu, LOW);
digitalWrite(ledRed, LOW);
[Link]("OK "); // Ajouter des espaces pour effacer le reste
} else if (distance > 66) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledBleu, LOW);
digitalWrite(ledRed, LOW);
[Link]("Jaune ");
} else if (distance > 33) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledBleu, HIGH);
digitalWrite(ledRed, LOW);
[Link]("Bleue ");
} else {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledBleu, HIGH);
digitalWrite(ledRed, HIGH);
[Link]("ROUGE !! ");
if (!buzzerStop) {
tone(BUZZER_PIN, 220); // Activer le buzzer
}
}

// Arrêter le buzzer via bouton


if (digitalRead(BUTTON_PIN) == HIGH) {
buzzerStop = true;
noTone(BUZZER_PIN);
}

delay(1000); // Mettre à jour toutes les 1 seconde


[Link]();
}

(code avec integration de Cloud)


#define BLYNK_TEMPLATE_ID "TMPL2W1m1Skpk"
#define BLYNK_TEMPLATE_NAME "Quickstart Template"
#define BLYNK_AUTH_TOKEN "_tlVGX63iLAsgrYGoD_BWqa5GpANyeg_"

#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int ledBleu = A3;


const int ledRed = 5;
const int ledYellow = 3;
const int ledGreen = 2;
const int trigPin = 9;
const int echoPin = 8;
const int BUZZER_PIN = 6;
const int BUTTON_PIN = 7;
float duration, distance;
bool buzzerStop = false;

// Blynk Settings
#define W5100_CS 10
#define SDCARD_CS 4

BlynkTimer timer;

// Fonction de gestion de la poubelle


void gestionPoubelle() {
// Logique du capteur ultrason
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Calcul de la distance
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.0343) / 2; // Conversion en cm

// Affichage sur l'écran LCD


[Link](0, 0); // Première ligne
int r = constrain(100 - distance, 0, 100); // Pourcentage de remplissage
char buffer[16]; // Buffer de formatage
sprintf(buffer, "Remplissage:%d%%", r); // Créer une chaîne formatée
[Link](buffer); // Afficher le pourcentage

[Link](0, 1); // Deuxième ligne

// Contrôle des LEDs en fonction de la distance


if (distance > 100) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, LOW);
digitalWrite(ledBleu, LOW);
digitalWrite(ledRed, LOW);
[Link]("OK ");
buzzerStop = false;
[Link](V7, 1);
[Link](V8, 0);
[Link](V6, 0);
[Link](V5, 0);
} else if (distance > 66) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledBleu, LOW);
digitalWrite(ledRed, LOW);
[Link]("Jaune ");
[Link](V7, 1);
[Link](V8, 1);
[Link](V6, 0);
[Link](V5, 0);
buzzerStop = false;
} else if (distance > 33) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledBleu, HIGH);
digitalWrite(ledRed, LOW);
[Link]("Bleue ");
[Link](V7, 1);
[Link](V8, 1);
[Link](V6, 1);
[Link](V5, 0);
buzzerStop = false;
} else {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledBleu, HIGH);
digitalWrite(ledRed, HIGH);
[Link]("ROUGE !! ");
[Link](V7, 1);
[Link](V8, 1);
[Link](V6, 1);
[Link](V5, 1);

if (!buzzerStop) {
tone(BUZZER_PIN, 220); // Activer le buzzer
}
}

// Arrêter le buzzer via bouton


if (digitalRead(BUTTON_PIN) == HIGH) {
buzzerStop = true;
noTone(BUZZER_PIN);
}

// Envoyer la distance à Blynk (en pourcentage de remplissage)


[Link](V4, r);

delay(1000); // Mettre à jour toutes les 1 seconde


[Link]();
}

// Cette fonction envoie l'état du bouton poussoir à Blynk (V0)


void checkButtonState() {
int buttonState = digitalRead(BUTTON_PIN); // Lire l'état du bouton (HIGH ou LOW)
[Link](V0, buttonState); // Envoyer l'état au pin virtuel V0
}

// Cette fonction envoie le temps d'exécution Arduino au pin V2


void myTimerEvent() {
// Envoyer le temps d'exécution Arduino (en secondes) au pin virtuel V2
[Link](V2, millis() / 1000);
}

// Fonction d'initialisation matérielle et Blynk


void setup() {
// Console de débogage
[Link](115200);
[Link](); // Initialisation de l'écran LCD
[Link](); // Activer le rétroéclairage de l'écran

// Configurer les broches des LED comme sorties


pinMode(ledGreen, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledBleu, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT); // Configurer le bouton comme entrée

// Configurer les broches du capteur ultrason comme sorties/entrées


pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

// Ethernet et Blynk
pinMode(SDCARD_CS, OUTPUT);
digitalWrite(SDCARD_CS, HIGH); // Désélectionner la carte SD

[Link](BLYNK_AUTH_TOKEN);

// Configuration des fonctions appelées périodiquement


[Link](1000L, myTimerEvent); // Appeler myTimerEvent chaque seconde
[Link](200L, checkButtonState); // Vérifier l'état du bouton chaque 200ms
}

void loop() {
[Link](); // Exécuter Blynk
[Link](); // Exécuter les minuteries

// Appeler la gestion de la poubelle


gestionPoubelle();
}
• Lien Tinkercad
[Link]
6vFOgkyOt5-manip-examen

Vous aimerez peut-être aussi