IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Débuter dans les monde des systèmes embarqués


Sujet :

Raspberry Pi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Débuter dans les monde des systèmes embarqués
    Bonjour à tous, je viens demander votre aide pour entrer dans le monde merveilleux des systèmes embarqué. Tout d'abord je tiens à signaler le contexte dans lequel je me trouve, je suis en école d'ingénieur dans un cursus mécanique très porté sur la conception, et au cours de ce semestre nous avons chacun un gros projet et j'ai eu le malheur de tiré au sort un sujet plus porté sur l'informatique industrielle. Sujet que je n'ai jamais étudié.

    Ce projet consiste à réaliser un système embarqué pour un mini tour machine (machine d'usinage) en temps réel. Actuellement j'ai configuré une raspberry PI avec un sytème d'exploitation linux et xenomai. Mais voilà, maintenant je suis totalement bloqué, je ne sais absolument pas ce que je suis sensé faire. Et bien entendu il n'y a aucun professeur pour m'aider.

    Quels est la marche à suivre maintenant ? Dois je réaliser des scripts pour le contrôle de mes entrées et sorties GPIO ? La programmation sous xenomai pour du temps réel se fait sous la forme de script shell ? De langage C ?
    N'hésitez pas à me fournir des liens si vous pouvez.

    De plus si je réussis à conduire ce projet jusqu'au bout, je prévois surement d'utiliser mon rapport final pour réaliser un tuto sur la conception de système embarqué pour les nuls.

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonjour,

    pour Xenomai voici un tutoriel :
    http://dchabal.developpez.com/tutoriels/linux/xenomai/
    sur cet OS je n'en dirai pas plus car je ne le connais pas.

    Ensuite, en lisant ton message, j'ai l'impression que tu manques d'organisation.
    Tu dois te poser des questions avant de te lancer dans un projet.
    - Quel est le but du projet ? Ici piloter une machine, un tour. Mais comment ?
    - Quelles sont les contraintes ? Faut-il un raspberry PI et Xenomai ? Contraintes de temps (précision temporelle) ?
    - Caractéristiques de ce tour ? Quelles sont ses entrées ? Ses sorties ? Quel est son équipement ?
    => pour les entrées : quels sont les signaux à envoyer ? Des signaux TTL (oui / non), Analogiques, PWM (pour moteurs pas à pas) ? Les boutons de commandes (arrêt d'urgence par exemple)
    => les sorties ? Vitesse de rotation ? Fin de course ? Positions ?

    Une fois que tout ceci sera bien défini tu verras plus clair. Je pense aussi que tu peux demander des précisions à tes professeurs

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Merci pour la réponse, je vais éclairer un peu votre lanterne vis à vis de ce projet.

    Citation Envoyé par Auteur Voir le message
    - Quel est le but du projet ? Ici piloter une machine, un tour. Mais comment ?
    Ici le but du projet est de contrôler un tour machine, en utilisant ce qu'on appelle un FAO (un logiciel de fabrication assisté par ordinateur), ce FAO est le logiciel ESPRIT, il va construire toute les trajectoires que devra suivre l'outils pour usiner la pièce. J'ai donc en sortie de ce logiciel les trajectoire et leur vitesse.

    - Quelles sont les contraintes ? Faut-il un raspberry PI et Xenomai ? Contraintes de temps (précision temporelle) ?
    Les contraintes, je dois utiliser Xenomai car c'est ce qui est utilisé par un laboratoire qui travaille en commun avec mon école. Le Raspberry est aussi une contrainte mais de coût. La contrainte de temps j'ai dû mal à la définir mais on doit obtenir en final des pièces de bonnes qualités, le moteur ne doit donc pas sauter de manière impromptue. D'où le temps réel.

    - Caractéristiques de ce tour ? Quelles sont ses entrées ? Ses sorties ? Quel est son équipement ?
    Le tour est un vieux tour utilisé de l'enseignement que l'on souhaite remettre au gout du jour. On a deux moteurs pas à pas qui contrôle les axes x et z, avec quatre butées de fin de course. Et un moteur de broche à courant continue. Nous n'avons aucun capteur dessus, il n'y aura donc pas de grosses parties asservissements.

    => pour les entrées : quels sont les signaux à envoyer ? Des signaux TTL (oui / non), Analogiques, PWM (pour moteurs pas à pas) ? Les boutons de commandes (arrêt d'urgence par exemple)
    Pour les entrées, au moteur pas à pas on utilise des carte de contrôle, auxquels on envoie des signaux TTL, quand au moteur à courant continue on va utiliser un PWM associé à un mosfet.

    => les sorties ? Vitesse de rotation ? Fin de course ? Positions ?
    En sorties nous avons exclusivement des fins de courses.

    Le gros point bloquant dirons nous, est de crée la partie logiciel sur le raspberry pour créer un système autonome qui en recevant les informations, par connexion RJ45, de la FAO lance les fonctions qui contrôle les moteurs. Je suppose que je dois créer toute cette partie en C, puis gérer tout ce qui est tâche vers Raspberry ? Enfin cette partie pour moi reste une grosse boite noir, et je ne sais pas par quel bout la prendre. J'ai essayé de trouver des projets déjà réalisé dans ce genre sur internet, mais c'est souvent peu développé sur la partie technique du système embarqué.

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Donc ton application consiste à "traduire" les informations envoyées par le FAO en langage compréhensible par la machine. Si je ne me trompe pas, le FAO va générer un GCode que le Raspberry doit traduire pour génèrer les signaux nécessaires au pilotage de ta machine.

    Je pense que le but est là : analyser le code généré par Esprit puis le traduire en langage machine.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Donc ton application consiste à "traduire" les informations envoyées par le FAO en langage compréhensible par la machine. Si je ne me trompe pas, le FAO va générer un GCode que le Raspberry doit traduire pour génèrer les signaux nécessaires au pilotage de ta machine.

    Je pense que le but est là : analyser le code généré par Esprit puis le traduire en langage machine.

    Tout à fait, sauf qu'ici ce n'est pas du code G que je reçois mais directement des micro-trajectoire avec leur vitesse. Pour gagner en précision d'usinage, en gros sur esprit on a programmé une fonction qui envois (position, vitesse, accélération, vitesse de broche).

    Ici je dois donc coder une application qui se lance au démarrage de ma carte. Dois je la coder en C puis la gérer grâce à Xenomai ?

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par NoobProg Voir le message
    Tout à fait, sauf qu'ici ce n'est pas du code G que je reçois mais directement des micro-trajectoire avec leur vitesse. Pour gagner en précision d'usinage, en gros sur esprit on a programmé une fonction qui envois (position, vitesse, accélération, vitesse de broche).
    le GCode contient ce genre d'instructions (il y a des variantes mais elles ont la même base).

    Citation Envoyé par NoobProg Voir le message
    Ici je dois donc coder une application qui se lance au démarrage de ma carte. Dois je la coder en C puis la gérer grâce à Xenomai ?
    Xenomai est un OS (qui est installé sur ton Raspberry ), c'est lui qui exécutera ton application. Ton application lit les données provenant de ton logiciel de FAO puis pilote les sorties de ton Raspberry. C'est comme ça que je vois ton problème (j'espère ne pas me tromper ).

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Auteur Voir le message
    le GCode contient ce genre d'instructions (il y a des variantes mais elles ont la même base).



    Xenomai est un OS (qui est installé sur ton Raspberry ), c'est lui qui exécutera ton application. Ton application lit les données provenant de ton logiciel de FAO puis pilote les sorties de ton Raspberry. C'est comme ça que je vois ton problème (j'espère ne pas me tromper ).
    Justement, on veut se débarrasser du G-Code pour gagner en précision.
    Sinon tu as tout bon, là où je bloque actuellement c'est pour la gestion des paquets en TCP/IP, comment détecter les paquets, les buffer, pour pouvoir ensuite lancer l'usinage. Je pense que pour cela il faut coder une application en C, qui se lance au démarrage de la carte Raspberry ?

    Ensuite j'ai une question un peu plus technique sur du code. Je gère mes moteurs via du code en C grace à la librairie WiringPI. Tout mes moteurs fonctionnent par signaux TTL. Or comment faire avec du C, pour continuer à emmètre mes signaux tout en continuant la lecture du code ? Dois-je faire du multi-tache ? C'est à dire lancer un autre fichier C qui tourne en boucle jusqu'à ce que mon code principal le ferme ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Finalement pour le multi-tache j'ai trouvé de la doc sur Developpez

  9. #9
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par NoobProg Voir le message
    Sinon tu as tout bon, là où je bloque actuellement c'est pour la gestion des paquets en TCP/IP, comment détecter les paquets, les buffer, pour pouvoir ensuite lancer l'usinage.
    Tu as le choix entre 2 protocoles : le TCP (un peu lent mais sûr) ou l'UDP (plus rapide, mais il y a des risques d'erreurs). Mais il faut que les deux programmes travaillent avec le même protocole. A mon avis, le logiciel de FAO est le serveur, et la carte Raspberry ton client. Une fois la communication établie, le client se met en attente d'un message. Je ne pense pas que cette partie soit la plus compliquée.


    Citation Envoyé par NoobProg Voir le message
    Je pense que pour cela il faut coder une application en C, qui se lance au démarrage de la carte Raspberry ?
    Là je ne sais pas quoi répondre, je ne développe pas d'application pour ce genre de carte, mais la logique voudrait ça, oui. Peut-être devras-tu prévoir un bouton Reset pour le programme en cas de plantage et pourquoi pas un on/off ?

    Citation Envoyé par NoobProg Voir le message
    Ensuite j'ai une question un peu plus technique sur du code. Je gère mes moteurs via du code en C grace à la librairie WiringPI. Tout mes moteurs fonctionnent par signaux TTL. Or comment faire avec du C, pour continuer à emmètre mes signaux tout en continuant la lecture du code ? Dois-je faire du multi-tache ? C'est à dire lancer un autre fichier C qui tourne en boucle jusqu'à ce que mon code principal le ferme ?
    J'ai pensé aussi au multi-threading, mais je ne sais pas comment cette notion est traitée au niveau de Xenomai car est un OS temps réel. Il faut te documenter. Peut-être que la librairie WiringPI gère ce genre de choses.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2013, 23h24
  2. Réponses: 0
    Dernier message: 12/09/2012, 19h41
  3. Réponses: 2
    Dernier message: 27/07/2006, 15h54
  4. Lag dans les requêtes des répliques mais pas du maître
    Par Thomas JOUANNOT dans le forum Access
    Réponses: 3
    Dernier message: 16/03/2006, 09h17
  5. DBGrid, comment dessiner dans les titres des colonnes
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 04/11/2004, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo