Électronique

jpmLab

Un environnement d’expérimentation entre monde réel et numérique

jpmLab regroupe un ensemble d’outils, d’assemblages et de programmes ayant pour point commun de faciliter l’interaction et l’acquisition d’informations entre le monde réel et le monde numérique, dans le cadre d’expérimentations.

Vous vous souvenez de vos labos de RDM à l’IUT ? Eh bien, c’est une bonne analogie.

Mais ça pourrait aussi être un thermostat programmable pilotant la cuisson d’un brassin de bière…

L’objectif n’est pas de créer un logiciel spécifique pour chaque montage, mais de constituer progressivement une boîte à outils réutilisable pour différentes expérimentations.

Du monde réel à l’interface

Globalement, jpmLab se décompose en trois couches :

  • la partie physique : capteurs et actionneurs, intégrés si nécessaire dans un montage mécanique ;
  • l’électronique d’acquisition et de pilotage, qui sera vraisemblablement réalisée la plupart du temps à partir d’un Arduino ;
  • l’IHM de paramétrage, de restitution et d’analyse, réalisée sous la forme d’une série de pages web.

La communication avec l’électronique repose aujourd’hui principalement sur une liaison série. Ce mode de transport n’est toutefois pas une contrainte de jpmLab : d’autres protocoles pourront être intégrés selon les besoins. L’essentiel réside davantage dans la manière dont les données échangées sont décrites, interprétées et exploitées par les différents outils.

Des pages web, mais pas forcément de serveur

Dans mon utilisation, les interfaces web sont hébergées sur mon serveur personnel. Elles sont ainsi facilement accessibles depuis n’importe quel PC ou smartphone de mon réseau local et permettent de centraliser les paramétrages et les résultats des expériences.

Le serveur n’est cependant pas indispensable au fonctionnement de jpmLab. Les pages sont conçues pour être autonomes et le serveur ne participe pas au déroulement de l’expérience. L’acquisition, le traitement et le pilotage sont réalisés localement par l’électronique et le navigateur.

L’hébergement sur un serveur répond donc avant tout à un besoin de confort au quotidien : disposer des mêmes outils et retrouver ses paramètres et ses résultats depuis différents appareils, dans un usage de plus en plus nomade, mobile et connecté.

Un développement guidé par les besoins

jpmLab n’a pas vocation à devenir un logiciel universel capable de répondre à tous les besoins imaginables.

Son développement reste volontairement pragmatique : les fonctionnalités sont ajoutées au fur et à mesure des besoins rencontrés dans mes expérimentations.

Pour autant, lorsque je développe une nouvelle fonctionnalité, j’essaie de ne pas la limiter au seul besoin qui l’a fait naître. Les outils et les IHM sont conçus pour rester aussi génériques et paramétrables que possible, afin de pouvoir être réutilisés facilement dans de futures expériences.

Le besoin concret déclenche donc le développement ; la généricité et le paramétrage doivent permettre sa réutilisation.

Une organisation modulaire

Le code lui-même s’organise en plusieurs modules.

Certains couvrent les fonctionnalités de base : gestion et paramétrage des communications, sauvegarde et rechargement des paramètres et des résultats, chargement du programme Arduino…

D’autres sont davantage orientés vers les expérimentations et consistent majoritairement en différentes IHM.

J’évite autant que possible de créer un module dédié à chaque expérience. Les IHM sont conçues pour être génériques et largement paramétrables. Une expérience peut alors être définie en grande partie par sa configuration, plutôt que par le développement d’une nouvelle interface.

Les paramètres peuvent être sauvegardés et rechargés, permettant ainsi de retrouver rapidement une configuration adaptée à une expérience donnée et de réutiliser les mêmes outils pour des usages différents.

Conserver et exploiter les résultats

Il est également possible de sauvegarder les résultats d’une expérience puis de les recharger directement dans leur IHM. Cela permet de ne pas perdre les résultats et de pouvoir les analyser a posteriori, sans multiplier les outils.

L’analyse dans des outils externes — Excel, LibreOffice Calc, MATLAB, R… — reste également simple grâce à l’utilisation du format CSV.

Un projet encore en développement

Le code est, pour le moment, majoritairement généré en « vibe coding » et n’est pas encore mis à disposition du public.

J’envisage de le publier via un dépôt GitHub lorsque le projet sera suffisamment mûr, stabilisé et que j’aurai pris le temps d’en vérifier les aspects liés à la sécurité.

Les réalisations et expérimentations utilisant jpmLab, elles, seront partagées ici.