Aller au contenu


Photo
* * * * * 1 note(s)

[Projet Rover 2WD] Mon robot de surveillance mobile et télécommandé

Arduino Raspberry PI3 MIT Inventor 2 Rover UGV Robot mobile PID

282 réponses à ce sujet

#41 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 19 juin 2016 - 03:30

Le chassis , composé de 5 pièces, a été concu à l'aide du logiciel "OpenSCAD"  prenant en compte seulement l'emplacement des 3 roues ( trous ) pour l'instant , et il pourrait etre créé par une imprimante 3D .

Cela a été l'occasion de prendre en main ce logiciel 3D gratuit.

 

Chassis.png


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#42 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 19 juin 2016 - 04:04

;) Je vais pas tarder à faire comme toi.

Je te suis avec assiduité. 



#43 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 20 juin 2016 - 11:15

Je viens de recevoir les régulateurs de tension de DFRobot ...  avec la modification du schéma alimentation.

La carte Arduino UNO est alimentée par le Shield moteur Arduino.

 

La carte DFR0205 5V/5A permets d'alimenter la carte d'alimentation 3.3v pour le module Wifi

 

DFR0205_diagram.png

 

Alimentation 1_ed 21_bb.png


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#44 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 21 juin 2016 - 02:27

En ce qui concerne la batterie , ce sera un accu rechargeable NiMH 7.2V ou Lipo 2S 7.4V (2000 mAh) min  avec la,contrainte de ne pas retirer l'accu pour le recharger .

IL faut donc un chargeur embarqué dans le robot et n'avoir que le cable 220V à raccorder sur une prise du robot.

 

Ce type de produit existe par exemple pour une batterie Lipo 1S mais pas pour 2S , cf photo ci-dessous dont la sortie SYS  OUT ést raccordée à la carte régulateur alimentant le robot.

 

product-shot.jpg

 

C'est certainement une problématique courante . Comment résoudre cela ?

Merci


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#45 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 21 juin 2016 - 10:17

Quel est ton problème exactement ?


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#46 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 22 juin 2016 - 09:38

Salut levend ,

 

Je n'ai pas pu trouver par recherche google ce type de chargeur Lipo embarqué pour batteries Lipo  2S de 7.4V  ou NiMH 7.2V

Donc je suis un peu étonné que ce type de chargeur n'ait été créé que pour les batteries Lipo 1S.

 

Meme chose pour Accu NiMh 7.2V

 

Je me dis que peut-etre que google n'a pas toujours la réponse et que il me semble impossible que ce type de produit plutot séduisant n'ait pas été créé par les grands du domaine ( Adafruit , Sparkfun ou autre chinois )

 

L'intéret final est de recharger l'accu sans l'enlever du robot en connectant juste un cable secteur ... avant la recharge autonome !

 

Si quelqu'un a un lien sur un possible produit  ?


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#47 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 22 juin 2016 - 11:34

J'avais pas vu que c'était pour du 1S, il faut dire que je ne m'intéresse pas trop aux LIPOs.

 

Sur mon robot à chenilles, je prévois un chargeur externe, mais avec des prises étanches sur le flan du châssis, de manière à ne pas tout démonter pour sortir les batterie et les mettre à charger.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#48 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 03 juillet 2016 - 02:28

Humm .... je suis en train d'écrire le programme du robot et je m'apercois que le nombre de PIN numériques n'est pas suffisant au niveau de l'Arduino UNO pour couvrir le besoin.

Il est vrai que l'afficheur LCD 16x 2 mode 4 bits en consomme déja 6 .

// Pins connected to the Arduino UNO
const int pinCurrentA=A0; // Shield motor
const int pinCurrentB=A1; // Shield motor
const int pinI2CSda=A2;   // LCD I2C
const int pinI2CSCL=A3;   // LCD I2C
const int pinSRF05=2;     // SRF05 Ultrason sensor
const int pinTXWifi=3;    // ESP8266 Wifi module
const int pinRxWifi=4;    // ESP8266 Wifi module
const int pinPwmA=5;      // Arduino Shield motor
const int pinPwmB=6;      // Arduino Shield motor
const int pinBrakeA=7;    // Arduino Shield motor
const int pinBrakeB=8;    // Shield motor
const int pinDirA=7;      // Arduino Shield motor
const int pinDirB=8;      // Arduino Shield motor
const int pinPwmServo=9;  // Servomotor
// const int pinAvail1=10;  // Free
// const int pinAvail2=11;  // Free
// const int pinAvail3=12;  // Free
// const int pinAvail4=13;  // Free

La solution est de passer à un afficheur LCD 16x2 I2C qui ne consomme que 2 Pins


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#49 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 03 juillet 2016 - 04:33

Je crois que de mettre des #define fait consommer moins de mémoire dans ton uno ;)

 

Sinon, quelles nouvelles de tes accu ?



#50 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 03 juillet 2016 - 08:20

Correct @Path , ce type de constante DEFINE ne prends pas de place en mémoire mais ce n'est pas recommandé par Arduino

 

https://www.arduino....eference/Define

 

Concernant le choix d'accu , du message #46  pas de nouveau au sujet de l'accu Lipo 7.4V .


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#51 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 03 juillet 2016 - 10:36

Oui tu as raison ce n'est pas recommendé dans la doc arduino. Mais uniquement pour obliger le programmeur à faire attention au nom de ses variables. Perso je crois que le define vaut le coup. Comme le langage est case sensirive, il suffit de mettre les define en majuscule. C'est pour ça que je me permettais cette remarque au passage. Je crois qu'ils vont un peu vite dans la doc arduino souvent.

#52 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 03 juillet 2016 - 11:08

Je suis parfaitement d'accord avec Path. En fait la " non recommandation" c'est uniquement si tu ne sais pas ce que tu fais et que tu ne veux pas chercher à savoir comment faire correctement =).

Perso j'utilise énormément de define ... 

déjà, dans mes codes, toutes les pins utilisées sont définies par un define. Ainsi si par la suite j'ai besoin de remplacer un pin par un autre il me suffit de changer la valeur du define et pas de changer partout dans tout mon code où le pin est utilisé. 

Pour info tu peux même faire des fonctions dans un define ... mais bon ça c'est un autre niveau encore ... Et ça aussi c'est pas recommandé tant que tu ne sais pas bien t'en servir ... ( mais bon faut bien apprendre à un moment ;) mais c'est comme tout, toujours étape par étape, mieux vaut savoir marcher avant de vouloir courir )


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#53 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 04 juillet 2016 - 09:36

Merci à vous 2 !

 

J'ai donc remplacé les constantes de déclaration des pins par des #define mais cela ne gagne pas de place dans la mémoire dynamique des variables de 2K de l'Arduino Uno.


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#54 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 04 juillet 2016 - 10:54

;) il y a 2 espaces de mémoire sur arduino. Un pour le programme (.ino) de 32k et un pour l'exécution de 2k.
En mettant des define, tu mets tout ça dans l'espace programme. Je te laisse voir comme c'est interessant sur un uno : https://www.arduino....Tutorial/Memory

#55 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 04 juillet 2016 - 05:52

Merci pour l'info PROGMEM/EEPROM.

Cela pourra servir si le sketch a besoin d'optimisation mémoire


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#56 cocothebo

cocothebo

    Membre passionné

  • Membres
  • PipPipPip
  • 341 messages
  • Gender:Male

Posté 05 juillet 2016 - 10:04

Bonjour,

 

Pour être un peu pointilleux, passer de "const qqc" à des "#define" peut faire gagner de la place en RAM. Par contre ça reste situationnel, vu que dans l'exemple montré précédemment, le compilateur est suffisamment "intelligent" pour remplacer les "const int" (qui étant des variables devrait résider en RAM) par leur valeur directement dans le programme.

C'est pourquoi dans ce cas, l'utilisation de la RAM ne change pas.

 

Après il faut savoir qu'un "#define" ne fait pas parti du langage C, tout ce que ça veut dire c'est qu'avant de compiler ton programme, il y a une moulinette qui va faire en gros un "remplacer tout" sur ton code avec le nom du define et par ce que suit ce nom.

Tant que c'est les numéros de PIN etc, ya peu de risque de problème, quand on arrive sur des choses un peu plus complexes, comme il n'y a pas de type défini, on peut avoir des erreurs compliquées à comprendre, pour deux grosses raisons (et yen a d'autres):

  1. le compilateur sort des erreurs souvent incompréhensibles quand on regarde le code source (ben oui en fait le vrai code source n'est pas celui qu'on voit mais celui où tous les #define ont été remplacés)
  2. comme il n'y a pas de type, le compilateur essaye d'en mettre un, et suivant le contexte le type d'un même #define peut changer (et la les erreurs sont encore plus complexes, vu que suivant l'endroit le comportement ne sera pas le même).

 

Bref loin de moi l'idée de dire que le #define c'est pas bien, parce que pour déclarer des PINs et trucs du genre ça reste "sympa", en revanche l(utiliser pour gagner de la RAM n'est pas une bonne utilisation à mon avis.

D'ailleurs toujours sur l'exemple précédant, ce qu'il faut penser en premier c'est qu'un arduino c'est un processeur 8 bits (en majorité) et que donc un int c'est très couteux. Et dans tous les cas, il faut toujours utiliser le type qui soit le plus petit possible (sans overflow), ici on aurait du avoir un "const byte" par exemple.



#57 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 05 juillet 2016 - 12:47

 

D'ailleurs toujours sur l'exemple précédant, ce qu'il faut penser en premier c'est qu'un arduino c'est un processeur 8 bits (en majorité) et que donc un int c'est très couteux. Et dans tous les cas, il faut toujours utiliser le type qui soit le plus petit possible (sans overflow), ici on aurait du avoir un "const byte" par exemple.

 

tout à fait d'accord ;) 

D'où ce petit "tuto" : comment adapter la taille des variables   =)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#58 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 08 juillet 2016 - 01:48

Voila .. La partie boucle "Setup" est presque terminée , reste la partie interface de pilotage du robot (app wifi installée sur smartphone Android ") pour laquelle je n'ai pas trop d'idée concrète.

 

Le sketch a été téléversé sur la carte MEGA2560 + Shield motor Arduino  montrant le déroulement la phase setup et un print millis() dans la boucle "Loop"  .. Le programme tourne  .. mais sans les matériels  ESP8266 , capteur US , LCD 16x2 , Servo et les 2 moteurs CC  pour l'instant.

 

Log Setup.png

 

Ce pb d'affichage des lettres avec accents est un peu ennuyeux.


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#59 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 10 juillet 2016 - 11:03

La partie "Loop" du sketch est terminée .. à part l'interface de l'app Android qui reste à faire  ( c'est pas mur ! et il faudrait developper sa propre app pour bien faire)

 

Le diagramme ci-dessus donne une idée de l'architecture du programme robot.

 

Robot Vera1 Diagramme.png


Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/


#60 gerardosamara

gerardosamara

    Membre passionné

  • Membres
  • PipPipPip
  • 374 messages
  • Gender:Male
  • Location:Costa Rica & Bretagne
  • Interests:La vie sous les tropiques

Posté 11 juillet 2016 - 08:03

Concernant l'interface de pilotage du robot mobile à partir d'un smartphone Android , je ne vais pas donner suite à l'idée de faire une app Android car cela nécéssite une certaine expertise pour développer sous Android Studio .

 

Je vais revenir sur mon idée initiale d'utiliser  l'app "Imperihome" déja opérationnelle avec ma Domotique.

L'app Imperihome Android permet de configurer sur une page dashboard dédié au robot du flux video et des boutons de déclenchement de requète HTTP Post/ Get à destination de l'API du robot en Wifi.

 

==>> http://Ip_Robot:Port/Cmd robot  à traiter au niveau du robot et exécuter l'order "CmdRobot"

 

Screenshot_requete hhtp.png

 

 

Et la page du dashboard  Imperihome créée pour la commande du robot mobile avec le flux du retour vidéo de la caméra Wifi du robot et les boutons de commande "requète http"

Image(s) jointe(s)

  • Screenshot_Imperihome.png

Pura vida

 

Ma chaine youtube  https://www.youtube....EQ5MTR3A/videos

Tutoriel MIT Inventor2  https://www.robot-ma...e-robot-mobile/




Répondre à ce sujet



  



Aussi étiqueté avec au moins un de ces mots-clés : Arduino, Raspberry PI3, MIT Inventor 2, Rover, UGV, Robot mobile, PID

0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users