Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Pfadfinder

Komponenten und Verbrauchsmaterialien

Arduino UNO
Eine der Hauptkomponenten.
× 1
Ultraschallsensor - HC-SR04 (Generic)
Eine der Hauptkomponenten.
× 1
Li-Ionen-Akku 1000mAh
Eine der Hauptkomponenten.
× 2
RGB diffundierte gemeinsame Kathode
Eine der Hauptkomponenten.
× 1
Summer
Eines der notwendigen Zubehörteile.
× 1
Widerstand 330 Ohm
Eines der notwendigen Zubehörteile.
× 3
USB-A-zu-B-Kabel
Eines der notwendigen Zubehörteile.
× 1
Jumper (generisch)
Eines der notwendigen Zubehörteile.
× 20

Notwendige Werkzeuge und Maschinen

Arduino Materia 101
Eine der primären Maschinen.
Digilent-Schraubendreher
Eines der notwendigen Werkzeuge.

Apps und Onlinedienste

Arduino-IDE
Eine der wichtigsten Apps.
Autodesk Fusion 360
Einer der Online-Dienste.

Über dieses Projekt

Inhalt

Das Papier stellt das Design eines Hindernisvermeidenden Roboters dar, der in der Lage ist, Objekte in seinem Kurs zu erkennen und um diese Objekte herum zu navigieren, indem er eine richtige Entscheidung trifft. Es zeigt eine Robotereinheit basierend auf Arduino UNO und Adafruit Motor Shield, deren Code in der Arduino IDE Software geschrieben ist. Die Vermeidung von Hindernissen ist einer der wesentlichen Schlüsselfaktoren für die Entwicklung mobiler Roboter. Die Implementierung des Ultraschall-Abstandssensors auf dem Mikro-Servomotor führte zu einer genaueren Erkennung der umliegenden Objekte. Dieser entworfene Roboter unterscheidet sich von anderen verfügbaren Robotern durch die Integration eines magnetischen Summers und einer CC RGB Diffused LED, wodurch er die Fähigkeit erreicht hat, Objekterkennungsverfahren anzuzeigen und die Geschwindigkeit von DC-Getriebemotoren in 4 Arten von Umständen zu steuern. Als autonomer Roboter wurde die Möglichkeit genutzt, sich durch unbekannte Bedingungen zu manövrieren, ohne einen Aufprall zu erzeugen. Darüber hinaus kann diese entwickelte Technologie für militärische Operationen und humanitäre Hilfe eingesetzt werden, indem die Kapazität der Objekterkennung in verschiedenen Umgebungen verbessert wird.

Multimedia

Interpretation

Die enthaltenen Bibliotheken, die im Blockcode hinzugefügt wurden, sind wie folgt:

AFMotor.h
Servo.h

Die im Inline-Code zugewiesenen definierten Verbindungen lauten wie folgt:

BuzzPIN A0 definieren

TrigPIN A1 definieren

EchoPIN A2 definieren

LEDBPIN A3 definieren

LEDGPIN A4 definieren

LEDRPIN A5 definieren

DCMROFF 25 definieren

Das erwartete Programm, das in der Architektur des Roboters bereitgestellt wird, ist wie folgt:

  • Fähigkeit, Objekte in seinem Weg in vorgegebenen Entfernungsbereichen zu erkennen.
  • Suchen Sie nach einem neuen Weg im Vergleich zu einer offenen Richtung.
  • Zeigen Sie die Objekterkennung an und steuern Sie deren Geschwindigkeit.

Alle Vorgänge würden autonom ohne die Notwendigkeit einer externen Kontrolle ausgeführt.

Dieses Projekt präsentierte die wesentlichen Details für den Entwurf eines mobilen Roboters, der mit der Fähigkeit implementiert wurde, Hindernissen auszuweichen, selbstständig zu navigieren und die Bewegung von DC-Getriebemotoren anzuzeigen, indem die selektive Farbe einer CC RGB-Diffusor-LED in 4 verschiedenen Situationen eingeschaltet wird. Der entworfene Roboter zeigte eine Abweichung von anderen hindernisvermeidenden Robotern in Bezug auf Lichttonanzeige, Motordrehzahlsteuerung und intensive Manövriertechnik, indem Hindernisse im 180-Grad-Bereich vor dem Roboter erkannt wurden. was eine schwierige Aufgabe war, durch richtige Programmierung zu kombinieren. Der Roboter wurde auf der Arduino UNO Rev3-Plattform mit Hilfe der Arduino IDE v1.8.5-Software für die Integration des richtigen Assemblercodes gebaut, um die erforderlichen Funktionen zu erhalten. Diese Integration ermöglichte es dem Roboter, die erforderlichen Operationen ohne menschliches Zutun und mit hoher Genauigkeit auszuführen. Mit Weiterentwicklungen durch die Kombination einer Broadcast-Kamera und drahtloser Technologie kann dieser Roboter effektiv für militärische Operationen verwendet werden, um verschiedene Arten von Aktivitäten zu erkennen, während seine Grundeinheiten nützlich sein können, um seh- oder hörbehinderten Menschen zu helfen, die Position von umliegenden Objekten zu melden.

Youth Zest Project Showcase

Code

  • Programm
ProgrammArduino
Das Assemblerprogramm, um diese autonome Maschine entsprechend einzurichten.
#include  // Adafruit Motor Shield für Arduino-Kit-Bibliothek hinzufügen.#include  // Servomotor-Bibliothek hinzufügen.#define BuzzPIN A0 // PIN A0 als BuzzPIN zuweisen (Arduino UNO "A0" PIN mit Buzzer "+" PIN verbinden).#define TrigPIN A1 // PIN A1 als TrigPIN zuweisen (Arduino UNO "A1" PIN mit Ultraschallsonarsensor "Trig" verbinden PIN).#define EchoPIN A2 // PIN A2 als EchoPIN zuweisen (Arduino UNO "A2" PIN mit Ultraschall Sonar Sensor "Trig" PIN verbinden).#define LEDBPIN A3 // PIN A3 als LEDBPIN zuweisen (Arduino UNO "A3" verbinden) PIN mit RGB-Diffused Common Cathode "LEDB" PIN).#define LEDGPIN A4 // PIN A4 als LEDGPIN zuweisen (Arduino UNO "A4" PIN mit RGB Diffused Common Cathode "LEDG" PIN verbinden).#define LEDRPIN A5 // PIN zuweisen A5 als LEDRPIN (Verbinde Arduino UNO "A5" PIN mit RGB Diffused Common Cathode "LEDR" PIN).#define DCMROFF 25 // Dies setzt den Offset, um Unterschiede zwischen den beiden DC-Fahrmotoren zuzulassen.AF_DCMo Tor M1 (1, MOTOR12_64KHZ); // DCMotor #1 mit M1-Ausgang erstellen, auf 64kHz PWM-Frequenz einstellen.AF_DCMotor M2 (2, MOTOR12_64KHZ); // DCMotor # 2 mit M2-Ausgang erstellen, auf 64 kHz PWM-Frequenz einstellen. Servo SER1; // Servo-Objekt erstellen, um Servo.int Search (void) zu steuern { // Variablendeklaration vom Typ Integer. Float-Dauer =0,0; // Variablendeklaration vom Typ Float. Schwimmer CM =0,0; // Variablendeklaration vom Typ Float. digitalWrite (TrigPIN, LOW); // TrigPIN-Ausgang als 0V (Logik-Low-Pegel). VerzögerungMikrosekunden (2); // Verzögerung für 2 us, 10 us hohen Impuls an Ultraschallsonarsensor "TrigPIN" senden. digitalWrite (TrigPIN, HIGH); // TrigPIN-Ausgang als 5V (Logischer High-Pegel). VerzögerungMikrosekunden (10); // Verzögerung um 10us. digitalWrite (TrigPIN, LOW); // TrigPIN-Ausgang als 0V (Logik-Low-Pegel). Dauer =pulseIn (EchoPIN, HIGH); // Starte die Zeitzählung, bis wieder EchoPIN zurück auf den logischen "High Level" und setze die "Time" in eine Variable namens "Duration". CM =(Dauer/58,8); // Distanz in CM umwandeln. CM zurückgeben; // Zurück zu CM.}int RightDistance, LeftDistance; // Distanzen auf beiden Seiten.float Distance =0.00; // Variable vom Typ Float-Deklaration.void setup () { // Schleife einrichten. pinMode (BuzzPIN, OUTPUT); // BuzzPIN als "Ausgabe-PIN" deklarieren. pinMode (TrigPIN, AUSGANG); // TrigPIN als "Ausgabe-PIN" deklarieren. pinMode (EchoPIN, EINGANG); // EchoPIN als "Ausgabe-PIN" deklarieren. pinMode (LEDBPIN, OUTPUT); // LEDBPIN als "Output PIN" deklarieren. pinMode (LEDGPIN, AUSGANG); // LEDGPIN als "Output PIN" deklarieren. pinMode (LEDRPIN, AUSGANG); // LEDRPIN als "Output PIN" deklarieren. SER1.attach (10); // Befestigt den Servo an Pin 10 (SER1 auf dem Adafruit Motor Shield für Arduino-Kit an das Servo-Objekt).}void loop () {// Main loop. SER1.write (80); // Sagt dem Servo, dass er sich bei 80 Grad positionieren soll (nach vorne gerichtet). Verzögerung (100); // Verzögerung für 0,1s. Entfernung =Suchen (); // Messen der Distanz in CM. if (Distance <30) {// Wenn ein Hindernis in 30 cm gefunden wurde. digitalWrite (BuzzPIN, HIGH); // BuzzPIN-Ausgang als 5V (Logischer High-Pegel). digitalWrite (LEDBPIN, LOW); // LEDBPIN-Ausgang als 0V (Logischer niedriger Pegel). digitalWrite (LEDGPIN, LOW); // LEDGPIN-Ausgang als 0V (Logischer niedriger Pegel). digitalWrite (LEDRPIN, HOCH); // LEDRPIN-Ausgang als 5V (Logischer High-Pegel). M1.setSpeed ​​(100); // Verlangsamen. M2.setSpeed ​​(100); // Verlangsamen. ChangePath(); // Wenn Vorwärts gesperrt ist Richtung ändern. } else if ((Distance>=30) &&(Distance <60)) {// Wenn ein Hindernis zwischen 30cm und 60cm gefunden wird. digitalWrite (BuzzPIN, LOW); // BuzzPIN-Ausgabe als 0V (Logik-Low-Pegel). digitalWrite (LEDBPIN, HOCH); // LEDBPIN-Ausgang als 5V (Logischer High-Pegel). digitalWrite (LEDGPIN, LOW); // LEDGPIN-Ausgang als 0V (Logischer niedriger Pegel). digitalWrite (LEDRPIN, LOW); // LEDRPIN-Ausgang als 0V (Logischer niedriger Pegel). M1.setSpeed ​​(150); // Geschwindigkeit leicht erhöht. M2.setSpeed ​​(150); // Geschwindigkeit leicht erhöht. Nach vorne (); // Roboter bewegt sich in Vorwärtsrichtung. } else if ((Distance>=60) &&(Distance <90)) {// Wenn ein Hindernis zwischen 60cm und 90cm gefunden wird. digitalWrite (BuzzPIN, LOW); // BuzzPIN-Ausgabe als 0V (Logik-Low-Pegel). digitalWrite (LEDBPIN, LOW); // LEDBPIN-Ausgang als 0V (Logischer niedriger Pegel). digitalWrite (LEDGPIN, HOCH); // LEDGPIN-Ausgang als 5V (Logischer High-Pegel). digitalWrite (LEDRPIN, LOW); // LEDRPIN-Ausgang als 0V (Logischer niedriger Pegel). M1.setSpeed ​​(200); // Beschleunigen. M2.setSpeed ​​(200); // Beschleunigen. Nach vorne (); // Roboter bewegt sich in Vorwärtsrichtung. } else {// Wenn das Hindernis in 90cm nicht gefunden werden kann. digitalWrite (BuzzPIN, LOW); // BuzzPIN-Ausgabe als 0V (Logik-Low-Pegel). digitalWrite (LEDBPIN, HOCH); // LEDBPIN-Ausgang als 5V (Logischer High-Pegel). digitalWrite (LEDGPIN, HOCH); // LEDGPIN-Ausgang als 5V (Logischer High-Pegel). digitalWrite (LEDRPIN, HOCH); // LEDRPIN-Ausgang als 5V (Logischer High-Pegel). M1.setSpeed ​​(250); // Geschwindigkeitserhöhung vollständig. M2.setSpeed ​​(250); // Geschwindigkeitserhöhung vollständig. Nach vorne (); // Roboter bewegt sich in Vorwärtsrichtung. }}void ChangePath () { // Pfadänderungsschleife. Halt (); // Roboterstopp. Rückwärts (); // Roboterlauf Rückwärtsrichtung. Halt (); // Roboterstopp. SER1.write (12); // Abstand nach rechts prüfen. Verzögerung (500); // Verzögerung für 0,5s. RightDistance =Suchen (); // Rechten Abstand einstellen. Verzögerung (500); // Verzögerung für 0,5s. SER1.write (160); // Abstand nach links prüfen. Verzögerung (1000); // Verzögerung für 1s. LeftDistance =Suchen (); // Linken Abstand einstellen. Verzögerung (500); // Verzögerung für 0,5s. SER1.write (80); // Zurück zur Mitte. Verzögerung (500); // Verzögerung für 0,5s. Distanz vergleichen (); // Finde die längste Distanz.}void CompareDistance () { // Distanzvergleichsschleife. if (RightDistance> LeftDistance) {// Wenn Right weniger behindert ist. Biegen Sie rechts ab (); // Roboter biegen in die richtige Richtung ab. } else if (LeftDistance> RightDistance) {// Wenn Left weniger behindert ist. Biegen Sie links ab (); // Roboter nach links drehen. } else { // Wenn beide gleich behindert sind. Dreh dich um (); // Roboter drehen sich um. }}void Forward () { // Vorwärtsschleife. M1.run (vorwärts); // DCMotor #1 auf Vorwärts drehen. M2.run (FOWARD); // Drehen Sie DCMotor #1 auf Forward.}void Backward () {// Rückwärtsschleife. M1.run (RÜCKWÄRTS); // DCMotor #1 auf Rückwärts drehen. M2.run (RÜCKWÄRTS); // DCMotor #2 auf Rückwärts drehen. Verzögerung (500); // Verzögerung um 1s.}void TurnRight () { // Rechtsdrehungsschleife. M1.run (RÜCKWÄRTS); // DCMotor #1 auf Rückwärts drehen. M2.run (FOWARD); // DCMotor #2 auf Vorwärts drehen. M1.setSpeed ​​(100+DCMROFF); // Kalibrieren Sie die Geschwindigkeit von DCMotor #1. Verzögerung (300); // Verzögerung um 0,7s.}void TurnLeft () { // Left Turn loop. M1.run (vorwärts); // DCMotor #1 auf Vorwärts drehen. M2.run (RÜCKWÄRTS); // DCMotor #2 auf Rückwärts drehen. M2.setSpeed ​​(100+DCMROFF); // Kalibrieren Sie die Geschwindigkeit von DCMotor #2. Verzögerung (300); // Verzögerung um 0.7s.}void TurnAround () { // Trun Around Schleife. M1.run (vorwärts); // DCMotor #1 auf Vorwärts drehen. M2.run (RÜCKWÄRTS); // DCMotor #2 auf Rückwärts drehen. M2.setSpeed ​​(100+DCMROFF); // Kalibrieren Sie die Geschwindigkeit von DCMotor #2. Verzögerung (700); // Verzögerung um 2,1 s.}void Stop () { // Stoppschleife. M1.run (FREIGABE); // DCMotor #1 freigeben. M2.run (FREIGABE); // DCMotor 2 loslassen. Verzögerung (100); // Verzögerung um 0,1s.}

Kundenspezifische Teile und Gehäuse

Fahrgestell
Das Roboterchassis, um diese autonome Maschine entsprechend einzurichten.

Schaltpläne

Der Schaltplan, um diese autonome Maschine entsprechend einzurichten.

Herstellungsprozess

  1. Schaltungskomponenten
  2. Integrierter Schaltkreis
  3. Senden Sie Sensordaten von einem Arduino zu einem anderen mit Firebase
  4. Arduino Digital Dice
  5. Multi-Temperatursensor
  6. Arduino-Gamecontroller
  7. MOSMusic
  8. Was ist Mikroelektronik?
  9. Komponenten der Bohrmaschine
  10. Komponenten des Verbrennungsmotors