Séparateur intelligent Arduino pour tri efficace déchets secs/humides
Composants et fournitures
Arduino Mega 2560
Cerveau du projet
×
1
DFRobot Gravity : Capteur tactile capacitif numérique pour Arduino
Aide à classer les déchets secs
×
1
Capteur d'humidité du sol SparkFun (avec bornes à vis)
Détecte l'humidité et aide à classer les déchets comme secs ou humides
×
1
Moteur servo SG90
Actionneur
×
1
Plaques acryliques
Corps du séparateur
×
1
Platine d'essai demi-format sans soudure
×
1
Fils de câblage (génériques)
×
1
Pile 9V (générique)
Alimentation
×
1
Outils et machines nécessaires
Pince à dénuder et couper, capacité 18-10 AWG / 0,75-4 mm²
Pistolet à colle chaude (générique)
Applications et services en ligne
Arduino IDE
Plateforme de codage compatible avec Arduino
À propos de ce projet
Description : Ce séparateur peut séparer avec succès les déchets secs et humides.
Note : Il ne peut pas séparer le plastique ou le métal. Pour cela, il faut utiliser des capteurs et modules supplémentaires.
Construction :
1. J'ai utilisé 2 plaques acryliques comme corps de mon séparateur.
2. Le moteur servo est utilisé comme actionneur qui tournera selon le type de déchet (sec ou humide).
3. J'ai utilisé une règle scolaire à très bas coût comme arbre de mon moteur servo. Cela relie la base supérieure et le moteur servo. J'ai utilisé un pistolet à colle pour le coller.
Note : vous pouvez aussi utiliser de la colle forte type Feviquick mais c'est risqué, utilisez-la avec précaution.
4. Le capteur d'humidité est fixé sur la partie supérieure du séparateur de sorte que lorsque le déchet est déposé, il atterrit directement sur le capteur. Il y a aussi un capteur tactile à côté pour détecter les déchets secs. Cela complète la construction de ce projet.
Pourquoi un capteur tactile alors que le capteur d'humidité peut seul classifier le type de déchet ?
Oui, c'est vrai que l'humidité peut classifier les déchets humides. Mais elle ne peut pas classifier les déchets secs. Pourquoi ? Imaginez que vous vouliez un état neutre quand il n'y a pas de déchet sur le capteur. Peu importe vos efforts, vous n'y arriverez pas. Le capteur d'humidité sera toujours dans un état sec par défaut, ce qui fera que le séparateur penchera toujours d'un côté. Pour surmonter ce problème, le capteur tactile est utilisé.
Implémentation étape par étape :
Étape 1 : Comme montré sur l'image ci-dessus, rassemblez 2 plaques acryliques. Vous pouvez les trouver dans les magasins locaux ou les commander en ligne via Amazon.
Étape 2 : Percez les trous dans les plaques acryliques comme montré sur l'image pour pouvoir fixer le porte-pile.
Étape 3 : Ensuite, sur le côté supérieur du porte-pile, collez le moteur servo pointant droit devant comme sur l'image. Vous pouvez fixer le servo avec du ruban double face ou du pistolet à colle.
Étape 4 : Prenez une règle en plastique scolaire (celle que vous utilisiez à l'école pour tracer des lignes) et percez un trou à son extrémité inférieure, légèrement plus petit que le diamètre de l'arbre du moteur. (Vous pouvez faire les trous avec un fer à souder chaud ou une tige d'acier fine.)
Étape 5 : Collez l'autre plaque acrylique sur le dessus de la règle comme sur l'image avec le pistolet à colle. Assurez-vous qu'elle est bien fixée et ne bouge pas.
Étape 6 : Placez le capteur d'humidité et le capteur tactile sur le dessus de la plaque acrylique.
>> En suivant correctement ces 6 étapes, vous êtes prêt à partir :)
Explication du matériel :
Pour implémenter cette configuration matérielle, vous devrez approfondir les concepts suivants :
Arduino : Arduino est un microcontrôleur utilisé dans ce projet. Vous pouvez tout apprendre à ce sujet sur ce lien. N'oubliez pas de consulter la documentation officielle d'Arduino.
Programmation C++ : Pour programmer Arduino, vous devrez apprendre la programmation C++ à un niveau intermédiaire. Vous devrez aussi apprendre les fonctions de base d'Arduino.
Capteur d'humidité : Vous devrez apprendre l'interfaçage d'Arduino avec le capteur d'humidité avec schéma de câblage.
Capteur tactile : Vous devrez apprendre l'interfaçage d'Arduino avec le capteur tactile avec schéma de câblage.
Moteur servo : Vous devrez apprendre le fonctionnement du moteur servo et comment exactement il est piloté par Arduino.
Fonctionnement du séparateur intelligent étape par étape :
Étape 1 : Le déchet est déposé et atterrit sur le capteur d'humidité.
Étape 2 : Selon le seuil défini, le capteur d'humidité le classe comme sec ou humide.
Étape 3 : Dès que l'étape 2 est faite, le moteur servo tourne dans un sens ou l'autre selon le type de déchet et celui-ci va dans le compartiment approprié.
Étape 4 : Tout le processus est autonome et continu.
Vidéo : N'oubliez pas de regarder le superbe fonctionnement de ce projet (lien ci-dessous :)
Code
Séparateur intelligent
Séparateur intelligentC/C++
#include <Servo.h>
class Smart_Segregator
/* _____________________________________________________________
| |
| Description |
| ----------- |
| - Ceci est un séparateur intelligent qui sépare les déchets |
| secs et humides. (Il ne peut pas séparer le métal ou le plastique) |
|.............................................................
| |
| Attributs |
| ---------- |
| pin_1 : int | - Numéro de broche du moteur servo. |
| pin_2 : int | - Numéro de broche du capteur d'humidité. |
| pin_3 : int | - Numéro de broche du capteur tactile. |
|............................................................
| |
| Méthodes |
| ------- |
| dry_waste() | - Couvercle du séparateur glisse vers la droite. |
| wet_waste() | - Couvercle du séparateur glisse vers la gauche. |
| neutral_state() | - État où le couvercle est au milieu. |
| execute() | - Le séparateur intelligent commence à fonctionner. |
|___________________________________________________________ */
{
public:
int servo_pin;
int moisture_sensor_pin;
int touch_sensor_pin;
int detect_moisture;
int detect_touch;
Servo servo;
Smart_Segregator(int pin_1, int pin_2, int pin_3) {
servo_pin = pin_1;
moisture_sensor_pin = pin_2;
touch_sensor_pin = pin_3;
detect_moisture = 0;
detect_touch = false;
}
void init() {
Serial.begin(9600);
servo.attach(servo_pin);
servo.write(90);
pinMode(moisture_sensor_pin, INPUT);
pinMode(touch_sensor_pin, INPUT);
Serial.println("Votre séparateur intelligent est prêt à trier !");
}
void dry_waste() {
servo.write(0);
}
void wet_waste() {
servo.write(180);
}
void neutral_state() {
servo.write(90);
}
void execute() {
detect_moisture = digitalRead(moisture_sensor_pin);
detect_touch = digitalRead(touch_sensor_pin);
if (detect_moisture > 85 && detect_touch == true) {
wet_waste();
} else if (detect_moisture <= 85 && detect_touch == true) {
dry_waste();
} else {
neutral_state();
}
}
}
segregator = Smart_Segregator(8,6,2);
void setup() {
segregator.init();
}
void loop() {
segregator.execute();
}