Arduino-Code und Video für Sharp-IR-Abstandssensor mit LCD1602 und I2C-Modul

Arduino-Code und Video für Sharp-IR-Abstandssensor mit LCD1602 und I2C-Modul

Dieser Projektleitfaden führt Sie durch den Aufbau eines einfachen, aber effektiven Abstandsmesssystems mit einem Sharp-Infrarot-(IR-)Abstandssensor und einem LCD1602-Display. Mit diesem Aufbau können Sie Entfernungen innerhalb eines bestimmten Bereichs genau messen und diese direkt auf dem Display anzeigen, wodurch er sich ideal für verschiedene DIY-Elektronikprojekte eignet.

Sharpt IR distance sensor

Praktische Anwendungsbeispiele und Projektideen für dieses System umfassen:

  • Entwicklung eines automatisierten Einparkassistenzsystems zur Vermeidung von Stoßstangenschäden.
  • Einen einfachen Wasserstandssensor für Tanks oder Brunnen erstellen.
  • Entwicklung eines berührungslosen Flüssigspenders.
  • Implementierung eines einfachen Sicherheitsalarms durch Näherungserkennung.
  • Erstellung einer Füllstandsanzeige für Trichter oder Behälter.
  • Entwurf eines Kollisionsvermeidungssystems für kleine Roboter oder ferngesteuerte Fahrzeuge.

Hardware/Komponenten

Um dieses Projekt abzuschließen, benötigen Sie die folgenden Komponenten:

  • Arduino Uno oder kompatible Platine
  • Sharp Infrarot-Abstandssensor (Modell GP2Y0A41SK0F, Messbereich 4 bis 30 cm)
  • LCD1602 mit I2C‑Modul (zur einfachen Verkabelung)
  • Steckplatine (optional, zum Prototypenaufbau)
  • Jumperkabel
  • USB-Kabel für Arduino-Stromversorgung und Programmierung

Verdrahtungsanleitung

Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602

Das Anschließen des Sharp-IR-Sensors und des LCD1602 mit I2C-Modul an dein Arduino ist unkompliziert, da das I2C-Modul die Anzahl der für das LCD benötigten Leitungen reduziert.

Der Sharp-IR-Sensor hat drei Drähte: Rot (5V), Schwarz (GND) und Gelb (Ausgang). Verbinde den roten Draht mit dem 5V-Pin des Arduino, den schwarzen Draht mit einem beliebigen GND-Pin des Arduino und den gelben Ausgangsdraht mit dem analogen Pin A0 des Arduino (im Video bei 03:55).

Das LCD1602 mit I2C-Modul hat vier Leitungen: VCC, GND, SDA und SCL. Verbinde den VCC-Pin mit dem 5V-Anschluss des Arduino und den GND-Pin mit dem GND des Arduino. Verbinde die SDA-Leitung (Serial Data Line) mit dem analogen Pin A4 des Arduino, und die SCL-Leitung (Serial Clock Line) mit dem analogen Pin A5 des Arduino (im Video bei 02:42).

Code-Erklärung

Der bereitgestellte Arduino-Code verwendet zwei Hauptbibliotheken:Wire.hfür die I2C-Kommunikation undLiquidCrystal_I2C.hzur Steuerung des LCDs undSharpIR.hFür den Sharp-IR-Sensor. Die vom Benutzer konfigurierbaren Teile des Codes beziehen sich hauptsächlich auf die Definition des Sensors und die Initialisierung des LCD.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

Die LinieLiquidCrystal_I2C lcd(0x27, 16, 2);initialisiert das LCD-Objekt. Der erste Parameter,0x27(im Video bei 03:26) ist die Standard-I2C-Adresse für die meisten auf dem PCF8574 basierenden I2C-LCD-Module. Wenn Ihr LCD nicht funktioniert, müssen Sie möglicherweise die richtige Adresse herausfinden (häufige Alternativen sind0x3F). Der zweite Parameter,16, gibt an, dass Ihr LCD 16 Zeichen pro Zeile hat, und der dritte Parameter,2, zeigt an, dass es 2 Zeilen hat.

#include <SharpIR.h>

#define IR A0 // define Sharp IR signal pin
#define model 430 // the model of the IR module
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:
/*
 * GP2Y0A02YK0F --> "20150"
 GP2Y0A21YK --> "1080"
 GP2Y0A710K0F --> "100500"
  GP2YA41SK0F --> "430"
 */

SharpIR SharpIR(IR, model);

Diese Zeilen richten den Sharp-IR-Sensor ein.#define IR A0definiert den analogen Arduino-Pin, an dem das Ausgangskabel des Sharp-IR-Sensors angeschlossen ist.#define model 430Die Angabe (im Video bei 04:27) ist entscheidend, da sie das genaue Modell Ihres Sharp-IR-Sensors angibt. Die Bibliothek verwendet diese Modellnummer, um die korrekte mathematische Umrechnung von der analogen Spannungsausgabe des Sensors in eine Entfernung in Zentimetern anzuwenden. Der Kommentarblock listet verschiedene Sharp-IR-Modelle und deren entsprechende Ganzzahlwerte auf, die hier verwendet werden sollten. Wenn Sie beispielsweise einen GP2Y0A21YK verwenden würden, würden Sie ändern430zu1080.

void setup()
{
  lcd.begin();
  lcd.backlight();
}

In demsetup()Funktion,lcd.begin()initialisiert das LCD undlcd.backlight()schaltet die Hintergrundbeleuchtung ein, sodass das Display sichtbar wird.

void loop()
{
  lcd.clear();
  lcd.print("Robojax IR Test");
  lcd.setCursor (0,1); // go to start of 2nd line
  int dis=SharpIR.distance();// gets the distance in cm
  String distance = String(dis);
  distance ="Distance: "+distance+"cm";
  lcd.print(distance);
  delay(500);
}

Im Inneren desloop()Funktion:

  • lcd.clear();Löscht jeglichen vorherigen Text auf dem Display.
  • lcd.print("Robojax IR Test");gibt in der ersten Zeile eine statische Nachricht aus.
  • lcd.setCursor (0,1);verschiebt den Cursor an den Anfang der zweiten Zeile (0 ist die erste Spalte, 1 ist die zweite Zeile, da Zeilen nullbasiert sind).
  • int dis=SharpIR.distance();nennt diedistance()Funktion aus der SharpIR-Bibliothek, um den Sensorwert zu lesen und ihn in eine ganze Zahl umzuwandeln, die die Entfernung in Zentimetern angibt (im Video bei 05:06). Dies ist die Kernfunktion zur Erfassung der Messung.
  • String distance = String(dis);Wandelt die ganzzahlige Entfernung in einen String um, da man ganze Zahlen nicht direkt mit Strings zur Ausgabe verketten kann.
  • distance ="Distance: "+distance+"cm";formatiert die Zeichenkette so, dass vor dem Wert "Distance: " steht und danach "cm".
  • lcd.print(distance);zeigt den formatierten Entfernungs-String auf dem LCD an.
  • delay(500);Führt eine Pause von 500 Millisekunden ein (im Video bei 06:00). Diese Verzögerung ist wichtig für die Genauigkeit und Stabilität des Sharp-Sensors. Sie können diesen Wert anpassen: Eine Erhöhung könnte die Genauigkeit verbessern, verlangsamt aber die Aktualisierungen, während eine Verringerung die Aktualisierungen beschleunigt, aber die Genauigkeit verringern könnte.

Live-Projekt/Demonstration

Sobald die Komponenten verkabelt sind und der Code auf Ihrem Arduino hochgeladen wurde, beginnt das System, Entfernungen zu messen und anzuzeigen. Das Projekt demonstriert genaue Messungen im Nahbereich, zum Beispiel zeigt es 12 cm an, wenn sich das Objekt in 12 cm Entfernung befindet (im Video bei :31) und 10 cm an, wenn es 10 cm entfernt ist (im Video bei :37).

Allerdings kann die Genauigkeit nachlassen, wenn sich das Objekt weiter entfernt, insbesondere jenseits von 15–20 cm. Zum Beispiel kann bei 20 cm die Anzeige 21 cm zeigen (im Video bei 07:06), und bei 25 cm kann sie 28 oder 29 cm anzeigen (im Video bei 07:32). Dieses Verhalten ist charakteristisch für diese Infrarotsensoren. Der Sharp-IR-Sensor liefert eine analoge Spannung, die mit der Entfernung variiert: Mit zunehmender Entfernung sinkt die Ausgangsspannung (im Video bei 07:56).

Die Beziehung zwischen Abstand und Spannungsausgang ist nichtlinear, insbesondere an den Extremen des Messbereichs des Sensors. Diese Nichtlinearität ist der Grund, warum die SharpIR-Bibliothek nützlich ist, da sie Kalibrierdaten enthält, mit denen sich diese variierenden Spannungen in genauere Abstandswerte umrechnen lassen. Für Anwendungen, die höhere Präzision bei größeren Entfernungen erfordern, kann es notwendig sein, ein anderes SharpIR-Modell zu wählen, das für diese Entfernungen ausgelegt ist, oder eigene Kalibrierkurven zu implementieren.

Kapitel

  • [00:06] Projektvorstellung und Überblick
  • [01:10] Sharp-IR-Sensor: Details und Pinbelegung
  • [02:09] Verdrahtung des LCD I2C-Moduls
  • [02:58] Erklärung des Arduino-Codes
  • [06:36] Demonstration der Entfernungsmessung
  • [07:47] Sensoreigenschaften und Genauigkeitsgrenzen
  • [08:48] Schlussbemerkungen und Ressourcen

Bilder

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602
70-This is the Arduino code and video for a Sharp Infrared Sensor Module with LCD1602 and I2C.
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Arduino-Bibliotheken (zip)

Fritzing-Datei