Wie bewege ich Geschirr mit einem Roboter um dein Küchenregal?
Wenn Sie nach einer Möglichkeit suchen, den Charme und die Funktionalität Ihrer Küche dramatisch zu steigern, sollten Sie den menschlichen Aufwand dort minimieren. Der menschliche Aufwand kann minimiert werden, indem ein Haushaltsroboter hergestellt wird, der in der Küche vorhanden ist und schmutzige Utensilien zum Waschbecken trägt und dort anhält. Wenn die Person die Utensilien vom Roboter entlädt, kehrt sie zurück und bringt mehr davon mit. In großen Küchen befindet sich das Waschbecken manchmal nicht so nahe an den Schränken, sodass der Roboter das Geschirr von einer Stelle des Regals zur anderen bringt. Ein Pfad für den Roboter wird mit dem schwarzen Klebeband im Regal erstellt. Der Roboter verwendet zwei Infrarot-Näherungssensoren, um den Pfad zu erfassen, und basierend auf den von den Sensoren empfangenen Eingaben weist der Arduino die Motoren an, sich mit Hilfe eines Motortreibers zu bewegen.
Wie verbinde ich alle notwendigen Peripheriegeräte, um einen Haushaltsroboter herzustellen?
Jetzt müssen wir die erforderlichen Komponenten sammeln und mit der Herstellung des Roboters beginnen.
Schritt 1: Verwendete Komponenten
Schritt 2: Studieren der Komponenten
Da wir bereits eine Liste der Komponenten erstellt haben, gehen wir einen Schritt weiter und führen eine kurze Studie über die Funktionsweise der einzelnen Komponenten durch.
Das Arduino UNO ist eine Mikrocontroller-Karte, die aus einem Mikrochip ATMega 328P besteht und von Arduino.cc entwickelt wurde. Diese Karte verfügt über einen Satz digitaler und analoger Datenpins, die mit anderen Erweiterungskarten oder -schaltungen verbunden werden können. Diese Karte verfügt über 14 digitale Pins, 6 analoge Pins und kann mit der Arduino IDE (Integrated Development Environment) über ein USB-Kabel vom Typ B programmiert werden. Für die Stromversorgung sind 5 V erforderlich AUF und ein C-Codezu bedienen.
Der Motortreiber L298N dient zum Betrieb von Gleichstrommotoren. Der L298N ist ein Dual-H-Bridge-Motortreiber, der die gleichzeitige Drehzahl- und Richtungssteuerung von zwei Gleichstrommotoren ermöglicht. Das Modul kann Gleichstrommotoren mit Spannungen zwischen 5 und 35 V mit einem Spitzenstrom von bis zu 2A betreiben. Dies hängt von der Spannung ab, die an der VCC-Klemme des Motors verwendet wird. In unserem Projekt wird der 5-V-Pin als Eingang verwendet, da wir ihn an eine 5-V-Stromversorgung anschließen müssen, damit der IC ordnungsgemäß funktioniert. Der Schaltplan des Motortreibers L298N mit angeschlossenen Gleichstrommotoren wird unten gezeigt, um den Mechanismus des L298N-Motortreibers zu verstehen. Für die Demonstration wird die Eingabe von der gegeben Logikstatusanstelle von IR-Sensoren.
Schritt 3: Das Blockdiagramm und das Arbeitsprinzip verstehen
Zuerst gehen wir das Blockdiagramm durch, verstehen das Arbeitsprinzip und gehen dann zur Montage der Hardwarekomponenten über.
Die Sensoren, die wir verwenden werden, sind digital und können entweder 0 oder 1 ausgeben. Diese von uns gekauften Sensoren geben 1 auf weißen Flächen und 0 auf den schwarzen Flächen. Die Sensoren, die wir kaufen, geben zufällige Werte, manchmal auch 0 auf den weißen Flächen und 1 auf den schwarzen Flächen. Wir werden fünf Sensoren in diesem Roboter verwenden. Der Code enthält vier Bedingungen für fünf Sensoren.
- Auf der Leitung weiterleiten: Wenn sich der mittlere Sensor auf der schwarzen Oberfläche befindet und sich der Rest der Sensoren auf der weißen Oberfläche befindet, wird der Vorwärtszustand ausgeführt und der Roboter bewegt sich geradeaus. Wenn wir anfangen von Sensor1 und weiter bis Sensor5, Der Wert, den jeder der Sensoren jeweils gibt, ist (1 1 0 1 1).
- Scharfe Rechtskurve:Wenn der Sensor 1 und Sensor 2 befinden sich auf der weißen Oberfläche und der Rest der Sensoren befindet sich auf der schwarzen Oberfläche, die scharfe Rechtskurvenbedingung wird ausgeführt und der Roboter wird scharf nach rechts abbiegen. Wenn wir anfangen von Sensor1 und weiter bis Sensor5, Der Wert, den jeder der Sensoren jeweils gibt, ist (1 1 0 0 0).
- Scharfe Linkskurve:Wenn der Sensor 4 und Sensor 5 befinden sich auf der weißen Oberfläche und der Rest der Sensoren befindet sich auf der schwarzen Oberfläche, die Bedingung für eine scharfe Linkskurve wird ausgeführt und der Roboter wird scharf nach links abbiegen. Wenn wir anfangen von Sensor1 und weiter bis Sensor5, Der Wert, den jeder der Sensoren jeweils gibt, ist (0 0 0 1 1).
- Halt: Wenn sich alle fünf Sensoren auf der schwarzen Oberfläche befinden, stoppt der Roboter und die Motoren drehen sich AUS. Dieser Punkt mit fünf schwarzen Oberflächen befindet sich in der Nähe der Spüle, sodass der Geschirrspüler die Teller zum Waschen vom Roboter entladen kann.
Wir werden mit schwarzem Klebeband einen Pfad auf dem Küchenregal erstellen und dieser Pfad endet in der Nähe der Spüle, sodass der Roboter in der Nähe der Spüle anhält und der Geschirrspüler die Teller entlädt. Dann bewegt sich der Roboter auf den Pfad zu und sucht nach den Utensilien nochmal.
Schritt 4: Erste Schritte mit Arduino
Wenn Sie mit Arduino IDE noch nicht vertraut sind, machen Sie sich keine Sorgen, denn unten sehen Sie klare Schritte zum Brennen von Code auf der Mikrocontroller-Karte mit Arduino IDE. Sie können die neueste Version von Arduino IDE hier herunterladen und die folgenden Schritte ausführen:
- Wenn die Arduino-Karte an Ihren PC angeschlossen ist, öffnen Sie "Systemsteuerung" und klicken Sie auf "Hardware und Sound". Klicken Sie dann auf "Geräte und Drucker". Suchen Sie den Namen des Ports, an den Ihre Arduino-Karte angeschlossen ist. In meinem Fall ist es "COM14", aber es kann auf Ihrem PC anders sein.
- Öffnen Sie nun die Arduino IDE. Stellen Sie unter Tools die Arduino-Karte auf ein Arduino / Genuino UNO.
- Stellen Sie im selben Tool-Menü die Portnummer ein, die Sie in der Systemsteuerung gesehen haben.
- Laden Sie den unten angehängten Code herunter und kopieren Sie ihn in Ihre IDE. Um den Code hochzuladen, klicken Sie auf die Schaltfläche zum Hochladen.
Sie können den Code von hier herunterladen
Schritt 5: Den Code verstehen
Der Code ist sehr einfach. Es wird im Folgenden kurz erläutert:
- Zu Beginn des Codes werden die Sensorstifte und damit auch die Stifte für den Motortreiber L298N initialisiert.
int enable1pin = 10; // PWM-Pin für Analogeingang für Motor 1 initialisieren int motor1pin1 = 2; // Positiven Pin für Motor 1 initialisieren int motor1pin2 = 3; // Negativen Pin für Motor 1 initialisieren int enable2pin = 11; // PWM-Pin für Analogeingang für Motor 2 initialisieren int motor2pin1 = 4; // Positiven Pin für Motor 2 initialisieren int motor2pin2 = 5; // Negativen Pin für Motor 2 initialisieren int S1 = 12; // Pin 12 für Sensor 1 initialisieren int S2 = 9; // Pin 9 für Sensor 2 initialisieren int S3 = 8; // Pin 8 für Sensor 3 initialisieren int S4 = 7; // Pin 7 für Sensor 4 initialisieren int S5 = 6; // Pin 6 für Sensor 5 initialisieren
- void setup ()ist eine Funktion, mit der die Pins auf INPUT oder OUTPUT gesetzt werden. Es legt auch die Baudrate des Arduino fest. Die Baudrate ist die Geschwindigkeit, mit der die Mikrocontroller-Karte mit den anderen angeschlossenen Komponenten kommuniziert.
{pinMode (enable1pin, OUTPUT); // PWM für Motor 1 aktivieren pinMode (enable2pin, OUTPUT); // PWM für Motor 2 aktivieren pinMode (motor1pin1, OUTPUT); // Motor1 Pin1 als Ausgangs-PinMode einstellen (Motor1pin2, OUTPUT); // Motor1 Pin2 als Ausgangs-PinMode einstellen (Motor2pin1, OUTPUT); // Motor2 Pin1 als Ausgangs-PinMode einstellen (Motor2pin2, OUTPUT); // Motor2 Pin2 als Ausgangs-PinMode einstellen (S1, INPUT); // Sensor1 als EingangspinMode einstellen (S2, INPUT); // Sensor2 als EingangspinMode einstellen (S3, INPUT); // Sensor3 als EingangspinMode einstellen (S4, INPUT); // Sensor4 als EingangspinMode einstellen (S5, INPUT); // Sensor5 als Eingang einstellen Serial.begin (9600); // Baudrate einstellen}
- void loop () ist eine Funktion, die in einem Zyklus immer wieder ausgeführt wird. In dieser Schleife geben wir der Arduino UNO Anweisungen, welche Operationen auszuführen sind. Die volle Drehzahl der Motoren beträgt 255 und beide Motoren haben unterschiedliche Drehzahlen. Wenn wir also den Roboter vorwärts bewegen, rechts abbiegen usw. möchten, müssen wir die Drehzahl der Motoren anpassen. Wir haben im Code analoge Pins verwendet, weil wir die Drehzahl der beiden Motoren unter verschiedenen Bedingungen variieren möchten. Sie können die Drehzahl Ihrer Motoren selbst einstellen.
void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5)) // Weiterleiten die Zeile {analogWrite (enable1pin, 61); // Motor 1 Geschwindigkeit analogWrite (enable2pin, 63); // Motor 2 Geschwindigkeit digitalWrite (motor1pin1, HIGH); // Motor 1 Pin 1 auf High digitalWrite gesetzt (Motor1pin2, LOW); // Motor 1 Pin 2 auf Low digitalWrite gesetzt (Motor2pin1, HIGH); // Motor 2 Pin 1 auf High digitalWrite gesetzt (Motor2pin2, LOW); // Motor 2 Pin 2 auf Low gesetzt} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (DigitalRead (S3)) && (DigitalRead (S4)) && (DigitalRead (S5)) / / Sharp Right Turn {analogWrite (enable1pin, 60); // Motor 1 Geschwindigkeit analogWrite (enable2pin, 80); // Motor 2 Geschwindigkeit digitalWrite (motor1pin1, HIGH); // Motor 1 Pin 1 auf High digitalWrite gesetzt (Motor1pin2, LOW); // Motor 1 Pin 2 auf Low digitalWrite gesetzt (Motor2pin1, LOW); // Motor 2 Pin 1 auf Low digitalWrite gesetzt (Motor2pin2, LOW); // Motor 2 Pin 2 auf Low gesetzt} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5)) / / Sharp Left Turn {analogWrite (enable1pin, 80); // Motor 1 Geschwindigkeit analogWrite (enable2pin, 65); // Motor 2 Geschwindigkeit digitalWrite (motor1pin1, LOW); // Motor 1 Pin 1 auf Low digitalWrite gesetzt (Motor1pin2, LOW); // Motor 1 Pin 2 auf Low digitalWrite gesetzt (Motor2pin1, HIGH); // Motor 2 Pin 1 auf High digitalWrite gesetzt (Motor2pin2, LOW); // Motor 2 Pin 2 auf Low gesetzt} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)) // stop {analogWrite (enable1pin, 0); // Motor 1 Geschwindigkeit analogWrite (enable2pin, 0); // Motor 2 Geschwindigkeit digitalWrite (motor1pin1, LOW); // Motor 1 Pin 1 auf Low digitalWrite gesetzt (Motor1pin2, LOW); // Motor 1 Pin 2 auf Low digitalWrite gesetzt (Motor2pin1, LOW); // Motor 2 Pin 1 auf Low digitalWrite gesetzt (Motor2pin2, LOW); // Motor 2 Pin 2 auf Low gesetzt}}
Anwendungen
- Industrielle Anwendungen: Diese Roboter können als automatisierte Geräteträger in Industrien eingesetzt werden, die herkömmliche Förderbänder ersetzen.
- Inlandsanwendungen: Diese können auch zu Hause für Haushaltszwecke wie Bodenreinigung, Küchenarbeiten usw. verwendet werden.
- Beratungsanträge: Diese Roboter können an öffentlichen Orten wie Einkaufszentren, Food Courts, Museen usw. als Wegweiser eingesetzt werden