Arduino Social Distancing Herinneringssysteem voor COVID-19
Onderdelen en Benodigdheden
| Onderdeel | Aantal | Opmerking |
|---|---|---|
| Arduino UNO | 1 | Arduino Nano werkt beter, maar UNO gebruikt |
| Arduino Proto Shield | 1 | Optioneel |
| Adafruit Mini Breadboard | 1 | |
| Elegoo 16x2 LCD Display | 1 | |
| Ultrasonische Sensor HC-SR04 | 1 | |
| Touch sensor | 1 | Of drukknop met pull-down weerstand |
| NTC Thermistor | 1 | Voor temperatuurcompensatie |
| Weerstand 10kΩ | 1 | Voor thermistor |
| Buzzer | 1 | |
| Draaipotentiometer | 1 | Voor LCD-contrast |
| Jumper draden | 1 set | |
| Transparante waterdichte behuizing | 1 | Voor LCD-zichtbaarheid en regenbescherming |
Apps en online diensten
- Arduino IDE
Over dit project
Wat is het?
De betrouwbaarste manier om de verspreiding van coronavirus te vertragen is afstand houden. Maar om elke 30 seconden om te kijken of iemand naderkt is irritant. Dit apparaat waarschuwt anderen om 1,5-2 meter afstand te houden. Het is een 2-in-1 systeem: de thermistor verbetert de afstandsmeting (geluidssnelheid hangt af van temperatuur) EN stelt twee modi in via een knop/touch sensor:
- Modus 1 (Waarschuwing): Alarmeert als iemand te dichtbij komt
- Modus 2 (Meting): Toont temperatuur en afstand op LCD
Hoe werkt het?
- Arduino meet temperatuur via thermistor
- Temperatuur wordt gebruikt voor nauwkeurigere afstandsberekening
In Modus 1:
- 200-100 cm: LCD-backlight aan, "Please keep away" + afstand
- 100-50 cm: LCD-backlight knippert, "Keep away" + afstand, buzzer piept
- <50 cm: LCD-backlight knippert 2x/sec, "STAY AWAY!" + afstand, buzzer piept snel
In Modus 2: LCD toont afstand (boven) en temperatuur (onder).
Bescherming tegen regen: half plastic flesje dat omhoog kan schuiven. Bevestiging aan rugzak met twee touwtjes voor makkelijke demontage.
Touch sensor schakelt tussen modi.
Hoe bouw ik het?
- Sluit componenten aan volgens het schema
- Importeer bibliotheken in Arduino IDE:
Sketch → Include Library → Add .ZIP Library...arduino-lib-hc-sr04-master.zip(https://github.com/Martinsos/arduino-lib-hc-sr04)LiquidCrystal.zip(https://github.com/arduino-libraries/LiquidCrystal)
- Upload de code
Code
Hoofdprogramma (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); // Pin 2
pinMode(2, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(backlight, OUTPUT);
digitalWrite(backlight, HIGH);
backlightOn();
}
void loop() {
// Temperatuurmeting via thermistor (Steinhart-Hart vereenvoudigd)
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;
// Afstand met temperatuurcompensatie
distance = distanceSensor.measureDistanceCm(tempC);
temp_round = round(tempC);
if (modes == 1) { // Modus 2: Meting
backlightOn();
if (distance >= 300 || distance <= 0) {
rounded = 0;
lcd.clear();
lcd.print("Out of range");
lcd.setCursor(0, 1);
lcd.print("Temp: " + String(temp_round) + " C");
} else {
rounded = round(distance);
lcd.clear();
lcd.print("Dist: ");
lcd.print(rounded);
lcd.print(" cm");
lcd.setCursor(0, 1);
lcd.print("Temp: " + String(temp_round) + " C");
}
} else { // Modus 1: Waarschuwing
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("Dist: "); 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("Dist: "); 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("Dist: "); 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); }
Benodigde bibliotheken
- HCSR04 bibliotheek: arduino-lib-hc-sr04-master.zip
- LiquidCrystal bibliotheek: LiquidCrystal.zip
Schema's
Fritzing bestand: coronavirus_distancing_WQxTcxgmYm.fzz
Productieproces
- Bouw een Squid Game-thema Interactieve Pop met Arduino UNO – DIY Project
- Bouw een Arduino Real-Time Clock voor Islamitische Gebedstijden
- Arduino Uno Gebaseerde Mensendetectie Robot: Stap-voor-stap Sensorintegratie
- Arduino Uno WiFi Webserver: LED aan/uit schakelen via browser
- Bouw een eenvoudige rekenmachine met Arduino UNO – Makkelijk project
- Afbeeldingen Weergeven op een 1,17-inch TFT LCD met Arduino UNO
- Een draagbaar Persistence-of-Vision-display bouwen met Arduino UNO en ATtiny85
- Arduino Handwastimer: Simpele DIY-tool om COVID‑19 te bestrijden
- Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding
- Bouw een 4x4x4 LED-kubus met Arduino Uno & 1Sheeld – Interactief LED-project
- 25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test