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

Greifer-Bot mit Fernbedienung

Komponenten und Verbrauchsmaterialien

Runt Rover Half-Pint-Chassis
× 1
Arduino UNO
× 1
V5 Shield
× 1
Female/Female Jumper Wires
× 1
L9110S
× 1
90° Einwinkel-Kanalhalterung (585424)
× 1
Leichte Servonabe, Futaba
× 1
Standard-Greifer-Kit A (637094)
× 1
MG995
× 1
Standard-Servoplatte
× 1
90° Einwinkel-Kanalhalterung
× 1
AA-Halter mit 5 Steckplätzen
× 1
AA-Akkus
× 5
.750" 8-32 Nylon-Abstandshalter
× 2
.500" 6-32 Schrauben mit Muttern
× 8
.3125" 6-32 Schrauben
× 8

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Vor ein paar Monaten bat mich mein Sohn, ihn zu einem ferngesteuerten Bot zu machen. Er hat mir eine Liste mit seinen Wünschen gegeben und wir haben sie auf eine überschaubare Liste reduziert :) Das habe ich letztendlich für ihn gebaut...

  • Nehmen Sie die UNO- und V5-Sensorabschirmung und schnappen Sie sie zusammen.
  • Setzen Sie die verbundene UNO/Sensorplatine in den Cliphalter in der Mitte des Bots.
  • Nehmen Sie doppelseitiges Klebeband und platzieren Sie den Motortreiber an der linken Innenwand und den Bluetooth-Adapter an der rechten Wand.

Für dieses Projekt können Sie Ihr eigenes Chassis herstellen oder ein anderes auswählen. Sie haben die Wahl.

Schritt 1:Die benötigte Software

Dinge, die Sie herunterladen müssen:

  • Die Arduino-IDE
  • Python 2.7 (eine vollständige Installation mit tkinter)
  • Die pySerial-Bibliothek
  • Die angehängte .zip-Bibliothek der L9110S-Motorsteuerung (Siehe die Dateien in diesem Schritt)
  • Der Robotercode unten oder die angehängte ZIP-Datei (Siehe die Dateien in diesem Schritt)
  • Die Python-Fernsteuerungsanwendung (Siehe die Dateien in diesem Schritt)

Schritt 2:Hardware-Stückliste

Folgende Teile werden benötigt:

  • Runt Rover Half-Pint-Chassis oder ein geeigneter 4wd beiliegender Ersatz
  • Arduino Uno oder ähnliches Board mit USB-Kabel
  • V5-Sensorschild
  • L9110S-Motortreiber (Besorgen Sie sich ein paar, da sie billig sind)
  • MG995 Servo oder ein anderer geeigneter Ersatz x2
  • HC-05 oder HC-06 Bluetooth-Adapter x1
  • Standard-Servoplatte B x1
  • 90-Grad-Halterung x1
  • Einzelne Klammer x2
  • Leichte Servonabe (525125 für Futaba) x1
  • Standard-Greifer-Kit A x1
  • Überbrückungskabel von Buchse zu Buchse
  • 5 wiederaufladbare AA-Batterien (NiMH) und Ladegerät
  • Doppelseitiges Klebeband und kleine Kabelbinder
  • Ein AA-Akku mit 5 Steckplätzen (wenn Sie sich für die wiederaufladbare AA-Option entscheiden)
  • 6-V-NiMH- oder 7,4-V-Li-Ionen-Akku und -Ladegerät
  • 1.250" 6-32 x2 Schrauben
  • 0,750" 8-32 Nylon-Abstandshalter x2
  • .500" 6-32 Schrauben mit Muttern x8
  • .3125" 6-32 Schrauben x8

Sie können viele der Teile direkt von eBay oder anderen Lieferanten wie Sparkfun, Adafruit und ServoCity beziehen.

Nachdem Sie alles gekauft, gesammelt und heruntergeladen haben, können Sie mit dem Build beginnen.

Schritt 3:Montage - Das Chassis

Montieren Sie zuerst das Chassis gemäß den Anweisungen, die dem Chassis oder dem Video beiliegen. Nach der Fertigstellung sollten Sie so etwas wie das Bild haben. Wenn Sie die Platte, die den Controller hält, auf dem Bot platzieren, stellen Sie sicher, dass Sie sie in den mittleren Löchern platzieren. Dadurch bleibt vorne und hinten am Bot Platz.

HINWEIS:Bevor Sie fortfahren, entfernen Sie bitte alle 4 Räder, um die Motoren beim Aufsetzen der anderen Bot-Komponenten nicht zu beschädigen.

Schritt 4:Zusammenbau des Greifers

Montieren Sie den Greifer gemäß den Anweisungen in diesem Video. Nach Abschluss sollten Sie so etwas wie das Bild haben.

Schritt 5:Greifer montieren - Schritt 1

Nehmen Sie für diesen Schritt die 90-Grad-Halterung, die leichte Servonabe und vier (4) der 0,3125-Zoll-Schrauben:

Nehmen Sie die Servonabe und legen Sie sie auf eine Seite der Halterung und befestigen Sie sie mit den .2125" Schrauben wie abgebildet und legen Sie sie beiseite Setzen Sie die Muttern auf die beiden kürzeren Schrauben und ziehen Sie sie fest Jetzt die beiden Einzelhalterungen, die 1.250 "Schrauben und zwei .500"-Schrauben mit Muttern, 2 Nylon-Abstandshaltern und der Servoplatte B. Nehmen Sie eine einzelne Halterung und setzen Sie sie in die Innenseite des Half-Pint-Bots ein und führen Sie die 2 1,259"-Schrauben an den linken Löchern (von die Innenseite) und die 2.500" Schrauben auf der rechten Seite. Alle Schraubenköpfe befinden sich wie abgebildet auf der Innenseite des Bots. Setzen Sie nun die zweite Einzelhalterung auf die Schrauben an der Außenseite des Bots Nylon-Abstandshalter und platzieren Sie sie auf den längeren (1.250"), die herausragen und schrauben Sie dann die Servoplatte auf die langen Schrauben. Ziehen Sie die Schrauben an der Servoplatte mit einem Inbusschlüssel der richtigen Größe oder einem Schraubendreher fest, wenn Sie normale Schrauben verwendet haben.

Verwenden Sie die Bilder nach Bedarf als Referenz.

Schritt 6:Greifer montieren - Schritt 2

  • Als nächstes nehmen Sie das restliche Servo, das Sie haben, und legen es mit der Wirbelsäule nach oben in die Servohalterung. Sichern Sie es mit 4 der 0,3125" Schrauben.
  • Als nächstes nehmen Sie die 90-Grad-Halterung mit der Servonabe darauf und montieren den Greifer mit den 4 der .500-Zoll-Schrauben mit 2 der 8-32-Muttern als Abstandshalter zwischen der Halterung und dem Greifer wie abgebildet. Mit einer weiteren Mutter oben am Greifer befestigen (unter der Halterung, wenn Sie die Schrauben in die andere Richtung drehen)
  • Nun nehmen Sie die Greiferbaugruppe und setzen Sie sie auf das Servo und verwenden Sie eine Servoschraube (aus Ihrem Servopaket), um sie an Ort und Stelle zu halten und sie fest zu sichern.

Nachdem Sie fertig sind, führen Sie die beiden Servokabel durch das flache Halterungsloch zur Innenseite des Bots.

Sehen Sie sich die Bilder für weitere Details und Referenzen an.

Schritt 7:Montage der Elektronik

  • Nehmen Sie die UNO- und V5-Sensorabschirmung und schnappen Sie sie zusammen.
  • Setzen Sie die verbundene UNO/Sensorplatine in den Cliphalter in der Mitte des Bots.
  • Nehmen Sie doppelseitiges Klebeband und platzieren Sie den Motortreiber an der linken Innenwand und den Bluetooth-Adapter an der rechten Wand.

Schritt 8:Verkabelung - Die Motoren

  • A-1A-Pin am Motortreiber an Pin 5 an der Sensorabschirmung
  • A-1B-Pin am Motortreiber an Pin 6 an der Sensorabschirmung
  • B-1A-Pin am Motortreiber an Pin 3 an der Sensorabschirmung
  • B-1B-Pin am Motortreiber an Pin 11 an der Sensorabschirmung

Nehmen Sie nun mit der Vorderseite des Roboters WEG von Ihnen die Drähte auf der LINKEN Seite und -

  • Verbinden Sie die beiden SCHWARZEN Drähte links mit der ersten Ausgangs-Schraubklemme für Motor A
  • Verbinden Sie die beiden ROTEN Drähte links mit der zweiten Ausgangs-Schraubklemme für Motor A

Nehmen Sie die Drähte auf der RECHTEN Seite und -

  • Verbinden Sie die beiden SCHWARZEN Drähte links mit der ersten Ausgangs-Schraubklemme für Motor B
  • Verbinden Sie die beiden ROTEN Drähte links mit der zweiten Ausgangs-Schraubklemme für Motor B

Die Servos:

  • Verbinden Sie nun das Y-Servokabel mit der Pinleitung 2 auf der Sensorabschirmung. Das weiße oder orangefarbene Kabel ist immer das Signalkabel.
  • Verbinden Sie nun das X-Servokabel (Gripper) mit der Stiftleitung 7 auf der Sensorabschirmung. Das weiße oder orangefarbene Kabel ist immer das Signalkabel.

Schritt 9:Verkabeln des Bluetooth-Moduls

  • Bluetooth-Adapter Tx -> Sensorabschirmung Pin 0
  • Bluetooth-Adapter Rx -> Sensorabschirmung Pin 1

Schritt 10:Strom hinzufügen

Schließen Sie die Stromkabel des 5 'aa'-Akkus (oder eines anderen 6-V-Akkus) an die Strom-Schraubklemme der Sensorabschirmung an:

  • Rot zu Vcc
  • Schwarz an Masse
  • Stellen Sie als nächstes sicher, dass der Jumper auf der V5-Sensorabschirmung auf den Jumper-Pins sitzt.
  • Verbinden Sie den GND-Pin des L9110s-Treibers mit einem GND-Pin der Sensorabschirmung.
  • Verbinden Sie das Pluskabel der 6-V- oder 7,2-V-Batterie oder einer anderen Batterie, die Sie für die Motoren ausgewählt haben, mit dem Vcc-Pin des L9110S-Motortreibers.
  • Verbinden Sie das Minuskabel (GND) von der Motorbatterie mit einem GND-Pin an der Motorabschirmung.

Schritt 11:Konfigurieren des Bluetooth-Moduls HC05/HC06

Jetzt müssen Sie die Bluetooth-Geräteeinstellungen auf Ihrem PC über das Bedienfeld "Steuerung" oder "Systeme" des Betriebssystems aufrufen oder Google zur Hilfe verwenden.

Mögliche Bluetooth-Setup-Informationen für das Betriebssystem:

  • Fenster
  • Linux (ich verwende blueman auf Linux Mint, aber siehe deine Distribution für weitere Informationen)
  • Mac

Sie müssen den Gerätenamen oder die Nummer des seriellen Anschlusses notieren, die ihm zugewiesen sind.

Schritt 12:Laden des Codes

Wenn die Verkabelung überprüft und erneut überprüft wurde , Es ist Zeit, den Code zu laden. Folgen Sie den Anweisungen auf der Arduino-Site, um die Arduino-IDE zu installieren.

Nachdem die IDE installiert wurde, können Sie als nächstes die L9110-Motortreiberbibliothek installieren. Laden Sie dazu die in SCHRITT 1 enthaltene ZIP-Datei namens L9110Driver.zip herunter und extrahieren Sie sie in Ihren Arduino-Bibliotheksordner oder befolgen Sie diese Anweisungen zum Hinzufügen einer Bibliothek.

Nachdem die IDE- und Motortreiberbibliothek installiert wurde, laden Sie den Robotercode aus der in SCHRITT 1 gefundenen Zip-Datei namens blue_t_slave.zip in die Arduino IDE. Diese Dateien sind auch in diesem Schritt enthalten.

Verbinden Sie Ihren PC und Arduino mit dem USB-Kabel. Wählen Sie nun das Board aus dem Tools->Board-Menü in der IDE, Uno für dieses Projekt (wählen Sie das Board, das Sie haben, wenn es sich von Uno unterscheidet) Wählen Sie nun aus dem Tools->Port-Menü Ihren COM-Port aus. Klicken Sie anschließend auf die Schaltfläche Hochladen. Wenn alles gut gegangen ist, wurde der Code geladen, falls nicht, finden Sie hier Hilfe zur IDE und verwandten Problemen.

Schritt 13:Ausführen der Python-Steuerungsanwendung

Um die Python-Fernsteuerungsanwendung auszuführen, laden Sie die ZIP-Datei aus diesem Schritt herunter und extrahieren Sie sie an den Speicherort, von dem aus Sie sie ausführen möchten. Öffnen Sie als Nächstes eine Befehlsshell (z. B. Terminal, cmd.exe usw.) und navigieren Sie zu dem Verzeichnis, in das Sie die Datei extrahiert haben. Geben Sie nun Folgendes ein:python rover.py aus der Befehlszeile und ein Fenster, das wie im Bild aussieht, sollte auftauchen. Wenn nicht, suchen Sie nach Python-Fehlern und korrigieren Sie sie (z. B. fehlende Bibliotheken usw.). Die Python-Site kann bei Bedarf helfen.

Sobald die App ausgeführt wird, sollten Sie bereit sein.

Schalten Sie nun den Bot ein. Geben Sie dann den Kommunikationsanschluss Ihres Adapters ein und klicken Sie auf die Schaltfläche "Verbinden". Nach einigen Sekunden sollten die anderen Steuerelemente aktiviert und die Verbindungstaste deaktiviert sein. Dies bedeutet, dass Sie mit dem Roboter verbunden sind. Wenn Sie keine Verbindung zum Bluetooth-Adapter herstellen können, müssen Sie die Magie von Google nutzen, um Ihnen zu helfen!

Die Steuerungsanwendung ist einfach zu bedienen und ermöglicht Maus- oder Tastatursteuerung.

Die Tastatursteuerung ist:

  • Pfeile sind vorwärts, rückwärts, 90 Grad links abbiegen, 90 Grad rechts abbiegen
  • a - biege um 45 Grad nach links ab
  • s – biege um 45 Grad nach rechts ab
  • h - halt (stopp)
  • y - Y-Achse des Greifers einstellen
  • u - Greifer öffnen/schließen
  • c - Greifer nach Hause

Vorwärts- und Rückwärtsbefehle sind konstant, d. h. sie halten den Bot nach der Ausführung in Bewegung, bis eine neue Richtung oder ein Halt-Befehl gesendet wird.

Die Drehungen um 90 und 45 Grad sind vorübergehend, d. h. nach einer gewissen Verzögerung stoppen sie den Bot an der Bewegung.

Die Greiferschieber stellen den Greifer am Bot nicht automatisch ein. Sie müssen die entsprechende "Set"-Schaltfläche oder -Taste drücken, um die eigentliche Ausführung des Sets durchzuführen.

Die Slider-Werte reichen von 0-180.

  • Greifer Y-Achse:0 ist ganz oben und 180 ist ganz unten.
  • Greifer Open/Close:0 ist ganz geschlossen und 180 und ganz offen.

Verwenden Sie die Schaltfläche "Trennen", um die Verwendung des Programms zu beenden. Dadurch werden Befehle gesendet, um den Bot zu stoppen und den Greifer zu starten.


Code

  • Python-Treiber-GUI
  • Rover-Code
Python-Treiber-GUIPython
#!/usr/bin/env python## Für Linux, BSD oder Mac OSX können Sie dieses Skript mit chmod +x ausführbar machen############## Rover-Steuerungs-App## Geschrieben von Scott Beasley - 2015# Kostenlos zu verwenden oder zu ändern. Viel Spaß.############import sysimport serialimport timefrom Tkinter import *import tkFontimport tkMessageBox# Erstellen Sie das Fenster für die Anwendungsklasse App (Frame):# Machen Sie das Fenster def createWidgets (self):self.connected =False self.message =StringVar ( ) # Erstelle eine kleine Schriftart für die Greiferset-Schaltflächen. helv6 =tkFont.Font (family ='Helvetica', size =6, weight ='normal') self.frame =Frame (self.master) self.frame.pack ( ) self.f1 =Frame (self.frame) self .l1 =Label (self.f1, text ="Comm Port:") self.l1.pack (side =LEFT) self.comm_entry =Eintrag (self.f1, bd =5, name ="comm_entry") self.comm_entry .pack (side =LEFT) self.connectButton =Button (self.f1, text ="Connect", command =self.SerialConnect, name ="b_connect") self.connectButton.pack (side =LEFT) self.disconnectButton =Button (self.f1, text ="Disconnect", command =self.SerialDisconnect, name ="b_disconnect") self.disconnectButton.pack (side =RIGHT) self.f1.grid (row =0, column =0) self.f2 =LabelFrame (self.frame, bd =3, relief ="groove", text="Ground Control") self.g_vert_fm =Frame (self.f2) self.grip_vert =Scale (self.g_vert_fm, from_ =0, to =180) self.grip_vert.grid (row =0, column =0, rowspan =4, sticky =W) self.grip_vert_set =Button (self.g_vert_fm, text ="Set", command =self.GripperY, name ="b_grip_vert_set", width =1, height =2, font =helv6) self.grip_vert_set.grid (row =5, column =0, sticky =W) self.master.bind ("", self.GripperY) self. g_vert_fm.grid (row =0, column =0, rowspan =4, sticky =W) self.leftforwardButton =Button (self.f2, text ="\\", command =self.TurnLeft45, name ="b_left_forward") self .leftforwardButton.grid (row =0, column =1) self.master.bind ("", self.TurnLeft45) self.leftButton =Button (self.f2, text ="<", command =self.TurnLeft, name ="b_left") self.leftButton.grid (Zeile =1, Spalte =1) self.master.bind ("
", self.TurnLeft ) self.rightforwardButton =Button (self.f2, text ="/", command =self.TurnRight45, name ="b_right_forward") self.rightforwardButton.grid (Zeile =0, Spalte =3) self.master.bind (" 
", self.TurnRight45) self.haltButton =Button (self.f2, text ="Halt!", command =self.Halt, name ="b_halt") self.haltButton .grid (Zeile =1, Spalte =2) self.master.bind ("", self.Halt) self.rightButton =Button (self.f2, text=">", command =self.TurnRight, name ="b_right") self.rightButton.grid( Zeile =1, Spalte =3) self.master.bind ("
", self.TurnRight) self.upButton =Button (self.f2, text="^", Befehl =self.Forward, name ="b_forward") self.upButton.grid (Zeile =0, Spalte =2) self.master.bind ("
", self.Forward) self.leftdownButton =Schaltfläche (self.f2, text ="/", Befehl =self.TurnRight45, name ="b_left_down") self.leftdownButton.grid (Zeile =2, Spalte =1) self.downButton =Schaltfläche (self. f2, text="V", command=self.Reverse, name ="b_reverse") self.downButton.grid (row=2, column =2) self.master.bind ("
", self.Reverse) self.f2.grid (Zeile =1, Spalte =0, pady =25) self.rightdownButton =Button (self.f2, Text ="\\", Befehl =self.TurnLeft45, name ="b_right_down") self.rightdownButton.grid (Zeile =2, Spalte =3) self.g_horz_fm =Rahmen (self.f2) self.grip_horz =Skalierung (s elf.g_horz_fm, from_ =0, to =180, orient =HORIZONTAL) self.grip_horz.grid (row =0, column =0, columnspan =7, sticky =E) self.grip_horz_set =Button (self.g_horz_fm, text ="Set", command =self.GripperX, name ="b_grip_horz_set", width =1, height =2, font =helv6) self.grip_horz_set.grid (row =0, column =8) self.master.bind ("", self.GripperX) self.g_horz_fm.grid (row =4, column =0, columnspan =7, sticky =E) self.master.bind ("
", self.GripperHome) self.f3 =Frame (self.frame) self.l2 =Label (self.f3, text ="Letzte Aktion:") self.l2.pack (side =LEFT) self.l3 =Label (self.f3, text=" ", textvariable =self.message) self.l3.pack (side =RIGHT) self.f3.grid (row =3, column =0, pady =8) # Stellen Sie den Status der Bot-Steuerungsschaltflächen ein. Aktivieren, wenn verbunden, # ansonsten deaktiviert. def CtrlButtonsState (self, bstate):self.leftforwardButton.config (state =bstate) self.leftButton.config (state =bstate) self.rightforwardButton.config (state =bstate) self.rightButton.config (state =bstate) self. upButton.config (state =bstate) self.leftdownButton.config (state =bstate) self.downButton.config (state =bstate) self.rightdownButton.config (state =bstate) self.haltButton.config (state =bstate) self. DisconnectButton.config (state =bstate) self.grip_horz.config (state =bstate) self.grip_vert.config (state =bstate) self.grip_horz_set.config (state =bstate) self.grip_vert_set.config (state =bstate) # Set den Status des Komm-Port-Eintrags. Aktivieren, wenn nicht verbunden, # Deaktiviert, wenn der Bot verbunden ist. def ConnCtrlsState (self, bstate):self.connectButton.config (state =bstate) self.comm_entry.config (state =bstate) # Verbinden Sie sich mit dem im comm-Eingabefeld eingegebenen Kommunikationsanschluss. def SerialConnect (self):try:# Ändere hier die Baudrate falls anders als 9600 self.ser =serial.Serial (self.comm_entry.get ( ), 9600) außer IOError:tkMessageBox.showerror ("Invalid comm port", " Comm port not found.") return self.ConnCtrlsState (DISABLED) self.CtrlButtonsState (NORMAL) self.message.set ("SerialConnect") self.connected =True time.sleep (3) # Verweilen Sie etwas, damit die Verbindung zustande kommt # Trennen Sie die Verbindung zum Bot (schließen Sie den Kommunikationsanschluss). def SerialDisconnect (self):try:# Sende einen Halt-Befehl für den Fall, dass sich der Bot noch bewegt. self.send_cmd ('h', "Halt!") time.sleep (1) self.ser.close ( ) außer IOError:print "Port konnte nicht geschlossen werden..." self.message.set ("SerialDisconnect") self .ConnCtrlsState (NORMAL) self.CtrlButtonsState (DISABLED) self.connected =False time.sleep (2) # Verweilen Sie etwas, damit die Verbindung getrennt wird # Senden Sie den Befehl an den offenen Kommunikationsport def send_cmd (self, action, msg):if self.connected ==True:für val in Aktion:self.ser.write (val) self.ser.flush ( ) self.message.set (msg) # Sende dem Bot einen Linksdrehungsbefehl. def TurnLeft (self, event =None):self.send_cmd ('a', "Left") # Senden Sie dem Bot einen Aufwärtsdrehbefehl. def TurnLeft45 (self, event =None):self.send_cmd ('q', "Left45") # Sende dem Bot einen Rechtsdrehungsbefehl. def TurnRight (self, event =None):self.send_cmd ('s', "Right") # Sende dem Bot einen Turn-right-Up-Befehl. def TurnRight45 (self, event =None):self.send_cmd ('e', "Right45") # Sende dem Bot einen Forward-Befehl. def Forward (self, event =None):self.send_cmd ('w', "Up") # Sende dem Bot einen Reverse-Befehl. def Reverse (self, event =None):self.send_cmd ('z', "Down") # Sende dem Bot einen Halt-Befehl. def Halt (self, event =None):self.send_cmd ('h', "Halt!") # Setze den Greifer (X). def GripperX (self, event =None):# Slider Control lesen und Wert an den Bot Controller senden # Hinweis:0 ist ganz geschlossen und 180 ist ganz offen grp_change =('>', chr (self. grip_horz.get ( )), chr (255)) self.send_cmd (grp_change, "Gripper X") # Greifer Y setzen. def GripperY (self, event =None):# Schieberegler lesen und Wert an die Bot Controller # Hinweis:0 ist ganz oben und 180 ganz unten grp_change =('^', chr (self.grip_vert.get ( )), chr (255)) self.send_cmd (grp_change, "Gripper Y ") # Bringen Sie den Greifer in die "Home"-Position. def GripperHome (self, event =None):self.send_cmd (('c', chr (255)), "Gripper Home") def __init__ (self, master =None):Frame.__init__ (self, master) self. pack ( ) self.createWidgets ( ) self.CtrlButtonsState (DISABLED)# Starte die GUI (Tk) dann größe und benenne die App windowdef main ( ):root =Tk ( ) root.geometry ("450x350") root.wm_title ( "Rover Control Center (RCC)") app =App (master =root) app.mainloop ( )if __name__ =='__main__':main ( )
Rover-CodeArduino
/* Bluetooth-Rover. Ziel im Leben... Folgt deinen Befehlen, die magisch durch die Luft geschickt werden! Oder von USB :) Geschrieben von Scott Beasley - 2015 Kostenlos zu verwenden oder zu ändern. Viel Spaß.*//* Verwendet die L9110S-Bibliothek. Es funktioniert mit der L9110S h-Brücke. Laden Sie von https://github.com/jscottb/L9110Driver herunter oder klonen Sie die Zip-Datei von https://github.com, um den '-master' aus dem Archivdateinamen zu entfernen und die Bibliothek hinzuzufügen*/#include  #include #define SERVO_Y 2 // Stiftgreifer Y-Servo#define SERVO_CLAW 7 // Stiftgreifer Greiferservo#define pinAIN1 5 // I1-Schnittstelle definieren#define pinAIN2 6 // I2-Schnittstelle definieren#define pinBIN1 3 / / Definiere I3-Schnittstelle#define pinBIN2 11 // Definiere I4-Schnittstelle // Geschwindigkeit definiert#define MAXFORWARDSPEED 225 // Maximale Geschwindigkeit, die wir vorwärts bewegen möchten#define MAXBACKWARDSPEED 225 // Maximale Rückwärtsgeschwindigkeit#define TOPSPEED 255 // Wird verwendet, um besser einzuschalten Teppich und rauere Oberflächen.// Verschiedene Zeitverzögerungen für Fahren und Servo#define TURNDELAY 475#define TURNDELAY45 235#define BACKUPDELAY 400#define SERVOMOVEDELAY 200#define SERVOSEARCHDELAY 85/* Globals-Bereich.*/// Erstellen Sie den Motor, Servoobjekte zur Schnittstelle mitL9110_Motor motor_left (pinAIN1, pinAIN2); // Linkes Motorobjekt erstellenL9110_Motor motor_right (pinBIN1, pinBIN2); // Rechtes Motorobjekt erstellenServo grip_y_servo; // Erstellen eines Servo-Objekts für den Greifer Y-AchseServo grip_servo; // Erstellen Sie ein Servoobjekt für das Greiferklauevoid-Setup () {// Ändern Sie die Baudrate hier, wenn sie sich von 9600 Serial.begin (9600) unterscheidet; grip_y_servo.attach (SERVO_Y); // Befestigen Sie das Servo SERVO_LR grip_y_servo.write (90); grip_servo.attach (SERVO_CLAW); // Befestigen Sie das Servo SERVO_LR grip_servo.write (90); Verzögerung (500);} Schleife ungültig () {Byte-Befehl =0, Wert =0; if (Serial.available ( )> 0) {// lesen Sie den eingehenden Befehlsbyte-Befehl =Serial.read ( ); } switch (Befehl) { case 'w':go_forward (); //Serial.println ("In Zukunft"); brechen; Fall 'z':go_backward ( ); //Serial.println ("Rückwärts gehen"); brechen; Fall 'a':go_left ( ); Verzögerung (TURNDELAY); halt ( ); //Serial.println ("Links abbiegen"); brechen; Fall 's':go_right ( ); Verzögerung (TURNDELAY); halt ( ); //Serial.println ("Rechts abbiegen"); brechen; Fall 'q':go_left ( ); Verzögerung (TURNDELAY45); halt ( ); //Serial.println ("Links abbiegen"); brechen; Fall 'e':go_right ( ); Verzögerung (TURNDELAY45); halt ( ); //Serial.println ("Rechts abbiegen"); brechen; Fall 'h':halt ( ); //Serial.println ("Halten"); brechen; case '>':// Gripper X move sendet Servo-Sollwert val =Serial.read ( ); // Wir begrenzen den Wert auf die tatsächlichen Bewegungsgrenzen des Setups grip_servo.write (constrain (val, 64, 179)); //Serial.println ("GripperX"); brechen; Fall '^':// Greifer-Y-Bewegung sendet Servo-Sollwert val =Serial.read (); // Wir begrenzen den Wert auf die tatsächlichen Bewegungsgrenzen des Setups grip_y_servo.write (constrain (val, 53, 179)); //Serial.println ("GripperY"); brechen; case 'c':// Wir begrenzen den Wert auf die tatsächlichen Bewegungsgrenzen des Setups grip_y_servo.write (90); grip_servo.write (90); //Serial.println ("GripperHome"); brechen; case 255:// Wird nach allen Greiferbefehlen gesendet Serial.flush ( ); brechen; } Serial.flush ( ); delay(125);}void go_forward ( ){ //Serial.println ("Going forward..."); // Die Motoren auf die Geschwindigkeit hochfahren. // Hilfe beim Ausdrehen auf einigen Oberflächen und Tarieren und Tarieren auf der ramp_it des GMs (MAXFORWARDSPEED, FORWARD, FORWARD); // Auf die gesamte eingestellte Geschwindigkeit einstellen, nur für den Fall, dass die letzte Wanne der Rampe nicht alles // war. motor_left.setSpeed ​​(MAXFORWARDSPEED); motor_right.setSpeed ​​(MAXFORWARDSPEED); motor_left.run (FORWARD|RELEASE); motor_right.run (FORWARD|RELEASE);}void go_backward ( ){//Serial.println ("Going backward..."); // Die Motoren auf die Geschwindigkeit hochfahren. // Hilfe beim Spinnen auf einigen Oberflächen und tarieren und tarieren auf dem ramp_it des GMs (MAXBACKWARDSPEED, BACKWARD, BACKWARD); // Auf die gesamte eingestellte Geschwindigkeit einstellen, nur für den Fall, dass die letzte Wanne der Rampe nicht alles // war. motor_left.setSpeed ​​(MAXBACKWARDSPEED); motor_right.setSpeed ​​(MAXBACKWARDSPEED); motor_left.run (BACKWARD|RELEASE); motor_right.run (BACKWARD|RELEASE);}void go_left ( ){//Serial.println ("Going left..."); // Die Motoren auf die Geschwindigkeit hochfahren. // Hilfe beim Ausdrehen auf einigen Oberflächen und Tarieren und Tarieren auf dem ramp_it des GMs (TOPSPEED, BACKWARD, FORWARD); // Auf die gesamte eingestellte Geschwindigkeit einstellen, nur für den Fall, dass die letzte Wanne der Rampe nicht alles // war. motor_left.setSpeed ​​(TOPSPEED); motor_right.setSpeed ​​(TOPSPEED); motor_left.run (BACKWARD|RELEASE); motor_right.run (FORWARD|RELEASE);}void go_right ( ){//Serial.println ("Going right..."); // Die Motoren auf die Geschwindigkeit hochfahren. // Hilfe beim Ausdrehen auf einigen Oberflächen und tarieren und tarieren auf dem ramp_it des GMs (TOPSPEED, FORWARD, BACKWARD); // Auf die gesamte eingestellte Geschwindigkeit einstellen, nur für den Fall, dass die letzte Wanne der Rampe nicht alles // war. motor_left.setSpeed ​​(TOPSPEED); motor_right.setSpeed ​​(TOPSPEED); motor_left.run (FORWARD|RELEASE); motor_right.run (BACKWARD|RELEASE);}void halt ( ){//Serial.println ("Halt!"); //ramp_it (0, BREMSE, BREMSE); motor_left.setSpeed ​​(0); motor_right.setSpeed ​​(0); motor_left.run (BREMSE); motor_right.run (BRAKE);} void ramp_it (uint8_t speed, uint8_t lf_dir, uint8_t rt_dir) { uint8_t ramp_val =0, step_val =0; step_val =abs (Geschwindigkeit / 4); if (!speed) step_val =-step_val; for (uint8_t i =0; i <4; i++) { ramp_val +=step_val; motor_left.setSpeed ​​(ramp_val); motor_right.setSpeed ​​(ramp_val); motor_left.run (lf_dir|RELEASE); motor_right.run (rt_dir|RELEASE); Verzögerung (25); }}
L9110-Treiber
L9110-Motortreiber für Arduinohttps://github.com/jscottb/L9110Driver

Kundenspezifische Teile und Gehäuse

4wdgripperbt2.fzz

Schaltpläne

4wdgripperbt2.fzz

Herstellungsprozess

  1. Multi-Temperatursensor
  2. DIY Lötkolbensteuerung für 862D+
  3. MotionSense
  4. 3D-Drucker Brandschutz
  5. Arduino Repulsive Electromagnetic Levitation
  6. Arduino-betriebener Wetterballon-Datenlogger
  7. ArduFarmBot - Teil 2:Remote-Station und IoT-Implementierung
  8. CoroFence - Wärmedetektor🖖
  9. Cloud-Überwachung, ein Fernsteuerungssystem
  10. 5 Vorteile der Fernsteuerung der Produktion