Rpi et carte d'extension GPIO par Spi

Envie d'ajouter des fonctions à votre Raspberry Pi ? Faites un tour sur ce forum...

Modérateur : Francois

FerVst
Messages : 5
Enregistré le : mar. 28 janv. 2020 15:09

Rpi et carte d'extension GPIO par Spi

Message par FerVst » mar. 28 janv. 2020 15:14

Bonjour,

Je viens de m'initier au monde du raspberry pour un projet personnel. Cependant je rencontre quelques difficulté.
En effet j'ai besoin de plus de GPIO que ceux disponible de base. J'ai donc acheté une carte d'extension. (https://www.amazon.fr/gp/product/B07FM9 ... UTF8&psc=1)
Cette carte fonctionne en utilisant l'interface Spi, hors je n'ai absolument aucune idée de comment utiliser cette interface en développant en python.
En espérant que vous saurez m'aider.

Cordialement

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

Re: Rpi et carte d'extension GPIO par Spi

Message par Bud Spencer » mar. 28 janv. 2020 19:57

bahhh Moi je vois 4 registres à décalage 8 bits en cascade (74hc595), donc tu peux déjà oublier l'utilisation en entrées et bonne chance pour synthétiser tes sorties avec du code en python si elles ne sont pas séquentielles. Ca se fait bien, mais quand doit t'infuser 50 lignes d'instructions pour changer l'états des sorties, tu t'en lasses vite … Ajoutons à ca que ce n'est pas du SPI. Ce genre de composant contient juste un registre bit à bit ce qui n'a rien a voir avec une liaison SPI. Pour résumer, si tu n'a pas besoin d'entrées, tu peux te documenter sur les registres à décalages (shift register) et t'emmerder avec cette carte pour setter des sorties ou alors la refourguer sur eBay et te trouver un vrai expander 32 i/o totalement paramétrable à base de mcp23s17 (SPI) ou mcp23017 (i2c).
Modifié en dernier par Bud Spencer le mar. 28 janv. 2020 20:34, modifié 1 fois.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

FerVst
Messages : 5
Enregistré le : mar. 28 janv. 2020 15:09

Re: Rpi et carte d'extension GPIO par Spi

Message par FerVst » mar. 28 janv. 2020 20:04

Ok, merci pour la réponse, j'y vois déjà un peu plus clair.
En effet je n'ai pas besoin d'entrée juste de sortie donc je vais me renseigner et voir si vraiment c'est si chiant que ca

Merci!

FerVst
Messages : 5
Enregistré le : mar. 28 janv. 2020 15:09

Re: Rpi et carte d'extension GPIO par Spi

Message par FerVst » mar. 28 janv. 2020 21:48

Merci encore ! j'ai réussi à le faire fonctionner. C'était au final plutôt simple une fois le concept compris en me renseignant.
Voila un exemple de code très simple pour envoyer un nombre binaire (à améliorer pour l'usage réel), pour ceux que ça intéresserai:


import pygame, time, sys, signal, os
from pygame.locals import *
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

SCLK = 11
MOSI = 10
CS = 8

GPIO.setup(SCLK, GPIO.OUT)
GPIO.setup(MOSI, GPIO.OUT)
GPIO.setup(CS, GPIO.OUT)

GPIO.output(CS, GPIO.HIGH)
GPIO.output(SCLK, GPIO.LOW)

def sendValue(value):
remains = value
for i in range(2,len(bin(value))):
print(bin(value)[i])

if (bin(value)[i] == "0"):
GPIO.output(MOSI, GPIO.HIGH)
print("high")
else:
GPIO.output(MOSI, GPIO.LOW)
print("low")
GPIO.output(SCLK, GPIO.HIGH)
GPIO.output(SCLK, GPIO.LOW)

def sendSPI(data):
GPIO.output(CS, GPIO.LOW)
sendValue(data)
GPIO.output(CS, GPIO.HIGH)
#sendSPI(0b100000000000000001000000000000000)
sendSPI(0b11111111111111111111111111111111)
#sendSPI(0b10101110000000111111100001010101)

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

Re: Rpi et carte d'extension GPIO par Spi

Message par Artemus24 » mer. 29 janv. 2020 08:08

Salut à tous.

Une extension de ce genre n'aurait-il pas été plus adapté à ce que vous cherchez à faire :
--> https://www.gotronic.fr/art-module-d-ex ... -24783.htm

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

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

Re: Rpi et carte d'extension GPIO par Spi

Message par Bud Spencer » mer. 29 janv. 2020 11:27

FerVst a écrit :
mar. 28 janv. 2020 21:48
Merci encore ! j'ai réussi à le faire fonctionner. C'était au final plutôt simple une fois le concept compris en me renseignant.
Le concept des shift registrer n'est pas bien compliqué. Utilisé comme ça, il faut juste les voir comme des interfaces série/parallèle. On commence par inhiber le transfert des registres sur les sorties, ensuite on pousse un à un tous les bits pour initialiser tous les registres (chaque cycle d'horloge provoque un décalage) et une fois tous les registres initialisés, on les transferts sur les sorties. Voilà ce que ça donne avec les noms de GPIO que tu as :

Mise à 0 de GPIO.CS pour bloquer le transfert des registres vers des sorties

32 fois :
...Initialisation de la valeur sur GPIO.MOSI
...Décalage des registres par un cycle d’horloge UP GPIO.SCLK + LOW GPIO.SCLK

Mise à 1 de GPIO.CS pour transférer les registres vers des sorties

Soit 98 instructions de changement d’état de GPIO à chaque fois que tu vas vouloir changer l’état ne serait-ce que d’une seule sortie ;-)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

FerVst
Messages : 5
Enregistré le : mar. 28 janv. 2020 15:09

Re: Rpi et carte d'extension GPIO par Spi

Message par FerVst » mer. 29 janv. 2020 13:06

Bud Spencer a écrit :
mer. 29 janv. 2020 11:27

Soit 98 instructions de changement d’état de GPIO à chaque fois que tu vas vouloir changer l’état ne serait-ce que d’une seule sortie ;-)
C'est vrai que c'a fait beaucoup d'instruction mais pour mon projet cela devrait suffire étant donnée que les changements d'état ne seront pas si fréquent, de plus souvent plusieurs sorties changeront d'état en même temps ce qui est donc plutot un avantage. (Je controle sur chaque sortie un relais pour gérer des aiguillages)
Artemus24 a écrit :
mer. 29 janv. 2020 08:08
Salut à tous.

Une extension de ce genre n'aurait-il pas été plus adapté à ce que vous cherchez à faire :
--> https://www.gotronic.fr/art-module-d-ex ... -24783.htm

@+
J'avais pu voir cette extension mais ne s'agit il pas juste d'un montage en série ou le port GPIO1 par exemple à la même sortie sur chaque pin? (Je m'y connais très peu en electronique je dis peut etre n'importe quoi)

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

Re: Rpi et carte d'extension GPIO par Spi

Message par Artemus24 » jeu. 30 janv. 2020 10:18

Salut à tous.
FerVst a écrit :ne s'agit-il pas juste d'un montage en série ou le port GPIO1 par exemple à la même sortie sur chaque pin?
Je n'en suis pas sûr, mais je crois que vous avez raison.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

cbalo

Re: Rpi et carte d'extension GPIO par Spi

Message par cbalo » jeu. 30 janv. 2020 13:31

J'ai cette carte, tout est en parallèle.
Donc cela ne multiplie pas les entrées/sorties.

comme le dit la description :
vous permet d'accéder aux entrées-sorties, aux interfaces I2C et SPI, etc sur 3 connecteurs 40 points en trois lignes.
c'est à dire :
chaque sortie et chaque entrée est accessible en 3 endroits différents.

Je l'ai acheté car j'avais une petite carte qui se plug sur les 12 1ers pins (2x6) (pour n'en utiliser que 8 sur les 12) et m'empêchait physiquement d'accéder aux autres pins.

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

Re: Rpi et carte d'extension GPIO par Spi

Message par Artemus24 » jeu. 30 janv. 2020 14:00

Salut cbalo.

Merci pour les explications. :)
cbalo a écrit :Donc cela ne multiplie pas les entrées/sorties.
On a toujours accès au 40 broches de la raspberry.
Sauf qu'au lieu d'avoir une seule broche par entrée/sortie, on en a trois.
cbalo a écrit :J'ai cette carte, tout est en parallèle.
FerVst a écrit :ne s'agit-il pas juste d'un montage en série
Il faudrait se mettre d'accord. C'est du parallèle ou de la série ?
Chaque broche de la carte Raspberry est reprise sur chaque connecteur pour une utilisation en multiplexage.
Quésaco ?

A bien comprendre, ce n'est ni en parallèle, ni en série.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Les cartes d'extension pour les Raspberry Pi »