Extension de ports GPIO

Forum dédié aux questions concernant la configuration de votre serveur sous Linux
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Extension de ports GPIO

Message par Nicogluck »

Bonjour à tous,

Pour ceux qui n'ont pas parcouru mes quelques posts, je suis équipé de 2 cartes de 16 relais Sainsmart que je cherche à piloter d'une manière fiable. J'abandonne définitivement les interfaces Ethernet Sainsmart qui plantent systématiquement à plus ou moins court terme.
Je connais trop peu les solutions comme l'ESP8266 et autres modules un peu marginaux (je passe déjà suffisamment de temps pour paramétrer mon installation...).

Je pense donc me tourner vers un Raspberry Pi 2 auquel j'ajouterais une carte d'extension GPIO (il me faut 32 canaux). Il semble qu'il n'en existe pas beaucoup sur le marché, à part la IO Pi Plus (https://www.abelectronics.co.uk/product ... IO-Pi-Plus).

Je commence à bien connaître Domoticz (installé sur mon NAS Synology), mais je ne connais pas encore l'utilisation du GPIO :
  • 1) Domoticz intègre-t-il sans problème un nombre de canaux supérieur à ceux fournis par le GPIO du Raspberry Pi ?
    2) La carte IO Pi Plus n'utilise pas tous les pins du GPIO du Raspberry Pi. Puis-je utiliser ceux qui restent disponibles ?
Merci beaucoup pour vos retours d'expérience.
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
poopeye
Messages : 41
Inscription : 13 janv. 2016, 19:28

Re: Extension de ports GPIO

Message par poopeye »

Salut,
Je ne peux pas te répondre précisément à ces 2 questions:
"1) Domoticz intègre-t-il sans problème un nombre de canaux supérieur à ceux fournis par le GPIO du Raspberry Pi ?
2) La carte IO Pi Plus n'utilise pas tous les pins du GPIO du Raspberry Pi. Puis-je utiliser ceux qui restent disponibles ?"
Mais je peux te dire que les GPIO paramétrés en entrées se gèrent difficilement en raison de leur grande sensibilité aux interférences électro magnétiques. Pour ce qui est de la configuration en sortie, pas de problème.
V 2.3530
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Extension de ports GPIO

Message par Neutrino »

Bonjour,
Si c'est juste pour rajouter des GPIO en sortie seulement, peut-être faut-il te tourner vers des registres à décalage ?
Idleman en fait une très bonne utilisation ici : http://blog.idleman.fr/raspberry-pi-20- ... ct-au-net/
Je suis parti sur la même base pour contrôler 6 LEDs et je peux en rajouter 2 autres.
Avec quatre 75hc595 et seulement 3 GPIO sur le Pi, tu dois pouvoir contrôler tes 32 relais. :)
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Extension de ports GPIO

Message par Nicogluck »

J'ai lu le tuto, ça a l'air effectivement très intéressant.
Mais comment intégrer ça dans Domoticz ? Là je sèche...

Dans ton cas, comment allumes-tu tes LED ? Depuis Domoticz ou bien en reprenant exactement le PHP qu'Idleman a pondu ?
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Extension de ports GPIO

Message par Neutrino »

J'aurais pu utilisé son PHP, mais j'aime bien réinventer la roue de temps en temps pour comprendre le fonctionnement.
Donc j'ai un script device lua qui récupère l'appuie sur les interrupteurs virtuels et un script bash qui programme le registre à décalage.
Il est possible de tout faire en LUA, mais les performances étaient vraiment décevantes alors qu'en fonctionnant avec le bash, le changement s'effectue en moins d'une demi seconde.
Je peaufine le code et je le poste dès que c'est fait (rien de commenté, des variables en dur... :oops: )

Attention à l'alimentation du registre, il est très sensible. Parfois, certaines diodes s'allumaient sans action de la part de domoticz. En fait le relais de puissance de mon chauffage au sol faisait assez de parasites pour le faire déconner.
J'ai résolu le problème avec un simple condo céramique de 10nF entre la pin 13 et 14 du registre et je n'ai plus de problème.
Je suis tombé sur la solution au pif dans google image... :mrgreen:
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Extension de ports GPIO

Message par Nicogluck »

Génial !
J'attends ton script avec impatience.

Pour commencer, je m'y perds complètement pour ouvrir les bons ports GPIO... :?
Quand je fais un GPIO readall, quels ports dois-je lire pour ouvrir les bons ?
Dans le tuto de Idlman, on voit :
  • pin 7 (GPIO7)
    pin 18 (GPIO 5)
    pin 22 (GPIO 6)
Alors après avoir bien scruté les correspondances, j'ai inséré les commandes suivantes dans domoticz.sh :

Code : Tout sélectionner

/usr/local/bin/gpio export 4 out
/usr/local/bin/gpio export 24 out
/usr/local/bin/gpio export 25 out
Mais il refuse d'ouvrir le 4 (message d'erreur dans le log au démarrage, et ´NON EXPORTED´ indiqué dans Domoticz). :(

Une idée ?
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Extension de ports GPIO

Message par Neutrino »

Parfois, un reboot ne fait pas de mal. Le GPIO4 est souvent utilisé pour le 1-wire ou PiFM, peut-être est-il déjà utilisé par une autre appli ou un driver ?

De mon côté, j'utilise les GPIO 27, 28 et 29 (pin 36, 38 et 40) sur le Pi2.
Voici ce que j'ai rajouté dans domoticz.sh:

Code : Tout sélectionner

#/etc/init.d/domoticz.sh
#GPIO reliées au registre
/usr/local/bin/gpio mode 27 out
/usr/local/bin/gpio mode 28 out
/usr/local/bin/gpio mode 29 out
Cela ouvre les GPIO en sorti au démarrage.

Le script /home/pi/domoticz/scripts/lua/script_device_registre.lua

Code : Tout sélectionner

-- script_device_registre.lua
---------------------------------
-- Gére l'allumage et l'extinction des diodes reliées au registre à décallage
-- Auteur : Neutrino
-- Date : février 2016
-- Source : http://blog.idleman.fr/raspberry-pi-20-creer-un-tableau-de-bord-connect-au-net/
-- Necessite une variable utilisateur "registre" de type chaine
----------------------------------
commandArray = {}
local leds = {}
--leds[Numéro de la sortie sur le 75hc595]='Interrupteur correspondant dans Domoticz'
leds[1]='LED rouge'
leds[2]='LED orange'
leds[3]='LED verte'
leds[4]='LED bleue'
leds[5]='Ecran LCD'
leds[6]='LED blanche'
leds[7]=''
leds[8]=''

for num, switch in pairs(leds) do
	if (devicechanged[switch]) then
	-- un des switchs a changé d'état
		registre= {}
		e = 1
		--récupération de l'état actuel du registre
		for etat in uservariables['registre']:gmatch("%d+") do
			registre[e]=etat
			e=e+1
		end
		--modification de l'état du switch
		if(devicechanged[switch]=='On')then
			registre[num]=1
		else
			registre[num]=0
		end
		i = #leds
		reg = ''
		--inversion de l'ordre des états
		while i>0 do
			if(registre[i]==nil)then
				registre[i]=0
			end
			reg = reg.." "..registre[i]
			i = i-1
		end
		--mise à jour du registre
		os.execute('sh /home/pi/domoticz/scripts/registreMAJ.sh '..reg..' &')
		--formatage de la table d'états avant MAJ de la variable utilisateur
		regVar = ""
		i=1
		while i<=#leds do
			if(registre[i]==nil)then
				registre[i]=0
			end
			regVar = regVar.." "..registre[i]
			i = i+1
		end
		--mise à jour de la variable utilisateur
		commandArray['Variable:registre']=regVar
	end
end
return commandArray
Et enfin le script bash, celui finalement qui contrôle le 74hc595.
/home/pi/domoticz/scripts/registreMAJ.sh

Code : Tout sélectionner

#!/bin/bash
#---------------------------------
#-- Envoie la suite de paramètres dans le registre à décalage
#-- Auteur : Neutrino
#-- Date : février 2016
#-- Source : http://blog.idleman.fr/raspberry-pi-20-creer-un-tableau-de-bord-connect-au-net/
#----------------------------------
#Définis les numéros wiring PI des GPIO du raspberry PI qui sont branchés aux pattes du shift register
SH_CP=27
ST_CP=28
DS=29 

/usr/local/bin/gpio write $ST_CP 0
for i in "$@"
do
/usr/local/bin/gpio write $SH_CP 0
/usr/local/bin/gpio write $DS $i
/usr/local/bin/gpio write $SH_CP 1
done
/usr/local/bin/gpio write $ST_CP 1
Et enfin, créer une variable utilisateur nommée "registre" de type chaîne et initialisée à "0 0 0 0 0 0 0 0" ou juste "0" par exemple.
Testé avec seulement un 74hc595, mais c'est fait pour fonctionner avec autant que l'imagination laisse entendre ! :lol:
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Extension de ports GPIO

Message par Nicogluck »

Tout compte fait, je vais peut-être rester sur mon idée de IO Pi Plus. Ça me coûtera la même chose avec le montage à faire soi-même en moins ainsi la programmation également en moins (normalement).

L'idée des 74HC595 est très bonne mais je trouve déjà que je passe énormément de temps sur l'installation domotique. Il faut que ça marche maintenant, et sans tarder.

Cela dit, si un utilisateur peut me garantir que Domoticz liste tous les GPIO proposés par la IO Pi Plus, sans pour autant se replonger dans des adaptations en scripts ou autres, ça conforterait mon choix avant que je passe commande.

Merci à tous.
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Extension de ports GPIO

Message par rimram31 »

Nicogluck a écrit :...Cela dit, si un utilisateur peut me garantir que Domoticz liste tous les GPIO proposés par la IO Pi Plus...
Heu ... je n'ai pas d'extension gpio mais de ce que je sais domoticz gère les gpio via le "hardware gpio" qui s'appuie sur wiringPi et en particulier wiringPiISR (https://projects.drogon.net/raspberry-p ... functions/).

Le support gpio de domoticz sera donc limité au support fourni par wiringPI, je peux me tromper mais je ne pense pas que
les gpio de ta carte d'extension IO Pi Plus se pilotent de la même façon https://www.abelectronics.co.uk/p/54/IO-Pi-Plus (I2C ?).
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
dolby44
Messages : 46
Inscription : 20 janv. 2016, 10:32

Re: Extension de ports GPIO

Message par dolby44 »

Bonjour,
As-tu regarde la solution mysensors ?
Pour pas tres cher, tu peux te construire une gateway usb a connecter sur ton synology et autant de peripheriques que tu veux, sur lesquels tu branches des cartes relais.
www.mysensors.org/build/relay

Envoyé de mon JY-G4S en utilisant Tapatalk
Répondre