
#3
Posté 25 janvier 2020 - 05:58
Je n'ai utilisé que le 12V
#5
Posté 25 janvier 2020 - 06:24
Sur la base, le bras 2 et le bras 3 il y a un système de poulie courroie avec rapport qui augmente le couple
Sur le bras 1 c'est en direct sur un plus gros moteur avec 2 arbres de sortie
#9
Posté 25 janvier 2020 - 06:41
#10
Posté 25 janvier 2020 - 06:47
#11
Posté 25 janvier 2020 - 06:52
Si le but c'est de remplacer ta petite manette avec deux joysticks par ton smartphone avec le robot piloté par internet tu pourra virer la mega et juste la remplacer par une raspberry pi avec une caméra.
La pi peut sans problème piloter L298 et les servo =) et même de quoi piloter des relais pour allumer tes leds et autre =)
En plus vu que tout est sécurisé c'est top! =)
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#12
Posté 25 janvier 2020 - 06:53
Pour finir le code présent dans l'arduino mega
//Moteur_Base ( DC, 12v, Shield l298n(1a), rotation de la base ) const int Pin_Vitesse_Moteur_Base =10; const int Pin_Horaire_Moteur_Base =22; const int Pin_AntiHoraire_Moteur_Base =23; const int Pin_Joystick_1_X =A0; //Moteur_Bras_1 ( DC, 12v, Shield l298n(1b), mouvement 1er bras ) const int Pin_Vitesse_Moteur_Bras_1 =5; const int Pin_Horaire_Moteur_Bras_1 =24; const int Pin_AntiHoraire_Moteur_Bras_1 =25; const int Pin_Joystick_1_Y =A1; //Moteur_Bras_2 ( DC, 12v, Shield l298n(2a), mouvement 2eme bras ) const int Pin_Vitesse_Moteur_Bras_2 =11; const int Pin_Horaire_Moteur_Bras_2 =28; const int Pin_AntiHoraire_Moteur_Bras_2 =29; const int Pin_Joystick_2_X =A4; //Moteur_Pince ( DC, 12v, Shield l298n(2b), inclinaison pince ) const int Pin_Vitesse_Moteur_Pince =9; const int Pin_Horaire_Moteur_Pince =30; const int Pin_AntiHoraire_Moteur_Pince =31; const int Pin_Joystick_2_Y =A3; //Servo_Rotation_Pince ( Hitec, 10-190, 6v ) #include <Servo.h> Servo Servo_Rotation_Pince; const in Pin_Pot_Rotation_Pince = A6; int Val_Pot_Rotation_Pince; int Angle_Rotation_Pince; //Servo_Serrage_Pince ( Hitec, 10-190, 6v ) Servo Servo_Serrage_Pince; const in Pin_Pot_Serrage_Pince = A7; int Val_Pot_Serrage_Pince; int Angle_Serrage_Pince; void setup() { //Liaison serie Serial.begin(9600); //Moteur_Base pinMode(Pin_Vitesse_Moteur_Base, OUTPUT); pinMode(Pin_Horaire_Moteur_Base, OUTPUT); pinMode(Pin_AntiHoraire_Moteur_Base, OUTPUT); //Moteur_Bras_1 pinMode(Pin_Vitesse_Moteur_Bras_1, OUTPUT); pinMode(Pin_Horaire_Moteur_Bras_1, OUTPUT); pinMode(Pin_AntiHoraire_Moteur_Bras_1, OUTPUT); //Moteur_Bras_2 pinMode(Pin_Vitesse_Moteur_Bras_2, OUTPUT); pinMode(Pin_Horaire_Moteur_Bras_2, OUTPUT); pinMode(Pin_AntiHoraire_Moteur_Bras_2, OUTPUT); //moteur_Pince pinMode(Pin_Vitesse_Moteur_Pince, OUTPUT); pinMode(Pin_Horaire_Moteur_Pince, OUTPUT); pinMode(Pin_AntiHoraire_Moteur_Pince, OUTPUT); //Servo_Pince Servo_Rotation_Pince.attach(12); Servo_Serrage_Pince.attach(13); } void loop() { //Moteur_Base int Valeur_1_X = analogRead(Pin_Joystick_1_X); int Vitesse_Moteur_Base = Valeur_1_X; if(Vitesse_Moteur_Base > 510) { Vitesse_Moteur_Base -= 510; digitalWrite(Pin_Horaire_Moteur_Base, HIGH); digitalWrite(Pin_AntiHoraire_Moteur_Base, LOW); } else if(Vitesse_Moteur_Base < 490) { Vitesse_Moteur_Base = 490-Vitesse_Moteur_Base; digitalWrite(Pin_Horaire_Moteur_Base, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Base, HIGH); } else { Vitesse_Moteur_Base = 0; digitalWrite(Pin_Horaire_Moteur_Base, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Base, LOW); } Vitesse_Moteur_Base /= 2.5; analogWrite(Pin_Vitesse_Moteur_Base, Vitesse_Moteur_Base); //Moteur_Bras_1 int Valeur_1_Y = analogRead(Pin_Joystick_1_Y); int Vitesse_Moteur_Bras_1 = Valeur_1_Y; if(Vitesse_Moteur_Bras_1 > 510) { Vitesse_Moteur_Bras_1 -= 510; digitalWrite(Pin_Horaire_Moteur_Bras_1, HIGH); digitalWrite(Pin_AntiHoraire_Moteur_Bras_1, LOW); } else if(Vitesse_Moteur_Bras_1 < 490) { Vitesse_Moteur_Bras_1 = 490-Vitesse_Moteur_Bras_1; digitalWrite(Pin_Horaire_Moteur_Bras_1, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Bras_1, HIGH); } else { Vitesse_Moteur_Bras_1 = 0; digitalWrite(Pin_Horaire_Moteur_Bras_1, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Bras_1, LOW); } Vitesse_Moteur_Bras_1 /= 2.5; analogWrite(Pin_Vitesse_Moteur_Bras_1, Vitesse_Moteur_Bras_1); //Moteur_Bras_2 int Valeur_2_X = analogRead(Pin_Joystick_2_X); int Vitesse_Moteur_Bras_2 = Valeur_2_X; if(Vitesse_Moteur_Bras_2 > 510) { Vitesse_Moteur_Bras_2 -= 510; digitalWrite(Pin_Horaire_Moteur_Bras_2, HIGH); digitalWrite(Pin_AntiHoraire_Moteur_Bras_2, LOW); } else if(Vitesse_Moteur_Bras_2 < 490) { Vitesse_Moteur_Bras_2 = 490-Vitesse_Moteur_Bras_2; digitalWrite(Pin_Horaire_Moteur_Bras_2, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Bras_2, HIGH); else { Vitesse_Moteur_Bras_2 = 0; digitalWrite(Pin_Horaire_Moteur_Bras_2, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Bras_2, LOW); } Vitesse_Moteur_Bras_2 /= 2.5; analogWrite(Pin_Vitesse_Moteur_Bras_2, Vitesse_Moteur_Bras_2); //Moteur Pince int Valeur_2_Y = analogRead(Pin_Joystick_2_Y); int Vitesse_Moteur_Pince = Valeur_2_Y; if(Vitesse_Moteur_Pince > 510) { Vitesse_Moteur_Pince -= 510; digitalWrite(Pin_Horaire_Moteur_Pince, HIGH); digitalWrite(Pin_AntiHoraire_Moteur_Pince, LOW); } else if(Vitesse_Moteur_Pince < 490) { Vitesse_Moteur_Pince = 490-Vitesse_Moteur_Pince; digitalWrite(Pin_Horaire_Moteur_Pince, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Pince, HIGH); } else { Vitesse_Moteur_Pince = 0; digitalWrite(Pin_Horaire_Moteur_Pince, LOW); digitalWrite(Pin_AntiHoraire_Moteur_Pince, LOW); } Vitesse_Moteur_Pince /= 2.5; analogWrite(Pin_Vitesse_Moteur_Pince, Vitesse_Moteur_Pince); // Servo_Rotation_Pince Val_Pot_Rotation_Pince = analogRead(Pin_Pot_Rotation_Pince); Angle_Rotation_Pince = map(Val_Pot_Rotation_Pince, 0, 1023, 10, 180); Servo_Rotation_Pince.write(Angle_Rotation_Pince); //Servo_Serrage_Pince Val_Pot_Serrage_Pince = analogRead(Pin_Pot_Serrage_Pince); Angle_Serrage_Pince = map(Val_Pot_Serrage_Pince, 0, 1023, 60, 120); Servo_Serrage_Pince.write(Angle_Serrage_Pince); //Infos sur moniteur serie Serial.print("Base IN :"); Serial.print(Valeur_1_X); Serial.print(" OUT :"); Serial.print(Vitesse_Moteur_Base); Serial.print(" - Bras1 IN :"); Serial.print(Valeur_1_Y); Serial.print(" OUT :"); Serial.print(Vitesse_Moteur_Bras_1); Serial.print(" - Bras2 IN :"); Serial.print(Valeur_2_X); Serial.print(" OUT :"); Serial.print(Vitesse_Moteur_Bras_2); Serial.print(" - Pince IN :"); Serial.print(Valeur_2_Y); Serial.print(" OUT :"); Serial.println(Vitesse_Moteur_Pince); }
Télécommande sur microcontrôleur
52 : Push_G 53 : Push_D A3 : Axe_X_D
A4 : Axe_Y_D A0 : Axe_X_G
A1 : Axe_Y_G A6 : Pot_G A7 : Pot_D
Sorties contrôle moteur
PWM 10 : EnA(1) Base Vert PWM 5 : EnB(1) - Axe 1 Vert
PWM 11 : EnA(2) Axe 2 Orange PWM 9 : EnB(2) - Pince Noir
PWM 12 : Rotation Blanc PWM 13 : Serrage Noir
Sorties sur microswitch
Base : Num 22 In = Brun Out = Gris In1(1)
Num 23 In = Rouge Out = Violet In2(1)
Axe 1 : Num 24 In = Orange Out = Bleu In3(1)
Num 25 In = Jaune Out = Vert In4(1)
Axe 2 : Num 28 In = Brun Out = Gris In1(2)
Num 29 In = Rouge Out = Violet In2(2)
Pince : Num 30 In = Orange Out = Bleu In3(2)
Num 31 In = Jaune Out = Vert In4(2)
Connecteur moteur
Pin 1 : + Mot2 Pin2 : -Mot2 Pin10 : +Mot1 Pin11 : -Mot1
Pin24 : -Mot3 Pin25 : +Mot3 Pin21 : -Mot4 Pin22 : +Mot4
Pin4 : +Light Pin5 : -Light
Pin7 : PWM Rotation Pin8 : PWM Serrage
Pin19 : + Rotation Pin16 : + Serrage
Pin18 : - Rotation Pin15 : - Serrage
Connecteur microswitch
Pin24 : Secu Anti In1 Pin23 : Secu Anti Out1
Pin22 : Secu Hor In 1 Pin21 : Secu Hor Out 1
Pin17 : Secu Anti In 2 Pin18 : Secu Anti Out 2
Pin19 : Secu Hor In 2 Pin20 : Secu Hor Out 2
Pin1 : Secu Hor In 3 Pin2 : Secu Hor Out 3
Pin3 : Secu Anti In 3 Pin4 : Secu Anti Out 3
Pin5 : Secu Hor In 4 Pin6 : Secu Hor Out 4
Pin7 : Secu Anti In 4 Pin8 : Secu Anti Out 4
*/
#13
Posté 25 janvier 2020 - 06:58
Si le but c'est de remplacer ta petite manette avec deux joysticks par ton smartphone avec le robot piloté par internet tu pourra virer la mega et juste la remplacer par une raspberry pi avec une caméra.
La pi peut sans problème piloter L298 et les servo =) et même de quoi piloter des relais pour allumer tes leds et autre =)
En plus vu que tout est sécurisé c'est top! =)
D'accord ca m'a l'air d'être la meilleure solution ca serait moins pratique d'utiliser la communication série entre le Pi et le Mega
Je me demande ou la camera serait la mieux placée
En POV ou à la 3ème personne ?
On ne peut pas en mettre 2 pour un seul robot ?
#14
Posté 25 janvier 2020 - 07:10
Une vue sur la pince un peu reculé ça peut être sympas ... Une vue externe aussi ...
Du coup ce qui est le mieux ... ça je sais pas ...
Oui on peut mettre deux camera sur un même robot, plusieurs méthode pour le faire. Par contre actuellement tu ne verras qu'un seul retour à la fois. Mais tu pourras changer entre tes deux camera depuis le site à ta guise =)
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#17
Posté 25 janvier 2020 - 08:10
Une des possibilité serait une camera CSI et une USB ... Une autre serait de boudouiller pour 2 CSI je suppose ?
Oui =) Il y a des cartes qui permettent de mettre 2 voir 4 cam en csi sur une pi =)
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#18
Posté 25 janvier 2020 - 08:46
#19
Posté 28 janvier 2020 - 05:58
Cool Vinchator il déchire ton bras robotique !
L'adaptateur HDMI j'ai le même et toujours trop de FPS inutiles et trop d'instabilité du drivers....
Comme les webcam USB j'ai testé différentes logitech le driver v4l2 est moisi ça sort 15FPS max tout en ayant une image assez zoomée et sans piqué...
Les seules entrées vidéo convenables sont les caméra PI CSI v1 aftermarket (image style GoPro) la caméra d'origine étant zoom et piqué beark.
L'unique exception au détriment de la latence (* 2) c'est Raspberry PI 4 + une carte de capture à 100 euros qui fait du hardware déinterlace + caméra PAL @ 25FPS (éviter NTSC résolution plus faible!)
C'est uniquement valable pour des caméras intéressantes comme du CMOS noir et blanc hyper sensible (voir robot Astro sur vigibot en démo)
Ou du CCD SuperHAD ayant un fort gain vidéo pour voir en indoor couleur même si éclairage faible par contre le bruit vidéo tue la compression H.264 donc <1.5Mbps d'upload s'abstenir.
Le client vigibot sait utiliser ffmpeg avec de l'encodage hardware c'est optimisé a bloc mais malgré cela il faut une PI 4. Ceci a cause de la mauvaise optimisation de la bande passante USB sur les autres PI ça fait des décrochages infâmes @ aux résolutions minimum "réglementaire" sur vigibot soit 640x480 30FPS (digital) ou 720x576 25FPS (analog).
Il faut vraiment rester sur du PI Camera v1 vu le prix des PI 3 A+ et faire un couple PI+Caméra par vue de ton bras sur vigibot.
Trouver un multiplexeur multi CSI qui fonctionne serait pas mal car les 2 que j'ai ne fonctionne pas.... dans ce cas on ferais un truc avec les GPIO et hop multi-vue avec 1 seule PI.
Une alternative est la caméra PI V2 avec l'upgrade aftermarket du capture + objectif grand angle (car le PCB comporte une puce I2C Crypto qui emêche les copies améliorées de la caméra complète par les chinois). ça donne de la HD sur vigibot, mais c'est plus lourd à décoder, mais il est possible de faire plusieurs profils de flux sur la même caméra (voir IMX219 sur vigibot en démo) par contre pas de filtre IR cut amovible donc usage indoor sombre impossible.
Make your own raspberry robot, control it over the internet in FPV mode with super low latency and securely share access on it to your friends with Vigibot.com! You are welcome to test our robots now!
https://www.vigibot.com(100% free, no ads)
Répondre à ce sujet

1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users