![Robot de sélection et de placement de base Arduino : 8 étapes Robot de sélection et de placement de base Arduino : 8 étapes](https://i.howwhatproduce.com/images/011/image-30154-j.webp)
Table des matières:
- Étape 1: Exigence des composants
- Étape 2: Télécharger l'interface graphique
- Étape 3: Connexion
- Étape 4: Téléchargez le micrologiciel et vérifiez le résultat du code dans le tableau de bord Arduino
- Étape 5: Concevez et imprimez toutes les pièces en feuille de contreplaqué
- Étape 6: Assemblage
- Étape 7: Configurer les paramètres GBRL
- Étape 8: téléchargez le code final et vérifiez le résultat virtuel dans le tableau de bord du logiciel Arduino Uno
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-23 14:45
![Robot de sélection et de placement de base Arduino Robot de sélection et de placement de base Arduino](https://i.howwhatproduce.com/images/011/image-30154-1-j.webp)
![Robot de sélection et de placement de base Arduino Robot de sélection et de placement de base Arduino](https://i.howwhatproduce.com/images/011/image-30154-2-j.webp)
![Robot de sélection et de placement de base Arduino Robot de sélection et de placement de base Arduino](https://i.howwhatproduce.com/images/011/image-30154-3-j.webp)
J'ai fabriqué un bras robotique industriel très bon marché (moins de 1000 dollars) pour permettre aux étudiants de pirater la robotique à plus grande échelle et pour permettre aux petites productions locales d'utiliser des robots dans leurs processus sans se ruiner. C'est facile à construire et à rendre le groupe d'âge des personnes de 15 à 50 ans.
Étape 1: Exigence des composants
![Exigences de composants Exigences de composants](https://i.howwhatproduce.com/images/011/image-30154-4-j.webp)
![Exigences de composants Exigences de composants](https://i.howwhatproduce.com/images/011/image-30154-5-j.webp)
![Exigences de composants Exigences de composants](https://i.howwhatproduce.com/images/011/image-30154-6-j.webp)
![Exigences de composants Exigences de composants](https://i.howwhatproduce.com/images/011/image-30154-7-j.webp)
1. Arduino + Shield + Broches + Câbles
2. Contrôleur de moteur: dm860A (Ebay)
3. Moteur pas à pas: 34hs5435c-37b2 (Ebay)
4. Boulons M8x45+60+70 et boulons M8.
5. Contreplaqué de 12 mm.
6. Nylon de 5 mm.
7. Rondelles aveugles 8mm.
8. Vis à bois 4.5x40mm.
9. Comptoir M3 coulé, 10. Alimentation 12v
11. pilote de servomoteur arduino
Étape 2: Télécharger l'interface graphique
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Étape 3: Connexion
![Lien Lien](https://i.howwhatproduce.com/images/011/image-30154-8-j.webp)
![Lien Lien](https://i.howwhatproduce.com/images/011/image-30154-9-j.webp)
![Lien Lien](https://i.howwhatproduce.com/images/011/image-30154-10-j.webp)
Connectez les fils qui sont donnés dans l'image est une meilleure compréhension pour vous.
nous devons connecter le pilote du moteur à Arduino et à d'autres connecteurs requis selon votre robot.
Étape 4: Téléchargez le micrologiciel et vérifiez le résultat du code dans le tableau de bord Arduino
Installation du firmware sur Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
Remarque: vous pouvez rencontrer un conflit lors de la compilation dans Arduino. Supprimez toutes les autres bibliothèques de votre dossier de bibliothèque (../documents/Arduino/libraries).
Configuration du micrologiciel
Réglez l'activation sur un délai d'expiration plus récent. Utilisez une connexion série et écrivez:
$1=255
Définir le référencement:
$22=1
N'oubliez pas de régler la série sur baud: 115200
Codes G utiles
Définir le point zéro pour le robot:
G10 L2 Xnnn Ynnn Znnn
Utiliser le point zéro:
G54
Initialisation typique pour centrer le robot:
G10 L2 X1.5 Y1.2 Z1.1
G54
Déplacez le robot en position rapide:
G0 Xnnn Ynnn Znnn
Exemple:
G0 X10.0 Y3.1 Z4.2 (retour)
Déplacez le robot vers une position à une vitesse spécifique:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (retour)
F doit être compris entre 10 (slooooow) et 600 (rapide)
Unités par défaut pour X, Y et Z
Lors de l'utilisation des paramètres de pas/unités par défaut (250 pas/unité) pour GRBL et
Entraînement pas à pas configuré pour 800 pas/tour, les unités suivantes s'appliquent à tous les axes:
+- 32 unités = +- 180 degrés
Exemple de code de traitement:
Ce code peut communiquer directement avec l'Arduino GRBL.
github.com/damellis/gctrl
N'oubliez pas de régler la série sur baud: 115200
Code uoload dans ardunio
importer java.awt.event. KeyEvent;
importer javax.swing. JOptionPane;
import processing.serial.*;
Port série = nul;
// sélectionnez et modifiez la ligne appropriée pour votre système d'exploitation
// laissez null pour utiliser le port interactif (appuyez sur 'p' dans le programme)
Chaîne nom de port = null;
//Chaîne nom de port = Serial.list()[0]; // Mac OS X
//Chaîne nom de port = "/dev/ttyUSB0"; //Linux
//Chaîne nom de port = "COM6"; // Les fenêtres
flux booléen = faux;
vitesse flottante = 0,001;
String gcode;
entier je = 0;
void openSerialPort()
{
if (nom de port == null) return;
if (port != null) port.stop();
port = new Serial(this, portname, 115200);
port.bufferUntil('\n');
}
void selectSerialPort()
{
Résultat de la chaîne = (chaîne) JOptionPane.showInputDialog (ceci, "Sélectionnez le port série qui correspond à votre carte Arduino.", "Sélectionner le port série", JOptionPane. PLAIN_MESSAGE, nul, Serial.list(), 0);
if (résultat != nul) {
nom de port = résultat;
openSerialPort();
}
}
void setup()
{
taille (500, 250);
openSerialPort();
}
tirage nul()
{
arrière-plan(0);
remplir(255);
entier y = 24, dy = 12;
text("INSTRUCTIONS", 12, y); y += dy;
text("p: sélectionnez le port série", 12, y); y += dy;
text("1: régler la vitesse sur 0,001 pouce (1 mil) par jogging", 12, y); y += dy;
text("2: régler la vitesse sur 0,010 pouce (10 mil) par jogging", 12, y); y += dy;
text("3: régler la vitesse sur 0,100 pouce (100 mil) par jogging", 12, y); y += dy;
text("touches fléchées: jog dans le plan x-y", 12, y); y += dy;
text("page up & page down: jogging sur l'axe z", 12, y); y += dy;
text("$: afficher les paramètres grbl", 12, y); y+= dy;
text("h: rentrer à la maison", 12, y); y += dy;
text("0: zéro machine (réglé à la maison à l'emplacement actuel)", 12, y); y += dy;
text("g: diffuser un fichier g-code", 12, y); y += dy;
text("x: arrêter la diffusion du g-code (ceci n'est PAS immédiat)", 12, y); y += dy;
y = hauteur - dy;
text("vitesse de jogging actuelle: " + vitesse + " pouces par pas", 12, y); y -= dy;
text("port série actuel: " + nom de port, 12, y); y -= dy;
}
touche videAppuyée ()
{
si (touche == '1') vitesse = 0,001;
si (touche == '2') vitesse = 0,01;
si (touche == '3') vitesse = 0,1;
si (!streaming) {
if (keyCode == LEFT) port.write("G91\nG20\nG00 X-" + vitesse + " Y0.000 Z0.000\n");
if (keyCode == RIGHT) port.write("G91\nG20\nG00 X" + vitesse + " Y0.000 Z0.000\n");
if (keyCode == UP) port.write("G91\nG20\nG00 X0.000 Y" + vitesse + " Z0.000\n");
if (keyCode == DOWN) port.write("G91\nG20\nG00 X0.000 Y-" + vitesse + " Z0.000\n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write("G91\nG20\nG00 X0.000 Y0.000 Z" + vitesse + "\n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write("G91\nG20\nG00 X0.000 Y0.000 Z-" + vitesse + "\n");
//if (clé == 'h') port.write("G90\nG20\nG00 X0.000 Y0.000 Z0.000\n");
if (clé == 'v') port.write("$0=75\n$1=74\n$2=75\n");
//if (clé == 'v') port.write("$0=100\n$1=74\n$2=75\n");
if (clé == 's') port.write("$3=10\n");
if (clé == 'e') port.write("$16=1\n");
if (clé == 'd') port.write("$16=0\n");
if (clé == '0') openSerialPort();
if (clé == 'p') selectSerialPort();
if (clé == '$') port.write("$$\n");
if (clé == 'h') port.write("$H\n");
}
if (!streaming && clé == 'g') {
gcode = null; je = 0;
Fichier fichier = nul;
println("Chargement du fichier…");
selectInput("Sélectionnez un fichier à traiter:", "fileSelected", file);
}
if (clé == 'x') streaming = false;
}
void fileSelected (Sélection de fichier) {
if (sélection == null) {
println("La fenêtre a été fermée ou l'utilisateur a cliqué sur annuler.");
} autre {
println("Utilisateur sélectionné " + selection.getAbsolutePath());
gcode = loadStrings(selection.getAbsolutePath());
if (gcode == null) return;
diffusion = vrai;
flux();
}
}
flux vide()
{
si (!streaming) retourne;
tandis que (vrai) {
if (i == gcode.length) {
diffusion en continu = faux;
revenir;
}
if (gcode.trim().length() == 0) i++;
sinon casser;
}
println(gcode);
port.write(gcode + '\n');
je++;
}
void serialEvent(Serial p)
{
Chaîne s = p.readStringUntil('\n');
println(s.trim());
if (s.trim().startsWith("ok")) stream();
if (s.trim().startsWith("error")) stream(); // XXX: vraiment ?
}
Étape 5: Concevez et imprimez toutes les pièces en feuille de contreplaqué
![Concevoir et imprimer toutes les pièces en feuille de contreplaqué Concevoir et imprimer toutes les pièces en feuille de contreplaqué](https://i.howwhatproduce.com/images/011/image-30154-11-j.webp)
Téléchargez la pièce et la conception du robot dans AutoCAD et imprimez-la sur la feuille de contreplaqué de 12 mm et la partie finition et conception. Si quelqu'un a besoin d'un fichier cad, laissez le commentaire dans la zone de section des commentaires, je vous l'enverrai directement.
Étape 6: Assemblage
![Assemblée Assemblée](https://i.howwhatproduce.com/images/011/image-30154-12-j.webp)
![Assemblée Assemblée](https://i.howwhatproduce.com/images/011/image-30154-13-j.webp)
rassembler toute la partie et disposer dans la séquence sur image qui est donnée et suivre le schéma de l'image.
Étape 7: Configurer les paramètres GBRL
Réglage qui a fait ses preuves sur nos robots.
$0=10 (step pulse, usec) $1=255 (step inactif delay, msec) $2=7 (step port invert mask:00000111) $3=7 (dir port invert mask:00000111) $4=0 (step enable invert, bool) 5 $ = 0 (inversion des broches de limite, bool) 6 $=1 (inversion des broches de la sonde, bool) 10 $=3 (masque de rapport d'état: 00000011) 11 $=0,020 (déviation de jonction, mm) 12 $=0,002 (tolérance d'arc, mm) 13 $ =0 (rapport pouces, bool) $20=0 (limites souples, bool) $21=0 (limites dures, bool) $22=1 (cycle de référencement, bool) $23=0 (homing dir invert mask:00000000) $24=100.000 (homing feed, mm/min) $25=500.000 (homing cherche, mm/min) $26=250 (homing antibounce, msec) $27=1.000 (homing pull-off, mm) $100=250.000 (x, pas/mm) $101= 250 000 (y, pas/mm) 102 $=250 000 (z, pas/mm) 110 $=500 000 (x taux max, mm/min) 111 $=500 000 (y taux max, mm/min) 112 $=500 000 (z taux max, mm/min) 120 $=10.000 (x accel, mm/sec^2) 121$=10.000 (y accel, mm/sec^2) $122=10.000 (z accel, mm/sec^2) $130=200.000 (x course max, mm) 131 $=200 000 (y course max, mm) 132 $=200 000 (z course max, mm)
Étape 8: téléchargez le code final et vérifiez le résultat virtuel dans le tableau de bord du logiciel Arduino Uno
// Unités: CM
float b_height = 0;
flotteur a1 = 92;
flottant a2 = 86;
float snude_len = 20;
booléen doZ = faux;
float base_angle;// = 0;
float arm1_angle; // = 0;
float arm2_angle; //= 0;
flottant bx = 60; // = 25;
flotter par = 60; // = 0;
flottant bz = 60; // = 25;
flottant x = 60;
flottant y = 60;
flotteur z = 60;
flotteur q;
flotteur c;
flotteur V1;
flotteur V2;
flotteur V3;
flotteur V4;
flotteur V5;
void setup() {
taille (700, 700, P3D);
cam = nouveau PeasyCam (ceci, 300);
cam.setMinimumDistance(50);
cam.setMaximumDistance(500);
}
tirage nul () {
//ligneur:
y = (sourisX - largeur/2)*(-1);
x = (sourisY - hauteur/2)*(-1);
bz = z;
par = y;
bx = x;
float y3 = sqrt(bx*bx+by*by);
c = sqrt(y3*y3 + bz*bz);
V1 = acos((a2*a2+a1*a1-c*c)/(2*a2*a1));
V2 = acos((c*c+a1*a1-a2*a2)/(2*c*a1));
V3 = acos((y3*y3+c*c-bz*bz)/(2*y3*c));
q = V2 + V3;
bras1_angle = q;
V4 = radians(90,0) - q;
V5 = radians (180) - V4 - radians (90);
arm2_angle = radians (180,0) - (V5 + V1);
base_angle = degrés(atan2(bx, by));
bras1_angle=degrés(bras1_angle);
arm2_angle=degrés(arm2_angle);
//println(par, bz);
//bras1_angle = 90;
//bras2_angle = 45;
/*
bras2_angle = 23;
bras1_angle= 23;
bras2_angle=23;
*/
// interactif:
// si (doZ)
//
// {
// angle_base = angle_base+ mouseX-pmouseX;
// } autre
// {
// bras1_angle = bras1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
draw_robot(base_angle, -(arm1_angle-90), arm2_angle+90 - (-(arm1_angle-90)));
// println(base_angle + ", " + arm1_angle + ", " + arm2_angle);
}
void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotationX(1.2);
rotationZ(-1,2);
arrière-plan(0);
lumières();
pushMatrix();
// BASE
remplir (150, 150, 150);
box_corner (50, 50, b_height, 0);
rotation(radians(base_angle), 0, 0, 1);
// ARM 1
remplir (150, 0, 150);
box_corner (10, 10, a1, arm1_angle);
// ARM 2
remplir (255, 0, 0);
box_corner (10, 10, a2, arm2_angle);
// SNUDE
remplir (255, 150, 0);
box_corner (10, 10, snude_len, -arm1_angle-arm2_angle+90);
popMatrice();
pushMatrix();
float action_box_size=100;
translate(0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix();
translate(x, action_box_size-y-action_box_size/2, z-action_box_size/2);
remplir (255, 255, 0);
boîte(20);
popMatrice();
remplir (255, 255, 255, 50);
box(action_box_size, action_box_size, action_box_size);
popMatrice();
}
void box_corner(float w, float h, float d, float rotation)
{
rotation(radians(rotation), 1, 0, 0);
translate(0, 0, d/2);
boîte(l, h, d);
translate(0, 0, d/2);
}
touche videAppuyée ()
{
si (clé == 'z')
{
doZ = !doZ;
}
si (clé == 'h')
{
// met tout à zéro
bras2_angle = 0;
bras1_angle = 90;
base_angle = 0;
}
si (clé == 'g')
{
println(degrés(V1));
println(degrés(V5));
}
si (keyCode == UP)
{
z ++;
}
if (keyCode == DOWN)
{
z --;
}
si (clé == 'o')
{
y = 50;
z = 50;
println(q);
println(c, "c");
println(V1, "V1");
println(V2);
println(V3);
println(bras1_angle);
println(V4);
println(V5);
println(bras2_angle);
}
}
Conseillé:
Menu d'affichage Arduino OLED avec option de sélection : 8 étapes
![Menu d'affichage Arduino OLED avec option de sélection : 8 étapes Menu d'affichage Arduino OLED avec option de sélection : 8 étapes](https://i.howwhatproduce.com/images/001/image-1352-j.webp)
Menu d'affichage Arduino OLED avec option de sélection : dans ce didacticiel, nous apprendrons à créer un menu avec une option de sélection à l'aide de l'affichage OLED et de Visuino.Regardez la vidéo
Sélection d'un moteur pas à pas et d'un pilote pour un projet d'écran d'ombrage automatisé Arduino : 12 étapes (avec images)
![Sélection d'un moteur pas à pas et d'un pilote pour un projet d'écran d'ombrage automatisé Arduino : 12 étapes (avec images) Sélection d'un moteur pas à pas et d'un pilote pour un projet d'écran d'ombrage automatisé Arduino : 12 étapes (avec images)](https://i.howwhatproduce.com/images/001/image-914-40-j.webp)
Sélection d'un moteur pas à pas et d'un pilote pour un projet d'écran d'ombrage automatisé Arduino : dans ce Instructable, je vais passer en revue les étapes que j'ai suivies pour sélectionner un moteur pas à pas et un pilote pour un prototype de projet d'écran d'ombrage automatisé. Les écrans d'ombrage sont les modèles à manivelle Coolaroo populaires et bon marché, et je voulais remplacer t
Vérificateur de batterie avec sélection de température et de batterie : 23 étapes (avec photos)
![Vérificateur de batterie avec sélection de température et de batterie : 23 étapes (avec photos) Vérificateur de batterie avec sélection de température et de batterie : 23 étapes (avec photos)](https://i.howwhatproduce.com/images/006/image-17797-11-j.webp)
Vérificateur de batterie avec sélection de la température et de la batterie : testeur de capacité de la batterie. Avec cet appareil, vous pouvez vérifier la capacité de la batterie 18650, acide et autres (la plus grande batterie que j'ai testée est une batterie acide 6v 4,2A). Le résultat du test est en milliampère/heure. Je crée cet appareil car j'en ai besoin pour vérifier
Conseils sur la technique et le placement du microphone pour le chanteur : 5 étapes
![Conseils sur la technique et le placement du microphone pour le chanteur : 5 étapes Conseils sur la technique et le placement du microphone pour le chanteur : 5 étapes](https://i.howwhatproduce.com/images/001/image-2548-54-j.webp)
Conseils sur la technique et l'emplacement du microphone pour le chanteur : Pour les inexpérimentés, l'utilisation d'un microphone peut initialement sembler une opération assez facile. Vous parlez ou chantez simplement dans le morceau rond au sommet et un son magnifiquement clair et équilibré sera émis par les haut-parleurs, largement acclamé par l'a
Dispositif supérieur de sélection d'adhésif de technologie d'assistance : 8 étapes
![Dispositif supérieur de sélection d'adhésif de technologie d'assistance : 8 étapes Dispositif supérieur de sélection d'adhésif de technologie d'assistance : 8 étapes](https://i.howwhatproduce.com/images/001/image-66-78-j.webp)
Dispositif supérieur de récupération d'adhésif à technologie d'assistance : cet appareil est conçu pour ramasser de petits objets (pièces de monnaie, cartes de crédit, sachets de thé, papiers) à l'aide d'un mécanisme adhésif en position assise ou debout. L'appareil est manuel, mais est conçu pour être facile à utiliser pour une personne dont la force de la main est limitée