GPIO : Pin HIGH physiquement mais logiquement LOW

Le connecteur GPIO du Raspberry Pi, comment l'utiliser sur les Mode A, B et B+

Modérateur : Francois

Répondre
nexen
Raspinaute
Messages : 175
Enregistré le : lun. 29 sept. 2014 13:58

GPIO : Pin HIGH physiquement mais logiquement LOW

Message par nexen » jeu. 30 nov. 2017 16:03

Bonjour,

Je suis dans la phase 'Reproduction/Miniaturisation' d'un de mes projets (Un Thermostat de poêle à granule) et je rencontre un 'BUG'/'SOUCIS' avec le GPIO.



Je viens de réinstaller le système sur mon nouveau PI (Avec un boot sur USB) et lorsque j'utilise mon code qui tourne très bien sur mon 1er système, j'obtient un comportement assez incohérent pour moi.
J'ai d'installé un BME280 et un écran I2c 0.96" qui fonctionne parfaitement....

Mon code monte la sortie GPIO(20) à 1 pour activer un relais sous certaines conditions et reviens à 0 si (Plein de condition de securité ... )

Sur mon 2éme test (et tester avec 2 pi différent) lorsque j'active le GPIO => mon relais s'enclenche car le GPIO est alimenté (Et je n'utilise pas le terme HIGH car il est bien en état LOW)
Je peux modifié l'état du GPIO de LOW à HIGH et de HIGH à LOW, mais la sortie est toujours alimenté ... et ceci même si mon read GPIO est à LOW !!!

Par contre dés que je CLEANUP le GPIO, tout reviens à 0.

Qu'ai je donc activé qui pourrais me poser problème ?


Merci d'avance

PS : J'ai googlesé GPIO always HIGH ... mais le résultat est vieux et sans réelle solution ....

Barbedouce
Messages : 58
Enregistré le : sam. 25 nov. 2017 20:40

Re: GPIO : Pin HIGH physiquement mais logiquement LOW

Message par Barbedouce » jeu. 30 nov. 2017 23:53

Il me semble que les sorties GPIO sont "inversables", c'est-a-dire que tu peux choisir si c'est LOW ou HIGH qui laisse le courant passer, ou l'inverse.
Des personnes plus renseignées pourraient donner d'avantage de détails.

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: GPIO : Pin HIGH physiquement mais logiquement LOW

Message par guillaume9344 » ven. 1 déc. 2017 19:51

Bonsoir, un petit schémas peut être? et le code que vous utilisez ainsi que les modèles de pi ?
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Ferois
Messages : 39
Enregistré le : jeu. 16 mars 2017 09:08

Re: GPIO : Pin HIGH physiquement mais logiquement LOW

Message par Ferois » ven. 8 déc. 2017 17:06

+1

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: GPIO : Pin HIGH physiquement mais logiquement LOW

Message par domi » ven. 8 déc. 2017 17:56

Bonjour,

Certaine platine relais fonctionnent à l'envers !

Voici une routine que j'utilise pour initialiser mes GPIO au démarrage du raspberry Pi.
Dans mon cas, le relais est ON lorsque le GPIO est LOW, il me faut donc inverser la commande.
Je met ça dans un fichier executable qui est lancé par rc.local

Pour plus de clareté, mon exemple est uniquement pour le GPIO 0, mais il suffit d'adapter ou d'ajouter ceux que vous avez besoin :

Code : Tout sélectionner

#!/bin/bash

# Declaration des gpio en sortie
/usr/local/bin/gpio export 17 out # gpio 0

# Par défaut, le relais fonctionne a l'envers, remise des etats dans le bon sens.
sudo sh -c 'echo 1 > /sys/class/gpio/gpio17/active_low'

# Initialisation des etats à 0 (éteint)
gpio write 0 0
Voila, a adapter....

Si le relais n'est pas inversé, il suffit de faire :

Code : Tout sélectionner

#!/bin/bash

# Declaration des gpio en sortie
/usr/local/bin/gpio export 17 out # gpio 0

# Initialisation des etats à 0 (éteint)
gpio write 0 0
Pour moi, il est normal d'initialiser les GPIO au démarrage ;)
C'est également dans ce fichier que j'initialise les GPIO qui sont en mode Read.

Code : Tout sélectionner

# Declaration des gpio en entree
/usr/local/bin/gpio export 25 in  # gpio 6 : Capteur jour-nuit exterieur
/usr/local/bin/gpio edge 25 both
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

nexen
Raspinaute
Messages : 175
Enregistré le : lun. 29 sept. 2014 13:58

Re: GPIO : Pin HIGH physiquement mais logiquement LOW

Message par nexen » lun. 11 déc. 2017 16:53

Bonjour Domi,

merci pour cette réponse qui m'as mis sur une piste (Bon suffit de lire le dessous de ma platine pour lire : Low level trigger) Mais en plus le module relais que j'ai pris ne fonctionne pas comme tous mes autres relais ....(XCSOURCE 5PCS 5V 1 Canal Relais Module Bouclier Optocoupleur Pour PIC AVR DSP ARM Arduino TE213)

En effet, mes autres relais fonctionne en 5V .... et un signal en 3.3 permet d'activer ....

Mais ici que ne-ni ....il me faut alimenter le relais en 3.3V !!! (j'ai trouvé ce WE ... je n'ai pas cherché avant)

Donc mes modules sont en 3.3V sytem inversé :)

J'ai pris note de ton ptit batch ;) que je testerais ... dés que possible

Par contre avec ce type de relais, j'ai un soucis de rebond au demarrage du Pi .... Dés que j'active le GPIO il est Low et donc le relais claque et reviens .....

Pour le schéma/Pi : c'est un standart (http://osoyoo.com/wp-content/uploads/20 ... ay-LED.png)
je suis en pi3 / strech et je test en python/bash

Donc le code n'était pas en cause car il tourne sur un autre pi ... ( Oui plein de tests en cours pour sécurisé et dupliquer ma domotique)

merci à vous :)

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: GPIO : Pin HIGH physiquement mais logiquement LOW

Message par domi » lun. 11 déc. 2017 20:18

nexen a écrit :Par contre avec ce type de relais, j'ai un soucis de rebond au demarrage du Pi .... Dés que j'active le GPIO il est Low et donc le relais claque et reviens .....
J'ai le même soucis au démarrage du Pi, à l'initialisation des GPIO, le relais est ON en sortie,puis passe ensuite en OFF.
Cela me le fait sur une seule platine relais, j'en ai une autre sur le même Pi (2 de 4 relais), mais je n'ai pas ce "rebond" car elle est dans "le bon sens", c'est a dire que je n'ai pas besoin d'inverser le sens de commande du GPIO. donc pas de commande "sudo sh -c 'echo 1 > /sys/class/gpio/gpio17/active_low'" sur les GPIO de cette carte relais.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Répondre

Retourner vers « Le GPIO »