Arduino-basiertes Social-Distancing-Erinnerungssystem für COVID-19
Komponenten und Materialien
| Arduino UNO (Arduino Nano empfohlen, aber UNO verwendet) | × | 1 |
| Arduino Proto Shield (optional) | × | 1 |
| Adafruit Mini Breadboard | × | 1 |
| Elegoo 16×2 LCD Display | × | 1 |
| Ultraschallsensor HC-SR04 | × | 1 |
| Berührungssensor (alternativ Taster mit Pull-Down-Widerstand) | × | 1 |
| NTC-Thermistor | × | 1 |
| Widerstand 10 kΩ | × | 1 |
| Summer | × | 1 |
| Drehpotentiometer (für LCD-Kontrast) | × | 1 |
| Steckdrähte (Jumper Wires) | × | 1 |
| Transparentes, wasserabweisendes Gehäuse (für LCD-Sichtbarkeit & Regenschutz) | × | 1 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Was ist das?
Die zuverlässigste Methode, die Ausbreitung des Coronavirus zu verlangsamen, ist Abstandhalten – Vorbeugen ist besser als Heilen. Doch ständig alle 30 Sekunden umzudrehen, um nach herannahenden Personen zu schauen, ist lästig. Dieses Gerät warnt andere automatisch, den Mindestabstand von 2 Metern einzuhalten. Es ist ein 2-in-1-System: Der Thermistor dient nicht nur der präziseren Entfernungsmessung (Schallgeschwindigkeit hängt von der Temperatur ab), sondern ermöglicht per Taster/Touchsensor den Wechsel zwischen zwei Modi:
- Modus 1 (Alarm): Warnt Personen, die sich nähern.
- Modus 2 (Messung): Zeigt Temperatur und Entfernung auf dem LCD an.
Funktionsweise
- Der Arduino misst die Temperatur über den NTC-Thermistor.
- Die Temperatur wird für die genaue Entfernungsberechnung per Ultraschall verwendet.
Im Modus 1 (Alarm):
- Entfernung 2 m – 1 m: LCD-Hintergrundbeleuchtung an, Anzeige „Please keep away“ + Distanz.
- Entfernung 1 m – 50 cm: LCD-Hintergrundleuchten blinkt, Anzeige „Keep away“.
- Entfernung < 50 cm: Hintergrundleuchten blinkt 2×/Sekunde, Anzeige „STAY AWAY!“, Summer ertönt.
Im Modus 2 (Messung): LCD zeigt oben die Distanz, unten die Temperatur.
Zum Regenschutz wurde eine halbe Plastikflasche als Abdeckung angebracht, die bei Regen hochgeschoben werden kann. Das Gerät wird mit zwei Schnüren am Rucksackboden befestigt und ist leicht abnehmbar.
Der Touchsensor dient zum Umschalten der Modi.
Aufbau
- Bauteile gemäß Schaltplan verbinden.
- Bibliotheken installieren: In Arduino IDE → Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen:
arduino-lib-hc-sr04-master.zipundLiquidCrystal.zip. - Code hochladen.
Code
Hauptprogramm (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;
int 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) { // Modus 2: Messung
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 { // Modus 1: Alarm
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); }
Benötigte Bibliotheken
Schaltpläne
Datei: coronavirus_distancing_WQxTcxgmYm.fzz (Fritzing)
Herstellungsprozess
- Squid Game Puppe mit Arduino UNO bauen – Interaktives DIY-Projekt
- Arduino Echtzeituhr für islamische Gebetszeiten bauen
- Arduino-Uno-Roboter zur Personenerkennung – Sensorintegration Schritt für Schritt
- Arduino UNO WiFi Webserver: LED per Browser steuern
- Einfacher Taschenrechner mit Arduino UNO – Einsteigerprojekt
- Bilder auf 1,17-Zoll-TFT-LCD mit Arduino UNO anzeigen
- Tragbares Persistence-of-Vision-Display mit Arduino UNO und ATtiny85 bauen
- Arduino Handwasch-Timer: Einfaches DIY-Tool gegen COVID-19
- 8×8 LED-Matrix mit Arduino Uno meistern: Schritt-für-Schritt-Anleitung
- 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test