Journal de projet – 4 avril 2017

Première journée dédiée entièrement à mon projet.

Le fusil en question

J’avais préalablement démonté le fusil Nerf RapidStrike CS-18 pour en sortir le circuit électrique, ce qui ne fut pas une tâche simple : tout était fait pour éviter que des personnes comme moi ne transforment le jouet en machine à tuer.

Le circuit démonté
Schéma du circuit électrique

3 conditions doivent être remplies pour que le fusil puisse tirer :

– Le chargeur doit être dans le fusil ;

– Le « dust cover » sous le manche supérieur doit être fermé ;

– La gachette doit être enclenchée.

Seulement, il ne m’intéresse pas de devoir me plier à ces conditions pour faire tirer ma tourelle. Quelques câbles en moins m’ont permis d’isoler exactement ce qui m’intéresse : l’approvisionneur et le propulseur.

Je me suis ensuite attaqué à la fixation du canon aux servo-moteurs. La monture est simple : un servo pour le guidage sur l’axe des X, un autre pour le guidage sur l’axe des Y.

Le canon avec le servo-moteur se chargeant de l’axe des Y

J’ai ensuite fait quelques tests, question de me familiariser avec les servo-moteurs.

/*******************************************************************************************

#include <Servo.h>

// Non utilisé pour cette démo, mais servira éventuellement
Servo xServo;
int xServoPos = 0;
const int X_START = 0;
const int xServoPin = 9;

// C’est celui qui m’intéresse pour la démo
Servo yServo;
int yServoPos = 0;
const int Y_START = 90; // Voir les explications pour comprendre la valeur « hard-coded »
const int yServoPin = 10;

void setup()
{
// Test du Serial pour suivre la trace de l’angle du servo-moteur
Serial.begin(9600);
Serial.println(« Hello »);

xServo.attach(xServoPin);
yServo.attach(yServoPin);

// La fonction write permet de dire au servo à quel angle il doit se positionner.
xServo.write(X_START);
yServo.write(Y_START);
// On lui laisse un petit 15ms pour qu’il complète l’action.
delay(15);
}

void loop()
{
// Rien ici, car je l’ai malheureusement supprimé.
}

/******************************************************************************************

Le premier problème auquel j’ai fais face est que je ne savais pas que chaque degré du servo est une valeur absolue, et non relative. Je croyais initialement que lorsqu’on disait au servo d’aller au degré 5, il allait au degré 5 par rapport à celui qu’il se trouvait déjà. Je me suis rendu compte bien vite en me faisant pincer les doigts qu’il voulait aller à un angle bien précis, et non à celui que je lui disais d’aller. J’ai pallié à ce problème de la manière suivante : j’ai calculé à l’aide du Serial que l’angle initial désiré était de 90 degrés (d’où la valeur hard-coded dans mon code). Alors à chaque fois que le Arduino démarre, il place le servo à 90 degrés, et se sert de cet angle comme référence pour ses futurs déplacements.

Voici une vidéo d’un montage précaire de mes pièces afin de tester la vélocité de mes tirs (je vous conseille de regarder le tableau blanc si vous voulez voir la balle, on ne la voit pas partir…) :

 

Il reste plusieurs choses à mettre en place. Mon prochain objectif est de faire un croquis de ce que ressemblera ma tourelle, ainsi qu’un schéma du circuit électrique.

Merci de suivre mon projet, et à une prochaine mise à jour de ce journal.

– Émile T.