Aller au contenu


Mickixe

Inscrit(e) (le) 02 nov. 2019
Déconnecté Dernière activité juil. 26 2020 05:14
-----

#110176 Fin de l'EV3

Posté par Mickixe - 10 juin 2020 - 09:26

Il faudra voir ce que donne ce prochain remplaçant de l'EV3, mais j'avoue que les premiers visuels ne m'engagent pas trop, effectivement plus enfantin et plusieurs fonctionnalités semblent disparaître (l'écran par exemple). Et j'avais cru voir que Lego abandonnerait LabView pour migrer sur une programmation type scratch, à l'image de ce qu'ils ont fait avec Makecode (mais j'arrive plus à retrouver ma source...).

 

Après j'utilise principalement l'EV3 pour faire des prototypes, car plus rapide, ou avec mes enfants.

Je suis ensuite aussi à utiliser une base arduino, mais avec de la construction Lego car, comme le dit Oracid, très puissante pour l'assemblage structure et mécanique. D'autant que j'aime bien faire et défaire. 

 

Ensuite l'arduino n'est pas si compliqué que ça. Il faut effectivement s'y mettre un peu au début (pour ma part, j'avais fait les 2 openClassroom sur le sujet pour assimiler les bases), ensuite, cela devient effectivement beaucoup de copier-coller suivant les composants utilisés. Et puis il y a une communauté et biblio énorme et on arrive généralement toujours à trouver solution sur le net.

 

Sinon, il y a toujours la solution du scratch, pour programmer en blocs. Dans ce cadre, il y a le makeblock qui peut être intéressant, avec une mécanique de type meccano et une panoplie très large de composants (même si un peu cher que ce qu'on peut trouver pour de l'arduino classique). S'orienter dans ce cas sur le kit type mBot Ranger qui comprend la carte Me Auriga qui a plus de ports. Et il très facile de pouvoir imprimer toute sorte de pièces adaptables. Cela peut être une bonne transition entre l'EV3 et le monde de l'arduino.




#109849 Mon projet perso de robot mobile - présentation et demande d'avis

Posté par Mickixe - 21 mai 2020 - 09:39

Bonjour,

 

Pour donner quelques suites et avancement de mon projet, après une petite pause où je me suis consacré à mon lego mindstorm qui reposait depuis pas mal de temps dans sa boîte, j'ai repris mon projet que j'ai bien revu, où je suis reparti sur une base lego pour la structure du véhicule, bien plus solide.

 

Les fonctionnalités sont les suivantes (pour l'instant) :

- 2 moteurs CC 12V pour la propulsion,

- 1 servo pour la direction (j'ai abandonné mes roues mecanum, entièrement imprimées, mais qu'il faudrait que je modifie pour améliorer l'adhérence),

- 1 écran Oled pour des yeux (type robot Cozmo),

- 1 lecteur carte SD + Haut-parleur pour mettre un peu de son,

- 1 capteur US pour détection d'obstacle,

- Quelques Led,

- 1 capteur IR pour pilotage avec une télécommande (principalement utilisé pour les tests)

 

Le tout commandé par une arduino mega 2560 et alimenté par une LiPo 12V.

 

J'ai en effet abandonné mon idée de départ de 2 arduino en communication série que je peinais à bien faire fonctionner et surtout pour des raisons de mémoire. Les fonctions pour la SD et l'Oled sont très gourmandes et je suis vite arriver à dépasser la mémoire de la Uno...

De plus j'ai eu à faire face à des conflits de bibliothèques entre le servo, l'US et le son... Il a fallut jongler avec les timers et la mega offrait plus de possibilités.

 

Bref, tout fonctionne bien comme souhaité :yahoo:  et je suis satisfait du résultat obtenu, ce qui me donne une bonne base pour continuer. Je pense faire évoluer le projet pour le rendre plus autonome et je souhaite le doter d'une pince. Je retravaillerai le design également, ça ne ressemble pas à grand chose pour l'instant :unsure: , mais ce n'était pas le but... Je laisserai de côté pour cette seconde phase le son et les yeux qui restent gadgets.

 

Enfin si vous avez des remarques, des commentaires, des critiques, n'hésitez pas, je suis preneur ! Je reste en phase d'apprentissage ! :)

 

Suite à un prochain épisode !

 

Mickaël

 

20200519_002216.jpg

 

 

 

 

 

 

 




#107345 Mon projet perso de robot mobile - présentation et demande d'avis

Posté par Mickixe - 16 janvier 2020 - 11:42

Bonjour,
 
Comme indiqué dans ma présentation, jusque là j'étais un peu touche à tout, même si je suis resté principalement sur l'arduino.
J'ai toutefois décidé de me lancer dans un projet un peu plus concret et fonctionnel, de manière à mettre en application ce que j'ai pu apprendre jusque là. Objectifs : continuer d'apprendre et s'amuser !
 
Je suis donc parti sur un projet de robot mobile autonome comportant :
- 4 roues mecanum (roues imprimées en 3D (fichiers récupérées sur Thingiverse) et actionnées par des moteurs cc 12V),
- 1 écran LCD matérialisant des yeux qui suivront les mouvements du robot (voire pouvoir changer d'expression),
- 1 haut-parleur émettant des sons enregistrés sur une carte SD,
- de la lumière,
- 1 capteur IR pour avoir la possibilité de le piloter avec une télécommande (et faire ainsi des tests),
- des capteurs US
- un bras muni d'une pince (encore en projet pour l'instant)
 
Pour le châssis, je suis parti pour l'instant sur du carton plume, que je trouve parfait pour une phase de prototypage (perçage à volonté et remplacement facile en cas de casse).
Les pièces de support des composants sont imprimés en 3D (modélisées avec Tinkercad) 
 
Mon montage repose actuellement sur 2 arduino uno :
- 1 avec un shield moteur et qui commande l'écran LCD, les LED, le HP (et donc la lecture de la carte SD) et la réception IR (plus vraiment de pins dispos sur cette carte).
- 1 seconde que je destine pour les capteurs (pour le moment, tests en cours avec des US).
Communication série RX/TX entre les 2 arduino.
 
Voilà le rendu actuel (désolé pour le manque de propreté du câblage, j'améliorerai ce point une fois mon montage figé)
 
20200116_222843.jpg
 
Au niveau programmation, je suis encore dans une phase de tests, mais ceux-ci s'avèrent globalement concluants, sauf sur 1 point où je bloque actuellement, qui vient, je pense, de ma programmation sur la liaison série entre les 2 cartes. En effet, bien que le capteur US fonctionne et permet de modifier le comportement des moteurs en fonction des distances que j'ai définies, les moteurs fonctionnent à des vitesses extrêmement réduites par rapport à la normale (et que je peux avoir lorsque je commande avec la télécommande IR). Ci-dessous extrait de mes codes pour info.
Comme j'ai projet de mettre plusieurs capteurs US, je voulais sur ce point m'inspirer de la ceinture de capteurs US trouvée sur le forum (super tuto d'ailleurs !), mais dans ce cas, quel code utiliser ? Je n'ai pas essayé de passer en I2C.
 
Je souhaitais également un avis sur les alim :
- J'utilise une batterie LiPo 3S pour l'alim des moteurs,
- Pour les 2 arduino, je les alimente actuellement par une pile 9V chacune. J'ai également une batterie LiPo 2S. Puis-je l'utiliser et elle seule pour alimenter mes cartes ? Cela poserait-il un soucis ? 
 
Voilà, je vous remercie par avance pour l'aide et les conseils que vous pourrez m'apporter.
N'hésitez pas également à apporter tout commentaire/critique ou proposition d'amélioration, je suis encore débutant et tout est bon à prendre pour progresser !
 
Mickaël
 
Extrait code carte "actionneurs" - lecture liaison série
 
Serial.begin(115200);
 
if (Serial.available() > 0) {
    
    distance = Serial.read();
 
   if (distance=='p'){//Mouvement prudent
      digitalWrite(A1,LOW);
      digitalWrite(A2,HIGH);//LED jaune
      digitalWrite(A0,LOW);
      avance(150);//fonction avance à vitesse réduite
      }
    if (distance=='a'){//Arrêt
       digitalWrite(A2,LOW);
       digitalWrite(A0,HIGH);//LED rouge
       digitalWrite(A1,LOW);
       arret();//fonction arrêt
       }
   if (distance=='o'){//Marche
      digitalWrite(A0,LOW);
      digitalWrite(A1,HIGH);//LED verte
      digitalWrite(A2,LOW);
      avance(255);//fonction avance à pleine vitesse
    }
 

Extrait code carte "capteurs" - émission liaison série

Serial.begin(115200);
 
if(sonar1.ping_cm() > distance_Prudent && sonar1.ping_cm() <= distance_Arret) { Serial.print('p'); }
  else if(sonar1.ping_cm() <= distance_Arret) { Serial.print('a'); }
  else { Serial.print('o'); }