Système de Rappel de Distanciation Sociale Arduino pour COVID-19
Composants et Fournitures
| Arduino UNO (Nano recommandé mais UNO utilisé) | × | 1 |
| Shield Proto Arduino (optionnel) | × | 1 |
| Mini Breadboard Adafruit | × | 1 |
| Écran LCD 16×2 Elegoo | × | 1 |
| Capteur ultrasons HC-SR04 | × | 1 |
| Capteur tactile (ou bouton + résistance pull-down) | × | 1 |
| Thermistance NTC | × | 1 |
| Résistance 10kΩ | × | 1 |
| Buzzer | × | 1 |
| Potentiomètre rotatif (réglage contraste LCD) | × | 1 |
| Fils de connexion (jumper wires) | × | 1 |
| Boîtier transparent étanche (pour voir LCD, résister à la pluie) | × | 1 |
Applications et Services
- Arduino IDE
À Propos de ce Projet
Qu'est-ce que c'est ?
L'approche la plus fiable pour ralentir la propagation du coronavirus est de garder ses distances ; mieux vaut prévenir que guérir. Mais il serait agaçant de se retourner toutes les 30 secondes pour vérifier si quelqu'un s'approche. Un dispositif qui avertit les autres de rester à 2 mètres serait utile. C'est le but de ce projet : alerter pour maintenir une distance de 2 mètres. C'est un 2-en-1 : la thermistance n'améliore pas seulement la précision de la mesure de distance (la vitesse du son varie avec la température), mais permet aussi — via un bouton ou capteur tactile pour basculer les modes — deux fonctions :
- Mode 1 : Alerte si quelqu'un s'approche trop
- Mode 2 : Affichage de la température et de la distance sur le LCD
Comment ça marche ?
- L'Arduino mesure la température via la thermistance.
- Cette température sert à calculer la distance plus précisément.
Mode 1 (Alerte) :
- Distance 2m – 1m : rétroéclairage LCD allumé, affiche « Please keep away » + distance
- Distance 1m – 50cm : rétroéclairage clignote, affiche « Keep away »
- Distance < 50cm : rétroéclairage clignote 2x/seconde, affiche « STAY AWAY! »
Mode 2 (Mesure) : LCD affiche distance en haut, température en bas.
Pour protéger de la pluie, j'ai fixé une demi-bouteille plastique qui se relève en cas de pluie. L'ensemble s'attache (deux ficelles) et se retire facilement sous un sac à dos.
Le capteur tactile permet de basculer entre les deux modes.
Comment le construire ?
Connectez les composants selon le schéma de câblage ci-dessous.
Importez les bibliothèques dans la section « Code » : dans l'IDE Arduino, Sketch → Include Library → Add .ZIP Library... et sélectionnez les deux fichiers .zip (les deux sont nécessaires).
Une fois fait, téléversez le code ci-dessous.
Code
Code Principal Arduino
#include <HCSR04.h>
#include <LiquidCrystal.h>
#define trigPin 7
#define echoPin 6
#define buzzer 9
#define backlight 10
LiquidCrystal lcd(12, 11, 5, 4, 3, 8);
UltraSonicDistanceSensor distanceSensor(trigPin, echoPin);
int tempReading;
double tempK;
float tempC;
int rounded, temp_round;
volatile boolean modes = 0;
double distance;
void setup() {
lcd.begin(16, 2);
attachInterrupt(0, changeMode, FALLING);
pinMode(2, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(backlight, OUTPUT);
digitalWrite(backlight, HIGH);
backlightOn();
}
void loop() {
tempReading = analogRead(A0);
tempK = log(10000.0 * ((1024.0 / tempReading - 1)));
tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK);
tempC = tempK - 273.15;
distance = distanceSensor.measureDistanceCm(tempC);
temp_round = round(tempC);
if (modes == 1) { // Mode 2 : Affichage mesure
backlightOn();
if (distance >= 300 || distance <= 0) {
rounded = 0;
lcd.clear();
lcd.print("Out of range");
lcd.setCursor(0, 1);
lcd.print("Temperature:" + String(temp_round) + " C");
} else {
rounded = round(distance);
lcd.clear();
lcd.print("Distance: "); lcd.print(rounded); lcd.print(" cm");
lcd.setCursor(0, 1);
lcd.print("Temperature:" + String(temp_round) + " C");
}
} else { // Mode 1 : Alerte distanciation
if (distance >= 300 || distance <= 0) {
rounded = 0; lcd.clear(); backlightOff();
} else {
rounded = round(distance);
if (distance >= 200) { backlightOff(); lcd.clear(); }
else if (distance <= 200 && distance > 100) {
backlightOn(); lcd.clear();
lcd.print("Please keep away");
lcd.setCursor(0, 1); lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm");
}
else if (distance <= 100 && distance > 50) {
backlightOn(); lcd.clear();
lcd.print("Keep away");
lcd.setCursor(0, 1); lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm");
delay(200); buzz(); backlightOff(); delay(100); unbuzz(); backlightOn(); delay(100);
}
else if (distance <= 50) {
backlightOn(); lcd.clear();
lcd.print("STAY AWAY!");
lcd.setCursor(0, 1); lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm");
delay(200); buzz(); backlightOff(); delay(200); unbuzz(); backlightOn(); delay(200);
buzz(); backlightOff(); delay(200); unbuzz(); backlightOn();
}
}
}
delay(700);
}
void changeMode() { modes = !modes; }
void backlightOn() { digitalWrite(backlight, HIGH); }
void backlightOff() { digitalWrite(backlight, LOW); }
void buzz() { digitalWrite(buzzer, HIGH); }
void unbuzz() { digitalWrite(buzzer, LOW); }
Bibliothèques Nécessaires
Schémas
- Fichier Fritzing :
coronavirus_distancing_WQxTcxgmYm.fzz
Processus de fabrication
- Poupée interactive « Squid Game » avec Arduino UNO – Projet DIY
- Horloge Arduino temps réel pour les heures de prière islamiques
- Robot de détection humaine basé sur Arduino Uno : Intégration capteurs étape par étape
- Serveur Web Arduino Uno WiFi : Commander une LED via Navigateur
- Calculatrice basique Arduino UNO - Projet facile pour débutants
- Afficher des images sur un écran TFT 1,17 pouces avec Arduino UNO
- Construire un affichage à persistance rétinienne portable avec Arduino UNO et ATtiny85
- Minuteur de lavage des mains Arduino : un outil DIY simple pour lutter contre le COVID‑19
- Contrôle de ventilateur PWM 4 broches 25 kHz avec Arduino Uno – Construction, code et test