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 :

Besoin de conseils pour programmation embarquée


Sujet :

Raspberry Pi

  1. #1
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Technicien R&D
    Inscrit en
    janvier 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : janvier 2005
    Messages : 298
    Points : 112
    Points
    112
    Par défaut Besoin de conseils pour programmation embarquée
    Bonjour,
    Dans le cadre d'une POC pour un petit projet perso, j'aimerai programmer sur RPI en utilisant les IO dispo en langage C/C++.
    J'ai fait un peu de C il y a longtemps mais à un niveau très basique...

    Pour débuter j'aimerai gérer 2 input, 2 output et afficher quelques messages sur le consoles.

    Le programme devrais faire :
    Si Input 1 pendant X1 secondes, mettre Ouput à 1.
    Si /Input 1 pendant X2 secondes, afficher un premier message.
    Si /Input 1 pendant X3 secondes, afficher un second message.
    Si /Input 1 pendant X4 secondes, afficher un troisième message.
    Les timers devrait être synchronisé avec le t0 où on a /Input.
    Et bien évidement chaque timers doit être annulé (ou remis à zéro) suivant le changement d'état de l'Input.

    Idem avec Input 2 et Ouput 2, pour avoir un exemple de programmation avec un peu de "parallélisme".

    Enfin, j'aimerai que chaque tempo soit réglables depuis un web server (simple page web) et que les changement soit pris en compte en temps réel.

    Mes questions :
    - Quelle bibliothèque utiliser pour gérer le GPIO ? WiringPi (noté "deprecated" sur le dernier article du site), bcm2835, autre ?
    - Pour la gestion des timers / events : il me parait évident qu'un sleep ne fera pas l'affaire ... dois-je mettre mes timers dans des threads séparés du programme principale ou existe-t-il une autre technique ? Pour les annulé je tue les threads, puis j'en crée d'autre ?
    - Comment réaliser l’interaction programme <-> page web ?
    - Auriez vous des exemples de codes ?

    Une fois que je saurais faire ça, je pourrais étoffer ma POC et faire des "vrai" trucs avec le GPIO et le RPI

    J'ai commencé à faire quelques recherches, mais je ne trouve que des exemples simple et pas très concret

    Merci par avance pour votre aide.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    novembre 2006
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : novembre 2006
    Messages : 358
    Points : 1 058
    Points
    1 058
    Par défaut
    Bonjour,

    Je n'ai aucune idée du POC et juste regardé sur Internet!?! Cela semble assez la "classe".

    Si vous voulez vraiment "faire des "vrai" trucs avec le GPIO et le RPI" en programmation, il faudra le faire en Python.
    Si vous voulez vraiment passer pro, il faudrait créer des classes Python, etc.

    Moi-même je suis, disons, un amateur en Python, un pro en C++ et encore plus en Java.
    Donc, si je devais faire du solide, moi-même, je prendrais le Pi4J.

    Cordialement.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    24 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 24 564
    Points : 181 379
    Points
    181 379
    Billets dans le blog
    51
    Par défaut
    Bonjour,

    J'ose croire que l'on peut manipuler les IO du RPi en C/C++ avec wiringpi. Mais bon, le Python c'est bien aussi .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    novembre 2006
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : novembre 2006
    Messages : 358
    Points : 1 058
    Points
    1 058
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    J'ose croire que l'on peut manipuler les IO du RPi en C/C++ avec wiringpi.
    Oui, mais ce n'est plus supporté. Et quand on débute ....
    Référence: http://wiringpi.com/wiringpi-deprecated/

    Citation Envoyé par dark_vidor Voir le message
    Enfin, j'aimerai que chaque tempo soit réglables depuis un web server (simple page web) et que les changement soit pris en compte en temps réel.

    Mes questions :
    - Quelle bibliothèque utiliser pour gérer le GPIO ?
    - Pour la gestion des timers / events : il me parait évident qu'un sleep ne fera pas l'affaire ... dois-je mettre mes timers dans des threads séparés du programme principale ou existe-t-il une autre technique ? Pour les annulé je tue les threads, puis j'en crée d'autre ?
    - Comment réaliser l’interaction programme <-> page web ?
    Cela dépend de ton niveau et de tes connaissances.
    Si tu es un crac en Java, tout cela c'est du gâteau.
    Sinon prendre Python, et Flask pour le Web.

    Cordialement

  5. #5
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Technicien R&D
    Inscrit en
    janvier 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : janvier 2005
    Messages : 298
    Points : 112
    Points
    112
    Par défaut
    Bonjour,
    Merci pour vos retours, je ne suis pas un crack en Java, ni en Python, mais je me débrouille
    J'aurais aimé quelques choses de plus "bas niveau" pour pouvoir réutiliser au maximum mon code en embarquée, d'où ma volonté de faire en C/C++

  6. #6
    Rédacteur/Modérateur

    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    janvier 2009
    Messages
    10 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : janvier 2009
    Messages : 10 637
    Points : 46 151
    Points
    46 151
    Billets dans le blog
    9
    Par défaut
    Salut,

    Citation Envoyé par boijea Voir le message
    Donc, si je devais faire du solide, moi-même, je prendrais le Pi4J.
    The Pi4J Project - Dependencies
    Pi4J implements a JNI wrapper of the WiringPi library developed by Gordon Henderson.
    Pi4J dynamically compiles against the WiringPi library so you must have Wiring Pi installed on your target system. WiringPi is included by default in the latest Raspbian builds.


    De quelle version du Pi on parle ? La 4 ?

  7. #7
    Membre éprouvé

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    novembre 2006
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : novembre 2006
    Messages : 358
    Points : 1 058
    Points
    1 058
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Salut,

    The Pi4J Project - Dependencies



    De quelle version du Pi on parle ? La 4 ?
    Cette info devrait suffire: https://forum.pi4j.com/topic/18/wiringpi-deprecated
    Ils semblent avoir un peu de retard avec le nouveau Pi4J prévue originalement mi-Septembre.

    Pour un débutant sur le Raspberry Pi, je ne prendrais pas le Pi 4, mais un Pi 3B+ meilleur marché avec le dernier Raspbian, et je commencerais en Python.

    Citation Envoyé par dark_vidor Voir le message
    Mes questions :
    - Quelle bibliothèque utiliser pour gérer le GPIO ? WiringPi (noté "deprecated" sur le dernier article du site), bcm2835, autre ?
    - Pour la gestion des timers / events : il me parait évident qu'un sleep ne fera pas l'affaire ... dois-je mettre mes timers dans des threads séparés du programme principale ou existe-t-il une autre technique ? Pour les annulé je tue les threads, puis j'en crée d'autre ?
    - Comment réaliser l’interaction programme <-> page web ?
    C'est du lourd, mais facile en Java, pour un crac, où le serveur Web serait un thread démarré depuis l'application, etc. etc!
    Essaies un peu en Python et ensuite, passe en Java .... et en librairie, pour consulter mon bouquin (tout est dedans).

    Je suis de retour de 2 périodes de vacances et je vais reprendre mon Python Web Flask – Raspberry Pi 3/4 à terminer et qui deviendra un article (si accepté) sur developpez.net.
    C'est une alternative et la partie Web est trop cool.

    Cordialement

  8. #8
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Technicien R&D
    Inscrit en
    janvier 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : janvier 2005
    Messages : 298
    Points : 112
    Points
    112
    Par défaut
    Bonjour,
    Merci pour ces précieuses informations... mais ça ne réponds pas à ma question initiale qui était comment faire ça en C/C++
    J'ai des PI3 B/B+ qui sont effectivement largement suffisant pour commencer.

  9. #9
    Membre éprouvé

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    novembre 2006
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : novembre 2006
    Messages : 358
    Points : 1 058
    Points
    1 058
    Par défaut
    Citation Envoyé par dark_vidor Voir le message
    ... mais ça ne réponds pas à ma question initiale qui était comment faire ça en C/C++
    J'ai des PI3 B/B+ qui sont effectivement largement suffisant pour commencer.
    Perso ... je ne m'y lancerais pas.
    J'ai commencé le C++ en 1990 et le C bien avant.
    J'ai passé en Java en 1998 et quitté définitivement le C++ en 2008.
    C'est mon travail et les plateformes utilisées qui m'ont conduit dans cette direction (mais je continuais de donner des conseils en C++).
    Java est beaucoup plus facile (1 année d'expérience correspond facilement à 4 en C++).
    La productivité en Java est incroyable!

    Il faudra donc un peu chercher, par exemple un c++ raspberry pi tutorial dans Google Search.

    J'ai aussi bien aimé écrire Programmez en Java sans le Pi4J.

    Bon, si disons, on m'attachait et me forcerait de ne travailler qu'avec le C++ sur le Pi, je commencerais par un eclipse C++ raspberry pi dans Google Search (Eclipse est mon outil de travail).
    Et je me retrouverais sans doute à reprendre https://github.com/WiringPi/WiringPi ... il faut parfois rêver!

    Bonne recherche

  10. #10
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Technicien R&D
    Inscrit en
    janvier 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : janvier 2005
    Messages : 298
    Points : 112
    Points
    112
    Par défaut
    @boijea, merci beaucoup pour ces conseils francs.
    Je vais regardé votre livre, j'y ai accès via la Bibliothèque du CNAM étant en période de reconversion pro et suivant des cours.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin de conseils pour me lancer dans un programme
    Par Niko21 dans le forum Langages de programmation
    Réponses: 20
    Dernier message: 08/11/2019, 14h33
  2. Réponses: 0
    Dernier message: 30/12/2016, 19h32
  3. Besoin de conseils pour un Programme.
    Par zobivan dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 31/10/2011, 15h56
  4. Besoin de conseils pour un petit programme
    Par DanCode dans le forum Débuter
    Réponses: 31
    Dernier message: 08/02/2010, 15h13
  5. Besoin de conseils pour un programme
    Par snips67 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/05/2009, 12h59

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