Aller au contenu


Jekert

Inscrit(e) (le) 08 mars 2016
Déconnecté Dernière activité avril 22 2025 04:29
-----

#77751 Roberto [PPE]

Posté par Jekert - 08 janvier 2017 - 03:35

Salut à tous !

 

Je viens perturber la monarchie d'Oracid sur cette catégorie :D  avec la présentation de notre (nous sommes un groupe de 5) projet de terminale SI.

 

Donc l'objet de ce projet est de créer un robot stabilisateur de caméra pour la prise de vue au sol. On a donc séparer le projet en deux parties, le système de déplacement et celui de stabilisation.

 

Mon rôle dans ce projet est de choisir l'alimentation, programmer le système de déplacement et étudier les signaux de sortie des capteurs. Mais si vous avez des questions ou autres sur les autres parties du projet n'hésitez pas.

 

Pour la base mécanique du système de déplacement nous avons choisi d'utiliser des LEGO combiné à un EVShield (un Shield Arduino) pour le contrôle des 4 moteurs et des différents capteurs (de distance et d'inclinaison). La documentation du shield est disponible ici.

 

evshield-for-arduino-duemilanove-or-uno.jpg.png

 

Nous avons jusqu'en avril pour finir nos tâches mais voici un aperçu du système de déplacement (qui nécessite encore quelques modifications) :

 

15608593_1641217639512638_1828761564_o.jpg

15608836_1641217619512640_191563867_o.jpg

15609323_1641217599512642_1777660190_o.jpg

15658160_1641217592845976_367032436_o.jpg

15658890_1641217572845978_1821202811_o.jpg

 

Après avoir choisi une batterie lipo, je suis passé à la programmation des éléments du robot à commencer par les moteurs :

Test d'un moteur sur la Bank A port M1 :

// Bibliothèques :
#include <Wire.h>
#include <EVShield.h>

EVShield evshield(0x34, 0x36); //Adresses i²c des deux cotés du shield.

void setup()
{
  Serial.begin(9600); //Communication Série pour debugging

  evshield.init( SH_HardwareI2C ); //Initialisation de l'EV Shield

  evshield.bank_a.motorReset();
  evshield.bank_b.motorReset();

  Serial.println("Appuyez sur le bouton GO pour commencer");
  evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur

  evshield.ledSetRGB(200,100,100);
}

void loop()
{
  evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, 100); //Remplacer Forward par Reverse pour modifier le sens de rotation

  delay(1000);
  
  evshield.bank_a.motorStop(SH_Motor_Both, SH_Next_Action_Brake);

 Serial.println("Appuyez sur le bouton GO pour commencer");
 evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur
}

Test avec 4 moteurs :

// Bibliothèques :
#include <Wire.h>
#include <EVShield.h>

EVShield evshield(0x34, 0x36); //Adresses i²c des deux cotés du shield.



void setup()
{
  Serial.begin(9600); //Communication Série pour debugging

  evshield.init( SH_HardwareI2C ); //Initialisation de l'EV Shield

  evshield.bank_a.motorReset();
  evshield.bank_b.motorReset();

  Serial.println("Appuyez sur le bouton GO pour commencer");
  evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur

  evshield.ledSetRGB(200,100,100);
}

void loop()
{
 evshield.bank_a.motorRunUnlimited(SH_Motor_Both, SH_Direction_Reverse, 100); //Démarre les moteurs à 100%
 evshield.bank_b.motorRunUnlimited(SH_Motor_Both, SH_Direction_Forward, 100); //Démarre les moteurs à 100%

 delay(1000);

 evshield.bank_a.motorStop(SH_Motor_Both, SH_Next_Action_Float);
 evshield.bank_b.motorStop(SH_Motor_Both, SH_Next_Action_Float);

 Serial.println("Appuyez sur le bouton GO pour commencer");
 evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur
}

L'ensemble des programmes que je posterai sur ce fil seront aussi disponible ici.

 

Au programme des prochaines séances : mise en place du capteur de distance et d'inclinaison.

 

Voilà tout pour le moment, j'essayerai de mettre à jour régulièrement ce fil :)

 

PS: J'ai hésité à placer ce sujet dans LEGO vu que tout les programmes seront en Arduino, mais je pense que ça peut tout de même donner une idée de ce que l'on peut faire avec l'EVShield




#74567 Guide pour débuter avec Arduino

Posté par Jekert - 02 octobre 2016 - 11:16

Hello les Makers !

 

Mike118 vous tease depuis plusieurs jours à propos du premier chapitre de l'ouvrage dédié à Arduino que nous avons écrit avec Jan, et c'est à moi que reviens le plaisir de vous annoncer la publication officielle de celui-ci !

 

yey.gif

 

cours-arduino-debutant.jpg

 

Pour qui ?

Cet ouvrage a été écrit afin de permettre à une personne n'ayant jamais utilisé de cartes programmables de créer ses premiers programmes facilement donc que vous soyez totalement novice, curieux ou que vous souhaitez revoir les bases, ce premier chapitre est fait pour vous ;)

 

Comment ?

Le principe que nous essayerons de respecter tout au long de l'ouvrage est d'apprendre par l'essai de programmes commentés et expliqués aux fils des pages ainsi qu'à l'aide d'exemples permettant de mélanger et utiliser ce que nous avons vu au cours du chapitre.

 

 

Donc l'ouvrage est disponible dès maintenant ici, parmi ceux déjà publiés par Nulentout.

 

Nous attendons avec impatience vos premiers retours donc n'hésitez pas à réagir ici ou dans les commentaires des pages de l'ouvrage ! :)




#71364 Convertisseur 5V [testé par Jekert]

Posté par Jekert - 24 juin 2016 - 07:09

Salut,

 

Dernier composant (électronique) du kit pour robot quadrupède, voici le fil du convertisseur 5V !

 

Donc celui contenu dans le kit ressemble à ceci :

7 - Convertisseur.JPG
 
Il s'agit d'un UBEC, capable de transformer une tension de 6 à 35V en 5V et de fournir jusqu'à 7A(5A nominal) (bien plus que les 500mA de l'Arduino)
 

Pour cette partie du test, je me suis fait un petit "banc d'essais" DIY ^^ pour contraindre tout les servos de la même manière...

28 - Banc d'essais.JPG

... avec des élastiques et des trombones...

 

Jusqu'à 2 servomoteurs, le différence entre l'alimentation par Arduino et par le convertisseur est presque invisible :

Alimentation des servos par l'Arduino :

 

Alimentation des servos par le convertisseur 5V :

 

Mais à partir de 4 servomoteurs, elles sont nettement visibles :

Alimentation des servos par l'Arduino :

 

Alimentation des servos par le convertisseur 5V :

(Je verrais pour les mettre cote à cote dans une même vidéo si besoin plus tard)

 

Les élastiques n'exercent pas une force phénoménale sur les servos (<1kg je pense, je n'ai pas pu la mesurée pour l'instant). Mais le fait qu'un servo puisse consommer jusqu'à 250mA justifie que l'arduino n'arrive pas à alimenter les 4 servos du second test.

 

J'utilise une ancienne alim de PC pour alimenter le convertisseur câblé comme ceci :

29 - Montage Banc d'Essai.png
J'ai ajouté deux éléments (4 avec les 2 breadboard) qui ne sont pas compris dans le kit, une led permet de vérifier que l'alim est déchargée et un interrupteur qui permet de démarrer et éteindre l'alim.

 

Voilà tout pour le moment,

A bientôt ! :)




#71241 Driver I2C 16 servomoteurs [testé par Jekert]

Posté par Jekert - 18 juin 2016 - 05:52

Salut,
J'ai commencé à toucher au driver 16 servos compris dans le kit pour robot quadrupède, donc voici le fil dédié au test de celui-ci.
 

6 - Driver.JPG

 
Donc le driver ressemble à ceci, il permet à une carte Arduino de contrôler jusqu'à 16 servomoteurs avec 2 broches de la carte. De plus on peut mettre plusieurs drivers en série (62 au maximum) et ainsi contrôler jusqu'à 992 servos avec seulement 2 sorties !
 
J'ai fait un petit montage afin de tester son fonctionnement ainsi que celui de la bibliothèque Adafruit_PWMServoDriver.h :

27 - Driver.jpg

 
Avec ce programme-ci, qui est une adaptation pour le driver du programme d'exemple de la bibliothèque Servo.h (je trouve qu'il est plus compréhensible que celui fourni avec la bibliothèque d'Adafruit) :

//Bibliothèques :
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

//Driver :
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

//Servos :
#define SERVOMIN 105 //Longueur minimum d'impulsion
#define SERVOMAX 460 //Longueur maximum d'impulsion
#define NBSERVO 0    //Nombre de servos-1
#define PAUSE 10
uint8_t servonum = 0;
int pos = 0;


void setup() 
{
  pwm.begin();

  pwm.setPWMFreq(50); //Fréquence utilisée par les servos analogiques

  yield();
}

void loop() 
{
   for (pos = SERVOMIN; pos <= SERVOMAX; pos++)
  //Rejoins un angle de 180° depuis 0° par pas de 1°
  {
    pwm.setPWM(servonum,0,pos);
    delay(PAUSE);
  }
  delay(2000);
  for (pos = SERVOMAX; pos >= SERVOMIN; pos--)
  //Rejoins un angle de 0° depuis 180° par pas de 1°
  {
    pwm.setPWM(servonum,0,pos);
    delay(PAUSE);
  }
  delay(2000);
  servonum++;
  if (servonum > NBSERVO) servonum = 0; 
}

Et voici une petite vidéo du programme en fonctionnement avec un servo (je la referais sûrement à cause de la mise au point) :

 
A bientôt ! :)




#71190 Servo SG90 de Tower Pro - 1.6kg.cm

Posté par Jekert - 16 juin 2016 - 10:51

D'après les tests que j'avais pu faire, un servomoteur consomme aux alentours de 70mA sans charges, ainsi qu'un maximum d'environ 250mA lorsqu'il est contraint. Je n'ai pas essayé d'aller plus loin afin de ne pas l'endommager mais pour le test je pense partir sur une intensité max 30% supérieur à celle mesurée (cas le plus défavorable + marge de sécurité) c'est-à-dire aux alentours 325mA. (si vous trouvez la marge trop ou pas assez élevée, n'hésitez pas à me le faire remarquer)
Une petite vidéo du test (pas très conventionnel, désolé):

  • Jan aime ceci


#70917 Arduino Nano [testée par Jekert]

Posté par Jekert - 07 juin 2016 - 10:06

Salut !

:13:

 
Ce fil sera dédié au test de la carte Arduino Nano disponible dans la boutique et notamment utilisable avec le kit pour robot quadrupède.

 

Description:
 
L'Arduino Nano est une carte créée afin de miniaturiser les systèmes à bases d'Arduino et ainsi de les rendre plus légers, ce qui est très pratique en robotique lorsque l'on travaille dans un espace restreint et où le poids peut être un des ennemis du Maker :) L'Arduino Nano mesure 45*18 mm et pèse environ 5g. De plus, elle possède la même puissance de calcul qu'une UNO et possède 2 pins analogiques supplémentaires (A6 et A7) et peut fournir 40 mA et 5V par pin digital.

2 - Ardunio Nano.JPG

9 - Nano 1e.JPG

 

Comparaison avec l'Arduino Uno :

10 - Comp Arduino.JPG

 

Et la Mega :

11 - Comp Arduino.JPG

 
Avant de commencer :

Comme vous avez pu le remarquer, l'Arduino Nano arrive sans les pins soudés à la carte, il vous faudra donc souder chaque pin à la carte afin de s'assurer que tous les pins sont en contact avec la carte . Les soudures se font plutôt facilement, il suffit de faire attention à souder chaque pin sans que les soudures se touchent. N'hésitez pas à utiliser une troisième main et de quoi retirer les soudures maladroites (tresse ou pompe à dessouder).
 

12 - Soudure Nano 1.JPG

13 - Soudure Nano 2.JPG

14 - Soudure Nano 3.JPG


Pour connecter la carte à votre PC, il vous faudra un câble MiniUSB qui ressemble à ceci:
 

15 - Cable miniUSB.JPG
 

Il n'est pas fournis avec la carte mais c'est un type de connecteur répandu, vous n'aurez aucun mal à en trouver un chez vous, ou dans le commerce si nécessaire.

 

Vérifier les soudures :

N'étant pas encore très à l'aise avec la soudure, j'ai préféré vérifier que toutes les sorties digitales fonctionnent correctement. Pour cela j'ai fait ce petit montage:

 

18 - Nano test sortie.JPG
19 - Nano test sortie.JPG
 

Il permet de tester chaque sortie digitale, de D2 à D13, avec quelques fils, une breadboard, une résistance et une led. Chaque sortie va émettre une tension de 5V 2 fois de suite pendant 1 seconde puis s'éteindre pendant une seconde. Il faudra donc que vous déplaciez l'extrémité du fil orange de droite à gauche.

Voici le programme du montage :

// Pins :
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
int led10 = 10;
int led11 = 11;
int led12 = 12;
int led13 = 13;

//Variables :
int a = 0;
int pin = 0;
int liste[] = {led2, led3, led4, led5, led6, led7, led8, led9, led10, led11, led12, led13};

void setup() {

  //Déclarations :
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  pinMode(led10, OUTPUT);
  pinMode(led11, OUTPUT);
  pinMode(led12, OUTPUT);
  pinMode(led13, OUTPUT);
}

void loop() {
  
pin = liste [a];

if (a<11){
a++;
}
else{
  a = 0;
}

digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
delay(1000);
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
delay(1000);

}

Voilà pour le début de mon test sur la carte Arduino Nano. J'ajouterais des détails sur le dernier montage prochainement.

 

A bientôt pour la suite :)

 

N'hésitez pas à poster vos questions, conseils ou commentaires ;)




#70802 Kit Robot Quadrupède [testé par Jekert]

Posté par Jekert - 05 juin 2016 - 04:02

Salut !

Je crée ce fil afin de vous présenter le kit robot quadrupède dont j'ai la chance de faire le test.

Le kit comporte donc :

Bref, il vous suffira d'ajouter une source d'alimentation d'une tension comprise entre 6 et 35V, un petit peu de patience et votre quadrupède sera prêt.

Ce fil sera consacré au kit en lui-même, si vous souhaitez plus d'informations sur l'un de ces produits en particulier, il y aura un fil différent pour chacun d'eux.

Et voici mon calendrier prévisionnel comportant les dates limites de chacune des étapes du test que je m'efforcerais de respecter :

  • [FAIT] Étape 0 (02/6): Réception du colis
  • [FAIT] Étape 1 (12/6): Présentation du colis + Arduino Nano
  • [FAIT] Étape 2 (17/6): Test des servomoteurs 9g
  • [FAIT] Étape 3 (22/6): Test du driver 16 servos
  • [FAIT] Étape 4 (26/6): Test du convertisseur 5V
  • [EN COURS] Étape 5 (03/7): Assemblage du kit et des servomoteurs
  • [EN ATTENTE] Étape 6 (09/7): Premiers pas du robot
  • [EN ATTENTE] Étape 7 (13/7): Fin de la rédaction du tutoriel

Les fils seront créés au fur et à mesure que le test progresse.

Si vous avez des questions, des conseils n'hésitez pas :)

Le déballage :
L'ayant reçu jeudi, voici une petite vidéo du déballage du colis :

 

 

Le colis fait environ 20*15*16 cm et pèse 690g.
Chaque élément est emballé dans une pochette plastique et/ou plusieurs couches de papier bulle sauf pour les fils et l'interrupteur. Et une fois que tout est déballé :

 

blogentry-9502-0-83900300-1464987629.jpg

 


À bientôt pour la suite du test !