Sortie de Oscopy 0.71

Posté par  . Édité par Nils Ratusznik, tuiu pol et patrick_g. Modéré par tuiu pol. Licence CC By‑SA.
Étiquettes :
19
14
mai
2013
Technologie

Oscopy est un oscilloscope sous licence GPLv2 propulsé par IPython. Il fournit un visualiseur de courbes, supporte la plupart des opérations courantes sur les données pour le post-traitement et inclut beaucoup d'autres possibilités. Oscopy s'intègre dans la chaîne de conception électronique avec des outils de saisie de schémas, netlister et simulateurs tels ceux de la suite gEDA.

Après plus de 18 mois de développement, la version 0.71 est maintenant disponible. Cette version majeure ajoute le support de plus de 7 formats de fichiers différents et améliore l'interface des figures avec le support du zoom et du déplacement ("panning").
Une attention particulière a été portée sur le processus d'installation sur plusieurs distributions majeures. Oscopy s'installe maintenant sur au moins Debian Sid/Wheezy, Fedora 18 et Ubuntu 12.10.

La seconde partie de la dépêche résume les changements majeurs et donne un aperçu des possibilités d'Oscopy.

IOscopy en action

Résumé des changements

Les changements visibles par l'utilisateur contiennent :

  • support de nouveaux formats de fichiers: spice2/spice3, s2p (Touchstone), hspice…
  • réécriture de l'interface des figures : nouvelle barre des opérations, déplacement avec les barres de défilement ;
  • support des fonctions de zoom : sélection de zone, mode x10, roulette de la souris ;
  • ré-introduction des options de lignes de commandes: mode batch, interactif, silencieux ;
  • correction des scripts d'installation, des vérifications des dépendances ;
  • mise à jour de la documentation, amélioration des styles et de la mise en forme ;
  • et beaucoup de correctifs de bugs !

Les changements visibles par les développeurs contiennent :

  • séparation du cœur (oscopy-core) de l'interface utilisateur (ioscopy) ;
  • réorganisation de l'archive ;
  • réécriture de l'exécution des scripts de démonstration.

Atouts d'Oscopy

Oscopy a pour objectif de simplifier le flot de conception schéma/simulation/analyse. De fait ses principales caratéristiques incluent :

  • post-traitement des données: expressions mathématiques avec les opérateurs arithmétiques et booléens, les fonctions de trigonométrie et fft ;
  • visualisation et examen : fenêtres multiples, curseurs, zoom avec la roulette de la souris, span ;
  • import de données : plus de 7 formats de fichier différents incluant Berkeley Spice2G6 et Spice3 binaire et ascii, hspice, Touchstone (r) s2p et sXp, ngspice, gnucap, …
  • export de données : formats graphiques (bitmap et vectoriel), format gnucap ;
  • suivi des dépendances des Signaux lors de la relecture des fichiers de données ;
  • support de scripts : syntaxe de Python/IPython ;
  • intégration avec d'autres outils: exécuter le netlister et le simulateur depuis Oscopy, exécuter Oscopy depuis gschem de la suite gEDA ;
  • support de D-Bus : des programmes externes peuvent déclencher la relecture des fichiers de données ;
  • glisser-déposer des signaux entre les fenêtres. Les exemples ci-dessous présentent Oscopy dans la pratique.

Exemples d'utilisation

Simple lecture d'un fichier et affichage de résultats :

oread demo/irf540.dat
oadd vgs

Lecture d'un fichier, diverses opérations (dont FFT) puis affichage :

# Lit le fichier et ajoute le signal d'origine
oread demo/tran.dat
ocreate
oadd vsqu
# Quelques calculs
vsqufft=fft(vsqu)
v1=vsqu*3+10
# Ajoute les signaux dans le contexte d'Oscopy
oimport vsqufft
oimport v1
# Affichage et quelques réglages du graphique
oadd vsqufft
orange 0 15 -.002 .010
ounit V
oadd v1
ounit V

Supposant ce dernier exemple dans un fichier demo.oscopy il est possible d'utiliser le mode batch :

ioscopy -b demo.oscopy

Changements prévus pour Oscopy 0.72

Liste non-exhaustive des améliorations pour la version suivante d'Oscopy :

  • support de nouveaux graphiques : coordonnées polaires, diagrammes de Smith, diagramme de l'œil ;
  • lors de la sélection de la fenêtre de zoom indication numérique du début, de la fin et de la différence ;
  • panning avec le bouton milieu de la souris ;
  • affichage de la valeur de chaque signal lors du survol d'un graphique ;
  • … et toute autre proposition !

Aller plus loin

  • # Acquisition de signaux

    Posté par  . Évalué à 6. Dernière modification le 14 mai 2013 à 10:28.

    Y a t il moyen de coupler ce logiciel à l'entrée d'une carte son par exemple pour faire un oscillo low-cost ? Vu qu'une carte son monte jusqu'a 20KHz, ca permet de faire des choses sans que ca coute trop cher.

    De manière générale, existe il un moyen de coupler ca à une carte d'acquisition ? Ou encore un petit bricolage a base d'arduino avec un firmware qui puisse discuter avec ton soft ?

    • [^] # Re: Acquisition de signaux

      Posté par  . Évalué à 5.

      De manière générale j'ai conçu Oscopy pour qu'il soit extensible facilement, pour que la taille de code d'interface soit minimale. Si le format d'entrée est trivial, juste quelques lignes de Python suffisent (voir le Reader pour le format cazm). D'autre part Oscopy accepte des signaux soit POSIX ou transmis via DBus, principalement pour déclencher la relecture des fichiers d'entrée.

      Pour transformer Oscopy en oscilloscope low-cost, il faut un module Oscopy Reader permettant de lire une entrée audio ou une carte d'acquisition, puis déclencher éventuellement la relecture de l'entrée par un programme tiers en utilisant DBus ou les signaux POSIX.

  • # trop tard (pour moi)

    Posté par  . Évalué à 3.

    Je viens de passer quelques semaines à fabriquer un visualiseur de données interactif "temps réel" en python… si j'avais su!

    J'ai quelques questions (je n'ai pas trouvé sur le site en lien):
    -quelle est la fréquence max d'acquisition/visualisation?
    -quelle sorte de flux de données on peut lui mettre en entrée? Est-ce que ça pourrait facilement s'interfacer avec un middleware type ROS ou YARP (ou OROCOS, mais je connais moins)?
    -qu'avez-vous utilisé comme bibliothèque graphique?

    Autrement j'avais mes mêmes question que le commentaire précédent: est-ce qu'on peut visualiser facilement le signal d'un périphérique (arduino, carte-son…)

    En suggestions, je pense que ce n'est jamais très pratique d'avoir plein de fenêtres, les onglets c'est pas mal.

    Bravo et merci, je l'essaie dès qu'une occasion se présente!

    • [^] # Re: trop tard (pour moi)

      Posté par  . Évalué à 4.

      Tout d'abord une clarification pour éviter toute confusion: actuellement Oscopy est un oscilloscope pour simulateur électronique. Il lit des fichiers contenant des données pour ensuite les afficher après éventuel post-traitement. Voir aussi ce commentaire ci-dessus.

      Ceci posé, l'intégration d'un affichage temps réel dans Oscopy se traduit par une extension de la classe Figure. Qu'as-tu utilisé pour l'affichage "temps réel" ?

      Pour répondre à tes questions:

      • Avec la configuration actuelle la fréquence max d'acquisition/visualisation doit être de l'ordre de 1-2 Hz le temps que Matplotlib redessine la Figure.
      • Le flux de données est ouvert, du moment qu'un Reader existe pour le lire. Un Reader est juste une classe qui lit un flux et le transforme en Signal, qui encapsule deux simples vecteurs numpy –abscisse et ordonnée. Actuellement les flux utilisés sont des fichiers, mais l'architecture d'Oscopy ne devrait pas poser d'obstacles à l'utilisation d'autre types (pipes, shm, dbus…). Par contre je ne dispose pas des middlewares que tu mentionnes, je ne suis pas en mesure d'ajouter moi-même un tel Reader.
      • Matplotlib pour la facilité d'intégration dans une application Python et le rendu.

      L'affichage dans des onglets ou fenêtre est un long débat… De ce fait, je vais intégrer les onglets dans les objectifs pour la version 0.72, tout en gardant la possibilité de faire de nouvelles fenêtres.

      A toutes fins utiles, je viens de rajouter sur le site officiel le manuel de l'API qui détaille comment étendre les possibilités d'Oscopy.

      • [^] # Re: trop tard (pour moi)

        Posté par  . Évalué à 1.

        J'ai utilisé aussi Matplotlib pour l'affichage (dans une boucle while mais en mode interactif (avec plt.ion()) )
        Le problème étant que je voulais afficher de l'ordre de 10 valeurs par seconde, et que même en utilisant un buffer l'interface se bloquait quand j'essayais d'afficher plus de deux figures (avec des onglets c'est pire).
        Au vu de la doc, je pense que je vais pouvoir intégrer un appel à un module (YARP ou autre), de nouvelles perspectives en vue!

        • [^] # Re: trop tard (pour moi)

          Posté par  . Évalué à 1.

          Je viens d'ajouter comme objectif de la version 0.72 l'optimisation de la relecture des fichiers et de la mise à jour des graphes. Cela devrait permettre une meilleure réactivité pour afficher des graphiques plus rapidement.

  • # PicoScope / CleverScope

    Posté par  . Évalué à 2.

    Bonjour,
    Est-ce que ça pourrait permettre d'utiliser un PicoScope ou un CleverScope sous Linux ?

    • [^] # Re: PicoScope / CleverScope

      Posté par  . Évalué à 1.

      mon picoscope tourne sous linux avec qpicoscope. ceci dit il est un peu pauvre en fonction post traitement (décodage LS, fft, …)

Suivre le flux des commentaires

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