Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
Aujourd’hui — 24 juillet 2024Arduino & Raspberry Notepad

DataLogging: lxi-tools avec multimètre SIGLENT SDM30xx

Bonjour à tous,

LXI est l'acronyme utilisé pour LAN eXtensions for Instrumentation , une norme qui permet de piloter des instruments de tests et d'effectuer des mesures par l'intermédiaire du réseau Ethernet.

Source: lxistandard.org

Le cas pratique

Pour les besoins du projet SuperPi, j'ai besoin de faire un relevé des valeurs du courant durant la phase de boot des 13 Raspberry-Pis présent sur le Rack. 

Rack de Raspberry-Pi

Il est bien entendu possible de réaliser cette opération à la main avec un calepin, un  chronomètre mais il en résulterait des relevés relativement approximatifs... sans compter toutes ces distractions qui imposerait une nouvelle série de mesure.

Si SIGLENT propose le logiciel EasyDMM pour contrôler le Multimètre depuis un PC, ce dernier n'existe que pour Windows! 
Je ne peux donc pas l'utiliser avec Linux (voir la section ressources pour Wine).

Mesure manuelle du courant d'alimentation du Rack (en Ampères)

L'idéal serait d'automatiser la prise de relevé sur Linux à l'aide de mon multimètre SIGLENT SDM3045x... c'est ce que propose cet article!

Interfaces de communication du SIGLENT

Il y a plusieurs interfaces de communication sur le SIGLENT SDM3045x dont le commun port USB et un port Ethernet. 


Ce port Ethernet permet donc d'échanger des information avec le SDM3045x via le réseau, ce que fait le logiciel EasyDMM mais aussi LXI-tools qui est un outil multiplateforme.

A propos de LXI

LXI est l'acronyme utilisé pour LAN eXtensions for Instrumentation , un digne descendant du célèbre GPIB (General Purpose Interface Bus) mais via le réseau Ethernet filaire ou Ethernet sans-fil (WiFi). 

Reposant sur la norme Ethernet, LXI permet de piloter un instrument de test et d'effectuer des mesures. LXI définit une implémentation LAN interopérable entre les appareils de test et mesure des différents acteurs du marché.

LXI permet d'envoyer des commandes SCPI (Standard Commands for Programmable Instrument) et de réceptionner la réponse. LXI permet aussi de réaliser une capture d'image de l'appareil de test.

LXI prend également en charge  un protocole temporel de précision (dit PTP, IEEE1588) permettant aux différents appareils de test de synchroniser leur horloges internes.

LXI permet également de mettre en place un système de Trigger (déclencheur) à huit canaux.

LXI est donc un standard et ses spécifications sont prises en charge par le consortium LXI (www.lxistandard.org).

Voir www.lxistandard.org pour plus d'informations.

LXI-Tools

Source: dépôt GitHub

LXI-Tools est un projet open-source offrant des outils permettant d'interagir avec des instruments supportant LXI (comme le SIGLENT SDM).

Le projet offre un outil multi-plateforme en ligne de commande ainsi qu'une interface utilisateur. Il peut donc s'installer sur Windows, Mac, Linux.

Interface de lxi-tools.lxi-gui

Outre les fonctionnalités d'envoi de commande SCPI et la capture d'écran, 

LXI-Tools dispose d'un interpréteur de script LUA et des fonctions d'API LUA.
Il est donc possible d'écrire des scripts LUA d'automatisation pour:

  • commander divers appareils avec des commandes SCPI, 
  • collecter des données, 
  • sauver des fichiers CSV, 
  • réaliser des graphiques, 
  • etc.  

Plus d'information sur le dépôt du projet

Installer LXI-tools sur Linux

Je dispose d'un système Linux Mint (donc dérivé d'Ubuntu, donc une Debian).
Le dépôt du projet contient une section Installation.

Il y a une chose importante à savoir:

  1. Une installation snap de lxi-tools inclus l'interface graphique
  2. L'installation du seul paquet lxi-tools pour l'outil en ligne de commande.
Je recommande vivement l'installation snap car l'interface graphique est très pratique pour tester ses premières commandes SCPI sur un périphérique LXI.

Pour installer le snap de lxi-tools:

$ sudo apt install snapd
$ snap install lxi-tools
$ # Demarrer l'interface graphique
$ lxi-tools.lxi-gui

Au premier démarrage, l'interface graphique se présente comme ci-dessous

Interface lxi-gui

Premier test

Avant de commencer:
  1. Brancher le SIGLENT SDM sur le réseau
  2. Mettre sous-tension
  3. Vérifier la configuration d'adresse IP dans le SIGLENT SDM.
    Le SigLent doit être sur le même sous réseau que votre Ordinateur.
    Voir le manuel Siglent pour accéder à la configuration réseau.
  4. L'icône réseau doit apparaître sur l'affichage du multimètre

Mise en réseau du Siglent

Démarrer le programme interactif avec la commande terminal

$ # Demarrer l'interface graphique
$ lxi-tools.lxi-gui

Et presser sur le bouton Search en haut a gauche. Un nouveau volet apparaît avec  les appareils découverts.
Celui-ci reprend le Siglent SDM3045.

Découverte des appareil LXI présent sur le réseau

Sélectionnez simplement l'appareil dans la liste puis revenir dans le volet SCPI.

Enfin saisir la commande READ? et presser le bouton Send pour obtenir la valeur mesurée sur le SigLent.

Envoi d'une commande SCPI

La valeur retournée en notation scientifique correspond au 1.51 mV mesuré sur le SIGLEN SDM3045. 
 
La commande *IDN? retourne les informations d'identification du periphérique distant.
Le resultat retourné par *IDN? est:
[192.168.0.220] Siglent Technologies,SDM3045X,SDM34FBC5R0155,5.01.01.05

Il y a bien d'autres commandes SCPI à explorer. Voici quelques ressources en attendant un prochain article: (1) SCPI sur Wikipedia (2) SDM3045X Remote Manual sur Scribd (3) how to transition tsp code to SCPI (Tektronik, plein d'exemples)

Script LUA

Ce qui est particulièrement intéressant avec lxi-tools.lxi-gui c'est de pouvoir executer des scripts pour capturer les données et exporter ceux-cis sous forme de fichiers CSV (pour tableur).

Bien que n'ayant aucune connaissance concernant LUA script, je dois avouer que cela fût assez facile. 

Le script basic.lua m'a permit de me familliariser rapidement avec LUA.

A partir de là, l'exploration fût assez simple grâce aux différents exemples combinés avec la description de l'API lua .

Se connecter sur le SDM

En connaissant l'adresse IP du multimètre, la connexion s'établit à l'aide de lxi_connect()

dsm = lxi_connect("192.168.0.220", nil, nil, 6000, "VXI11") -- Siglent DSM

lxi_disconnect( dsm )
Un point important concernant lxi_connect() est qu'un paramétrage incorrect provoque un plantage total de l'interpréteur LUA et du programme lxi-tools.lxi-gui dans la foulée.

Utiliser un timer/clock

L'horloge (clock) créé avec la fonction lxi_clock_new() permet d'avoir un horodatage en secondes depuis le premier appel à lxi_clock_read().

La fonction lxi_clock_read() retourne une valeur décimal de sorte que la précision est inférieure à la seconde.

dsm = lxi_connect("192.168.0.220", nil, nil, 6000, "VXI11") -- Siglent DSM
clock0 = lxi_clock_new()



clk = lxi_clock_read( clock0 )
current = lxi_scpi( dsm, "READ?" )
print( clk .. " , " .. current )


lxi_clock_free( clock0 )
lxi_disconnect( dsm )

Le script ci-dessus effectue la lecture du courant (puisque le SDM3045 est configuré en mesure de courant). Cette mesure est accompagnée de son horodatage. 

Le tout est affiché à l'écran avec la fonction print().

Capture dans un fichier CSV

L'exemple ci-dessous utilise lxi_log_new() pour créer un enregistreur de données. Par la suite lxi_log_add() est utilisé pour ajouter des données dans le log.
Enfin, lxi_log_save_csv() permet de sauver le fichier de donnée sur le disque.

Le script ci-dessous réalise une capture suivit d'une pause de 100ms (donc approximativement 7 à 10 fois par secondes) et cela pendant LOG_MIN minutes. Donc une minute dans le cas présent.

dsm = lxi_connect("192.168.0.220", nil, nil, 6000, "VXI11") -- Siglent DSM
clock0 = lxi_clock_new()
log0 = lxi_log_new()

LOG_MIN = 1
FILENAME = "capture-current.csv"

i = 0
repeat
	clk = lxi_clock_read( clock0 )
	current = lxi_scpi( dsm, "READ?" )
	-- print( clk .. " , " .. current )
	lxi_log_add( log0, clk, current )
	i = i+1
	if ( (i % 10)==0 )
	then
		print( "Percent " .. ((clk * 100) / (LOG_MIN*60)) )
	end
	lxi_msleep( 100 )
until( clk > (LOG_MIN*60) )
lxi_log_save_csv(log0, FILENAME )
print( "file " .. FILENAME .. " saved!" )
print( "Done!" )

lxi_log_free( log0 )
lxi_clock_free( clock0 )
lxi_disconnect( dsm )

Il n'y a pas d'indicateur d'exécution du script ou de fin d'exécution.
Le script inclus donc quelques fonctions print() indiquant la progression du script.

L'instruction if ( (i % 10)==0 ) permet d'exécuter le contenu toutes les 10 itérations. Cela permet d'afficher un message de progression toute les secondes. 

L'expression (clk * 100) / (LOG_MIN*60) permet de calculer le pourcentage d'avancement du script.

Voici une partie du fichier CSV généré:

0.0,+2.36087612E-03
0.10354275582358,+2.36699427E-03
0.3091177130118,+2.34610304E-03
0.51395878614858,+2.35714555E-03
0.71548150898889,+2.34774450E-03
0.91347223706543,+2.35569062E-03
1.118680964224,+2.33629163E-03
1.3169437209144,+2.34114138E-03

Conclusion

LXI est un excellent outil multi-plateforme qui me permettra d'atteindre assez facilement mon but initial (à savoir faire un Log du courant de démarrage.

La mise en oeuvre est relativement simple et l'option de scripting LUA offre de nombreuses opportunités. 

C'est une très bonne pioche.

En poursuivant mes lectures, j'ai appris que le mode DUAL (affichage double) du SDM3045 me permettrait de mesurer à la fois la tension et le courant!
C'est un point que je vais approfondir rapidement.

Ressources

À partir d’avant-hierArduino & Raspberry Notepad

SuperPi : sélection d'alimentation - Mesure courant et tension

Bonjour à tous,

Le projet SuperPi Cluster dispose de son premier Rack depuis un moment (c'était début Avril). Oui, je sais.... j'ai manqué d'un peu de motivation mais il est temps de s'y remettre.
Dans l'un des précédents articles il était question du raccordement électrique. Nous allons aujourd'hui utiliser ces raccordement pour tester la mise sous tension.

50+ Raspberry-Pi en Rack

A propos de SuperPi

Le projet SuperPi vise à créer un super-calculateur/Cluster didactique à l'aide de 50+ Raspberry-Pi. Voyez cet article contenant plus de détails dans cet article.

La force d'un Super-Calculateur/Cluster c'est le traitement en parallèle (Parallel Computing) pouvant servir dans de très nombreux domaines.

Quelle alimentation ?

Je n'ai pas encore fait de calcul savant pour évaluer lu courant que pourrait consommer le Rack à base de 14 Raspberry-Pi 3B+ .

Le courant moyen est de 0.8A par Pi lorsqu'il est exploite la son GPU (interface graphique). Ce n'est pas le cas ici puisque c'est OS headless (sans bureau) qui démarre.

Pour le moment je vais utiliser une alimentation de 5V 10A disponible chez Adafruit Industrie car je sais qu'elle est de très-très bonne qualité.

Alimentation 5V 10A de chez Adafruit

Contrôler la mise en tension

Brancher/couper le circuit +5V expose celui-ci a des surtensions de type RL. En effet, la longueur des fils de distribution d'alimentation jusqu'aux différents Raspberry-Pi n'est pas négligeable - bien que la charge (les Pi) ne soient pas vraiment inductives, il est préférable d'éviter toute situation à risque.

L'alimentation sera donc coupée sur le circuit primaire (220V AC) permettant ainsi une chute de tension plus en douceur sur le secondaire en 5V.

Mesure de tension

Avant de me lancer dans le boot de 13/14 Raspberry-Pi, je me suis dit que je pourrais les mettre sous-tension progressivement (sans booter) et surveiller que la tension délivrée par le bloc ne dépasse pas le maximum absolu de 5.25V.

J'ai configuré mon Siglent SDM3045x en mesure de tension CC avec un double affichage (Dual) afin d'afficher les statistiques. Les statistiques permettront de vérifier que le maximum de tension reste sous 5.25V.

SDM3045x : Dual --> Statistic -> Max

Pour le premier test --image ci-dessous-- seul les 3 premiers Pi sont en place (sans carte SD).

Test de mise sous tension des 3 premiers Raspberry-Pi

Ce qui permet de vérifier que l'alimentation reste dans les clous avec un maximum de 5.254V.

Voir maximum de tension

J'ai poursuivit les tests avec 6 et 9 Raspberry-Pi.

Mise sous tension avec 9 Raspberry-Pi

Tension d'alimentation du bloc avec 9 Raspberry-Pi

Voila, c'est le moment de tester la mise sous-tension de la totalité du rack.


Pour une tension qui chute a peine sous les 5.20V avec un maximum de 5.2093V

Mesure du courant

Je ne dispose que d'un Siglent, je vais donc seulement pouvoir me pencher sur le courant consommé (avec son maximum).

C'est avec une certaine surprise que je constate que le courant maximum est d'a peine 1 Ampère pour les 13 Raspberry-Pi
Il faut bien reconnaître que les CPU sont sous tension mais qu'ils n'exécutent --pour le moment-- absolument rien!

Mesure du courant à la mise sous-tension

Poursuivre les mesures

N'ayant chargé l'alimentation qu'à peine 10% de sa capacité, il normal de ne pas rencontrer de problème.
La bonne nouvelle est que je peux poursuivre mes investigations avec cette alimentation... il n'y a pas de pic de surtension même avec 13 Pi branchés dessus.

Cependant, il me faudra suivre plus finement l'évolution de la charge en courant lorsque les Raspberry-Pi démarrerons les systèmes d'exploitations.

Affaire à suivre donc....


STEM Belgian Knife: Capteur d'humidité du sol pour FMTTN (Formation Manuelle Technique Technologique et Numérique)

Bonjour à tous et plus particulièrement à nos amis de l'enseignement!

Le futur tronc commun pour l'enseignement Belge fait apparaître un nouveau programme nommé Formation Manuelle Technique Technologique et Numérique (pour connu sous l'acronyme FMTTN).

Ainsi est né le projet "STEM Belgian Knife" (SBK pour les intimes) présenté dans cet article. SBK est un DataLogger intelligent, une sorte de couteau Suisse Belge destiné à faciliter l'intégration du numérique dans le cursus mais aussi dans les activités STEM.

Projet SBK.Education

Avancées du projet

Depuis le dernier article, il y a eu plusieurs avancées majeures.

  1. Abaissement de l'échantillonnage à 10ms, 25ms, 50ms et 100ms , ce qui permettra de capturer des phénomènes de courtes durées comme la poussée d'une fusée à eau.
    Voir cet article pour plus d'information.
  2. La possibilité d'utiliser un signal REC pour démarrer votre expérimentation lorsque le DataLogger a effectué son premier échantillonnage, ce qui fait sens avec le point ci-avant. Par exemple, activé le lancement de la fusée lorsque l'on est prêt à analyser la poussée.
    Voir cet article pour plus d'information.
  3. Mise-au-point de SInterface  pour permettre de d'adapter des capteurs et/ou offrir des possibilités de calibration.
    Voir cet article pour plus d'informations.

A propos de SInterface

Nous sommes quand même sur un blog de Maker, il est donc normal d'offrir des informations croustillantes.

Module SInterface
Source: cet article

Basé sur un microcontrôleur Raspberry-Pi Pico (4.50 EUR TTC), SInterface se comporte comme un Client I2C (un esclave I2C selon l'ancienne appellation), ce qui lui permet de répondre aux demandes d'un microcontrôleur/Nano-ordinateur.

En gros, SInterface se comporter comme un capteur I2C, ce qui lui permet de retourner des données exactement comme le ferait un BMP280 ou n'importe quel autre capteur I2C branché sur le bus.

L'exemple ci-dessous identifie automatiquement le capteur SInterface AnalogRead et capture la donnée qu'il met à disposition (tension d'une entrée analogique)

AnalogRead SInterface (Proof of Concept)

Sur base de cette première implémentation, il est possible d'explorer plus avant les possibilités offertes par SInterface.

Humidité du sol

La première implémentation concerne un capteur d'humidité du sol à effet capacitif (Soil Moisture).

Ce capteur offre indication sommaire de l'humidité que le sol

  • 1=très sec
  • 5=Très Humide (noyé d'eau).

SInterface SMoist
Soil Moisture - Humidité du sol

Si l'information est sommaire, elle permet de se faire une idée de l'état d'humidification.


Plus d'information

Ce projet vous intéresse? 

Ressources


GridBase / Internet In the Box: Idées intéressantes pour disposer d'une bibliothèque hors-ligne

Bonjour à tous,

Il y a un petit moment, je suis tombé sur une des vidéos de GridBase, une idée intéressante pour créer une bibliothèque numérique mobile autonome.

L'idée étant de transformer un Raspberry-Pi en point d'accès pour accéder au contenu pertinent du Net de Wikipédia, Stack Exchange, Project Gutenberg, TED talks, etc  tout en étant hors ligne et avec une indexation.

Idée intéressante.... mais à l'évidence avec assez peu d'informations techniques concernant sa réalisation.
C'est ainsi que le site du projet annonce le Pocket (Pi Zero 2W) à 300$! Outch!

Source: www.gridbase.net

Je ne nie pas qu'il y ait certainement un important travail de compilation et d'indexation (voir leur vidéo de présentation) même si le prix demandé me paraît un peu disproportionné.

J'ai donc effectué quelques recherches complémentaires.

Je vous propose de regarder la vidéo de démonstration puis nous parlerons des alternatives.

Alternative à GridBase

En faisant quelques recherches sur le Net, j'ai trouvé les solutions suivantes

Kiwix

Kiwix est un lecteur en hors-ligne permettant consulter des contenus comme Wikipedian Projet Gutenberg, TED Talks, Stack Overflow, de très nombreux Wiki .
Les bibliothèques sont disponibles au format ZIM.

Souce: Kiwix

Je viens de jeter un oeil sur la bibliothèque Kiwix et le moins que je puisse dire, c'est que je suis sacrément impressionné!

https://kiwix.org/en/frequently-asked-questions/

Internet In The Box

Qui est un HotSpot d'apprentissage reprenant  du contenu de bibliothèques existantes (Kiwix, OER2Go, Archive.org).

Source: Internet in a box

https://internet-in-a-box.org

Voir aussi leur dépôt GitHub.

Dead Drop

Juste une mention mais pas vraiment une solution.

Une Dead Drop est une clé USB fixé dans un espace publique permettant ainsi de partager des données (en l’occurrence, du partage de fichiers).

Voir cet article Wikipedia pour plus d'informations

PirateBox

Bien moins risqué qu'un Dead Drop, la PirateBox est une routeur associé à un NAS (stockage de fichiers). 



Suivant le principe de "Internet In The Box", la PirateBex permet de se connecter anonymement sur un HotSpot pour avoir accès aux ressources qu'il partage.

Largement utilisé dans les environnements scolaire, PirateBox qui fût pendant longtemps un projet très actif est maintenant à l'arrêt (par manque de temps).

https://piratebox.cc/start

Vous connaissez d'autres solutions ?

N'hésitez pas à partager votre expérience en commentaire.

❌
❌