Draw me silly

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Résumé de notre projet

Draw me silly est un projet qui se base sur les jeux pour enfants "ardoises magiques", aussi connues sous le non de "Télécran". Le but principal de cet objet est de dessiner à l'aide d'un joystick qui va guider un crayon dont la mine ne se décollera jamais de la feuille. Avec un peu d'entraînement c'est possible je vous assure!

Le matériel utilisé

  1. matériel
  • 2 lecteurs CD récupérés sur un vieil ordinateur
  - 2 moteurs 
  - 2 élastiques 
  • 1 carte arduino + câble d'alimentation
  • 1 joystick
  • Des plaques fines de bois
  • 1 règle
  • 1 équerre
  • 1 crayon
  • Des vis
  • 1 embout de compas pour maintenir le crayon
  • 1 vieille poignée fixe
  • Du ruban adhésif
  1. Outils et machines à commande numériques
  • 1 soudeuse
  • 1 pistolet à colle
  • 1 découpeuse laser
  • Tournevis
  • 1 scie
  • 1 lime à bois
  • 1 perceuse

Création du mécanisme

Récupérez 2 lecteurs CD d'une vieille tour d'ordinateur. Démonter les mécanismes qui les contrôle et ne garder que les moteurs et le bâti qui contrôlent l'entrée/sortie du lecteur.

AxeDrawMeSilly.jpg

Le premier va être utilisé pour déplacer le crayon de haut en bas et le second pour déplacer la feuille de droite à gauche. Cela permet ainsi à l'utilisateur de réaliser toutes les formes qu'il souhaite sur la feuille.

Comme nous avons utilisé des lecteurs CD, nous avons dû les bloquer avant qu'ils n'arrivent en butée. En effet, un mécanisme faisait qu'il ne pouvaient pas revenir directement en arrière et l'énergie fournie par la carte arduino n'était pas assez puissante pour gérer cela. Nous avons donc fixé un bout de bois sur chacun de lecteurs pour que cette action ne se réalise plus.

Pour fixer le crayon, nous avons utilisé une vieille poignée de placard récupérée et un about de compas. Nous avons troué la structure au extrémités de la poignée pour pouvoir la fixer avec des vis. Nous avons ensuite collé l'embout de compas au centre de la poignée à l'aide d'un pistolet à colle ainsi que de scotch pour la sécuriser.

Connecter les moteurs à la carte arduino par des fils. Cette dernière va donner les ordres aux moteurs selon les informations qu'elle va recueillir à partir du joystick.


CâblageDrawMeSilly.png

Création de la structure

La structure est en réalité une boîte et des soutiens pour sécuriser le lecteur CD qui maintien le crayon. Cette dernière est créée à l'aide d'une découpeuse laser.

  • Création de la boîte

Nous avons récupéré les plans d'une boîte sur un site de génération de plan pour découpe laser(en utilisant les dimensions que nous avions besoin). Nous avons ensuite transféré ses plan sur le logiciel inksape. Nous avons mis en rouge les tracés que nous souhaitions découper (si nous les laissions noir, la découpeuse laser n'aurait fait que les graver). De plus, nous avons supprimé une face de la boîte pour le lecteur CD qui fait bouger la feuille, ainsi que le fil d'alimentation puissent sortir de la structure. Nous avons aussi réalisé une ouverture sur le dessus pour que l'utilisateur puisse voir ce qu'il dessine. Une fois ces instructions envoyées à la découpeuse laser, il ne nous restait plus qu'à assembler la boîte et la sécuriser en utilisant un pistolet à colle (de la colle à bois ou de la colle forte aurait pu faire l'affaire). Nous avons percé la boîte pour fixer par la suite le joystick.

Fichier:Boite joystick

  • Création du support de lecteur CD

Pour réaliser le support, nous avons récupéré les plan d'une boîte sur le même site que ci-dessus. Nous y avons mis les dimensions que nous souhaitions, puis transféré au logiciel inkscape. Nous n'avons gardé que deux faces (longueur et largeur) et nous les avons mis en rouge pour les mêmes raisons que précédemment. Nous avons transmis les consignes à la découpeuse laser et notre support était créé!


  • Assemblage

Pour l'assemblage entre la boîte et le support, nous avons tout d'abord fixé le lecteur CD qui maintient le crayon à la boîte, le plus proche de l'ouverture, à l'aide d'un pistolet à colle. Puis nous avons réajusté le support du lecteur CD à l'aide d'une lime à bois pour que tout s'emboîte parfaitement. Nous avons finalement fixé ce dernier sur la boîte et le lecteur CD déjà fixé à l'aide (une fois encore) d'un pistolet à colle.

Code arduino


// Nous utilisons 2 pins pour chaque commande du moteur, car l'intensité du signal de sortie d'un pin
// est de 40Ma. Pour plus d'info voir la partie sur le cablage.

int xMotorA1 = 10,xMotorA2 = 11,xMotorB1 = 12,xMotorB2 = 13;          //moteur X sens A et B
int yMotorA1 = 6,yMotorA2 = 7,yMotorB1 = 8,yMotorB2 = 9;              //moteur Y sens A et B


void setup() {

  // On défini les pins de controle du moteur en sortie
  pinMode(xMotorB1,OUTPUT);      
  pinMode(xMotorB2,OUTPUT);
  pinMode(xMotorA1,OUTPUT);
  pinMode(xMotorA2,OUTPUT);

  pinMode(yMotorB1,OUTPUT);
  pinMode(yMotorB2,OUTPUT);
  pinMode(yMotorA1,OUTPUT);
  pinMode(yMotorA2,OUTPUT);

  Serial.begin(9600);
}


void loop() {

  double sensorValueX = analogRead(A1)/100.0;       //recupération des données fournies par le joystick sur les pins A1 et A2
  double sensorValueY = analogRead(A2)/100.0;

  //Serial.println(sensorValueX);                     //l'affichage dans la console permet de debuger et peut être placé en commentaire ensuite
  //Serial.println(sensorValueY);


  
  // SensorValue va de 0 a 10.23, on défini que entre 4.5 et 5.5 le moteur ne tourne pas
  // Il faut un espace suffisant pour etre sur que le moteur se soit éteint avant de changer de sens

  
  if (sensorValueX>4.5 && sensorValueX<5.5)       //remise a zéro de la puissance en X
  {
    digitalWrite(xMotorA1,LOW);
    digitalWrite(xMotorA2,LOW);
    digitalWrite(xMotorB1,LOW);
    digitalWrite(xMotorB2,LOW);

  }
  if (sensorValueY>4.5 && sensorValueY<5.5)       //remise a zéro de la puissance en Y
  {
    digitalWrite(yMotorA1,LOW);
    digitalWrite(yMotorA2,LOW);
    digitalWrite(yMotorB1,LOW);
    digitalWrite(yMotorB2,LOW);
  }

  if (sensorValueX>6)
  {
    digitalWrite(xMotorB1,LOW);                 //On met les pins contrôlant l'autre sens de rotation au cas où nous 
    digitalWrite(xMotorB2,LOW);                 //passons trop vite d'un sens à l'autre que nous sautons l'intervalle 4.5-5.5
    digitalWrite(xMotorA1,HIGH);                //Alimentation de 2 pins pour avoir plus de courant
    digitalWrite(xMotorA2,HIGH);                // on fais varier x dans le sens A
  }
  else if (sensorValueX<4)
  {
    digitalWrite(xMotorA1,LOW);
    digitalWrite(xMotorA2,LOW);
    digitalWrite(xMotorB1,HIGH);               // on fait varier x dans le sens B
    digitalWrite(xMotorB2,HIGH);
  }

  if (sensorValueY>6)
  {
    digitalWrite(yMotorB1,LOW);
    digitalWrite(yMotorB2,LOW);
    digitalWrite(yMotorA1,HIGH);                  // on fait varier y dans le sens A
    digitalWrite(yMotorA2,HIGH);
  }
  else if (sensorValueY<4)
  {
    digitalWrite(yMotorA1,LOW);
    digitalWrite(yMotorA2,LOW);
    digitalWrite(yMotorB2,HIGH);               // on fait varier y dans le sens B
    digitalWrite(yMotorB1,HIGH);
  }

  delay(10);        // delay
}

Projet final

Il ne reste plus qu'à assembler le projet! Nous avons soudé tous les fils à leur emplacement pour sécuriser les câblages. Puis nous avons consolidé ces dernier à l'aide du pistolet à colle, notamment au niveau du moteur pour qu'il ne s'arrachent pas. Une fois cela effectué, nous avons fixé le joystick sur le dessus de la boîte et le second lecteur CD à l’intérieur de cette dernière. Le premier lecteur CD ayant déjà été fixé pour terminer la structure. Il ne reste plus qu'à fixer la planche en bois que vous avez préalablement coupé à l'aide d'une scie sur le lecteur CD qui va faire bouger la feuille.

Et voilà! Votre Projet touche à sa fin! A vous de jouer et dessiner de magnifiques œuvres d'art.

DrawMeSillyFini.png

Difficultés

La vie n'est pas un long fleuve tranquille, surtout lorsqu'on bidouille un projet! Vous l'aurez compris, nous avons rencontré quelques difficultés lors de la réalisation de ce projet et notamment en ce qui concerne la partie physique du projet. En effet, nous n'avons pas rencontré de soucis particulier au niveau de de la partie code.

  • Une sous-alimentation des moteurs

L'un des gros problème qui s'est posé à nous a été l'alimentation des moteurs. En effet, La carte arduino s'alimente par du 5V fourni par un ordinateur. Elle ne peut délivrer que du 40mA aux borne de ses pins or les moteurs ont besoin d'environ 70mA. Pour résoudre ce problème, nous souhaitions dans un premier temps essayer d'incorporer un transistor à la sortie des pins, mais nous n'en avons pas trouvé. Nous avons donc employé le "système D": Utiliser 2 pins au lieu d'une pour les relier à un patte du moteur. Sachant, qu'il y avait 2 moteurs possédant 2 pattes chacun, je vous laisse imaginer le petit bazar que c'était! A cause de ce problème nous n'avons pas pu utiliser le code qui permettait de gérer la vitesse selon l'appui plus ou moins fort sur le joystick.

  • Casser un moteur

Puisque "c'était trop simple" nous avons décidé de casser un moteur seulement quelques heures avant la fin hackaton! Bien évidement vous vous doutez que cela n'était pas voulu mais ce qui ne devait pas arriver arriva... A force de tirer sur les fils que nous avions souder sur le moteur, ces dernier se sont détachés et ont arraché une patte du moteur. Nous avons tout fait pour le sauver, gratter pour ressouder etc. Malheureusement c'était un cas désespéré. Nous avons donc dû nous dépêcher de récupérer un nouveau moteur sur un autre lecteur CD d'ordinateur.

  • La planche de bois fixée sur le lecteur CD était trop lourde

Nous voulions trouver un moyen simple de fixer une feuille blanche pour pouvoir dessiner dessus. Nous avions donc trouvé un système. Nous nous sommes alors rendu compte que la planche de bois sur laquelle nous travaillions depuis au moins 1 heure était trop lourde pour que le moteur puisse faire bouger le lecteur CD. Nous avons donc du en récupérer une plus légère. Par faute de temps, nous avons laissé tombé le mécanisme que nous avions mis en place sur l'autre planche et se contenter de rouleau adhésif que nous avons utilisé comme du scotch double face.

Le mot de la fin

Malgré les quelques difficultés que nous avons rencontrer, nous avons su les surmonter et finir le projet. Nous n'avons pas pu réaliser la totalité des objectifs que nous nous étions fixés, comme par exemple la gestion de vitesse par rapport au joystick ou encore l'insertion d'un écran pour générer des mots et en faire un jeu (pour dessiner le mot et le faire deviner à son partenaire). Nous sommes tout de même satisfait du résultat et avons trouvé cette expérience enrichissante. Ce projet nous a appris à savoir travailler en équipe, bidouiller, se tromper et recommencer, prendre des décisions rapidement mais de manière efficace, faire des concessions par manque de temps etc. C'était très intéressant et nous nous sommes bien amusés à le réaliser. En espérant que ce projet vous plaise autant qu'à nous!

Logo-enib.png