Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Grijperbot met afstandsbediening

Componenten en benodigdheden

Runt Rover Half-pint chassis
× 1
Arduino UNO
× 1
V5 Shield
× 1
Vrouwelijke/vrouwelijke verbindingsdraden
× 1
L9110S
× 1
90° enkele hoek kanaalbeugel (585424)
× 1
Lichtgewicht servo-hub, Futaba
× 1
Standaard grijperset A (637094)
× 1
MG995
× 1
Standaard servoplaat
× 1
90° kanaalbeugel met enkele hoek
× 1
5-slots AA-houder
× 1
AA oplaadbare batterijen
× 5
.750" 8-32 nylon afstandhouders
× 2
.500" 6-32 schroeven met moeren
× 8
.3125" 6-32 schroeven
× 8

Apps en online services

Arduino IDE

Over dit project

Een paar maanden geleden vroeg mijn zoon me om een ​​op afstand bestuurbare bot voor hem te maken. Hij gaf me een lijst van wat hij wilde en we beperkten het tot een overzichtelijke lijst :) Dit is wat ik uiteindelijk voor hem heb gemaakt...

  • Pak het schild van de UNO- en V5-sensor en klik ze aan elkaar.
  • Plaats het samengevoegde UNO/Sensor-bord in de cliphouder in het midden van de bot.
  • Neem dubbelzijdig plakband en plaats de motordriver op de linker binnenmuur en de Bluetooth-adapter op de rechtermuur.

Voor dit project kun je je eigen chassis maken of een ander chassis kiezen, de keuze is aan jou.

Stap 1:De benodigde software

Dingen die je moet downloaden:

  • De Arduino IDE
  • Python 2.7 (een volledige installatie met tkinter)
  • De pySerial-bibliotheek
  • De L9110S-motorcontrollerbibliotheek bijgevoegde .zip (zie de bestanden in deze stap)
  • De robotcode hieronder of de bijgevoegde .zip (zie de bestanden in deze stap)
  • De Python-toepassing voor afstandsbediening (zie de bestanden in deze stap)

Stap 2:Hardware stuklijst

Onderdelen die je nodig hebt zijn de volgende:

  • Runt Rover Half-pint chassis of een geschikte 4wd ingesloten vervanging
  • Arduino Uno of soortgelijk bord met USB-kabel
  • V5-sensorschild
  • L9110S motor driver (Koop er een paar want ze zijn goedkoop)
  • MG995-servo of een andere geschikte vervanging x2
  • HC-05 of HC-06 bluetooth-adapter x1
  • Standaard servoplaat B x1
  • 90 graden beugel x1
  • Enkele beugel x2
  • Lichtgewicht servo-hub (525125 voor Futaba) x1
  • Standaard grijperset A x1
  • Overbruggingsdraden van vrouw naar vrouw
  • 5 oplaadbare AA-batterijen (NiMH) en oplader
  • Dubbelzijdig plakband en kleine ritssluitingen
  • Een 'AA'-batterijpakket met 5 sleuven (als u voor de oplaadbare AA-optie kiest)
  • 6v NiMH of 7,4v Li-ion batterijpakket en oplader
  • 1.250" 6-32 schroeven x2
  • .750" 8-32 nylon afstandhouders x2
  • .500" 6-32 schroeven met moeren x8
  • .3125" 6-32 schroeven x8

Je kunt veel van de onderdelen rechtstreeks van eBay of andere leveranciers kopen, zoals Sparkfun, Adafruit en ServoCity.

Nadat je alles hebt gekocht, verzameld en gedownload, ben je klaar om te beginnen met bouwen.

Stap 3:Montage - Het chassis

Monteer eerst het chassis volgens de instructies die bij het chassis of de video zijn geleverd. Na het afronden zou je zoiets als de afbeelding moeten hebben. Wanneer je de plaat met de controller op de bot plaatst, zorg er dan voor dat je deze in de middelste gaten plaatst. Dit laat ruimte aan de voor- en achterkant van de bot.

OPMERKING:verwijder alle 4 de wielen voordat je verder gaat, om de motoren niet te beschadigen terwijl je de andere botcomponenten erop plaatst.

Stap 4:De grijper monteren

Monteer de grijper volgens de instructies in deze video. Als je klaar bent, zou je zoiets als de afbeelding moeten hebben.

Stap 5:De grijper monteren - Stap 1

Neem de 90 graden beugel, lichtgewicht servohub en vier (4) van de .3125" schroeven voor deze stap:

Pak de servo-hub en plaats deze aan één kant van de beugel en zet ze samen met de .2125" schroeven vast zoals afgebeeld en leg deze opzij Plaats de moeren op de twee kortere schroeven en draai ze vast. Zet nu de twee enkele beugels vast, de 1.250 " schroeven en twee .500" schroeven met moeren, 2 nylon afstandhouders en de servoplaat B. Neem een ​​enkele beugel en plaats deze in de binnenkant van de Half-pint bot en draai de 2 1.259" schroeven op de linker gaten (vanaf de binnenkant) en de 2.500 "schroeven aan de rechterkant. Alle schroefkoppen bevinden zich aan de binnenkant van de bot zoals afgebeeld. Plaats nu de tweede enkele beugel op de schroeven aan de buitenkant van de bot. Neem vervolgens de nylon afstandhouders en plaats ze op de langere (1.250 ") uitsteken en schroef vervolgens de servoplaat op de lange schroeven Draai de schroeven naar de servoplaat vast met een inbussleutel van de juiste maat of een schroevendraaier als u normale schroeven gebruikt.

Gebruik de afbeeldingen indien nodig ter referentie.

Stap 6:De grijper monteren - Stap 2

  • Neem vervolgens de resterende servo die je hebt en plaats deze in de servobeugel met de ruggengraat naar boven. Zet het vast met 4 van de .3125" schroeven.
  • Neem vervolgens de 90 graden beugel met de servo-hub erop en monteer de grijper erop met de 4 van de .500" schroeven en gebruik 2 van de 8-32 moeren als afstandhouders tussen de beugel en de grijper zoals afgebeeld. Zet vast met een andere moer bovenop de grijper (onder de beugel als je de schroeven de andere kant op draait)
  • Neem nu de grijpereenheid en plaats deze op de servo en gebruik een servoschroef (uit uw servopakket) om hem op zijn plaats te houden en stevig vast te zetten.

Nadat u klaar bent, voert u de twee servodraden door het platte beugelgat naar de binnenkant van de bot.

Zie de foto's voor meer details en referentie.

Stap 7:De elektronica monteren

  • Pak het schild van de UNO- en V5-sensor en klik ze aan elkaar.
  • Plaats het samengevoegde UNO/Sensor-bord in de cliphouder in het midden van de bot.
  • Neem dubbelzijdig plakband en plaats de motordriver op de linker binnenmuur en de Bluetooth-adapter op de rechtermuur.

Stap 8:Bedrading - De motoren

  • A-1A-pin op de motordriver naar pin 5 op de sensorafscherming
  • A-1B-pin op de motordriver naar pin 6 op de sensorafscherming
  • B-1A-pin op de motordriver naar pin 3 op de sensorafscherming
  • B-1B-pin op de motordriver naar pin 11 op het sensorscherm

Nu met de voorkant van de robot weg van u, pak de draden aan de LINKERkant en -

  • Sluit de twee ZWARTE draden aan de linkerkant aan op de eerste uitgangsschroefklem voor Motor A
  • Sluit de twee RODE draden aan de linkerkant aan op de tweede uitgangsschroefklem voor Motor A

Pak de draden aan de RECHTERkant en -

  • Sluit de twee ZWARTE draden aan de linkerkant aan op de eerste uitgangsschroefklem voor Motor B
  • Sluit de twee RODE draden aan de linkerkant aan op de tweede uitgangsschroefklem voor motor B

De servo's:

  • Sluit nu de Y-servodraad aan op pinlijn 2 op de sensorafscherming. De witte of oranje draad is altijd de signaaldraad.
  • Sluit nu de X (Gripper) servodraad aan op pinlijn 7 op de sensorafscherming. De witte of oranje draad is altijd de signaaldraad.

Stap 9:De Bluetooth-module bedraden

  • Bluetooth-adapter Tx -> sensorafschermingspin 0
  • Bluetooth-adapter Rx -> sensorafschermingspin 1

Stap 10:Kracht toevoegen

Sluit de voedingskabels van de 5 'aa' (of een ander 6v-pack) batterijpakket aan op de voedingsschroefaansluiting van het sensorscherm:

  • Rood naar Vcc
  • Zwart naar GND
  • Zorg er vervolgens voor dat de jumper op het V5-sensorscherm op zijn plaats zit op de jumperpinnen.
  • Sluit de GND-pin op de L9110s-driver aan op een GND-pin op de sensorafscherming.
  • Sluit de positieve draad van de 6v- of 7,2v-batterij of een andere batterij die u voor de motoren hebt gekozen aan op de Vcc-pin op de L9110S-motordriver.
  • Sluit de negatieve (GND) draad van de motoraccu aan op een GND-pin op het motorscherm.

Stap 11:De HC05/HC06 Bluetooth-module configureren

Nu moet je naar de instellingen van het Bluetooth-apparaat op je pc gaan via het "Bedieningspaneel" of "Systemen" van het besturingssysteem of Google gebruiken om te helpen.

Mogelijke informatie over Bluetooth-configuratie van het besturingssysteem:

  • Vensters
  • Linux (ik gebruik blueman op Linux Mint, maar zie je distributie voor meer info)
  • Mac

U moet de apparaatnaam of het nummer van de seriële poort noteren dat eraan is toegewezen.

Stap 12:De code laden

Met de bedrading gecontroleerd en opnieuw gecontroleerd , Het is tijd om de code te laden. Volg de instructies op de Arduino-site voor het installeren van de Arduino IDE.

Nadat de IDE is geïnstalleerd, kunt u vervolgens de L9110 Motor Driver-bibliotheek installeren. Doe dit door het zipbestand in STAP 1 met de naam L9110Driver.zip te downloaden en het uit te pakken naar uw Arduino-bibliothekenmap of door deze instructies te volgen voor het toevoegen van een bibliotheek.

Nu de IDE- en Motordriver-bibliotheek zijn geïnstalleerd, laadt u de robotcode in de Arduino IDE vanuit het zipbestand in STAP 1 met de naam blue_t_slave.zip. Deze bestanden worden ook in deze stap opgenomen.

Verbind uw pc en Arduino met de USB-kabel. Kies nu het bord uit het menu Extra->Board in de IDE, Uno voor dit project (kies het bord dat je hebt als dat anders is dan Uno) Kies nu je com-poort in het menu Extra->Poort. Nadat dit is gebeurd, klikt u op de uploadknop. Als alles goed is gegaan, is de code geladen, zo niet, kijk dan hier voor hulp over de IDE en gerelateerde problemen.

Stap 13:De Python Control-toepassing uitvoeren

Om de Python-afstandsbedieningstoepassing uit te voeren, downloadt u het zipbestand van deze stap en extraheert u het naar de locatie van waaruit u het wilt uitvoeren. Open vervolgens een opdrachtshell (d.w.z. terminal, cmd.exe, enz...) en navigeer naar de map waarin u het bestand hebt uitgepakt. Typ nu:python rover.py vanaf de opdrachtregel en er zou een venster moeten verschijnen dat eruitziet als in de afbeelding. Als dat niet het geval is, zoek dan naar eventuele python-fouten en corrigeer (d.w.z. ontbrekende bibliotheken enz.) De Python-site kan indien nodig wat helpen.

Zodra de app draait, zou je klaar moeten zijn.

Zet nu de bot aan. Typ vervolgens de comm-poort van uw adapter en klik op de knop "Verbinden". Na een paar seconden zou u de andere bedieningselementen moeten zien ingeschakeld en de verbindingsknop uitgeschakeld. Dit betekent dat je verbonden bent met de robot. Als je geen verbinding kunt maken met de bluetooth-adapter, moet je de magie van Google gebruiken om je te helpen!

De besturingsapplicatie is eenvoudig te gebruiken en maakt muis- of toetsenbordbesturing mogelijk.

De toetsenbordbedieningen zijn:

  • Pijlen zijn vooruit, achteruit, 90 graden naar links, 90 graden naar rechts
  • a - draai 45 graden naar links
  • s - draai 45 graden naar rechts
  • h - stoppen (stoppen)
  • y - grijper Y-as instellen
  • u - grijper openen/sluiten
  • c - grijper thuis

Vooruit- en achteruit-commando's zijn constant, d.w.z. ze houden de bot in beweging na uitvoering totdat een nieuwe richting wordt verzonden of een stop-commando.

De bochten van 90 en 45 graden zijn tijdelijk, d.w.z. na enige vertraging zorgen ze ervoor dat de bot niet meer beweegt.

De grijperschuifregelaars zetten de grijper niet automatisch op de bot. U moet op de overeenkomstige "Set"-knop of -toets drukken om de set daadwerkelijk uit te voeren.

De waarden van de schuifregelaar variëren van 0-180.

  • Grijper Y-as:0 is helemaal naar boven en 180 is helemaal naar beneden.
  • Grijper open/dicht:0 is helemaal gesloten en 180 en helemaal open.

Gebruik de knop "Verbinding verbreken" om het programma niet meer te gebruiken. Dit zal commando's sturen om de bot te stoppen en de grijper naar huis te sturen.


Code

  • GUI voor Python-stuurprogramma
  • Rover-code
GUI van Python-stuurprogrammaPython
#!/usr/bin/env python## Voor Linux, BSD of Mac OSX kun je chmod +x op dit script gebruiken om uitvoerbaar te maken############# Rover control app## Geschreven door Scott Beasley - 2015# Gratis te gebruiken of aan te passen. Enjoy.############import sysimport serialimport timefrom Tkinter import *import tkFontimport tkMessageBox# Maak het venster voor de applicatieklasse App (Frame):# Maak het venster def createWidgets (self):self.connected =False self.message =StringVar ( ) # Maak een klein lettertype voor de grijperset-knoppen. helv6 =tkFont.Font (familie ='Helvetica', grootte =6, gewicht ='normaal') self.frame =Frame (self.master) self.frame.pack ( ) self.f1 =Frame (self.frame) zelf .l1 =Label (self.f1, text ="Comm Port:") self.l1.pack (side =LEFT) self.comm_entry =Entry (self.f1, bd =5, name ="comm_entry") self.comm_entry .pack (zijkant =LINKS) self.connectButton =Knop (self.f1, tekst ="Connect", command =self.SerialConnect, name ="b_connect") self.connectButton.pack (zijkant =LINKS) self.disconnectButton =Knop (self.f1, text ="Disconnect", command =self.SerialDisconnect, name ="b_disconnect") self.disconnectButton.pack (zijkant =RECHTS) self.f1.grid (rij =0, kolom =0) self.f2 =LabelFrame (self.frame, bd =3, reliëf ="groove", text="Ground Control") self.g_vert_fm =Frame (self.f2) self.grip_vert =Schaal (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 (rij =5, kolom =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") zelf .leftforwardButton.grid (rij =0, kolom =1) self.master.bind ("", self.TurnLeft45) self.leftButton =Knop (self.f2, tekst ="<", command =self.TurnLeft, name ="b_left") self.leftButton.grid (rij =1, kolom =1) self.master.bind ("
", self.TurnLeft ) self.rightforwardButton =Button (self.f2, text ="/", command =self.TurnRight45, name ="b_right_forward") self.rightforwardButton.grid (rij =0, kolom =3) self.master.bind (" 
", self.TurnRight45) self.haltButton =Button (self.f2, text ="Halt!", command =self.Halt, name ="b_halt") self.haltButton .grid (rij =1, kolom =2) self.master.bind ("", self.Halt) self.rightButton =Button (self.f2, text=">", command =self.TurnRight, name ="b_right") self.rightButton.grid( rij =1, kolom =3) self.master.bind ("
", self.TurnRight) self.upButton =Knop (self.f2, text="^", commando =self.Forward, name ="b_forward") self.upButton.grid (rij =0, kolom =2) self.master.bind ("
", self.Forward) self.leftdownButton =Button (self.f2, text ="/", command =self.TurnRight45, name ="b_left_down") self.leftdownButton.grid (rij =2, kolom =1) self.downButton =Knop (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 (rij =1, kolom =0, pady =25) self.rightdownButton =Knop (self.f2, tekst ="\\", command =self.TurnLeft45, name ="b_right_down") self.rightdownButton.grid (rij =2, kolom =3) self.g_horz_fm =Frame (self.f2) self.grip_horz =Schaal (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 (rij =0, kolom =8) self.master.bind ("", self.GripperX) self.g_horz_fm.grid (rij =4, kolom =0, columnspan =7, sticky =E) self.master.bind ("
", self.GripperHome) self.f3 =Frame (self.frame) self.l2 =Label (self.f3, text ="Laatste actie:") self.l2.pack (zijkant =LINKS) self.l3 =Label (self.f3, text=" ", textvariable =self.message) self.l3.pack (zijkant =RECHTS) self.f3.grid (rij =3, kolom =0, pady =8) # Stel de status van de botbesturingsknoppen in. Inschakelen indien verbonden, # anders uitgeschakeld. def CtrlButtonsState (self, bstate):self.leftforwardButton.config (state =bstate) self.leftButton.config (state =bstate) self.rightforwardButton.config (state =bstate) self.rightButton.config (state =bstate) zelf. upButton.config (staat =bstaat) self.leftdownButton.config (staat =bstaat) zelf.downButton.config (staat =bstaat) zelf.rightdownButton.config (staat =bstaat) zelf.haltButton.config (staat =bstaat) zelf. 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 de status van de invoer van de communicatiepoort. Inschakelen wanneer niet verbonden, # Uitgeschakeld wanneer de bot is verbonden. def ConnCtrlsState (self, bstate):self.connectButton.config (state =bstate) self.comm_entry.config (state =bstate) # Maak verbinding met de comm-poort die in het comm-invoerveld is getypt. def SerialConnect (self):probeer:# Verander hier de baudrate indien anders dan 9600 self.ser =serial.Serial (self.comm_entry.get ( ), 9600) behalve IOError:tkMessageBox.showerror ("Ongeldige communicatiepoort", " Comm port not found.") return self.ConnCtrlsState (DISABLED) self.CtrlButtonsState (NORMAL) self.message.set ("SerialConnect") self.connected =True time.sleep (3) # Wacht even tot de verbinding tot stand komt # Verbreek de verbinding met de bot (sluit de communicatiepoort). def SerialDisconnect (self):probeer:# Stuur een Halt-commando voor het geval de bot nog steeds in beweging is. self.send_cmd ('h', "Halt!") time.sleep (1) self.ser.close ( ) behalve IOError:print "Kan poort niet sluiten..." self.message.set ("SerialDisconnect") self .ConnCtrlsState (NORMAL) self.CtrlButtonsState (DISABLED) self.connected =False time.sleep (2) # Wacht een beetje totdat de verbinding verbroken wordt # Stuur het commando naar de open communicatiepoort def send_cmd (self, action, msg):if self.connected ==True:voor val in actie:self.ser.write (val) self.ser.flush ( ) self.message.set (msg) # Stuur de bot een commando om links af te slaan. def TurnLeft (self, event =None):self.send_cmd ('a', "Left") # Stuur de bot een turn-links-up commando. def TurnLeft45 (self, event =None):self.send_cmd ('q', "Left45") # Stuur de bot een turn-right-commando. def TurnRight (self, event =None):self.send_cmd ('s', "Right") # Stuur de bot een turn-right-up commando. def TurnRight45 (self, event =None):self.send_cmd ('e', "Right45") # Stuur de bot een Forward-opdracht. def Forward (self, event =None):self.send_cmd ('w', "Up") # Stuur de bot een Reverse-commando. def Reverse (self, event =None):self.send_cmd ('z', "Down") # Stuur de bot een Halt-commando. def Halt (self, event =None):self.send_cmd ('h', "Halt!") # Stel de grijper (X) in. def GripperX (self, event =None):# Lees de schuifregelaar en stuur de waarde naar de botcontroller # Opmerking:0 is helemaal gesloten en 180 is helemaal open grp_change =('>', chr (self. grip_horz.get ( )), chr (255)) self.send_cmd (grp_change, "Gripper X") # Stel de grijper Y in. def GripperY (self, event =Geen):# Lees de schuifregelaar en stuur de waarde naar de bot controller # Opmerking:0 is helemaal naar boven en 180 is helemaal naar beneden grp_change =('^', chr (self.grip_vert.get ( )), chr (255)) self.send_cmd (grp_change, "Gripper Y ") # Zet de grijper in de "home" positie. 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 (UITGESCHAKELD)# Start de GUI (Tk) en geef vervolgens de grootte en titel van de 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. Doel in het leven... Volgt je commando's die op magische wijze door de lucht worden gestuurd! Of van USB :) Geschreven door Scott Beasley - 2015 Gratis te gebruiken of aan te passen. Veel plezier.*//* Maakt gebruik van de L9110S-bibliotheek. Het werkt met de L9110S h-brug. Download van https://github.com/jscottb/L9110Driver of kloon de zip van https://github.com om de '-master' uit de archiefbestandsnaam te verwijderen om de bibliotheek toe te voegen*/#include  #include #define SERVO_Y 2 // Pin grijper Y servo#define SERVO_CLAW 7 // Pin grijper Gripper servo#define pinAIN1 5 // definieer I1 interface#define pinAIN2 6 // definieer I2 interface#define pinBIN1 3 / / definieer I3-interface#define pinBIN2 11 // definieer I4-interface// Snelheid definieert#define MAXFORWARDSPEED 225 // Max. snelheid die we vooruit willen gaan#define MAXBACKWARDSPEED 225 // Max. snelheid achteruit#define TOPSPEED 255 // Gebruikt om beter in te schakelen tapijt en ruwere oppervlakken.// Verschillende tijdvertragingen gebruikt voor rijden en servo#define TURNDELAY 475#define TURNDELAY45 235#define BACKUPDELAY 400#define SERVOMOVEDELAY 200#define SERVOMOVEDELAY 85/* Globals area.*/// Maak de motor, servo-objecten om te communiceren met L9110_Motor motor_links (pinAIN1, pinAIN2); // Maak linker motorobjectL9110_Motor motor_right (pinBIN1, pinBIN2); // Maak Rechts motor objectServo grip_y_servo; // Maak een servo-object voor de grijper Y axisServo grip_servo; // Maak een servo-object voor de grijper clawvoid setup ( ){ // Wijzig hier de baudrate als deze anders is dan 9600 Serial.begin (9600); grip_y_servo.attach (SERVO_Y); // Bevestig de servo SERVO_LR grip_y_servo.write (90); grip_servo.attach (SERVO_CLAW); // Bevestig de servo SERVO_LR grip_servo.write (90); vertraging (500);}void loop ( ){ byte commando =0, val =0; if (Serial.available ( )> 0) { // lees het binnenkomende commando byte command =Serial.read ( ); } switch (opdracht) { case 'w':go_forward ( ); //Serial.println ("Vooruitgaan"); pauze; geval 'z':go_backward ( ); //Serial.println ("Teruggaan"); pauze; geval 'a':go_left ( ); vertraging (TURNDELAY); stoppen ( ); //Serial.println ("Links afslaan"); pauze; case 's':go_right ( ); vertraging (TURNDELAY); stoppen ( ); //Serial.println ("Rechts afslaan"); pauze; geval 'q':go_left ( ); vertraging (TURNDELAY45); stoppen ( ); //Serial.println ("Links afslaan"); pauze; geval 'e':go_right ( ); vertraging (TURNDELAY45); stoppen ( ); //Serial.println ("Rechts afslaan"); pauze; geval 'h':halt ( ); //Serial.println ("Stilstaan"); pauze; case '>':// Gripper X move stuurt servo-instelwaarde val =Serial.read ( ); // We beperken de waarde tot echte bewegingslimieten van de setup grip_servo.write (constrain (val, 64, 179)); //Serial.println ("GripperX"); pauze; case '^':// Grijper Y-beweging stuurt servo-setwaarde val =Serial.read ( ); // We beperken de waarde tot echte bewegingslimieten van de setup grip_y_servo.write (constrain (val, 53, 179)); //Serial.println ("GripperY"); pauze; case 'c':// We beperken de waarde tot echte bewegingslimieten van de setup grip_y_servo.write (90); grip_servo.write (90); //Serial.println ("GripperHome"); pauze; case 255:// Verzonden na alle grijpercommando's Serial.flush ( ); pauze; } Serieel.flush ( ); delay(125);}void go_forward ( ){ //Serial.println ("Going forward..."); // Breng de motoren op snelheid. // Hulp bij het uitrollen op sommige oppervlakken en tarra op de GM's ramp_it (MAXFORWARDSPEED, FORWARD, FORWARD); // Stel in op alle ingestelde snelheden voor het geval de helling van het laatste vat niet alles was // het. motor_left.setSpeed ​​(MAXFORWARDSPEED); motor_right.setSpeed ​​(MAXFORWARDSPEED); motor_left.run (FORWARD|RELEASE); motor_right.run (FORWARD|RELEASE);}void go_backward ( ){ //Serial.println ("Ga achteruit..."); // Breng de motoren op snelheid. // Hulp bij het uitdraaien op sommige oppervlakken en ware en tarra op de GM's ramp_it (MAXBACKWARDSPEED, BACKWARD, BACKWARD); // Stel in op alle ingestelde snelheden voor het geval de helling van het laatste vat niet alles was // het. motor_left.setSpeed ​​(MAXBACKWARDSPEED); motor_right.setSpeed ​​(MAXBACKWARDSPEED); motor_left.run (ACHTERUIT|RELEASE); motor_right.run (BACKWARD|RELEASE);}void go_left ( ){ //Serial.println ("Ga naar links..."); // Breng de motoren op snelheid. // Hulp bij het uitdraaien op sommige oppervlakken en tarra op de GM's ramp_it (TOPSPEED, BACKWARD, FORWARD); // Stel in op alle ingestelde snelheden voor het geval de helling van het laatste vat niet alles was // het. motor_left.setSpeed ​​(TOPSPEED); motor_right.setSpeed ​​(TOPSPEED); motor_left.run (ACHTERUIT|RELEASE); motor_right.run (FORWARD|RELEASE);}void go_right ( ){ //Serial.println ("Gaat naar rechts..."); // Breng de motoren op snelheid. // Hulp bij het uitdraaien op sommige oppervlakken en tarra op de GM's ramp_it (TOPSPEED, FORWARD, BACKWARD); // Stel in op alle ingestelde snelheden voor het geval de helling van het laatste vat niet alles was // het. motor_left.setSpeed ​​(TOPSPEED); motor_right.setSpeed ​​(TOPSPEED); motor_left.run (FORWARD|RELEASE); motor_right.run (ACHTERUIT|RELEASE);}void halt ( ){ //Serial.println ("Halt!"); //ramp_it (0, BRAKE, BRAKE); motor_links.setSnelheid (0); motor_right.setSnelheid (0); motor_links.run (REM); 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 =buikspieren (snelheid / 4); if (!snelheid) 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); vertraging (25); }}
L9110-stuurprogramma
L9110-motorstuurprogramma voor Arduinohttps://github.com/jscottb/L9110Driver

Aangepaste onderdelen en behuizingen

4wdgripperbt2.fzz

Schema's

4wdgripperbt2.fzz

Productieproces

  1. Multitemperatuursensor
  2. DIY-soldeerboutbesturing voor 862D+
  3. MotionSense
  4. 3D-printer brandveiligheid
  5. Arduino afstotende elektromagnetische levitatie
  6. Arduino aangedreven weerballon datalogger
  7. ArduFarmBot - Part 2:Remote Station an IoT Implementation
  8. Microcontrollers Lab
  9. CoroFence - Thermische Detector🖖
  10. Cloud monitoring, een afstandsbedieningssysteem
  11. 5 voordelen van productiecontrole op afstand