action non désirée moodeaudio

Votre Apache se cache, votre Pi gémit, votre SoC fume ? La panne quoi ! C'est ici que vous trouverez sans doute une solution... Sinon du réconfort :)

Modérateurs : Francois, maxty01

mothinos
Messages : 5
Enregistré le : dim. 26 juin 2016 21:52

action non désirée moodeaudio

Message par mothinos » lun. 25 nov. 2019 12:48

Bonjour,

Je ne sais pas vraiment expliquer ce phénomène, je m'explique:

j'ai un RP0w sur lequelle est installé moodeaudio (distribution similaire à Volumio). Et il arrive que quand ma lecture est en pause, elle redémarre toute seul, ou que le morceau change, quand j'actionne un interrupteur chez moi ou que j'allume un appareil ménagé.

J'imagine que c'est parce que j'utilise une fonction du système. Il y a la possibilité de mettre des boutons poussoir pour déclencher des actions(play pause chargement de playlist...). Ces boutons poussoir font juste un contact entre 2 pins du raspberry sans résistance, je me dis que le problème viens peut-être de là. Notamment parce que ce sont justement des fonctions qui sont liées à un bouton qu'on retrouve dans les actions intempestive. peut-être un problème de terre (bien que je me demande encore comment mettre mon RP à la terre!

j'espère que c'est assez clair.

N'hésitez pas à me demander des précisions si vous voulez m'aider.

Merci d'avance

Thomas

Avatar du membre
cbalo
Raspinaute
Messages : 261
Enregistré le : sam. 24 août 2019 06:05
Contact :

Re: action non désirée moodeaudio

Message par cbalo » sam. 7 déc. 2019 17:51

Bonjour
Fonctionnement très étrange !
Bon déjà je vais répondre à une question pour la mise à la terre:
Tout ce que tu pourrais mettre à la "terre" c'est l'alimentation du Raspberry à condition d'avoir une alim prévue pour (ce qui n'est pas le cas dans des alim fournis).
Mais vu la consommation du Raspberry et ces éventuelles variations de consommation je doute plus que fortement que cela ait un impact (ce n'est ni un aspirateur ni une machine à laver).

Et si ton installation électrique était très défectueuse, appuyer sur un interrupteur provoquerait des chutes de tensions qui tendraient plutôt à faire rebooter le Raspberry (ou a le faire planter) que juste changer la piste de lecture.
En plus tu n'as pas de télécommande (si ) donc exit les parasites électromagnétiques.

Ne reste plus que les incertitudes au niveau des boutons poussoirs. Si ce sont des boutons poussoirs Chinois qu'on utilise fréquemment pour faire du prototypage parce que vraiment pas cher, je peux comprendre.
Moi même, pour faire une détection d'appui long sur un de ces boutons je suis obligé de faire du lissage dans mon code (car pendant qu'on appuie, il arrive qu'il dise pendant une fraction de seconde qu'il n'est plus appuyé, puis qu'il est de nouveau appuyé).

Si tu as accès au code, tente de logger la valeur d'entrée du bouton. tu verras s'il a été détecté comme appuyé (ou relevé) à tort.
cbalo :lol: 2 Raspi3 dont 1 sous Retro Pie, l'autre pour Emby, 1 Raspi2 pour les Dev, 7 Raspi Zero

Artemus24
Raspinaute
Messages : 500
Enregistré le : ven. 15 sept. 2017 19:15

Re: action non désirée moodeaudio

Message par Artemus24 » sam. 7 déc. 2019 19:02

Salut cbalo.
cbalo a écrit :pour faire une détection d'appui long sur un de ces boutons je suis obligé de faire du lissage dans mon code (car pendant qu'on appuie, il arrive qu'il dise pendant une fraction de seconde qu'il n'est plus appuyé, puis qu'il est de nouveau appuyé).
Qu'est-ce que vous entendez par lissage ?

Dans mon programme sur les interrupteurs et les leds, j'ai mis un flag à faux et si le bouton est appuyé une fraction de seconde, le flag passe à vrai.
Il y a matière à discussion sur comment gérer le bouton poussoir, mais comment faire le distinction entre un parasite et une pression franche ?

@+
--> RPi0v1.3, RPi0W, Rpi3A+, Rpi3B+
--> Rpi0WH + Tuner TV HAT
--> RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
--> RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB

Avatar du membre
cbalo
Raspinaute
Messages : 261
Enregistré le : sam. 24 août 2019 06:05
Contact :

Re: action non désirée moodeaudio

Message par cbalo » sam. 7 déc. 2019 20:56

Je me suis aperçu qu'avec ces bouton poussoirs quand on appuie dessus le contact est fait puis puis couper un grand nombres de fois durant un certain temps (20 - à 50ms) puis l'état se stabilise à "appuyé" si on reste appuyé dessus.

Donc pour éviter les conséquences, je n'exploite pas directement le niveau de l'entrée du bouton mais une valeur lissée en interne par mes programmes.
J'ai un temps de décomptage qui part de la dernière fois que l'entrée du bouton a été activée.
Si le bouton change de position, je remets à 0 ce temps de décomptage.
Et si le bouton est appuyé et que le temps de décomptage est >=50 ms alors le programme considère qu'il faut effectivement faire le job correspondant au bouton appuyé.
C'est ce que j'ai appelé le lissage.
cbalo :lol: 2 Raspi3 dont 1 sous Retro Pie, l'autre pour Emby, 1 Raspi2 pour les Dev, 7 Raspi Zero

Artemus24
Raspinaute
Messages : 500
Enregistré le : ven. 15 sept. 2017 19:15

Re: action non désirée moodeaudio

Message par Artemus24 » dim. 8 déc. 2019 05:10

Salut cbalo.

Je ne vois pas trop l'intérêt de procéder ainsi. Pourquoi ?
Le bouton poussoir à seulement deux états : enfoncé ou pas.

En espérant qu'il n'y a pas de parasite quand le bouton n'est pas enfoncé, en toute logique, on ne détectera rien du tout.
Dans le cas contraire, on détecte qu'il a été enfoncé, même si cela une fraction de seconde.
Ou si vous préférez, je détecte quelque chose ou je ne détecte rien.

Dans mon programme écrit en 'C', j'utilise un timer pour lire l'état du bouton.
Je conserve l'état précédent du bouton. Autrement dit, je teste les changements et non l'état du bouton.
Ainsi quand il passe de l'état low à high, je considère qu'il a été enfoncé.
Et quand il passe de l'état high à low, je considère qu'il a été relâché.
L'état du bouton reste durant le durée de la périodicité du timer.

Si l'on voulait faire les choses bien il faudrait adjoindre un condensateur afin de mieux contrôler les changements d'états.

@+
--> RPi0v1.3, RPi0W, Rpi3A+, Rpi3B+
--> Rpi0WH + Tuner TV HAT
--> RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
--> RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB

Avatar du membre
cbalo
Raspinaute
Messages : 261
Enregistré le : sam. 24 août 2019 06:05
Contact :

Re: action non désirée moodeaudio

Message par cbalo » dim. 8 déc. 2019 08:24

Oui il n'a que 2 états mais ils ne sont pas stables.
Mais tu t'apercevras que ces boutons ne sont pas top top.
Tu appuies dessus et avant qu'il ait vraiment contact permanent, il y a contact, puis plus contact etc... pendant des dizaines de millisecondes et enfin ça se stabilise.

Si tu fais un programme très réactif, tu t'en apercevras, mais si tu fait des sleep à tout bout de champs, évidement, tu ne t'en rendras pas compte (l'instabilité se produisant durant le sleep)

La solution de lissage permet de ne pas avoir à acheter des boutons "haut de gamme" (encore faut-il pouvoir identifier des boutons poussoirs "haut de gamme")
cbalo :lol: 2 Raspi3 dont 1 sous Retro Pie, l'autre pour Emby, 1 Raspi2 pour les Dev, 7 Raspi Zero

Bud Spencer
Raspinaute
Messages : 704
Enregistré le : lun. 15 août 2016 21:38

Re: action non désirée moodeaudio

Message par Bud Spencer » dim. 8 déc. 2019 10:10

mothinos a écrit :
lun. 25 nov. 2019 12:48
Ces boutons poussoir font juste un contact entre 2 pins du raspberry sans résistance, je me dis que le problème viens peut-être de là.
C’est tout simplement parce qu’il ni a pas de résistance de pull de programmée sur les entrées qui servent aux boutons. Si tu as accès au code, il suffit de les rajouter dans les paramètres d’initialisations de ces entrées ou alors en ajouter une extérieure pour chaque bouton (50K).

Idem pour les problèmes de détection ‘successives’ quand on appuis sur un bouton. Soit utiliser une fonction de debounce time soft ou simplement ajouter un condo que quelques dizaines de nF en parallèle du bouton.

Le grand luxe étant bien sûr de monter un comparateur à hystérésys en série entre les boutons et les entrées. Ça garanti que les niveaux sur les pin d’entrée sont exclusivement logique, mais c’est un poil plus compliqué à faire.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Avatar du membre
cbalo
Raspinaute
Messages : 261
Enregistré le : sam. 24 août 2019 06:05
Contact :

Re: action non désirée moodeaudio

Message par cbalo » dim. 8 déc. 2019 11:03

Mes fonction de lissage font du
debounce time soft
je n'ai pas employé se terme pour ne pas perdre l'auteur de la question.

En tout cas on voit bien de quel monde on vient :
J'ai une solution de développeur.
Le condo je n'y avais pas pensé pourtant c'est évident (cbalo :D ), fait aussi du lissage et c'est une réponde d'électronicien.

Le Raspberry fait se rencontrer les 2 mondes c'est ce qui est cool.
cbalo :lol: 2 Raspi3 dont 1 sous Retro Pie, l'autre pour Emby, 1 Raspi2 pour les Dev, 7 Raspi Zero

Artemus24
Raspinaute
Messages : 500
Enregistré le : ven. 15 sept. 2017 19:15

Re: action non désirée moodeaudio

Message par Artemus24 » lun. 9 déc. 2019 00:06

Salut à tous.
cbalo a écrit :Mais tu t'apercevras que ces boutons ne sont pas top top.
C'est tout à fait vrai.
cbalo a écrit :Si tu fais un programme très réactif, tu t'en apercevras, mais si tu fais des sleep à tout bout de champs, évidement, tu ne t'en rendras pas compte (l'instabilité se produisant durant le sleep)
Il n'y a pas de sleep dans mon programme. Il ne faut pas confondre un sleep qui bloque le traitement durant un laps de temps, avec un timer qui est un décompte et quand celui-ci arrive à zéro, déclenche une procédure.
Dans le cas du timer, il n'y a aucun blocage.

Mais au cas où tu ne l'aurais pas encore remarqué , la réaction humaine est très lente par rapport à un traitement de quelques millisecondes.
Bud Spencer a écrit :C’est tout simplement parce qu’il ni a pas de résistance de pull de programmée sur les entrées qui servent aux boutons.
Dans mon cas, en effet, j'ai installé une résistance pull down, ainsi qu'un résistance de tirage sur chaque bouton poussoir.
C'était juste un exercice car je ne suis pas électronicien mais informaticien.
Et mon but est de faire en sorte que mon montage fonctionne.
Il n'a pas vocation à être économique ni à être commercialisé.
Bud Spencer a écrit :Soit utiliser une fonction de debounce time soft ou simplement ajouter un condo que quelques dizaines de nF en parallèle du bouton.
--> http://www.labbookpages.co.uk/electronics/debounce.html

De toute façon, il n'existe pas une seule solution à ce genre de problème, que ce soit coté électronique ou coté informatique.

@+
--> RPi0v1.3, RPi0W, Rpi3A+, Rpi3B+
--> Rpi0WH + Tuner TV HAT
--> RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
--> RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB

mothinos
Messages : 5
Enregistré le : dim. 26 juin 2016 21:52

Re: action non désirée moodeaudio

Message par mothinos » lun. 9 déc. 2019 15:48

wahou!

Je n'étais pas venu sur ce topi depuis quelques jour mais vous vous êtes lâché!

J'ai pas trop envie de toucher au code, parce que c'est le genre de truc que je devrais refaire à chaque mise à jour.

Mais je retrouve dans vos réponses le terme "debounce" et c'est une bonne nouvelle parce que dans la page de config des boutons le dev a ajouté un paramètre debounce je l'avais mis de coté car l'infobule indique que ce paramètre sert à ne pas envoyer deux fois la même information donc à espacer les "relevés d'état". Mais peut être qu'en effet en augmentant sa valeur ça limiterai les parasitage de mon réseau.

Mais même si l'effet devait être réduit j'avoue que l'idée évoqué d'ajouter des résistances m'attire un peu. Du coup, comme tous les boutons ont un ground commun pensez-vous que je puisse en mettre une seul entre le nœuds de retour et le ground ou bien me faut-il en mettre un en amont de chaque boutons?

En tout cas merci de vos réponses. Je modifie la valeur de debounce et je vous tiendrai au courant.

Mothinos

Répondre

Retourner vers « En panne ? »