Audiyofan
Audiyofan




Poster un nouveau sujet Répondre au sujet  [ 38 messages ]  Aller à la page 1, 2, 3  Suivante
Auteur Message
 Sujet du message: Afficher les mesures de l'ampli avec un Arduino (Diagnostic)
MessagePosté: Dim 18 Mai 2014, 21:47 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
Bonjour.

Pour faire suite au postes
http://audiyofan.org/forum/viewtopic.php?f=18&t=9128
http://audiyofan.org/forum/viewtopic.php?f=18&t=9129

Voici un projet dont le but est de faire ça:
http://audiyofan.org/forum/download/file.php?id=4962

Mais en plus moderne :mrgreen:

Le projet consiste pour les amplis étant équipés d'un Arduino, de faire afficher les mesures disponibles, et plus encore, comme par exemple des mesures de température sur une page web. Ca demande toutefois quelques connaissance en programmation, mais je vais toutefois mettre à disposition le code nécessaire pour le faire sur la page suivante.
https://github.com/vapkse/diagnostic
et reste à disposition pour d'éventuelles questions.

L'architecture choisie est la suivante:
Image

Pour faire transiter les données de l'ampli à l'ordinateur, il faut ajouter une partie de code dans l'Arduino de l'ampli pour répondre à des requêtes d'un client et renvoyer une structure de données. La liaison avec la partie cliente est pour l'instant filaire avec une isolation optique composée de deux optocoupleurs. J'ai essayé l'infrarouge, mais c'est l'échec, j'essayerai plus tard d'autres options. Ensuite un Arduino côté PC, envoie des demande et collecte les données. Ce client doit être capable d'envoyer des requêtes à plusieurs serveurs, comme par exemple dans le cas d'utilisation de mono-blocs. Dans un premier temps, les données collectées, seront immédiatement transmises à l'ordinateur, mais je passerais dans le future passer par une carte SD, dans le but de conserver le temps de fonctionnement de l'ampli, même si l'ordi est éteint. Sans cette carte SD, il y a perte possible des données si le PC est éteint, ce qui n'est pas grave en soi, sauf pour mesurer le temps de fonctionnement total des tubes.

Côté PC, un serveur javascript, va collecter les données, les stocker sur le disque dur (log) et faire office de serveur web pour l'affichage des valeurs. Côté client, le tout s'affichera sur une page web. A partir des logs, il serait alors possible de tracer des courbes sur l'évolution des courants, et en fonction de la durée de fonctionnement totale des tubes, de faire une projection de la durée de vie. Mais on en est pas encore la.

Dans la structure remontée, il y a bien sur les courants de chaque tubes, les points de fonctionnement des régulateurs en cas de régulation, le temps de fonctionnement de l'ampli depuis l'allumage. On peut envisager facilement des mesures de température, sur des dissipateurs et l'air ambiant, ainsi que les étapes de démarrage, les erreurs, le tube responsable, ect... Hormis les mesures de températures, ça ne demande pas de modifications Hardware.

Bon, ça peut paraître assez compliqué comme ça, mais hormis la maîtrise des langages, vous verrez que ça ne l'est pas tant que ça.

A Suivre....

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Dernière édition par vapkse le Dim 03 Sep 2017, 18:44, édité 1 fois.

Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Dim 18 Mai 2014, 22:21 
Hors ligne
Site Admin
Avatar de l’utilisateur

Inscription: Mer 01 Oct 2003, 22:47
Messages: 8921
Localisation: St Mathieu de Tréviers près de Montpellier
Bonsoir Serge

Belle et grande idée, je vois que tu a fait un github , peux tu et veux tu faire une version Française
qu'on rajouterai aux autres dossiers de l'organisation Audiyofan :mrgreen: tub18

Pour ton soucis de transmission, en plus de la carte SD , peut être un module wifi pour se connecter au PC
et éliminer le 2ème arduino connecter au Pc, réalisable ou pas :oops: :?:

A +

_________________
Ce qui est pris n'est plus a prendre


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 00:00 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
salut Totof

Une version française de quoi exactement? Je ne comprend pas.

Pour la liaison sans fils, le soucis est entre ampli et Arduino client, pas entre Arduino client et pc, car la l'usb va très bien. Certes une liaison wifi serait faisable, mais ça ne résouds pas mon problème. Je pourrais aussi coller un module wifi par amplis, et éviter l'Arduino client, mais il y a deux inconvénients:
1) Il m'en faudrait un par ampli, et ça coûte, et il faut éventuellement bufferiser dans l'ampli.
2) Si je pouvais éviter de coller un émetteur dans mes amplis, se serait mieux.

Il faut que la modif coté ampli soit minimum, à savoir poser un connecteur pour se brancher sur le port série de l'Arduino (4 fils, + - rx tx), et poser des sondes de températures. Après, ça se passe à l'extérieur, mais ça doit passer par le port série question de ne pas consommer des e/s pour ça. Un Arduino mega2560, utilisé comme client coûte moins qu'un seul module wifi, d'ou se choix d'architecture, avec un client serveur intermédiaire. Il me permet aussi de gérer plusieurs connexions série si il y a deux amplis mono par exemple, et de faire le stockage SD à un seul endroit.

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 08:24 
Hors ligne
Site Admin
Avatar de l’utilisateur

Inscription: Mer 01 Oct 2003, 22:47
Messages: 8921
Localisation: St Mathieu de Tréviers près de Montpellier
Bonjour Vapkse

En effet les module wifi sont aussi cher qu'un Arduino Mega 2560 :oops: :oops:

Pour ton dossier en français , je parlais du README et explication car je pense que tu va les
mettre en anglais sur ton dossier perso , ça fait doublon mais AMHA pour les membres
d'Audiyofan c'est plus abordable d'avoir les explications en français, tous ne maîtrise
pas la langue de "chat qui expire" :mrgreen:

Bonne journée

_________________
Ce qui est pris n'est plus a prendre


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 09:29 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
Non, en fait, comme je l'ai déjà dit sur l'autre post, je ne vais pas rédiger à double, sauf en cas de demande. Les explications seront en français, et dans ce post. Si il y a une demande et un intérêt de la part d'un anglophone, alors effectivement, je rédigerai en anglais sur github. Pour l'instant, je stocke le code sur github, car c'est bien adapté, mais je ne suis toujours pas convaincu en ce qui concerne les projets d'amplis.

Totof a écrit:
tous ne maîtrise
pas la langue de "chat qui expire" :mrgreen:

Moi non plus :?

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 09:45 
Hors ligne
Site Admin
Avatar de l’utilisateur

Inscription: Mer 01 Oct 2003, 22:47
Messages: 8921
Localisation: St Mathieu de Tréviers près de Montpellier
Re

Alors il suffit juste, si tu est d'accord, que tu envoi ton dossier sur le Github Audiyofan
idem pour l'excellent travail que tu as déjà fait concernant les régulateurs et sécurité
à base d'Arduino , il faut juste qu'on te crée le "user" et ensuite tu "gère"
Le plus simple c'est de faire comme Greg ou moi , on a gardé les mêmes "user" et code
Ca agrémentera efficacement cet outil :mrgreen:

A +

_________________
Ce qui est pris n'est plus a prendre


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 10:17 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
Pour les explications, je vais commencer par la liaison Ampli (Arduino serveur) à l'Arduino côté PC (Client).

Dans ce cas bien précis, il faut considérer que le client peut requêter plusieurs amplis en même temps, et sur la même liaison série. Il faut donc éviter les conflits et les collisions. Par conséquent, c'est le client qui demande les données et le serveur (ampli) ne réponds qu'à la demande du client. Tant que l'ampli n'a pas répondu, le client ne fait pas d'autres demandes avant un temps d'expiration au bout du quel, il considérera l'ampli comme éteint.

Aussi pour éviter que le client aie une liste à requêter, et qu'il passe son temps à attendre sur des amplis éteints, il n'envoie des requêtes qu'à des amplis qui se sont manifestés par l'envoi d'un ping.

La séquence est donc la suivante.
• L'ampli s'allume, il envoie un ping au client
• Le client place l'ampli dans une liste à requêter
• Le client envoie des requête de demande de données à l'ampli
• L'ampli réponds par un envoi de données.

Si l'ampli ne reçois pas de demande de données au bout d'un certain temps, il relance des pings.
Si le client ne reçoit pas de données au bout d'un certain temps après une demande, il sort l'ampli de sa liste
Si le client a plusieurs amplis à requêter, il favorise celui le plus en retard
Tous les communications sont vérifiées avec un check sum, au cas ou un ping arrive au milieu d'un flux de données ou que la communication est mauvaise.

Le code serveur, donc à placer dans l'ampli est posté sur mon github:
https://github.com/vapkse/diagnostic

dans le dossier serveur:
https://github.com/vapkse/diagnostic/blob/master/server/server.ino

Pour la communication série, j'ai utilisé une librairie externe EasyTransfer, et ajouté une librairie de structure que j'ai écris AmpTransfer. J'ai également utilisé une librairie externe LinkedList. Les librairies utilisées sont dans le dossier lib:
https://github.com/vapkse/diagnostic/tree/master/lib, et doivent être ajoutée à environnement de développement de l'Arduino.

Le code du serveur est assez simple, on peut voir dans loop() qu'il envoie des requêtes ping à l'allumage et en boucle si aucune demande de données n'est reçue. Et en cas de demande de données, il remplit une structure avec les valeurs mesurées et la renvoie. La structure de taille fixe est stockée dans la librairie AmpTransfer, dans le fichier AmpTRansfer.h

On peut donc ainsi envoyer sur le port série une série de valeurs mesurées ou des variables de régulation de l'ampli.

A noter également que chaque requête comporte un id d'ampli qui sera propagée jusqu'à la page web, pour permettre d'identifier d'une façon unique chaque ampli. Cette id doit être contenue dans un byte (0 à 255).

Côté Arduino client, le code doit permettre de recevoir cette structure de données et la propager au PC via le port USB. Ce code est dans le dossier client
https://github.com/vapkse/diagnostic/blob/master/client/client.ino

Il s'appuie sur le même librairies que la partie serveur. Comme il est fait pour un Mega 2560, qui a plusieurs ports série, j'utilise le 0 pour la communication USB et le 1 pour la communication avec l'ampli. La encore, le programme attends des réponses de requêtes, en fonction du flux expliqué ci-dessus. Une fois les données reçues d'un ampli, elles sont pour l'instant transférées immédiatement et tel quelle sur le port série usb. Il n'y a aucune transformation, la structure c++ est envoyée au pc (Function processMessage)

A Suivre...

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 14:24 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
La partie suivant, se passe dans le PC, et sa se complique un peu. Nous avons donc notre Arduino Client relié sur le port USB, qui envoie des structures de données type C++ au PC. Il faut alors avoir un service capable de récupérer cette structure et la traiter.
Pour cela, j'ai utilisé node.js http://nodejs.org/

Node.js est un petit utilitaire multi-platformes qui permet de réaliser un serveur en javascript. Pour cela, il suffit de lancer node.js avec en paramètre un fichier js (javascript), et ce dernier interprétera le javascript pour un faire un vrai serveur web ou de données. On trouve une multitude de librairies sur le web permettant de remplir pas mal de tâches, comme:
• Un web serveur
• Communications séries
• Comminaction via un socket avec push
ect..

Bref pas mal de choses sont déjà à disposition pour effectuer les tâches requises, et il suffit juste d'assembler. Pour ce cas d'usage, ce que l'on va demander au serveur node, est:
• Ouvrir une communication série et récupérer la structure de données
• Transformer cette structure de type C++ en un format un peu plus Human Readable (json)
http://fr.wikipedia.org/wiki/JavaScript_Object_Notation
• Copier ces données dans un fichier log sur le disque dur
• Répondre à des requêtes HTTP
• Envoyer de façon cycliques les données à la page web (push) dès leur disponibilité

Le serveur node, sera donc toujours lancé si l'on veut capturer les données du client Arduino. Sous Windows, si il n'est pas lancé en tant que service, ça se traduit par une fenêtre de commande qui peut pendant le développement afficher des informations de debug.
Image

On voit ici par exemple la structure reçue depuis l'Arduino, et transformée en objet json.

Le code du serveur est dans le dossier https://github.com/vapkse/diagnostic/tree/master/app/webserver,

et les librairies externe utilisées, sont:
• Express.js
Une librairie qui contient tout ce qu'il faut pour faire un serveur web http://expressjs.com/

• Ejs.js
Requis par express.js http://embeddedjs.com/

• less-middleware
Requis par express.js https://www.npmjs.org/package/less-middleware

• log4js
Permet de loguer avec différents degrés d'importance dans la fenêtre de commande ci-dessus
https://github.com/nomiddlename/log4js-node

• serialport
Permet de communiquer par le port série. Va servir à recevoir les données de l'Arduino client par le port usb
https://github.com/voodootikigod/node-serialport

• socket.io
Va permettre d'établir une communication requete/post/push avec le site web. C'est par cette librairie que vont transiter les données récoltées de l?arduino client vers la page web.
http://socket.io/

• struct
Une librairie magique, qui permet de convertir les structures c++ en objet json. Ceci va permettre de loguer et d'exploiter les données en provenance de l'Arduino dans un format lisible.
https://github.com/xdenser/node-struct

Voila, une fois toutes ces librairies ajoutées au serveur node avec les commandes dans le fichier getModules.bat (pour windows), on aura éà disposition les outils nécéssaire pour la création du serveur. Le reste du serveur se trouve dans les fichiers app.js pour la partie express/http serveur et dans server.js pour les requêtes de la page web, la communication série avec l'Arduino et les réponses à la page web. Je ne vais pas rebtrer trop en détails dans le code javascript, mais reste à disposition si vous avez des questions détaillées.

A noter encore que le démarrage du serveur node sous Windows, se fait en lançant la commande 'node.exe app.js' depuis le répertoire ou se trouve app.js.

Reste la page web.
A Suivre..

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 19:37 
Hors ligne
Site Admin
Avatar de l’utilisateur

Inscription: Mer 15 Juin 2005, 17:23
Messages: 7306
Localisation: Ardeche
Salut Serge,

Je reconnais ne pas avoir tout lu dans le détail, mais au vu de ceci:

http://www.amazon.fr/s/?ie=UTF8&keywords=cl%C3%A9+usb+wi-fi&tag=googhydr0a8-21&index=aps&hvadid=19601989094&hvpos=1t1&hvexid=&hvnetw=g&hvrand=3203191521075319086&hvpone=&hvptwo=&hvqmt=b&hvdev=c&ref=pd_sl_6vcq9v7g8k_b

. . . et si il existe un librairie 'socket' pour l'Arduino, on pourrait simplement y ajouter une clé usb wifi pour envoyer de temps en temps et aléatoirement un paquet UDP contenant les données.

Charge au serveur de récupérer ses petits . . .

Keep It Simple Stupid tub14

Yves.

_________________
Seules les choses que l'on refuse de comprendre en leur attribuant des propriétés magiques semblent compliquées.


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 20:08 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
Salut Yves,

Ce n'est pas si simple pour deux raisons au moins.
• La première raison est que certains de mes amplis ont juste l'atmega328, et pas de chip pour l'interfaçage usb, et il n'y a que les e/s rx-tx serial dispo.
• La seconde est que ces clés fonctionnent à l'aide des drivers installés dans le système d'exploitation qui sont chargés d'implémenter le stack tcp/ip. D'après ce post, c'est la raison du prix élevé de la carte wi-fi pour Arduino. http://forum.arduino.cc/index.php?topic=113960.0, car elle implémente elle même cette partie. Et évidement un Arduino n'est pas capable de grand chose sur ce point.

Evidemment, se serait assez fun d'aller taper directement dans l'ampli depuis le serveur node, mais ça amènerait toutefois plusieurs inconvénients, 1), il faudrait ajouter une solution de communication dans chaque amplis, probablement plus complexe que de juste relier les deux pins du port série. 2) Pour persister les données, la encore il faudrait placer une carte sd dans chaque amplis et le shield associé, et ça commencerait à faire du monde.

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 21:30 
Hors ligne
Site Admin
Avatar de l’utilisateur

Inscription: Mer 15 Juin 2005, 17:23
Messages: 7306
Localisation: Ardeche
vapkse a écrit:
Salut Yves,

Ce n'est pas si simple pour deux raisons au moins.
• La première raison est que certains de mes amplis ont juste l'atmega328, et pas de chip pour l'interfaçage usb, et il n'y a que les e/s rx-tx serial dispo.
• La seconde est que ces clés fonctionnent à l'aide des drivers installés dans le système d'exploitation qui sont chargés d'implémenter le stack tcp/ip. D'après ce post, c'est la raison du prix élevé de la carte wi-fi pour Arduino. http://forum.arduino.cc/index.php?topic=113960.0, car elle implémente elle même cette partie. Et évidement un Arduino n'est pas capable de grand chose sur ce point.

En effet !

Encore plus KISS :
http://www.seeedstudio.com/depot/images/product/VirtualWire.pdf

Limité à une trentaine d'octets, ça peut suffire ?

_________________
Seules les choses que l'on refuse de comprendre en leur attribuant des propriétés magiques semblent compliquées.


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 21:50 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
Oui ceux la, je les ai vus, il y en a à 315MHZ aussi, mais je dois avoir une communication bidirectionnelle, donc il me faut une paire par côtés.
Je pense d'ailleurs qu'ils peuvent passer par le port série, et il y a des modules en lot:
http://www.ebay.com/itm/10pcs-NEW-433Mhz-RF-transmitter-and-receiver-kit-Arduino-project-/141285834001?tfrom=141201710606&tpos=top&ttype=price&talgo=undefined

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Lun 19 Mai 2014, 22:22 
Hors ligne
Site Admin
Avatar de l’utilisateur

Inscription: Mer 15 Juin 2005, 17:23
Messages: 7306
Localisation: Ardeche
Il semble qu'il existe des modules émission réception mais qui ne peuvent fonctionner qu'en alternat, pas en duplex.
C'est supportable.
Pour la transmission de données via un support non galvanique (càd qui ne passe pas le continu), il faut se débrouiller pour que le nombre moyen de '1' soit à peu près égal au nombre moyen de '0' afin que la composante continue moyenne soit nulle c'est pourquoi il n'utilise pas l'UART mais un codage spécial.
Ou alors, on peut moduler la radio par deux fréquences, l'une représentant les 1, l'autre les 0.
Par exemple:
http://en.wikipedia.org/wiki/Kansas_City_standard

J'ai réellement utilisé ça, il fallait un quart d'heure pour charger un "Editeur/Assembleur" en RAM dans un 6800 à partir d'une minicassette :roll: :roll:
Et au premier bug, on recommence evil

_________________
Seules les choses que l'on refuse de comprendre en leur attribuant des propriétés magiques semblent compliquées.


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Mar 20 Mai 2014, 08:51 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Mar 22 Aoû 2006, 16:47
Messages: 2665
Localisation: Suisse
Effectivement, si il garde la porteuse, ça ne va pas le faire si il y a deux amplis, et pour le duplex, il faudrait une paire à 430, et l'autre à 315. C'est probablement pour ça d'ailleurs qu'il y a deux fréquences.

La dernière solution est de conserver mes optocoupleurs, mais pour ne pas tirer plusieurs câbles, soit de faire commuter tous les optos sur la même ligne à la base, soit ramener l'Arduino client vers les amplis, utiliser un port série par amplis, et l'équiper d'une carte SD et d'un module wifi.

Pour l'instant, ça fonctionne avec l'opto, mais pour un seul ampli, le temps de finir toute la boucle, je reviendrai sur cette liaison plus tard.

_________________
Tube Curve Tracer, Diagnostic,
Mon GIT


Haut
 Profil  
 
 Sujet du message: Re: Afficher les mesures de l'ampli avec un Arduino (Diagnos
MessagePosté: Mar 20 Mai 2014, 09:37 
Hors ligne
Site Admin
Avatar de l’utilisateur

Inscription: Mer 01 Oct 2003, 22:47
Messages: 8921
Localisation: St Mathieu de Tréviers près de Montpellier
Bonjour Vapkse

Une idée en passant , les carte arduino sont équipée d'un bus I2C , on peut pas bidouillé un truc
de ce côté avec des adresses par amplis , c'est du 4 fils et les broches SDA et SCL sont à part :wink:

Une idée comme ça hein :oops:

A +

_________________
Ce qui est pris n'est plus a prendre


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 38 messages ]  Aller à la page 1, 2, 3  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Aller à:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com