Aller au contenu


Photo

Mon projet pas à pas

Quadrupède

  • Veuillez vous connecter pour répondre
47 réponses à ce sujet

#21 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 22 mars 2010 - 06:55

Ce week end j'ai pratiquement fini le typon qui contient le contrôleur des 8 servomoteurs avec son PIC 16F84, mais la plaque possède aussi le régulateur 5V, ainsi que l'adaptateur PC pour le PIC et aussi l'adaptateur PC pour la Fox G20 avec son MAX3232 (qui j'espère rentre dans un support DIP 16...) et tous ça dans les même dimension de la Fox G20 !! J'avoue j'ai galèré :rolleyes:

Qu'est-ce que tu entends par "adaptateur PC pour PIC"? Un MAX232? Si c'est le cas, tu utilises un MAX232 et un MAX3232? C'est une complexité inutile, à mon avis. Les signaux séries du PIC et de la FOX sont compatibles, même s'ils ne sont pas au mêmes niveaux de tension: la FOX accepte des niveaux 0-5V bien que travaillant en 3.3V, et le PIC accepte des niveaux 0-3.3V bien que travaillant en 5V. Tu peux directement les relier.

Pourquoi ne pas prévoir un connecteur au pas de 2.54mm avec les connexions bien placées, qui te permette de relier FOX et PIC avec 2 Jumpers? (placer TX_PIC en face de RX_FOX et RX_PIC en face de TX_FOX). La conversion vers des signaux RS232 se ferait alors avec un adaptateur externe, que tu n'utilisera que pour les phases de débuggage.

Du coup, ça te laisserai plein de place sur ta carte électronique.
Après, je n'ai peut-être pas tout compris à ce que tu veux faire...

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#22 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 22 mars 2010 - 08:42

Qu'est-ce que tu entends par "adaptateur PC pour PIC"? Un MAX232? Si c'est le cas, tu utilises un MAX232 et un MAX3232? C'est une complexité inutile, à mon avis. Les signaux séries du PIC et de la FOX sont compatibles, même s'ils ne sont pas au mêmes niveaux de tension: la FOX accepte des niveaux 0-5V bien que travaillant en 3.3V, et le PIC accepte des niveaux 0-3.3V bien que travaillant en 5V. Tu peux directement les relier.

Voici ce que j'entends par adaptateur de PIC :

Image IPB
Source : http://fribotte.free.fr/bdtech/8servomoteurs/8servomoteurs.html

Un petit montage à base d'un transitor BC457 et de trois résistances de 4,7 Kohm, ce n'est pas lui qui prends le plus de place ^_^

Sur ce schéma on peut voir 8 connecteurs de ES0 à ES7, d'après ce que j'ai compris, pour un port série (9 broches) RS232 il est nécessaire d'utiliser qu'un seul connecteur (par exemple ES0) à connecter sur la patte 3 du port série et de connecter la masse à la patte 5 ?? Donc deux pattes seulement sont utilisées sur le port série R232 pour faire fonctionner ce PIC ??

Tu as tout à fait compris ce que je voulais faire Leon ! Mais je n'étais pas certain que les signaux séries du PIC et de la FOX G20 étaient compatibles...

J'ai trouvé le brochage de la Fox G20 : http://foxg20.acmesystems.it/doku.php?id=hw:foxg20pinout

Voici ce qui est dit pour le brochage du port J10 :

Pin # 	 ID 	 Line 	 Alt 	 Description
J10.1 		3V3 		3.3 volt DC power line
J10.2 	56 	PA24 	TWCK 	I2C Clock
J10.3 	79 	PB15 	DTXD 	Transmit line ttyS0 Debug port
J10.4 	78 	PB14 	DRXD 	Receive line ttyS0 Debug port
J10.5 	55 	PA23 	TWD 	I2C Data
J10.6 		GND 		Signal ground

Pourquoi ne pas prévoir un connecteur au pas de 2.54mm avec les connexions bien placées, qui te permette de relier FOX et PIC avec 2 Jumpers? (placer TX_PIC en face de RX_FOX et RX_PIC en face de TX_FOX). La conversion vers des signaux RS232 se ferait alors avec un adaptateur externe, que tu n'utilisera que pour les phases de débuggage.
Du coup, ça te laisserai plein de place sur ta carte électronique.
Après, je n'ai peut-être pas tout compris à ce que tu veux faire...

Leon.

:wacko: Je pensais qu'il suffisait de relier DTX_FOX à TX_PIC et le GND_FOX au GND_PIC... Où se situe RX_PIC ?? Je suis désolé si mes questions pourraient paraitre stupide mais je débute dans les PIC... Avec la doc du brochage du port J10 de la Fox je comprends que TX permet d'envoyer et RX de recevoir, mais ici mon PIC n'enverra pas de signal à ma Fox si ??

Dernière question concernant l'électronique de ma plaque :

Image IPB
Source : http://foxlx.acmesystems.it/?id=35

Je voulais juste savoir si je me trompais... Car je comptais relier :

3v3 de la Fox à +3.3V du MAX3232
GND de la Fox au GND du MAX3232
DRXD de la Fox à RXD du MAX3232
DTXD de la Fox à TXD du MAX3232
TWD de la Fox à RTS du MAX3232
TWCK de la Fox à CTS du MAX3232

PS : j'ai édité mon post précédent pour mettre la photo de mes 8 servomoteurs. Et je voulais te remercier Leon d'être toujours aussi présent pour mon projet !!

#23 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 28 mars 2010 - 09:27

Bonjour à tous,

Petit up :rolleyes: Je sais que mon projet est un peu "centré" par ce que j'utilise la Fox G20 (enfin je pense) mais j'espérai que mon topic serait un peu plus actif...
En tous cas j'attends plus de monde lorsque je serait dans la partie programmation :P .

Bref en attendant la partie programmation je dois réaliser mes plaques électroniques et pour cela j'ai besoin que quelqu'un réponde à ces questions, que j'avais pausé précédemment :

Sur le schéma de l'adaptateur de PIC, on peut voir 8 connecteurs de ES0 à ES7, d'après ce que j'ai compris, pour un port série (9 broches) RS232 il est nécessaire d'utiliser qu'un seul connecteur (par exemple ES0) à connecter sur la patte 3 du port série et de connecter la masse à la patte 5 ?? Donc deux pattes seulement sont utilisées sur le port série R232 pour faire fonctionner ce PIC ??


Et j'aurais besoin de quelqu'un qui pourrait me confirmer ce brochage :

3v3 de la Fox à +3.3V du MAX3232
GND de la Fox au GND du MAX3232
DRXD de la Fox à RXD du MAX3232
DTXD de la Fox à TXD du MAX3232
TWD de la Fox à RTS du MAX3232
TWCK de la Fox à CTS du MAX3232

Merci énormément d'avance pour vos réponses, qui sont très importante pour moi et pour l'avancement de mon projet.

EDIT : Dois-je pauser ces questions dans la rubrique "Electronique" ?

#24 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 07 avril 2010 - 08:42

Bonjour à tous,

Triple post, mais bon j'en profite pour faire un up.

Je viens vous donner quelques nouvelles, plutôt bonnes :)

J'ai réalisé les plaques électroniques, c'est à dire le contrôleur des 8 servomoteurs avec son PIC16F84A et un petit adaptateur pour le port debug de la Fox G20 avec un MAX3232, les voici en image :

Le contrôleur au dimension de la Fox G20 (on peut voir qu'il me reste de la place) :

Image IPB
Lien : http://img179.imageshack.us/img179/2282/contrleur.jpg

L'adaptateur pour la Fox (pour le brochage je n'ai donc pas relié pour le moment les broches TWD et TWCK de la Fox G20) :

Image IPB
Lien : http://img406.imageshack.us/img406/9292/adaptateurfox.jpg

J'ai testé le PIC16F84A avec le programme donné sur le site de fribotte et cela fonctionne parfaitement !! :) Par contre je n'ai pas encore testé l'adaptateur pour la Fox G20.

Sinon j'ai enfin réussi à accéder à la Fox G20 par Ethernet !! J'ai essayé un petit Hello world qui marche à merveille :D

Maintenant que tout est en place, je commence la programmation !!

#25 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 07 avril 2010 - 09:51

.

Je suis très content de voir que tu avances, sans attendre forcément l'aide de ce forum. C'est clair qu'il faut être persévérent dans un tel projet. N'hésites pas à nous donner des nouvelles de tes avancées.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#26 Electron

Electron

    Pilier du forum

  • Membres
  • PipPipPipPip
  • 906 messages
  • Gender:Male
  • Location:LABEGE
  • Interests:Électronique, robotique ludique, programmation de jeux et utilitaires, et plein d'autres choses.

Posté 07 avril 2010 - 09:57

J'ai testé le PIC16F84A avec le programme donné sur le site de fribotte et cela fonctionne parfaitement !! :) Par contre je n'ai pas encore testé l'adaptateur pour la Fox G20.

Sinon j'ai enfin réussit à accéder à la Fox G20 par Ethernet !! J'ai essayé un petit Hello world qui marche à merveille :D

Maintenant que tout est en place, je commence la programmation !!

Bravo, c'est super cool de te voir avancer comme ça^^
Un jour tu fera un récap de la maneuvre dans un coin du forum^^

"Plus on partage, plus on possède, voilà le miracle". LEONARD NIMOY
"Celui qui se bat peut perdre, celui qui ne se bat pas a déjà tout perdu". BERTOLT BRECHT (1898-1956)
Comment se lancer dans la robotique !
Mince encore un post pour augmenter mon compteur ;)


#27 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 19 avril 2010 - 10:00

Bonjour à tous,

Me revoilà au travail sur mon projet après une petite semaine de vacances ^_^ .
Et je suis de retour avec de bonnes nouvelles en plus :) .

Pour commencer, j'ai enfin réussis à accéder au port debug avec minicom !! C'est peut être pas grand chose mais au moins je sais maintenant que mon petit adaptateur fonctionne parfaitement.

Je mettrai surement une capture d'écran ici, histoire d'imager tout ça...

Deuxième bonne nouvelle, ma clé WiFi est configurée et elle est opérationnelle !! Maintenant elle se connecte toute seule comme une grande au démarrage de la Fox G20.

Comme je l'ai dit précédemment, je me suis attaqué à la programmation, et j'ai besoin d'un peu d'aide :blush: .

Je vous rappelle que j'utilise le circuit décrit sur le site de Fribotte, et j'ai "compilé" son programme pour contrôler les servomoteurs dans mon PIC (j'étudie en parallèle le cours de 230 pages de bigonoff). D'après ce que j'ai compris, il faut envoyer sur RA1 avec le port série : 255 (par défaut) 0 (adresse de ma carte) 1 (numéro du servomoteur) 129 (un nombre de 4 à 255 pour définir la rotation du servomoteur)

Je souhaite utiliser le port /dev/ttyS1 de la Fox G20 pour envoyer les signaux.

Voici mon programme en C++ que j'ai réalisé (j'y ai mis le plus de commentaire possible pour qu'il soit compréhensible par tous) :

#include <iostream>
#include <fstream>                                                  // Pour ouvrir des fichiers, en lecture ou en écriture, il faut inclure l'entête fstream.
#include <string>                                                   // c_str() est une fonction de la librairie string, qui va renvoyer un pointeur vers un tableau de caractères

using namespace std;

void FonctEcriture(string Ligne)
{
    string FichierSerie = "/dev/ttyS1";

    ofstream Ecriture(FichierSerie.c_str(), ios::out);              // La classe ofstream (Output File stream) pour l'écriture
                                                                    // Modes d'ouverture : ios::out, on efface le fichier pour écrire ; ios::app, on se met à la suite du fichier pour écrire
                                                                    // Si le fichier n'existe pas ou s'il n'est pas trouvé, il sera créé
    if(Ecriture)                                                    // Si l'ouverture a réussi
    {
        cout << "On écrit dans le fichier " << FichierSerie <<" : "<< Ligne << endl;
        Ecriture << Ligne << endl;
        Ecriture.close();                                           // Pour fermer le fichier
    }

    else
    {
        cout << "Impossible d'écrire dans le fichier " << FichierSerie << " !\n";
    }
    return;
}

int FonctLecture()
{
    string FichierPos = "PosX.txt";                                 // On stocke dans la chaîne "FichierPs" le nom du fichier à ouvrir

    ifstream Lecture(FichierPos.c_str(), ios::in);                  // La classe ifstream (Input File stream ) pour la lecture
                                                                    // Le premier terme est le nom du fichier à ouvrir, et le deuxième est le mode d'ouverture.
                                                                    // Les modes proviennent tous de la classe ios_base
    if(Lecture)                                                     // Pour vérifier que l'ouverture a bien fonctionné
    {
        string Ligne;                                               // Déclaration d'une chaîne qui contiendra la ligne lue

        while(getline(Lecture, Ligne))                              // getline permet de lire et afficher à l'écran une ligne du fichier ou bien le fichier en entier en utilisant une boucle
                                                                    // Les deux paramètres : le flux que l'on crée avec ifstream, et la "cible" dans laquelle on va stocker le contenu lu dans le fichier
        {
            cout << "Dans le fichier " << FichierPos << " on lit : " << Ligne << endl;
            FonctEcriture(Ligne);
        }

        Lecture.close();                                            // Pour fermer le fichier
    }

    else
    {
        cout << "Impossible de lire le fichier " << FichierPos << " !\n";
    }

}

int main()
 {
      cout << "Hey !\n";

      FonctLecture();

    return 0;
 }

/*                                      MaPic+                                      */
Vous pouvez constater que ce programme n'est pas très compliqué. Sur ce site il est dit que : "L’ouverture est des plus simples puisqu’il suffit de la considérer comme un fichier". Donc j'ai considéré /dev/ttyS1 comme un fichier. Je commence par récupérer ligne par ligne le contenu du fichier PosX.txt puis je le recopie dans /dev/ttyS1.

En théorie cela fonctionne mais en pratique...

Est ce que ma méthode est bonne ??
Je ne suis pas sûr que ce programme écrive dans /dev/ttyS1, comment puis je le vérifier ??
L'envoi du signal 255 0 1 72 par exemple, suffit-il à contrôler le servomoteur ??

Je vous remercie énormement d'avance !! Cela me permettra vraiment d'avancer...

#28 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 20 avril 2010 - 05:43

Je ne suis pas sûr que ce programme écrive dans /dev/ttyS1, comment puis je le vérifier ??
L'envoi du signal 255 0 1 72 par exemple, suffit-il à contrôler le servomoteur ??

Bonjour à toi. Je ne pourrais pas t'aider sur le programme.
Par contre, personnellement, j'essaye toujours de voir ce qu'il se passe physiquement.
Ici, la meilleur des choses à faire, c'est de brancher le port série de ta Fox (celui utilisé pour piloter les servos) sur ton PC, pour voir ce qu'envoie la FOX, au travers d'un terminal série. Je pense que tu peux réutiliser l'adaptateur que tu as bricolé pour le "port console".

Pareil pour vérifier comment fonctionne le PIC: tu branches ton PC au PIC et tu envoies les bons caractères au moyen d'un terminal ou d'un autre logiciel qui bidouille le port série. J'utilisais "ComTools", qui permet aussi d'envoyer des données non ASCII (en hexa ou décimal).

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#29 galactus

galactus

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 21 avril 2010 - 07:33

je te rassure,je suis grave plus a la rue que toi sur un projet de bien plus petite envergure^^

#30 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 25 avril 2010 - 11:16

Bonjour à tous,

Ici, la meilleur des choses à faire, c'est de brancher le port série de ta Fox (celui utilisé pour piloter les servos) sur ton PC, pour voir ce qu'envoie la FOX, au travers d'un terminal série. Je pense que tu peux réutiliser l'adaptateur que tu as bricolé pour le "port console".

Pareil pour vérifier comment fonctionne le PIC: tu branches ton PC au PIC et tu envoies les bons caractères au moyen d'un terminal ou d'un autre logiciel qui bidouille le port série. J'utilisais "ComTools", qui permet aussi d'envoyer des données non ASCII (en hexa ou décimal).

Leon.

Je manque un peu de temps en ce moment mais j'ai quand même essayé de brancher le port série de la Fox G20 (celui qui contrôlera les servomoteurs) à mon PC par l'intermédiaire de mon petit adaptateur. J'ai lancé le programme que j'ai fais avec "2" par exemple comme donnée dans le fichier PosX.txt, je visionne le résultat avec Cutecom et j'obtiens bien quelque chose mais il s'agit que de 0 <_< ... J'ai essayé avec des valeurs binaire, hexa, et ASCII mais rien n'y fait, toujours le même résultat avec plus ou moins de 0.

J'ai donc voulu sniffer le port série de mon ordinateur pour voir ce que le programme du site Fribotte (pour contrôler les servomoteurs) envoie, mais pour cela il me faut un deuxième ordinateur, donc il faut que j'attende la semaine prochaine -_- .

Une fois que je saurai précisément ce qu'envoie ce programme je m'attaquerai au problème d'écriture sur le port série de la Fox G20.

En tous cas merci pour ton aide Leon et ta présence !

je te rassure,je suis grave plus a la rue que toi sur un projet de bien plus petite envergure^^

Hey ça fait plaisir de voir une nouvelle personne active sur mon topic, et qui me rassure en plus ^_^ .

Sinon en rentrant des vacances j'ai dû réinstallé les partitions sur ma micro SD (car je ne sais pour quelle raison la Fox G20 n'arrivait plus à la lire et mon ordi non plus d'ailleurs...) et depuis que j'ai réinstaller la configuration du WiFi, celui-ci ne se connecte plus tous seul.

Voila je vous tiendrai au courant dès que j'aurrais réussit à sniffer le port série de mon ordinateur.

A bientôt ;) .

#31 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 26 avril 2010 - 06:15

As-tu bien vérifié les paramètres de ta com série partout? Partout = Fox + PC + PIC.
Ce qu'il y a à vérifier:
Baud Rate? Bit de parité? Longueur du Start? Du Stop? Contrôle de flux?

Sinon, pas besoin de 2 PC pour espionner les 2 sens d'une liaison série. Il y a 2 méthodes très simples:
Soit tu rajoutes un port série avec un adaptateur USB supplémentaire.
Soit tu fais un "espion série" qui fait un OU logique entre 2 lignes. Si tes 2 micros (fox+PIC) ne parlent pas en même temps (ce qui doit se vérifier avec le programme que tu utilises), alors 1 seul port série suffit.
Attention, le OU logique se fait avec des niveaux de tension inversés. Un 1 correspond à 0V, et un 0 correspond à 3VV. Donc en fait, pour faire un OU logique sur des liaisons série 3V (ou 5V), il faut en fait utiliser des portes ET... pas très logique tout ça, mais c'est comme ça!

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#32 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 12 mai 2010 - 08:54

Bonjour à tous,

Je viens vous donner quelques nouvelles de mon projet ^_^ .

As-tu bien vérifié les paramètres de ta com série partout? Partout = Fox + PC + PIC.
Ce qu'il y a à vérifier:
Baud Rate? Bit de parité? Longueur du Start? Du Stop? Contrôle de flux?

Oui j'ai vérifié les paramètres de ma com série, en fait le problème venait du logiciel qui est donné sur le site de fribotte car il était configuré de la façon suivante :
- 1 bit de start
- 1 bit de stop
- 8 bits de donnée
- 2400 bauds
Donc après avoir configuré un bon petit logiciel sur Ubuntu pour bidouiller le port série (cutecom) avec ces paramètres, j'ai obtenu de meilleurs résultats :) .
En effet j'ai sniffé ce qu'envoyait le logiciel fournit par fribotte et voici un bout de résultat :

00000000: ff 00 00 80 ff 00 01 80 ff 00 02 80 ff 00 03 80
00000010: ff 00 04 80 ff 00 05 80 ff 00 06 80 ff 00 07 80

Ici j'ai juste activé les 8 servomoteurs. On peut constater que les informations envoyées sont en hexadécimal et elles correspondent bien au schéma suivant : 255 (par défaut) 0 (adresse de ma carte) 1 (numéro du servomoteur) 129 (un nombre de 1 à 255 pour définir la rotation du servomoteur).

Une fois les bonnes informations récupérées, j'ai essayé de les envoyer avec mon programme sur le port /dev/ttyS1 de la Fox G20. Mais le port de la Fox n'est pas configuré de la même manière décrite un peu plus haut. J'ai donc entrepris de le paramétrer, mais je bloque un peu <_< ...

Pour le paramétrer j'utilise la commande linux "stty". Par exemple voici la configuration par défaut du port /dev/ttyS1 de la Fox G20 :

debarm:~# stty -a -F /dev/ttyS1
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Déjà nous pouvons constater que les bauds étaient trop élevées, pour les changer il suffit d'entrer la commande : stty 2400 < /dev/ttyS1 (pour les vieux) ou stty 2400 -F /dev/ttyS1 (pour les jeunes) :P
Après la commande on peut observer le résultat :

debarm:~# stty 2400 -F /dev/ttyS1
debarm:~# stty -a -F /dev/ttyS1
speed 2400 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd "cs8" hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Mais je n'arrive qu'à configurer les bauds...

Est ce qu'il y a qu'un seul bit de start et un seul bit de stop dans cette configuration ?

Je sais que "-cstopb" signifie que le port utilise qu'un seul bit d'arrêt par caractère, mais cette option et utilisé normalement en entrée...
J'ai oublié, il n'y a pas besoin de configurer le nombre de bit de donné car il est déjà de 8 (je l'ai mit entre guillemet en vert).

Malgré que je ne sais pas si la configuration est parfaite, j'ai tenté de lire ce qu'envoyait mon programme sur le port /dev/ttyS1 de la Fox G20 avec cutecom et voici le résultat en image :
Image IPB
Lien : http://img27.imageshack.us/i/cutecom.png/ (la résolution est beaucoup plus grande)

Sur la capture d'écran on voit bien que le contenu du fichier PosX.txt est envoyé sur le port série, mais je ne sais pas pourquoi il y a un saut de ligne... Est ce que cela aura un impact sur le contrôle des servomoteurs ?

Pour finir j'ai gardé les 4 premières lignes du fichier PosX.txt et j'ai essayé de l'envoyer à ma carte qui contrôle les servomoteurs. Lorsque j'utilise TxD du port série rien ne se passe, et lorsque j'utilise RxD le premier servomoteur bouge bizarrement.

Normalement pour envoyer mes données avec la Fox G20 je dois utiliser TxD ou RxD ?

Sinon je pense que cela ne fonctionne pas car comme il est dit sur le site de fribotte : "la carte 8 servomoteurs n'accepte que les niveaux logiques RS232-TTL ( 0V pour le 0 ; 5V pour le 1 )" et le port série de la Fox G20 ne fournit que du 3,3V maximum.

Ne pensez vous pas que j'ai besoin d'un petit adaptateur pour convertir les signaux de la Fox G20 en niveaux logiques TTL ?

EDIT: Je ne sais plus si je l'ai dit avant mais dans mon programme pour recopier le contenu du fichier PosX.txt sur le port série j'ai deux solutions, soit j'écrase le contenu de /dev/ttyS1 puis j'écris une ligne, puis je reécrase, j'écris la deuxième ligne, ETC. Ou alors j'écris ligne après ligne sans écraser le contenu. Je ne sais pas si ça change quelque chose pour le port série.

Je vous remercie d'avance ! Enfin je te remerci d'avance Leon ;)

#33 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 14 mai 2010 - 07:28

Tu testes la com en branchant la Fox sur ton PC, c'est ça?

Sinon, les niveaux de tension sont compatibles, car le PIC que tu utilises pour piloter tes servos est compatible de niveaux de tension 0 - 3,3V. Le problème ne vient pas de là.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#34 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 16 mai 2010 - 07:59

Bonjour,

Tu testes la com en branchant la Fox sur ton PC, c'est ça?

Sinon, les niveaux de tension sont compatibles, car le PIC que tu utilises pour piloter tes servos est compatible de niveaux de tension 0 - 3,3V. Le problème ne vient pas de là.

Leon.

Oui c'est ça, je branche le port série qui m'intéresse (ici le /dev/ttyS1) sur mon adaptateur que j'ai bricolé pour la Fox G20, et après avoir paramétré le port avec stty 2400 -F /dev/ttyS1 je lance mon programme.

Ensuite avec le logiciel cutecom configuré (2400 bauds, 1 bit de stop, et 8 bits de données) je lis les informations que je reçois du port /dev/ttyS1 de la Fox G20.

Et je reçois bien le contenu de mon fichier PosX.txt, sauf comme je l'ai dit à la 5eme ligne du 6eme bit j'ai un retour à la ligne et je ne sais pas pourquoi (on le voit sur l'imprime écran que j'ai fait)...

Mais je ne pense pas que ce retour à la ligne ai une influence sur le fonctionnement de mon contrôleur de servomoteurs.

Hum, ok je te crois Leon, mais je ne vois vraiment pas d'où peut venir mon problème <_<

Si quelqu'un a une idée, n'hésitez pas...

À bientôt.

Ps : Leon j'attends avec impatience de voir l'avancement de ton BOB4 !!

#35 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 13 juin 2010 - 09:17

Bonjour à tous !

Je fais un petit up pour vous donner quelques nouvelles qui sont plutôt excellentes :D .

Je vais laisser place à une vidéo que j'ai prise.

http://www.youtube.com/watch?v=zjPWUvo9wYM

Vous pouvez constater que mes 8 servomoteurs bougent enfin ! J'ai donc résolu mon problème de port série.

En fait il y avait deux problèmes, le premier, je m'en doutais, la configuration du port série de la Fox G20 n'était pas complète. Il me fallait alors trouver la bonne configuration, mais avec tous les paramètres de stty se n'était pas simple. Mais j'ai trouvais une solution qui m'a facilité la vie ! Lorsque j'utilise cutecom (mon logiciel sous linux qui exploite le port série de mon ordinateur) j'ai remarqué qu'il changé la configuration du port utilisé, ce qui est logique mais je pensais que c'était éphémère. Il ma donc suffit de comparer la configuration du port série de mon ordinateur avec celui de la Fox G20 et de corriger les paramètres qui n'était pas identiques.

Pour ceux qui s'intéresse, voici les différentes configurations :

  • La configue du PC qui fonctionne :
    speed 2400 baud; rows 0; columns 0; line = 0; 
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; 
    eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; 
    werase = ^W; lnext = ^V; flush = ^O; 	min = 60; time = 1; 
    -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts 
    ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff 
    -iuclc -ixany -imaxbel -iutf8 
    -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
    -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt 
    -echoctl -echoke
  • La configue de la Fox Board G20 qui ne fonctionne pas :
    speed 9600 baud; rows 0; columns 0; line = 0; 
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; 
    eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; 
    werase = ^W; lnext = ^V; flush = ^O; 	min = 1; time = 0; 
    -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts 
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff 
    -iuclc -ixany -imaxbel -iutf8 
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt 
    echoctl echoke
Mon deuxième problème venait des données envoyées. En effet cutecom affichait les données reçues brutes, lorsque je les envoyais depuis la Fox G20 avec mon programme. Alors qu'avec le logiciel qui contrôlait les servomoteurs, il affichait les données en hexadécimal. Donc dans mon programme j'ai du passer par des variables char car avec la lecture d'un fichier.txt on obtient des chaines.

Un exemple, je lis "a" dans mon fichier.txt, cutecom affiche "a" en donnée brute. Si je lui demande en hexadécimal il m'affiche "61" qui correspond au code hexadécimal de "a". Donc pour obtenir "80" à l'affichage de cutecom en hexadécimal il faut envoyer un caractère "128" (char 128 en C++).

Après avoir résolu ces problèmes j'ai fait un fichier.txt de 317 lignes de données pour arriver au résultat de la vidéo. Au début j'avais un petit soucis au bout de plusieurs utilisations les servomoteurs se "déréglé" et n'arrivaient plus au résultat demandé. J'ai d'abord pensé que ça venait du signal mais en fait il suffit de désactiver les servomoteur après chaque ordre, il devait surement s'envoyer des parasite mutuellement ^_^ .

Bref maintenant que mes servomoteurs fonctionnent, que ma webcam fonctionne en streaming, et que ma Fox G20 accepte de se connecter avec ma clé Wifi, je vais pouvoir attaquer la partie beta de la mécanique !

A bientôt ;)

#36 Electron

Electron

    Pilier du forum

  • Membres
  • PipPipPipPip
  • 906 messages
  • Gender:Male
  • Location:LABEGE
  • Interests:Électronique, robotique ludique, programmation de jeux et utilitaires, et plein d'autres choses.

Posté 14 juin 2010 - 12:23

Félicitation !!!
Avec cette mésaventure tu as fait un bond dans ta connaissance de la technologie informatique ;)
ça sert à ça les mésaventures aussi, à s'améliorer ;)
Je suis content que ton système fonctionne enfin ! :P

Ps : Tes servos qui bougent, on dirait des pingouins en train de danser ou de s'agiter ;)

"Plus on partage, plus on possède, voilà le miracle". LEONARD NIMOY
"Celui qui se bat peut perdre, celui qui ne se bat pas a déjà tout perdu". BERTOLT BRECHT (1898-1956)
Comment se lancer dans la robotique !
Mince encore un post pour augmenter mon compteur ;)


#37 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 15 juin 2010 - 05:48

On est content de voir que ça progresse.

Qu'est-ce que tu entends par "je dois désactiver les servomoteurs après chaque ordre"? Je n'ai pas bien compris. Tu arrives apparemment à piloter plusieurs servos simultanément, donc le problème ne vient pas de là.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#38 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 15 juin 2010 - 09:32

Bonjour à tous,

Félicitation !!!
Avec cette mésaventure tu as fait un bond dans ta connaissance de la technologie informatique ;)
ça sert à ça les mésaventures aussi, à s'améliorer ;)
Je suis content que ton système fonctionne enfin ! :P

Ps : Tes servos qui bougent, on dirait des pingouins en train de danser ou de s'agiter ;)

Merci beaucoup Electron, ça fait toujours plaisir de se faire féliciter :D

Oui c'est vrai, mon robot ma permit (et va me permettre) de mettre en pratique mes quelques connaissances en informatique (et électronique) et aussi de découvrir de nouvelles choses. La réalisation d'un tel projet est vraiment bénéfique !

Ps : Tu veux dire des Tux en train de danser ^_^
Image IPB

On est content de voir que ça progresse.

Qu'est-ce que tu entends par "je dois désactiver les servomoteurs après chaque ordre"? Je n'ai pas bien compris. Tu arrives apparemment à piloter plusieurs servos simultanément, donc le problème ne vient pas de là.

Leon.

Par exemple j'envoie 255 0 0 128 (je ne vais pas revenir sur les détails...) après avoir reçu et exécuté cette commande le servomoteur produit un petit bruit de tremblement, si j'envoie 255 0 0 000 le servomoteur se désactive c'est à dire qu'il ne change pas de position et que le bruit s'interrompt.

Apparemment lorsque je ne les désactive pas après un ordre, s'il y a plusieurs servomoteurs en fonctionnement au bout d'un moment ils feront n'importe quoi et s'arrêteront de fonctionner.

Le fait de désactiver chaque servomoteurs après une commande a résolut le problème.

Voici un bout d'un fichier Pos.txt que j'utilise :

255 0 0 255
255 0 4 128
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
255 0 0 000
255 0 4 000
255 0 1 255
255 0 5 128
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
255 0 1 000
255 0 5 000
255 0 2 128
255 0 6 001
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
255 0 2 000
255 0 6 000
255 0 3 128
255 0 7 001
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
000 0 0 000
255 0 3 128
255 0 7 001

Information :
  • les 10 lignes de "000 0 0 000" me permet de réaliser la temporisation des commandes
  • et le reste n'a pas changé, 255 (par défaut) 0 (adresse de ma carte) 1 (numéro du servomoteur) 128 (un nombre de 001 à 255 pour définir la rotation et 000 pour le désactiver).


#39 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 16 juin 2010 - 05:46

Si tu désactives des servos sur un robot marcheur, est-ce qu'il n'y a pas un risque que le robot s'effondre sous son propre poids? Que les servos ne le retienne plus?

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#40 MaPic+

MaPic+

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male
  • Location:Meuse (55)

Posté 16 juin 2010 - 09:00

Bonjour Leon,

En effet je viens de vérifier et les servomoteurs résistent beaucoup moins à une force lorsqu'ils sont désactivés -_-
Et cela va me poser des problèmes... Car comme tu l'as dit je ne sais pas s'ils vont résister à la marche (et en plus je suis toujours dans l'optique de le faire voler un jour).

Du coup je ne sais pas comment faire. Si je désactive mes servomoteurs ils ne supportent plus de force trop grande, mais si je ne les désactive pas au bout de quelque minute ils deviennent fous et ne veulent plus fonctionner...

Quelqu'un a déjà rencontré ce problème ?

Merci de vos réponses et à bientôt.

Ps : bravo Leon pour ta réflexion, tu m'évites de mauvaises surprises.





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

0 members, 0 guests, 0 anonymous users