mpc23s17 spi prog python ??

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
ortoelec
Messages : 7
Enregistré le : mer. 24 nov. 2021 20:38

mpc23s17 spi prog python ??

Message par ortoelec » mer. 24 nov. 2021 20:58

bonjour a tous je recherche un tuto pour utilisé le mpc23s17 en python avec comme carte la rpi 3b
j'ai trouvé pour le circuits supportant i2c pour programmé les sorties et en entées et aussi les interruptions en polling .
mais en spi ces pas la même chose .
je compte utilisé ce circuits pour réalisé un système domotique a faible coup et utilisé un des programmes que les internautes utilise pour la domotiques exemple jeedom .

merci pour votre aide a tous

piper
Raspinaute
Messages : 645
Enregistré le : sam. 5 juin 2021 18:57

Re: mpc23s17 spi prog python ??

Message par piper » mer. 24 nov. 2021 22:40

Bonjour,
Je n'en ai jamais utiliser qu'en I2C mais Il y a une librairie pour les MCP23sXX en SPI qui s'installe via pip.
Regardes ici :
https://raspberrypi.stackexchange.com/q ... er-via-spi
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

ortoelec
Messages : 7
Enregistré le : mer. 24 nov. 2021 20:38

Re: mpc23s17 spi prog python ??

Message par ortoelec » jeu. 25 nov. 2021 15:01

bonjour piper ,
j'ai remarqué que les explications sont plus facile a trouvé pour mcp23017 en I2C que le MCP23s17 en SPI.
j'ai oublié de dire que j'ai jamais utilisé du python, donc j'ai étais pas hazard sur le site python.org et j'ai trouvé une section pypi et en tapant mcp23s17 dans la barre de recherche du site .
j'ai trouvé ceci : https://pypi.org/project/RPiMCP23S17/
voila un début
je voie que dans change log il dise qu'il y a une documentation ,mais comment la lire .

merci pour votre aide a tous

ortoelec
Messages : 7
Enregistré le : mer. 24 nov. 2021 20:38

Re: mpc23s17 spi prog python ??

Message par ortoelec » jeu. 25 nov. 2021 21:02

voici encore des information mais pour l'instant je ne saie pas comment les utilisé.
https://github.com/petrockblog/RPi-MCP2 ... CP23S17.py
je croix qu'il faut utilisé les informations du lien ci-dessous pour utilisé le lien du dessus ,je croix que ces la bibliothèque a importé .
https://github.com/jebentancour/Pi_MCP23S17

merci pour votre aide a tous

jelopo
Raspinaute
Messages : 307
Enregistré le : mer. 11 oct. 2017 10:23

Re: mpc23s17 spi prog python ??

Message par jelopo » ven. 26 nov. 2021 09:20

Bonjour,

Juste quelques remarques de choix de composant:
Que justifie le choix du SPI par rapport à l'I2C ? Sur le net il y a bien plus d'exemples et tuto de la version I2C par rapport à la version SPI.
Dans un premier temps, ne serait-il pas judicieux de jouer avec la version I2C, mieux documentée sur le net, pour comprendre les principes de fonctionnement avec Python ?
Ceci permettrais d'avoir plus de documentation et éventuellement plus de support pour le débogage. Il me semble que tu fait une erreur de "débutant" en choisissant un composant un poil trop peu diffusé.
Ensuite après avoir essuyé les plâtres, avec un composant plus commun, libre à toi d'installer le composant de ton choix. et de modifier un programme que tu maîtrise bien mieux.

Bon courage.
A+

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

Re: mpc23s17 spi prog python ??

Message par Bud Spencer » sam. 27 nov. 2021 12:59

Que ce soit en spi ou i2c, le 23x17 utilise exactement les mêmes registres donc à l’utilisation ça ne doit rien changer puisque seul le protocole de communication change. Il y a juste une petite variante qu’il faut connaitre, c’est que sur le 23s17 (spi), le bit IOCON.HAEN est R/W et est à 0 par défaut alors qu’il est juste R sur le 23017 (i2c) et il est fixé a 1. Ce bit défini l’utilisation du mode adressable du composant (pin A0..A2), donc si on veut utiliser plusieurs 23s17 sur la meme SPI, il faut juste penser à le mettre à 1 a l’initialisation (j’en ai déjà parlé plusieurs fois sur ce forum, mais je ne sais plus ou).
SPI ou I2C ont chacun leur avantage et leurs inconvénients. Je ne connais pas les motivations de ortoelec pour le choix de la spi mais il y a bien plus d’intérêt à utiliser ce protocole que l’i2c

Avantage :
I2C : 2 fils de liaison seulement au lieu de 4 sur la spi
SPI : Beaucoup plus rapide (10MHz contre 400KHz max en i2c sur le PI) et échange simplifié (Pas d’ack entre l’opcode et le set du registre visé).
SPI : Le slave travail à la fréquence d’horloge imposé par le master quelle qu’elle soit. La fréquence d’horloge n’est donc pas critique et peut etre adaptée à toute contraintes de liaison. En i2c, si la fréquence du master n’est pas vraiment stable, cela génère des erreurs (c’est d’ailleurs pour ça qu’elle est fixé à 100KHz par défaut sur le PI)
SPI : L’adaptation d’un slave en 5V sur un master 3.3v (cas du pi) ne requière qu’une résistance sur le ligne MISO quel que soit le nombre de composant sur le bus (j'ai aussi déjà parlé de ca sur ce forum).
ortoelec a écrit :
jeu. 25 nov. 2021 21:02
voici encore des information mais pour l'instant je ne saie pas comment les utilisé.
https://github.com/petrockblog/RPi-MCP2 ... CP23S17.py
je croix qu'il faut utilisé les informations du lien ci-dessous pour utilisé le lien du dessus ,je croix que ces la bibliothèque a importé .
https://github.com/jebentancour/Pi_MCP23S17
Apparemment tu as tous ce qu’il te faut ICI. Le petit exemple de code sur la page met toutes les i/o de l’expander en sortie et les blink. Tu dois d’abord installer RPi.GPIO et spidev comme précisé dans les commentaires de la lib. Une autre solution, c'est d'utiliser CircuitPython avec les modules Adafruit . Attention toutefois a tout ce que tu vas trouver en exemple pour le PI et python. Beaucoup de chose sont deprecated voir meme totalement morte (comme par exemple tout ce qui repose sur wiringPi ...). Quelle que soit la méthode, la datasheet du composant reste une source d'information incontournable.

jelopo a écrit :
ven. 26 nov. 2021 09:20
Dans un premier temps, ne serait-il pas judicieux de jouer avec la version I2C, mieux documentée sur le net, pour comprendre les principes de fonctionnement avec Python ?
Le probleme, c’est que ça va lui faire des modifs de code pour basculer de l’un a l’autre. D’une part parce que les noms des fonctions et les paramètres à leurs passer ne seront pas forcément les mêmes entre une lib écrite pour spi et une lib écrite pour l’i2c. En plus cela ferait appel à des interfaces différentes (/dev/i2c et spidev). L’idéal pour ça, serait de trouver une librairie qui repose sur une méthode unique d’accès au hardware et qui accepterait le type protocole en paramètre. C’est ce que je fais notamment avec .NET qui utilise libgpiod pour tout accès aux GPIO et C# qui facilite la surcharge de constructeur multiple. En code ça donnerait un truc tout simple du genre :

Code : Tout sélectionner

var Mon23x17 = new MCP23x17(objet SPI)

Code : Tout sélectionner

var Mon23x17 = new MCP23x17(objet I2C) 
Rien d’autre dans le code ne changerait pour passer de l’un a l’autre et toutes les autres fonctions d’accès au GPIO serait disponible sans avoir besoin de rien d'autre.
https://github.com/dotnet/iot/tree/main ... s/Mcp23xxx

Je n'ais pas écrit grand chose sur le MCP23S17 mais il y a quand meme des exemples en JS ou je n'utilisais aucune librairie spécifique pour le composant :
( viewtopic.php?f=44&t=3033&start=60#p27268 ). Je l'avais aussi utilisé pour le projet 'datalogger' ( viewtopic.php?f=44&t=3033&start=80#p28151 ) .
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

ortoelec
Messages : 7
Enregistré le : mer. 24 nov. 2021 20:38

Re: mpc23s17 spi prog python ??

Message par ortoelec » dim. 5 déc. 2021 18:01

merci pour vos réponse a tous .
j'ai fini par trouvé mon bonheur avec une carte vendue sur eBay
voici le lien si sa vous intéresse : https://www.ebay.fr/itm/322021787024
il parait que je vais recevoir l'article dans le milieux du mois de décembre .
et il y a même les drivers pour le scratch.

sa ma permit de découvrir ce site : https://www.pridopia.co.uk/rs-pi-set-scratch.html

et oui pour répondre je voulais utilisé le spi car peut de personne l'utilise et sa plus grande vitesse d'horloge et aussi il parait que le spi résisterais mieux au parasite que i2c ,je pourrais en faire l'expérience plus tard ,si j'ai le temp .
dés que je reçois la carte et que mon programme serras terminer .
je posterais les images et les programmes de ce systèmes domotique filaires pas chères .

merci à tous et bonne fêtes

piper
Raspinaute
Messages : 645
Enregistré le : sam. 5 juin 2021 18:57

Re: mpc23s17 spi prog python ??

Message par piper » dim. 5 déc. 2021 19:21

Intéressant.
C'est vrai que je n'ai jamais eu de soucis lorsque j'utilise un périphérique SPI (que ce soit un lecteur de carte SD, une horloge RTC)
Par contre qu'est-ce que j'ai eu comme galère avec les I2C (caractères curieux sur certains écrans LCD sauf à diminuer la fréquence, perte de connexion avec des INA219 en I2C, perte de connexion avec des MCP23017 chainés en I2C etc.....-)
Faut dire que mes périphériques en voit des dures (vibrations, humidité, températures de -30 à +50, accélérations....)
chaque fois on perd du temps, on cherche, on galère, pour finir par mettre une solution en place sans être certain qu'elle sera sans faille.
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

ortoelec
Messages : 7
Enregistré le : mer. 24 nov. 2021 20:38

Re: mpc23s17 spi prog python ??

Message par ortoelec » lun. 6 déc. 2021 16:18

bonjour piper ,

c'est vrai une bonne recherche vaux mieux que plein d'essai infructueux ;
car je doit commander 22 relais car j'ai 11 volets électrique donc 11 bouton poussoir qui servira pour l'ouverture et la fermeture .
ensuite des cartes a triac ou a mos Fet pour commandés des lampes led ou autres et la encore les BP (bouton poussoir) pour commandes tous cela .
je raccorderais avec du fils électriques de 1 mm² ou 0.75 mm² pour les entrées et les sorties en 1,5 mm² .
comme la section est plus petite sa coute moins cher CQFD
et puis une alimentation rail DIN 24 volts 5 ampère par exemple avec des plaque de cher Nico avec 1 à 6 BP pour commander le matériel .

bonne journée .

Répondre

Retourner vers « Python »