Inhoudsopgave:
- Stap 1: Onderdelen
- Stap 2: PROTOTYPING
- Stap 3: HANDSCHOEN
- Stap 4: ZENDERBOX
- Stap 5: ARM BEDIENINGSKAST
- Stap 6: PIN-TOEWIJZING
- Stap 7: COMMUNICATIE
- Stap 8: SCHETSEN en meer…
- Stap 9: WAT ANDERS?
- Stap 10: *** WIJ GEWONNEN!!! ***
Video: Zwaai met je hand om de OWI-robotarm te bedienen Geen verplichtingen - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
HET IDEE:
Er zijn minstens 4 andere projecten op Instructables.com (vanaf 13 mei 2015) rond het aanpassen of besturen van OWI Robotic Arm. Niet verrassend, want het is zo'n geweldige en goedkope robotkit om mee te spelen. Dit project is qua geest vergelijkbaar (d.w.z. bestuur de robotarm met Arduino), maar verschilt in de aanpak. [video]
Het idee is om de Robotic Arm draadloos te kunnen besturen met gebaren. Ook heb ik geprobeerd om aanpassingen aan de robotarm tot een minimum te beperken, zodat deze nog steeds met de originele controller kon worden gebruikt.
Klinkt eenvoudig.
Wat het uiteindelijk is geworden, is een driedelig project:
- Een handschoen voorzien van voldoende sensoren om een LED en 5 motoren aan te sturen
- Een op Arduino Nano gebaseerd zenderapparaat om besturingsopdrachten van de handschoen te accepteren en draadloos naar het Arm-controllerapparaat te sturen
- Een op Arduino Uno gebaseerde draadloze ontvanger en motorbesturingsapparaat bevestigd aan de OWI Robotic Arm
KENMERKEN
- Ondersteuning voor alle 5 Degrees Of Freedom (DOF) en de LED
- Grote rode knop - om de motoren op de arm onmiddellijk te stoppen om schade te voorkomen
- Draagbaar modulair ontwerp
Voor mobiele gebruikers: de "promotievideo" van dit project staat hier op YouTube.
Stap 1: Onderdelen
HANDSCHOEN:
Je hebt het volgende nodig om een handschoencontroller te bouwen:
- Isotoner Smartouch Tech Stretch Stitched Glove (of vergelijkbaar) - op Amazon.com
- Spectra Symboflex-sensor 2.2" - op Amazon.com
- GY-521 6DOF MPU6050 3-assige gyroscoop + versnellingsmetermodule - op Fasttech.com
- 2X5 BOX HEADER STRAIGHT - op Phoenixent.com
- 2X5 IDC SOCKET-RECEPTACLE - op Phoenixent.com
- PLATTE LINTENKABEL 10 Conductor.050" Pitch - op Phoenixent.com
- 2 x 5 mm LED's - groen en geel
- 2 x kleine knoppen
- Weerstanden, draden, naald, zwarte draad, lijmpistool, soldeerpistool, soldeer, etc.
TRANSMISSIE STRAP-ON DOOS:
- Arduino-compatibel Nano v3.0 ATmega328P-20AU-bord - op Fasttech.com
- nRF24L01+ 2,4 GHz draadloze transceiver Arduino compatibel - op Amazon.com
- Gymboss POLSBAND - op Amazon.com
- 9V batterijhouder Box Case met draadkabel AAN / UIT-schakelaar - op Amazon.com
- 2X5 BOX HEADER STRAIGHT - op Phoenixent.com
- 9v batterij
- 47uF (50v) condensator
- Weerstanden, draden, lijmpistool, soldeerpistool, soldeer, etc.
OWI ROBOTARM CONTROLLER BOX:
- Arduino-compatibel Uno R3 Rev3-ontwikkelbord - op Fasttech.com
- Prototype Shield DIY KIT voor Arduino (of vergelijkbaar) - op Amazon.com
- nRF24L01+ 2,4 GHz draadloze transceiver Arduino compatibel - op Amazon.com
- 3 x L293D 16-pins geïntegreerde schakeling IC-motorstuurprogramma - op Fasttech.com
- 1 x SN74HC595 74HC595 8-bits schakelregister met 3-state outputregisters DIP16 - op Amazon.com
- 47uF (50v) condensator
- Box voor Arduino - op Amazon.com
- Aan / uit knop
- 2 x 13 mm knoppen (een rode en een groene dop)
- 2 x 2X7 BOX HEADER STRAIGHT - hetzelfde als hierboven op Phoenixent.com
- PLATTE LINTENKABEL 14 Conductor.050" Pitch - hetzelfde als hierboven op Phoenixent.com
- 9v batterij + clip-on connector
- Weerstanden, draden, lijmpistool, soldeerpistool, soldeer, etc.
… en uiteraard:
OWI Robotarm Edge - Robotarm - OWI-535 - op Adafruit.com
Stap 2: PROTOTYPING
Ik raad ten zeerste aan om elk van de controller-apparaten te prototypen voordat alle componenten aan elkaar worden gesoldeerd.
Dit project maakt gebruik van een paar uitdagende stukjes hardware:
nRF24L01
Het kostte me een tijdje om de twee nRF24 met elkaar te laten praten. Blijkbaar bieden noch Nano, noch Uno voldoende gestabiliseerd 3,3v-vermogen om de modules consistent te laten werken. Een oplossing in mijn geval was een 47uF-condensator over de voedingspinnen op beide nRF24-modules. Er zijn ook een paar eigenaardigheden bij het gebruik van de RF24-bibliotheek in IRQ- en niet-IRQ-modi, dus ik raad aan om de voorbeelden heel zorgvuldig te bestuderen.
Een paar geweldige bronnen:
nRF24L01 Ultra laag vermogen 2,4 GHz RF Transceiver IC Productpagina
RF24 Driver bibliotheekpagina
Even googlen op nRF24 + arduino levert veel links op. Het is het onderzoeken waard
74HC595 SCHAKELREGISTER
Het is niet verrassend dat ik 5 motoren, een LED, twee knoppen en een draadloze module moest bedienen, waardoor ik relatief snel geen pinnen op de Uno had. De bekende manier om uw pintelling te "uitbreiden" is door een schuifregister te gebruiken. Omdat nRF24 de SPI-interface al gebruikte, besloot ik SPI ook te gebruiken voor het programmeren van schuifregisters (voor snelheid en om pinnen te besparen) in plaats van de functie shiftout(). Tot mijn verbazing werkte het vanaf de eerste keer als een tierelier. Je kunt het bekijken in de pintoewijzing en in de schetsen.
Breadboard en jumperdraden zijn je vrienden.
Stap 3: HANDSCHOEN
OWI Robotic ARM heeft 6 items om te bedienen (OWI Robotic Arm Edge Picture)
- Een LED op de GRIPPER van het apparaat
- EEN GRIPPER
- EEN POLS
- Een ELLEBOOG - is het deel van de robotarm dat aan de POLS is bevestigd
- Een SCHOUDER is het deel van de robotarm dat is bevestigd aan de BASE
- EEN BASIS
De handschoen is ontworpen om de LED van de Robotarm en alle 5 motoren (Degrees of Freedom) aan te sturen.
Ik heb individuele sensoren gemarkeerd op de foto's, evenals een beschrijving hieronder:
- De GRIPPER wordt bestuurd door de knoppen op de middelvinger en pink. Grijper wordt gesloten door wijs- en middelvinger tegen elkaar te drukken. Grijper wordt geopend door ring en pink tegen elkaar te drukken.
- De POLS wordt aangestuurd door de flexibele weerstand op de indexzoeker. Als je de vinger halverwege krult, gaat de pols omlaag en als je hem helemaal krult, gaat de pols omhoog. Door de wijsvinger recht te houden, stopt de pols.
- De ELLEBOOG wordt bestuurd door een versnellingsmeter - door de handpalm op en neer te kantelen, beweegt de elleboog respectievelijk omhoog en omlaag
- De SCHOUDER wordt bestuurd door een versnellingsmeter - door de handpalm naar rechts en naar links te kantelen (niet ondersteboven!) beweegt de schouder respectievelijk omhoog en omlaag
- De BASE wordt ook bestuurd door een accelerometer, vergelijkbaar met schouder - kantelende handpalm naar rechts en links helemaal ondersteboven (palm naar boven gericht) beweegt de basis respectievelijk naar rechts en links
- De LED op de grijper gaat aan/uit door beide bedieningsknoppen van de grijper samen in te drukken.
Alle knopreacties worden met 1/4 seconde vertraagd om jitter te voorkomen.
Het monteren van de handschoen vereist wat solderen en veel naaien. In feite is het gewoon het bevestigen van 2 knoppen, flexibele weerstand, Accel/Gyro-module aan de stof van de handschoen en kabels naar de connectordoos leiden.
Twee LED's op de aansluitdoos zijn:
- GROEN - inschakelen
- GEEL - knippert wanneer gegevens naar de armbedieningskast worden verzonden.
Stap 4: ZENDERBOX
De zenderdoos is in wezen Arduino Nano, nRF24 draadloze module, flexibele draadconnector en 3 weerstanden: 2 pull-down 10 kOhm-weerstanden voor de grijperbedieningsknoppen op de handschoen en een spanningsverdelingsweerstand van 20 kOhm voor de flexibele sensor die de pols bestuurt.
Alles is aan elkaar gesoldeerd op een vero-board. Merk op dat nRF24 over Nano "hangt". Ik was bang dat dit storing zou veroorzaken, maar het werkt.
Het gebruik van de 9v-batterij maakt het strap-on-gedeelte een beetje omvangrijk, maar ik wilde niet rotzooien met LiPo-batterijen. Misschien later.
Zie de pintoewijzingsstap voor soldeerinstructies
Stap 5: ARM BEDIENINGSKAST
Armbedieningskast is gebaseerd op Arduino Uno. Het ontvangt draadloos opdrachten van de handschoen via de nRF24-module en bestuurt de OWI Robotoc Arm via 3 L293D-stuurprogrammachips.
Omdat bijna alle Uno-pinnen zijn gebruikt, zitten er veel draden in de doos - hij sluit nauwelijks!
Door het ontwerp start de box in de UIT-modus (alsof er op een rode stopknop wordt gedrukt), waardoor de operator de tijd heeft om de handschoen aan te trekken en zich klaar te maken. Als de operator klaar is, drukt hij op de groene knop en moet de verbinding tussen de handschoen en de bedieningskast onmiddellijk tot stand worden gebracht (zoals aangegeven door de gele led op de handschoen en de rode led op de bedieningskast).
VERBINDEN MET OWI
Verbinding met de robotarm wordt gemaakt via 14-pins dubbele rijen header (volgens de afbeelding hierboven) via een 14-aderige platte kabel.
- LED-aansluitingen zijn naar common ground (-) en arduino-pin A0 via 220 Ohm-weerstand
- Alle motordraden zijn aangesloten op L293D-pinnen 3/6 of 11/14 (+/- respectievelijk). Elke L293D ondersteunt 2 motoren, dus twee paar pinnen.
- OWI-stroomleidingen zijn de meest linkse (+6v) en meest rechtse (GND) pinnen van de 7-pins connector aan de achterkant van de gele bovenkant. (Je kunt de draden zien aangesloten op de afbeelding hierboven). Deze twee zijn verbonden met pinnen 8 (+) en 4, 5, 12, 13 (GND) op alle drie de L293D's.
Zie de rest van de pintoewijzing bij de volgende stap
Stap 6: PIN-TOEWIJZING
NANO:
- 3.3v - 3.3v naar nRF24L01-chip (pin 2)
- 5v - 5v naar versnellingsmeterbord, knoppen, flexibele sensor
- a0 - flexibele weerstandsingang
- a1 - gele "comms" LED-controle
- a4 - SDA naar versnellingsmeter
- a5 - SCL naar versnellingsmeter
- d02 - nRF24L01 chip Interrupt pin (pin 8)
- d03 - ingang grijperknop openen
- d04 - invoer van grijperknop sluiten
- d09 - SPI CSN-pin naar nRF24L01-chip (pin 4)
- d10 - SPI CS-pin naar nRF24L01-chip (pin 3)
- d11 - SPI MOSI naar nRF24L01-chip (pin 6)
- d12 - SPI MISO naar nRF24L01-chip (pin 7)
- d13 - SPI SCK naar nRF24L01-chip (pin 5)
- Vin - 9v +
- GND - gemeenschappelijke basis
UNO:
- 3.3v - 3.3v naar nRF24L01-chip (pin 2)
- 5v - 5v naar knoppen
- Vin - 9v +
- GND - gemeenschappelijke basis
- a0 - Pols-LED +
- a1 - SPI SS pin voor Shift Register Select - naar pin 12 op Shift Register
- a2 - RODE knop ingang
- a3 - GROENE knopinvoer
- a4 - richting basis rechts - pin 15 op L293D
- a5 - communicatie led
- d02 - nRF24L01 IRQ-ingang (pin 8)
- d03 - activeer basisservo (pwm) pin 1 of 9 op L293D
- d04 - richting basis links - pin 10 op respectievelijke L293D
- d05 - schakel schouderservo (pwm) pin 1 of 9 in op L293D
- d06 - schakel elleboogservo (pwm) pin 1 of 9 in op L293D
- d07 - SPI CSN-pin naar nRF24L01-chip (pin 4)
- d08 - SPI CS-pin naar nRF24L01-chip (pin 3)
- d09 - activeer polsservo (pwm) pin 1 of 9 op L293D
- d10 - activeer grijperservo (pwm) pin 1 of 9 op L293D
- d11 - SPI MOSI naar nRF24L01-chip (pin 6) en pin 14 op schuifregister
- d12 - SPI MISO naar nRF24L01-chip (pin 7)
- d13 - SPI SCK naar nRF24L01-chip (pin 5) en pin 11 op schuifregister
SHIFT REGISTER EN L293D's:
- pin QA (15) van 74HC595 naar pin 2 van L293D #1
- pin QB (1) van 74HC595 naar pin 7 van L293D #1
- pin QC (2) van 74HC595 naar pin 10 van L293D #1
- pin QD (3) van 74HC595 naar pin 15 van L293D #1
- pin QE (4) van 74HC595 naar pin 2 van L293D #2
- pin QF (5) van 74HC595 naar pin 7 van L293D #2
- pin QG (6) van 74HC595 naar pin 10 van L293D #2
- pin QH (7) van 74HC595 naar pin 15 van L293D #2
Stap 7: COMMUNICATIE
Glove stuurt 10 keer per seconde 2 bytes aan data naar de controlebox of wanneer een signaal van een van de sensoren wordt ontvangen.
2 bytes is voldoende voor 6 controles omdat we alleen hoeven te sturen:
- AAN/UIT voor LED (1 bit) - Ik heb eigenlijk 2 bits gebruikt om consistent te zijn met de motoren, maar één is genoeg
- UIT/RECHTS/LINKS voor 5 motoren: elk 2 bit = 10 bits
Totaal 11 of 12 bits is voldoende.
Richting codes:
- UIT: 00
- RECHTS: 01
- LINKS: 10
Het stuurwoord ziet er (bitsgewijs) als volgt uit:
Byte 2 ---------------- Byte 1----------------
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 LED-- M5-- M4-- M3-- M2-- M1--
- M1 - grijper
- M2 - pols
- M3 - elleboog
- M4 - schouder
- M5 - basis
Byte 1 zou gemakkelijk rechtstreeks in het schuifregister kunnen worden ingevoerd, aangezien dit de rechts/links-richting van motoren 1 tot en met 4 regelt.
Voor communicatie is een time-out van 2 seconden ingeschakeld. Als er een time-out optreedt, worden alle motoren gestopt alsof er op een RODE knop is gedrukt.
Stap 8: SCHETSEN en meer…
HANDSCHOEN
Glove Sketch gebruikt de volgende bibliotheken:
- DirectIO - beschikbaar op Github
- I2Cdev - beschikbaar op Github
- Draad - onderdeel van Arduino IDE
- MPU6050 - beschikbaar op Github
- SPI - onderdeel van Arduino IDE
- RF24 - beschikbaar op Github
en drie door mij ontwikkelde bibliotheken:
- AvgFilter - beschikbaar van Github
- DhpFilter - beschikbaar op Github
- TaskScheduler - beschikbaar op Github
Handschoenenschets is hier beschikbaar: Handschoenenschets v1.3
ARM BEDIENINGSKAST
Armschets gebruikt de volgende bibliotheken:
- DirectIO - beschikbaar op Github
- PinChangeInt - beschikbaar op Github
- SPI - onderdeel van Arduino IDE
- RF24 - beschikbaar op Github
en een door mij ontwikkelde bibliotheek:
TaskScheduler - beschikbaar op Github
Armschets is hier beschikbaar: Arm Sketch v1.3
Gegevensbladen voor gebruikte hardware
- 74HC595 schuifregister - gegevensblad
- L293D motorbesturing - gegevensblad
- nRF24 draadloze module - gegevensblad
- MPU6050 accelerometer/gyroscoopmodule - gegevensblad
31 mei 2015 UPDATE:
Een nieuwe versie van schetsen voor handschoen- en armbedieningskasten is hier beschikbaar: Handschoen- en armschetsen v1.5
Ze bevinden zich hier ook op github.
Veranderingen
- Twee extra bytes toegevoegd aan de communicatiestructuur om de gevraagde motorsnelheid voor pols-, elleboog-, schouder- en basismotoren te verzenden als een 5-bits waarde (0.. 31) van de handschoen in verhouding tot de hoek van het bedieningsgebaar (zie hieronder). Arm Control Box wijst waarden [0.. 31] toe aan respectievelijke PWM-waarden voor elk van de motoren. Dit maakt een geleidelijke snelheidsregeling door de machinist en een nauwkeurigere armhantering mogelijk.
- Nieuwe reeks gebaren:
1. LED: Knoppencontrole-LED - middelvingerknop - AAN, pinkvingerknop - UIT
2. GRIPPER: Flexibele stripbediening Grijper - half gebogen vinger - OPEN, volledig gebogen vinger - SLUIT
3. POLS: De pols wordt bediend door de handpalm respectievelijk vanuit de volledig horizontale positie OMHOOG en OMLAAG te kantelen. Meer kantelen zorgt voor meer snelheid
4. ARM: De arm wordt bestuurd door de handpalm vanuit de volledig horizontale positie naar LINKS en RECHTS te kantelen. Meer kantelen zorgt voor meer snelheid
5. SCHOUDER: De schouder wordt bestuurd door de handpalm naar RECHTS en LINKS te draaien vanuit de handpalm die recht omhoog wijst. Palm wordt gedraaid langs de elleboogas (zoals zwaaien met je hand)
6. BASIS: De basis wordt op dezelfde manier bestuurd als de schouder met de handpalm recht naar beneden gericht.
Stap 9: WAT ANDERS?
VERBEELDING OP HET WERK
Zoals gebruikelijk bij dergelijke systemen, kunnen ze worden geprogrammeerd om veel meer te doen.
Het huidige ontwerp bevat bijvoorbeeld al extra mogelijkheden, niet mogelijk met de standaard afstandsbediening:
- Geleidelijke snelheidsverhoging: elke motorbeweging wordt gestart met een vooraf gedefinieerde minimale snelheid, die elke 1 seconde geleidelijk wordt verhoogd totdat een maximale snelheid is bereikt. Dit maakt een nauwkeurigere besturing van elk van de motoren mogelijk (vooral de pols en grijper)
- Snellere bewegingsonderdrukking: wanneer het commando wordt ontvangen door de Arm Box om een motor te stoppen, keert het de motor tijdelijk om voor ongeveer 50 ms, waardoor de beweging "onderbreekt" en een nauwkeurigere controle mogelijk is.
WAT NOG MEER?
Misschien kunnen meer uitgebreide controlegebaren worden geïmplementeerd. Of gelijktijdige gebaren kunnen worden gebruikt voor uitgebreide controles. Kan de arm dansen?
Als je een idee hebt hoe je de handschoen opnieuw moet programmeren, of als je een versie van een schets hebt die ik moet testen, laat het me dan weten: [email protected]
Stap 10: *** WIJ GEWONNEN!!! ***
Dit project won de eerste prijs in de door Microsoft gesponsorde wedstrijd Coded Creations.
Bekijken! WOE-HOO!!!
Tweede prijs in de gecodeerde creaties
Aanbevolen:
Maak een EENVOUDIGE Infinity Mirror Cube - GEEN 3D-printen en GEEN programmering: 15 stappen (met afbeeldingen)
Maak een EENVOUDIGE Infinity Mirror Cube | GEEN 3D-printen en GEEN programmering: iedereen houdt van een goede infinity-kubus, maar ze zien eruit alsof ze moeilijk te maken zijn. Mijn doel voor deze Instructable is om je stap voor stap te laten zien hoe je er een kunt maken. Niet alleen dat, maar met de instructies die ik je geef, kun je er een maken o
Lichten bedienen met uw ogen: 9 stappen (met afbeeldingen)
Lichten bedienen met je ogen: dit semester op de universiteit volgde ik een cursus genaamd Instrumentation in Biomedicine, waarin ik de basisprincipes van signaalverwerking voor medische toepassingen leerde. Voor het eindproject van de klas werkte mijn team aan EOG-technologie (elektrooculografie). Essent
I2C Oled-display bedienen met Arduino 9 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
I2C Oled-display bedienen met Arduino: dit is een zeer eenvoudige tutorial over hoe I2C Oled-display met Arduino te bedienen
Licht / Home Lights bedienen met Arduino en Amazon Alexa: 16 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe licht / huisverlichting te bedienen met Arduino en Amazon Alexa: ik heb uitgelegd hoe je licht kunt bedienen dat is aangesloten op UNO en wordt bestuurd door Alexa
Third Hand++: een multifunctionele helpende hand voor elektronica en ander delicaat werk. 14 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Derde Hand++: een multifunctionele helpende hand voor elektronica en ander delicaat werk. In het verleden heb ik de derde handen/helpende handen gebruikt die verkrijgbaar zijn bij elektronicaketens en was gefrustreerd over hun bruikbaarheid. Ik kon de clips nooit precies krijgen waar ik ze wilde hebben of het kostte meer tijd dan nodig was om ze op te zetten