Oyé ! Oyé ! La documentation sur la Platine Arduino de Francis est « On Air »

Francis a documenté la réalisation de sa platine pour Arduino.

platineArduino

Une bien belle documentation pour une bien belle platine.

Attention toutefois, les équipements utilisés ne se trouvent pas dans tous les fablabs… Mais c’est tellement bo et c’est sur notre wiki na !

Apprendre, Documenter, Partager…

Apprendre, Documenter, Partager… Tiens j’ai déjà entendu ça quelque part moi ! Ne serait-ce pas au Faclab ou Carrefour du Numérique de la Citée des Sciences ! 😉

Eh bien notre wiki s’enrichit, grâce notamment au travail acharné de Jérémie et à la qualité de ses prise de vues qui met en valeur nos petits chouchous.

La page de nos projet avec de belles vignettes

La page de nos projet avec de belles vignettes

Alors un petite visite c’est par .

J’en ai profité pour ajouter un article sur mes essais ARDUINO / I2C / Souris optique / odométrie .

Nouveau projet wiki : maquette d’ascenseur pédagogique

Le projet est en ligne, suivez le guide:

Wiki => Accueil => nos projets => Maquette pédagogique d’ascenseur (par Gilles)

Oui je sais j’aurais vraiment pu mettre un lien directe mais c’est pour vous faire un peu visiter notre wiki 😉

Gilles nous fait l’amitié de partager le fruit de son travail, c’est noble ! Son site

Un échec de plus sur la route de l’autolevelling

Après l’essai avec système escamotable par servo moteur qui s’est révélé trop imprécis dans la répétabilité des mesures, c’est la version ascenseur à base de chariot de lecteur CD qui souffre d’un moteur vraiment trop faible. C’est bien dommage pour le petit côté hacking, récup que cela avait.

Img_3686_versionA_servo

 

 

 

 

 

 

Img_3779_manipStepperCD

 

 

 

 

 

 

 

 

 

 

Prochaine étape: version avec capteur à effet hall…

Vor 9 avance

PhotoDurant les derniers jours, j’ai remplacé les capteurs TCRT 5000 placés à l’avant, par une rampe de capteurs infrarouge assemblée. J’ai aussi changé la plaque en acrylique inférieur qui se dégradait de plus en plus.

J’ai de plus implémenté une sucette Bluetooth pour bénéficier d’une liaison série de debug. Ce qui m’a permis de corriger les tests de laPhoto

machine d’état.

Coté odométrie, avec Joël nous avons tourné cette petite pièce (l’axe à un diamétre de 1.8mm) pour fixer le disque indenté.

Cette pièce n’est qu’un essais. Il reste à affiner certain détails, comme la longueur de l’axe.

La machine d’état étant Photocorrigée, certains problèmes sont mis en éxerguent comme le fait que le moteur droit est beaucoup plus lent que le moteur gauche.

 

Vor 9 – Détection du sol

Pour la détection du sol j’ai installé 5 capteurs infrarouges, 3 à l’avant du robot et 2 derrière.

Mon objectif est de construire une variable en binaire contenant le résultat des tests des 5 capteurs. Ainsi il sera facile de connaitre ou le sol n’est pas détecté pour que le robot ne s’y dirige pas.

Le travail préparatoire réalisé avec l’aide de Joël. Au propre ça donne quelque chose comme ça :

Ci-dessus un schéma de Vor9 et ses capteurs numérotés de 1 à 5 de manière formelle, dans le code de 0 à 4.

Si le capteur n° 1 est déclenché, il met le premier byte à 1, si le capteur n°2 l’est, il passe le second byte à 1 et ainsi de suite. Ce qui permet d’obtenir les tableaux suivant :

 

Capteur N°

Déclenché seul

En décimal

Direction du robot

1

0000 0001

1

Avant

2

0000 0010

2

Avant

3

0000 0100

4

Avant

4

0000 1000

8

Arrière

5

0001 0000

16

Arrière

       
       

N° capteur Déclenché simultanément

En Binaire

En décimal

Direction du robot

1 + 2

0000 0011

3

Avant

2 + 3

0000 0110

6

Avant

1 + 2 + 3

0000 0111

7

Avant

4 + 5

0001 1000

24

Arrière

3 + 4

0000 1100

12

Flanc Droit

1 + 5

0001 0001

17

Flanc Gauche

 

Si plusieurs capteurs sont déclenchés simultanément, on obtient les valeurs du tableau ci-dessus.

 

Ce qui donne en langage Arduino  une fonction retournant la valeur détecté. La machine d’état n’a plus qu’a testé la valeur de cette fonction pour connaitre les zones ou le robot ne peut pas se déplacer.

Une rapide explication de la fonction :

  • J’initialise ma variable en binaire à 0.
  • Avec une boucle for, je lis l’état des 5 capteurs.
  • Si la lecture du capteur est supérieure au seuil paramétré, je décale de 1.
  • Si ma variable en binaire est égale à 0, le sol est détecté par tous les capteurs donc je garde la led d’état éteinte, sinon je l’allume.
  • Et enfin, la fonctionne retourne la valeur de la variable.

 

 

int groundTest()

{

byte statusCapteur = B00000000 ;

for (int cellCapteur = 0; cellCapteur <= 4; cellCapteur++)

// pour tous les capteurs numérotés de 0 à 4

{

if(analogRead(tableauCapteurs[cellCapteur]) > irThreshold)

// si la lecture du capteur est supérieur au seuil, alors incrémenter 1 au binaire si non 0

statusCapteur |= ( 1 << cellCapteur);

}

 

if( statusCapteur == 0 )

// Si tous les capteurs détectent le sol, alors on garde la led éteinte, si non on l’allume

digitalWrite(GroundDetLED, LOW);

else

digitalWrite(GroundDetLED, HIGH);

 

// retourner le statut des capteurs

return statusCapteur;

 

//Serial.println(statusCapteur); // DEBUG

}

 

Le prochain chantier est l’odométrie. Pierre a modélisé les plaques de Vor9 et me les a imprimé. Il m’a aussi fait une roue codeuse ayant le bon diamètre pour être emmanché sur l’axe du moteur.

Disposant d’une deuxième plateforme j’ai commencé à travailler sur le calcul de la vitesse des moteurs. Le but est de synchroniser la vitesse des moteurs pour aller en ligne droite, puis dans un second temps se diriger de manière plus précise à droite ou à gauche.

Si dessous le travail à l’oscilloscope, avec les deux capteurs allant un presque à la même vitesse. Ici j’ai synchronisé la vitesse des moteurs à la main à l’aide de potentiomètre.

La prochaine étape est d’utiliser des interruptions pour compter les fentes des roues codeuses et d’utiliser un timer interne au 2560 pour mesurer le temps et ainsi obtenir une vitesse.

 

Prusa i3 passe à Marlin 1.0.1

Aujourd’hui au VoLAB nous avons passé notre Prusa i3/EiNSTeiN/Reworks à Marlin 1.0.1 en vue d’implémenter l’auto bed Leveling. Il reste à designer les pièces mécaniques.

Pour cela modélisation sous SolidWorks de toutes l’imprimante.

Vue3D150103_2330

 

 

 

 

 

 

 

 

 

 

 

 

Au passage on en profite pour lui ajouter un afficheur LCD et une carte SD. Opération relativement facile si on exclu les erreur Arduino 1.5 comme:

SdFatUtil.cpp.o: In function `SdFatUtil::FreeRam()’:
SdFatUtil.cpp:33: undefined reference to `SdFatUtil::__brkval’
SdFatUtil.cpp:33: undefined reference to `SdFatUtil::__brkval’
SdFatUtil.cpp:36: undefined reference to `SdFatUtil::__bss_end’
SdFatUtil.cpp:36: undefined reference to `SdFatUtil::__bss_end’
collect2: error: ld returned 1 exit status

Traité dans le billet :

https://github.com/ErikZalm/Marlin/pull/1228/files

20150102_185252Reduced

 

 

 

 

 

 

En parallèle, on bosse sur la mise en place d’un wiki pour stoker et diffuser nos articles…

Mardi 16 septembre au VoLAB : workshop initiation Arduino

Premier workshop de la saison au VoLAB : compte tenu de la demande, ce sera initiation Arduino à partir de 20 heures mardi 16 septembre.

Notre premier workshop:  « initiation Arduino » s’est super bien déroulé. Merci à tous les participants.

Aux commandes Pierre et votre serviteur Jojo. Merci Pierre pour ton aide.

Le virus est transmis.

Ce soir au VoLAB : Neopixel ou la programmation du WS2812

Afin de préparer un projet commercial, ce soir nous nous sommes familiarisé avec les anneaux de LED neoPixel de chez Adafruit. Commandé chez Snootlab dimanche et arrivés ce matin. Nickel !

20140723_231126NeoPixelEn fait de neoPixel, c’est surtout le composant WS2812 de chez World-Semi qui fait tout le boulot. Mais il faut avoué que le boulot fait par Adafruit sur la librairie Arduino est plutôt des plus sympathique. 16 million de couleurs par LED, chaque LED adressable individuellement tout ça avec un seul fil ! ça tiens du prodige ! Je qualifierais bien le protocole utilisé de génial si j’osais.