Journal Application web de contrôle des GPIOs d'un Raspberry Pi/ODROID-C2

Posté par (page perso) . Licence CC by-sa.
10
14
déc.
2018

Cela fait déjà quelque temps que je possède un ODROID-C2. Je l'avais acheté pour tester mes programmes sur une plateforme ARM 64 bits.

Tout comme les derniers Raspberry Pi, il comporte le fameux connecteur d'E/S à 40 broches. De quoi titiller l'électronicien qui sommeille en moi. Je me suis donc acheté un de ces kits pour Raspberry Pi permettant de réaliser des montages électroniques que l'on connecte au Raspberry. Moyennant quelques précautions, ces kits sont parfaitement utilisables avec un ODROID-C2.

Mon ODROID étant configuré en headless, je m'y connecte via SSH. Du coup, pour piloter les GPIO, je devais utiliser le clavier. Vu que j'avais le montage électronique et les différents composants que je voulais y implanter devant moi, le clavier se retrouvait sur le coté, ce qui n'est pas très pratique pour l'utiliser.

Une tablette tactile avec l'application qui va bien aurait été plus pratique. Mais, d'après mes recherches, j'aurais soit dû installer un environnement graphique sur mon ODROID et déporter l'affichage, soit y installer un serveur web et PHP. Bref, j'ai finalement préféré saisir l'occasion de mettre à l'épreuve le toolkit Atlas que j'avais présenté dans cette dépêche.

Comme langage pour piloter les GPIO, j'ai jeté mon dévolu sur Python, car, d'après ce que j'ai vu, c'est le langage le plus populaire pour cela. Pour ce langage, il existe deux bibliothèques : RPi.GPIO et WiringPi. Les deux ont été originellement développées pour le Raspberry Pi, mais elles ont été portées sur ODROID. Cependant, RPi.GPIO, dans sa version pour ODROID, offre moins de fonctionnalités que WiringPi ; c'est donc cette dernière que j'ai retenue.

Actuellement, l'application permet de basculer les broches de base en mode IN, OUT et PWM, et, pour ces deux derniers modes, on peut régler la valeur de la broche.

Pour utiliser l'application, après installation de la version python de WiringPi, lancer :

  • git clone http://github.com/epeios-q37/atlas-python
  • cd atlas-python
  • sudo python GPIO

Ensuite, ouvrir, dans un navigateur web, le lien affiché dans la console. Vous pouvez l'ouvrir sur votre smartphone si vous le désirez. Inutile de le connecter sur le réseau wifi local ou de toucher à la configuration de votre box pour cela.

Le logiciel a été testé sur ODROID-C2, mais devrait également fonctionner sur tous les Raspberry Pi équipés d'un port à 40 broches, mais je n'ai pas pu tester.

Voici une petite vidéo pour vous montrer comment l'application s'utilise :

GPIO video

La même vidéo sur une instance PeerTube, pour ceux qui n'aiment pas utiliser YouTube : https://peertube.video/videos/watch/4028de7d-267d-4ecb-a13f-7745171ba5ae

Les futures versions de cette application devraient prendre en compte les autres broches (faut d'abord que je me familiarise avec leur fonctionnement !). Elle sera peut-être également développée dans d'autres langages, à titre d'exemple de mise en œuvre du toolkit Atlas. Si vous avec d’autres suggestions, n'hésitez pas !

  • # .

    Posté par . Évalué à 2.

    Une tablette tactile avec l'application qui va bien aurait été plus pratique. Mais, d'après mes recherches, j'aurais soit dû installer un environnement graphique sur mon ODROID et déporter l'affichage, soit y installer un serveur web et PHP.

    Il y a plein d'autres solutions. Une appli Android peut par exemple piloter ton serveur via SSH. Ou plein d'autres protocoles.

    Bref, j'ai finalement préféré saisir l'occasion de mettre à l'épreuve le toolkit Atlas que j'avais présenté dans cette dépêche.

    Attention, quand on a un marteau, tout ressemble à un clou ! ;) Et tu veux montrer que t'as un super marteau (t'as le droit, même si je reste un peu dubitatif), j'ai l'impression que tu as planté une vis.

  • # Le problème est où ?

    Posté par (page perso) . Évalué à 1.

    Le problème c'est le clavier qui ne se déporte pas ? Pour piloter wiringPi, les commandes gpio en headless fonctionnent donc quel est ton problème ? Acheter un clavier BT…Ou utiliser une console via SSH. Ce que font tous les utilisateurs je pense. Je dois pas avoir compris le point d'achoppement.

    T'as le bonjour de JavaScript !

    • [^] # Re: Le problème est où ?

      Posté par (page perso) . Évalué à 1. Dernière modification le 19/12/18 à 17:51.

      Avant que je n'utilise cette appli., j'utilisais effectivement l'utilitaire gpio en me connectant à l'ODROID via SSH. Et là, j'ai rencontré deux problèmes.

      D'une part, un problème de place. Il me fallait rester à proximité de l'ordinateur avec lequel je me connectais à l'ODROID , ou du moins de l'écran et du clavier, mais je n'avais pas la place nécessaire pour poser la platine de montage et les composants. Grâce à l'appli., j'ai carrément pu me mettre dans une autre pièce, où je disposais d'une table où j'avais largement la place pour poser la platine, les composants et la tablette avec laquelle j'accédais à l'application ainsi que son support (et non, déplacer l'ordinateur dans cette pièce n'était pas une option).

      Le second problème concernait les manipulations. À chaque fois que je voulais tester un branchement, il fallait faire flèche vers le haut pour rappeler la dernière commande, puis flèche gauche jusqu'à la position du numéro de broche, effacer ce numéro, mettre le nouveau, et valider, en modifiant au passage la valeur de la broche si nécessaire. Bon, ce n'est pas vraiment un problème, mais avec l'appli., une pression sur l'écran suffit pour aboutir au même résultat, ce qui est quand même plus pratique…

      Toolkit Atlas : probablement le moyen le plus simple et le plus rapide pour ajouter une interface graphique à vos programmes Java, Node.js, Python… (voir page perso) !

      • [^] # Re: Le problème est où ?

        Posté par . Évalué à -4.

        avec l'appli., une pression sur l'écran suffit pour aboutir au même résultat, ce qui est quand même plus pratique…

        En effet !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.