Arduino Ultraschall-Distanz & Temperatur-Monitor mit LCD-Alarmsystem
Komponenten und Zubehör
| Arduino UNO | × | 1 |
| Adafruit Standard LCD 16×2 (Weiß auf Blau) | × | 1 |
| Ultraschallsensor HC-SR04 (generisch) | × | 1 |
| Maxim DS18B20 1-Wire Digitalthermometer | × | 1 |
| Widerstand 4,75 kΩ (für DS18B20 Pull-up) | × | 1 |
| Taster 12 mm | × | 1 |
| Potentiometer 10 kΩ (einstellbar, für LCD-Kontrast) | × | 1 |
| Summer (Piezo, 8 mA) | × | 1 |
| LEDs (1× Grün, 1× Gelb, 1× Rot) | × | 3 |
| Widerstände 221 Ω (für LEDs) | × | 3 |
| Steckbrett (Breadboard) | × | 1 |
| Jumper-Kabel (generisch) | × | 1 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Dieses Projekt liefert Informationen über den Wasserstand in einem Wassertank:
- Niedriger Stand (> 40 cm Distanz): Grüne LED an
- Mittlerer Stand (20–40 cm): Gelbe LED an
- Hoher Stand (< 20 cm): Rote LED blinkt + Summer ertönt
Die Distanz vom Sensor zum Wasserspiegel wird per Ultraschallsensor gemessen und zusammen mit der Wassertemperatur (DS18B20) auf dem LCD angezeigt.
Dies ist Teil eines größeren Projekts:
- Dieser Teil: Monitoring & Alarm
- Zweiter Teil: 6 „chasing“ LEDs im Kreis als Pumpen-Anzeige (Link)
- Dritter Teil: Automatische Pumpensteuerung (Ein bei hohem, Aus bei niedrigem Stand) – in Arbeit. Für den Echteinsatz wird ein wasserdichter Ultraschallsensor verwendet (ändert weder Verkabelung noch Code). Hinweis: Verhalten bei feuchtem Sensor (Luftfeuchtigkeit) unklar – dieser Teil dient nur der Info, die Pumpensteuerung erfolgt über Magnetkontakte.
Code
C/C++
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 6
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal LCD(12, 11, 5, 4, 3, 2);
int trigPin = 9;
int echoPin = 7;
int myCounter = 0;
float pingTime;
float targetDistance;
float speedOfSound = 776.5; // mph
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
LCD.begin(16, 2);
LCD.setCursor(0, 0);
LCD.print("Distance:");
sensors.begin();
pinMode(8, OUTPUT); // Gelb
pinMode(10, OUTPUT); // Rot
pinMode(13, OUTPUT); // Grün
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2000);
digitalWrite(trigPin, HIGH);
delayMicroseconds(15);
digitalWrite(trigPin, LOW);
delayMicroseconds(10);
pingTime = pulseIn(echoPin, HIGH); // µs
pingTime = pingTime / 1000000.0; // Sekunden
pingTime = pingTime / 3600.0; // Stunden
targetDistance = speedOfSound * pingTime; // Meilen
targetDistance = targetDistance / 2.0; // Hin- & Rückweg
targetDistance = targetDistance * 160934.4; // cm
sensors.requestTemperatures();
LCD.setCursor(10, 0);
LCD.print(" "); // Zeile löschen
LCD.setCursor(10, 0);
LCD.print((int)(targetDistance + 0.5));
LCD.print("cm ");
LCD.setCursor(0, 1);
LCD.print(" "); // Zeile löschen
LCD.setCursor(0, 1);
if (targetDistance > 40) {
LCD.print("LEV LOW ");
LCD.print(sensors.getTempCByIndex(0));
LCD.print((char)223);
LCD.print("C");
} else if (targetDistance < 40 && targetDistance > 20) {
LCD.print("LEV MED ");
LCD.print(sensors.getTempCByIndex(0));
LCD.print((char)223);
LCD.print("C");
} else {
LCD.print("LEV HIGH ");
LCD.print(sensors.getTempCByIndex(0));
LCD.print((char)223);
LCD.print("C");
}
delay(2000);
// LED & Buzzer Steuerung
if (targetDistance > 40) {
digitalWrite(13, HIGH); // Grün AN
} else {
digitalWrite(13, LOW);
}
if (targetDistance < 40 && targetDistance > 20) {
digitalWrite(8, HIGH); // Gelb AN
} else {
digitalWrite(8, LOW);
}
if (targetDistance < 20) {
digitalWrite(10, HIGH); // Rot AN
delay(2000);
digitalWrite(10, LOW); // Rot AUS
} else {
digitalWrite(10, LOW);
}
}
Hinweis: Im Originalcode war ein Syntaxfehler im letzten else-Block (fehlendes if). Korrigiert zu einfacher else-Klausel.
Schaltplan
Fritzing-Datei: lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz
Herstellungsprozess
- Integriertes QR-, RFID- und Temperatur-Verifikations-Zugangskontrollsystem
- Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
- Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
- Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
- Thermofühler (Thermocouple) mit Arduino Portenta H7 über MAX6675 IC integrieren
- DHT11 Temperatur- & Feuchtesensor mit LED-Anzeige & Piezo-Summer
- Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen
- NASA Goddards Lab-on-Chip-Sensor liefert Echtzeit-Durchfluss- und Temperaturüberwachung