Taula de continguts:
- Subministraments
- Pas 1: construcció
- Pas 2: proveu el Roboclaw, els motors i els codificadors
- Pas 3: Afegir i programar l'Arduino
- Pas 4: Afegir i programar el Raspberry Pi (node.js)
- Pas 5: pas final: programació / ús del client de la pàgina web
- Pas 6: opcional: condueix el robot amb arrossegament del ratolí i / o esdeveniments tàctils
Vídeo: Un robot 4WD accionat mitjançant un controlador de memòria USB remot: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Per al meu proper projecte de robòtica, em vaig veure obligat a arquitectar / dissenyar la meva pròpia plataforma de robots a causa de circumstàncies imprevistes.
L’objectiu és que sigui autònom, però primer necessitava provar la seva capacitat bàsica de conducció, així que vaig pensar que seria un divertit projecte secundari comportar-se i estar controlat com si es tractés d’un vehicle RC (radiocontrolat), en canvi, utilitzeu un Gamepad USB.
Els resultats han estat tan bons o millors del que esperava.
L’avantatge d’anar amb la ruta USB Gamepad, amb molta programació, és que el puc personalitzar i afegir al que ja he fet. No tinc cap experiència real construint un vehicle RC, però imagino que un està bastant enganxat amb qualsevol que sigui el transmissor RC (joysticks / botons, etc.) i el receptor RC.
Per exemple, he afegit un cert reconeixement que el robot ha xocat contra una paret, només amb el fet que el programari detecti corrents elevats i valors de velocitat de codificador baixos.
Opcionalment, es poden afegir algunes càmeres web USB al robot, depenent de la quantitat i la seva ubicació, es pot conduir el robot per la zona d'estar i cap a una altra habitació, mentre es troba assegut en un altre lloc davant de l'ordinador que té el Gamepad USB connectat a això.
Aquest instructiu no serà pas veritable, detallat, amb tot inclòs, pas a pas, però intentaré donar el màxim de detalls possible.
Subministraments
Parts suggerides: la majoria de les coses les he obtingut de Servo City (Actobotics).
2 - Canals en U de 13,5 , per als laterals del marc de la base. Els motors estan muntats en aquest. Vaig anar amb alguna cosa més curta i els meus motors es munten a les cantonades i va dificultar el muntatge.
Canals en U de 2 a 12 per a la part davantera i posterior del marc base.
2 - 15 canals en U per als para-xocs, davanters i posteriors
Canals en U de 2 a 7 (o era de 7,5 ?) Per a les columnes anteriors. Això no és massa crític, les longituds poden variar. Depèn de la mida de les columnes posteriors i a quina alçada trieu posar els angles Canal en U que es connecta entre ells.
2 - (longitud?) Canals en U per a l’angle, frontal a darrere, que connecten les columnes verticals. Aquest és fonamental, perquè Servo City / Actobotics ven panells o claudàtors angulats de 45 graus per a aquest propòsit, però haureu de fer algunes matemàtiques / trig per assegurar-vos que obteniu les longituds correctes.
2 - (llargada?) Canals en U per servir com a para-xocs laterals de nivell superior, de nou depenen del que feu amb la base
2 - (llargada?) Canals en U per servir com a para-xocs davanters i posteriors de nivell superior, idem per a la part superior.
1 - (longitud?) Canal en U per servir com a membre superior, que abasta les columnes posteriors. Pot ser que aquest no sigui massa crític, ja que podeu muntar-lo a sobre o al davant o darrere de les columnes verticals.
12 (aprox) canals en L o claudàtors. Aquests serveixen per a múltiples propòsits, però essencialment proporcionen integritat / resistència estructural a les cantonades del marc base I a les columnes verticals.
4 (+?) Canals plans de 3 forats a 5 forats. Aquests també proporcionen resistència estructural al robot.
ServoCity ven dos tipus principals de panells plans de gran superfície, útils per utilitzar-los com a patins inferiors o cap a on anirien la bateria o els controladors, o fins i tot per a superfícies superiors per a sensors.
Hi ha un tauler de 4 (4,5?) "X 12" i crec que l'altre és un tauler de 9 (9,5?) "X 12".
Ara és aquí on les coses es posen interessants i poden resultar confuses i costoses (se sumen peces petites). Tots els canals, etc., es poden connectar entre ells mitjançant aquestes peces de connexió, de les quals hi ha DIVERSOS. Aquí és on em sap greu no tenir una llista completa, detallada i específica de peces.
I el cas és que, realment, no sabeu quines podríeu necessitar o quantes.. perquè hi ha moltes maneres d’ajustar aquestes peces.
Puc enumerar el que he utilitzat:
www.servocity.com/90-quad-hub-mount-c
www.servocity.com/side-tapped-pattern-moun…
www.servocity.com/90-quad-hub-mount-d
Els dos següents són molt útils i només me’n faríem amb aquests:
www.servocity.com/single-screw-plate
www.servocity.com/dual-screw-plate
A continuació es mostren tots els cargols (cargols). Vaig començar amb un paquet de CADA mida i n’he passat per la majoria. He utilitzat cargols més llargs on la mida no importava i he reservat els més curts per on eren REQUISITS perquè no funcionaria cap altra longitud.
Per últim, n’haureu d’aconseguir 1 bossa:
www.servocity.com/6-32-nylock-nuts-pack
No en vaig fer servir tants, però (crec) són fonamentals per assegurar-me que els motors no vibrin solts del quadre amb el pas del temps. Només funcionarien dos per motor, a causa del canal U.
Necessiteu almenys 4 d'aquests, en podreu obtenir un de més o menys en cas de causar-ne danys (confieu en mi, és possible que estigueu engegant / traient els motors algunes vegades):
www.servocity.com/heavy-duty-clamping-shaf…
Normalment, els eixos dels motors fan 6 mm i els eixos són de 0,25 polzades.
Obtindria uns cargols negres, suposadament més forts, i els faria servir per a les pinces anteriors i NO faria servir els cargols que vénen amb les pinces:
(Crec que són aquests):
Rodaments de 4 - 1/4 "(0,25") de diàmetre
1 - bossa de separadors negres de 1/4"
4 - Hubs D de subjecció
www.servocity.com/0-770-clamping-d-hubs
4 - Eixos en D (# 6340621.375 "(1-3 / 8")
Rodes resistents de 4 a 6 polzades
www.servocity.com/6-heavy-duty-wheel
Tingueu en compte que m'encanten aquestes rodes, però tenen una vora de goma dura. Sembla que ho fan bé en terres durs i catifes i, probablement, en passejades de formigó dures. No ho farà bé sobre herba, sorra, etc.
TAMBÉ, tendiran a tacar-se la catifa !!!
4 - motors:
www.servocity.com/motors-actuators/gear-mo…
Vaig anar amb 223 RPM, bona velocitat interior, també podia moure el meu robot (pesat amb 2 bateries SLA 12V) amb facilitat a càmera lenta.
2 - codificadors de motors per als motors. (Roboclaw de Servo City només gestiona 2 codificadors)
1 - Controlador de motor Roboclaw 2X45A, assegureu-vos que obteniu el que conté els blocs de terminals verds, no els pins … welll … cadascun té els seus avantatges. Retrospectiva.. Potser hauria aconseguit els passadors.
Crec que és això de Servo City.
SparkFun ven Arduino Uno (això és el que jo feia servir), i també Redboard Artemis com a gestor del vostre disc.
Voleu un Raspberry Pi 3 (o 4?) Com a "cervell" i interfície d'alt nivell per a vosaltres.
Necessitareu cablejat, interruptors, fusibles i un díode "flyback" molt robust.
He utilitzat una bateria SLA de cicle profund Duracell 12V 14AH, però es pot utilitzar qualsevol cosa.
AVÍS! El disseny d’aquest robot (TALL i WIDE, però CURT), suposa una mena de centre de gravetat pesat, com la que proporcionaria una bateria SLA. Pot ser que no vagi bé amb altres tipus de bateries de tecnologia més nova. LiPo, Lion, etc. Es podria bolcar fàcilment.
De Pololu vaig obtenir uns quants adaptadors de connexió de barril, de manera que podia alimentar independentment l’Arduino i / o el Redboard, tot i que estarien connectats al Raspberry mitjançant USB, perquè no volia haver de confiar en la potència del Raspberry.. (Especialment muntatge de càmeres, sensors, etc.)
Necessitareu un regulador de tensió reduït de 12 a 5V, mínim 5A (?) Per al gerd. Els altres poden gestionar qualsevol cosa entre 7 i 15V tan directament a la bateria SLA.
Això és tot per a les peces.
El que NO faria: engranatge bisellat de 90 graus.
Una vegada més, hi ha molts vídeos a la meva llista de reproducció de youtube de Robotics que detallen la majoria dels anteriors.
Pas 1: construcció
Francament, tots els meus passos de construcció ja són en forma de youtubes. Podeu veure els que apareixen a la meva llista de reproducció de Robòtica, començant per "Wallace Robot 4". Les anteriors (Wallace II, Wallace III) també tenen bon material
www.youtube.com/playlist?list=PLNKa8O7lX-w…
Pas 2: proveu el Roboclaw, els motors i els codificadors
Els fabricants de Roboclaw (BasicMicro) tenen una aplicació de Windows que podeu utilitzar per assegurar-vos que heu connectat correctament els motors i codificadors a Roboclaw. Connectareu motors del mateix costat en paral·lel al Roboclaw. Podeu utilitzar els cables del codificador, només als motors posteriors o als motors anteriors, o potser millor, DIAGONAMENT.
El motiu del meu suggeriment té a veure amb (més endavant) buscar un robot atrapat. Tenir un estat en diagonal de si les rodes davanteres / posteriors no giren pot ser millor que només la part davantera o només la posterior.
NOTA: el que NO he fet és fer servir l’Arduino per connectar-me també (mitjançant pins GPIO) als codificadors; si ho féssiu, podríeu tenir el codificador Roboclaw amb 2 codificadors i, a continuació, fer que l’Arduino controlés els altres dos, i només consulta el Roboclaw pels seus dos valors (i velocitats) del codificador.
NOTA: He utilitzat l'aplicació de BasicMicro per configurar prèviament el Roboclaw per Ramping Up / Ramping Down. Això és bo per protegir el maquinari i l’electrònica. Hi ha un vídeo sobre això a la meva llista de reproducció de Robotics.
Gairebé m’oblidava: també vaig comprar alguns cables de connectors de bala que van entre els cables del motor i el Roboclaw. NOTA: si feu això, notareu que la longitud total del cable és REALMENT LLARGA. Però no volia haver de tallar-ne cap si no ho necessitava. Vaig trobar (per a passos posteriors) problemes de comunicació amb l'USB entre el Raspberry i l'Arduino, probablement a causa del soroll EMI.. però he treballat amb el programari.
Si es converteix en un problema, podeu tallar els cables; també podeu comprar blindatge metàl·lic (d'Amazon, 1 de diàmetre).
Últim: això encara ho he de fer: tenir la configuració o sintonització automàtica de Roboclaw (mitjançant codificadors) perquè els motors laterals esquerre i dret es moguin a la mateixa velocitat i el robot vagi recte.
El meu corba molt lleugerament sobre uns 12 peus, però no és suficient per sentir la necessitat de fer-hi res.
Pas 3: Afegir i programar l'Arduino
Necessitareu l'endoll de canó i alguns cables, també un cable USB. Assegureu-vos que obtingueu el correcte per al connector Arduino.
Haureu de descarregar l’IDE Arduino.
Aquí, a Github, es mostra l’últim esbós que maneja la conducció del robot:
github.com/elicorrales/wallace.robot.ardui…
Connectareu l'Arduino a l'ordinador que executa l'IDE i, segons la forma en què s'escriu l'esbós, faríeu servir els pins 10 i 11 de l'Arduino per a comunicacions en sèrie (Software Serial) amb Roboclaw.
Vaig desenvolupar un protocol de comunicacions senzill entre el Raspberry Pi i l’Arduino.
Es basa en caràcters ASCII, cosa que facilita la depuració i la prova només mitjançant la finestra del "monitor serial" de l'IDE Arduino.
Les ordres comencen pel número "0" (zero) i només pugen si cal
Les ordres que comencen als "20" són ordres directes de Roboclaw, i les que estan per sota d'aquest nombre són ordres estrictament relacionades amb Arduino.
A causa del soroll EMI, vaig millorar la cadena d'ordres per incloure una suma de comprovació.
Per tant, qualsevol cadena inclourà:
# nombre de fitxes a la cadena inclosa aquesta
la suma de comprovació
Per exemple, diguem que voleu que Arduino respongui amb el seu menú d'ordres:
4 0 12 16
"4" són quatre fitxes en cadena.
"0" és l'ordre MENU.
"12" és el número aleatori que he triat.
"16" és la suma de 4 + 0 + 12.
La mateixa ordre MENU podria ser diferent:
4 0 20 24
Com que he escollit un número aleatori diferent, la suma de verificació també és diferent.
Per exemple, suposem que voleu avançar al 100% de velocitat:
5 29 0 134 100
"5" cinc fitxes
"29" l'ordre FORWARD
"0" el número aleatori
"134" la suma de comprovació
"100" el paràmetre 1 (la velocitat en aquest cas)
Si l'Arduino no pot verificar aquesta cadena entrant, simplement la deixa caure / ignora, sense resposta.
Si l'Arduino no rep una ordre de moviment següent amb X mil·lisegons, envia uns motors STOP al Roboclaw.
L'Arduino s'inicia i comença a enviar un estat automàtic al port USB … tret que se li digui que deixi de fer-ho.
En aquest moment, hauríeu d'estar preparats per provar de controlar el Roboclaw i veure com es giren els motors, només fent servir el "Monitor de sèrie" de l'IDE.
Pas 4: Afegir i programar el Raspberry Pi (node.js)
Una vegada més, si mireu la meva llista de reproducció de Robotics, fins i tot des del principi, he repassat tots els passos per posar en funcionament el gerd.
L'única cosa que podria haver analitzat és que necessitareu un regulador de 5V i, d'alguna manera, construireu, tallareu / modificareu un cable USB o bé alimentareu el gerd d'una altra manera.
A Github hi ha tot el que necessiteu al gerd per comunicar-vos amb l’Arduino mitjançant USB.
github.com/elicorrales/wallace.robot.raspb…
Fins i tot hi ha scripts de prova.
Podeu fer una ullada al codi del servidor node.js i veureu com el gerd converteix les instruccions numèriques concrets en cadenes d’URL de tipus REST. Podeu utilitzar "curl" per enviar ordres de prova.
Exemple:
la vostra adreça IP RP3: 8084 / arduino / api / forward / 50
farà que els motors facin girar momentàniament les rodes cap endavant.
Si poseu això en un bucle de script de shell, veureu que les rodes continuen girant.
El codi node.js (server.js) inclou una funció de reconnexió en cas que es perdin comunicacions serials a Arduino. Podeu provar-ho només desconnectant l'Arduino del gerd i torneu-lo a endollar.
Assegureu-vos que coincideixi amb la velocitat de transmissió en sèrie entre els dos.
A causa de que Arduino va deixar caure paquets de dades defectuosos i perquè a nivell de node.js i a nivell de javascript del navegador, tot està codificat per enviar moltes ordres de "unitat", he estat capaç d'executar fins a 2 000 000 de bauds (2 Mbps).
Si feu que s’executin els scripts de prova i veieu com les rodes giren, llavors esteu a punt per al següent pas.
Pas 5: pas final: programació / ús del client de la pàgina web
S'inclouen a l'enllaç Github a la part Raspberry de tot això els fitxers de client.
index.html. index.js. p5.min.js.
Manegen el Gamepad USB mitjançant l'API Gamepad (basat en navegador) i hauríeu de veure els diversos botons i control lliscants també disponibles a la pàgina web.
El codi javascript consulta (enquesta) els valors dels eixos X i Y per a un dels joysticks.. (depenent dels joysticks / gamepad que tingueu, potser haureu de modificar el codi). Enquesta molt ràpidament i dispara tots aquests valors al servidor node.js que escolta al 8084.
Els valors bruts de l'eix X i Y dels joysticks es troben entre 0 i 1.
Però la funció de biblioteca de controladors de motors Roboclaw que s’utilitza a l’Arduino per conduir els motors, espera un valor entre -100 a 0 (cap enrere) o (0 a 100) cap endavant.
Soo … aquest és el propòsit d'incloure p5.min.js. Simplement passa per tenir aquesta funció map () molt agradable i còmoda on li atorgueu el valor en brut, el rang en brut (actual) i el nou interval desitjat. I converteix el valor en brut en el valor del nou interval assignat.
Un altre punt: a 100 velocitats, el robot pot ser molt complicat. Em trobava constantment amb alguna cosa. Però, fins i tot a mesura que es millora, continua sent tàctil quan gira a l’esquerra o a la dreta.
Alguna cosa que heu d'afegir seria similar al control lliscant de velocitat màxima actual de la pàgina web. Aquest control lliscant determina quin és el valor màxim o màxim al qual assignareu els joysticks Xs i Ys.
Exemple:
Digueu que esteu assignant 0 -> 1 a 0 -> 100. Quan premeu el joystick al punt final, esteu a 100. Touchy. Pot ser massa ràpid.
Però, si llisqueu una mica el control lliscant de velocitat màxima, ara assignareu 0 -> 1 a 0 -> 80 o 70.
Això vol dir que teniu més marge de maniobra per moure el joystick sense que s'enviï un canvi tan gran en la velocitat al node.js (i a l'Arduino).
I, a més, podeu fer separar les X (girar a l'esquerra o a la dreta) de les Y (cap endavant o cap enrere) a les seves pròpies velocitats màximes disponibles.
Per tant, podeu deixar la Ys de 0 a 100, de 0 a -100 per a un moviment lineal ràpid, però baixar la velocitat màxima de Xs per obtenir un moviment de rotació més controlat. El millor dels dos mons.
Pas 6: opcional: condueix el robot amb arrossegament del ratolí i / o esdeveniments tàctils
Si heu arribat fins aquí, ja sabeu que les capes de programari que comencen des del navegador i passen pel Javascript fins al servidor Raspberry node.js, finalment a l’arduino, estan convertint el joystick del Gamepad en coordenades X i Y en el format " endavant "(o" enrere ", etc.) (i el seu valor de velocitat).
A més, ja sabeu que, tot i que les manetes X i Y de les palanques de control són negatives d'1 a zero, a més d'1, s'han de convertir entre zero i 100. Bé, el màxim depèn de la velocitat màxima configurada a la pàgina web.
Soo … l'únic que cal fer per utilitzar el ratolí o tocar esdeveniments (com en un telèfon intel·ligent) és capturar aquests esdeveniments, agafar les X i les Y.
PER ---- ---- aquestes Xs i Ys NO es troben entre l'1 i l'1 negatiu. Comencen a 0 i augmenten positivament, perquè són essencialment els píxels o les coordenades de pantalla relatives d'algun element HTML (com ara un tauler d'arrencada) o un llenç.
De nou, la funció "map ()" de la biblioteca Js de P5 és molt útil per tornar a mapar allò que necessitem.
Vaig reformar el codi per tenir dues pàgines web diferents, una per a ordinadors mitjançant el Gamepad, una altra per a mòbils, mitjançant els esdeveniments tàctils.
A més, un cop assignades les Xs i les Ys, s’introdueixen a la mateixa cadena de codi, etc., igual que les Xs i les Ys del Gamepad.
Recomanat:
Control de ràdio RF 433MHZ mitjançant HT12D HT12E - Fer un control remot RF mitjançant HT12E i HT12D amb 433mhz: 5 passos
Control de ràdio RF 433MHZ mitjançant HT12D HT12E | Fer un control remot RF mitjançant HT12E i HT12D amb 433 mhz: en aquest instructiu us mostraré com fer un control remot RÀDIO mitjançant un mòdul receptor de transmissor 433 mhz amb codificació HT12E i amp; IC descodificador HT12D. En aquest instructiu, podeu enviar i rebre dades mitjançant COMPONENTS molt econòmics COM: HT
Converteix una memòria USB ordinària en una memòria USB segura: 6 passos
Converteix una memòria USB ordinària en una memòria USB segura: en aquest manual aprendrem a convertir una memòria USB normal en una memòria USB segura. Tot amb funcions estàndard de Windows 10, res d’especial i res de més. Què necessiteu: una memòria USB o un disc dur. Us recomano getti
Qui és a la porta, un sistema de càmera accionat per Alexa: 3 passos
Qui és a la porta, un sistema de càmera accionat per Alexa: de vegades, mentre mireu la televisió, no voleu respondre a la porta tret que sigui important. Aquest projecte us permet veure la persona a la porta simplement indicant al dispositiu Echo d'Amazon "Alexa, activeu el monitor de la porta". Comproveu qui apareix
Ascensor accionat per aigua: 5 passos (amb imatges)
Ascensor accionat per aigua: per a la meva valoració final, vaig optar per crear un ascensor accionat per aigua que es mogués amunt i avall i reomplís un dipòsit quan estigui acabat. els elements per fer funcionar aquest ascensor són el sensor d’aigua X1 Servidors X2LCD X1 Resistors X2LED X1Butó X1 Taula de pa X1
Diri: el globus d'heli accionat: 6 passos
Diri: el globus d'heli accionat: en aquest instructiu us guiaré a través del procés de creació d'un globus d'heli autònom que documenti l'espai. Mireu el vídeo: https://www.youtube.com/watch?v=NwzptoiYJdUTel globus i la carcassa són de fabricació pròpia, l'electrònic