SIPO et PISO : étendre les entrées/sorties d’Arduino et ESP proprement

Quand on travaille avec Arduino, ESP8266 ou ESP32, on se heurte vite à une limite simple : le nombre de GPIO disponibles.
Plutôt que d’empiler des cartes ou de bricoler des multiplexeurs douteux, il existe une solution simple, robuste et industrielle : les registre à décalage.

Deux familles dominent :

  • SIPO (Serial In / Parallel Out)
  • PISO (Parallel In / Serial Out)

Pourquoi utiliser des registres à décalage ?

  • Économiser des GPIO
  • Simplifier le câblage
  • Chaîner plusieurs circuits
  • Compatible Arduino / ESP / Raspberry Pi
  • Très utilisé en industrie, domotique, vending machines, LED panels

👉 3 broches suffisent pour piloter 8, 16, 32 sorties ou entrées.


SIPO – Serial In, Parallel Out

Principe

Tu envoies les données bit par bit en série, et le circuit les expose en parallèle sur ses sorties.

Circuit le plus courant

74HC595

  • 8 sorties digitales
  • Chaînable à l’infini
  • Très stable jusqu’à plusieurs MHz

Broches clés

BrocheRôle
DSDonnée série
SH_CPClock (shift)
ST_CPLatch
Q0–Q7Sorties
OEEnable (optionnel)
MRReset (optionnel)

Exemple Arduino – piloter 8 LEDs

int dataPin = 11;
int clockPin = 13;
int latchPin = 10;

void setup() {
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
}

void loop() {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, B10101010);
  digitalWrite(latchPin, HIGH);
  delay(500);
}

Cas d’usage SIPO

  • LEDs
  • Relais
  • MOSFETs
  • Afficheurs 7 segments
  • Panneaux lumineux
  • Cartes de puissance

PISO – Parallel In, Serial Out

Principe

Tu lis plusieurs entrées simultanément, puis tu récupères leur état en série.

Circuit classique

74HC165

  • 8 entrées digitales
  • Lecture rapide et fiable
  • Chaînable comme le 74HC595

Broches clés

BrocheRôle
PLParallel Load
CPClock
Q7Sortie série
D0–D7Entrées

Exemple Arduino – lire 8 boutons

int loadPin = 8;
int clockPin = 12;
int dataPin = 11;

void setup() {
  pinMode(loadPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, INPUT);
}

byte readInputs() {
  digitalWrite(loadPin, LOW);
  delayMicroseconds(5);
  digitalWrite(loadPin, HIGH);
  return shiftIn(dataPin, clockPin, MSBFIRST);
}

void loop() {
  byte state = readInputs();
}

SIPO vs PISO – comparaison directe

CritèreSIPO (74HC595)PISO (74HC165)
FonctionSortiesEntrées
GPIO utilisés33
ChaînableOuiOui
VitesseTrès élevéeTrès élevée
Usage typiqueLEDs, relaisBoutons, capteurs

Arduino vs ESP : points d’attention

Arduino (5V)

  • Compatible direct avec HC / HCT
  • Tolérant
  • Simple

ESP8266 / ESP32 (3.3V)

  • Utiliser 74HCT ou alimenter en 3.3V
  • Attention aux niveaux logiques
  • Éviter OE/MR flottants

👉 En pratique : 74HC fonctionne souvent, mais ce n’est pas garanti à 100%.


Chaînage : scaler sans limite

  • Q7’ → DS pour les SIPO
  • Q7 → DS pour les PISO
  • Même clock, même latch
  • 8 bits par circuit

Exemple :

  • 4 × 74HC595 = 32 sorties
  • 2 × 74HC165 = 16 entrées

Alternatives modernes

ComposantTypeAvantage
MCP23017I²C GPIOInterruptions
PCF8574I²C GPIOUltra simple
TLC5940PWM LEDDimming précis
ULN2003DriverPuissance

👉 Mais SIPO/PISO reste imbattable pour la simplicité et la robustesse.


Quand utiliser SIPO / PISO ?

✅ Tu veux :

  • réduire le câblage
  • garder un timing maîtrisé
  • éviter I²C / SPI complexes
  • faire du hardware fiable

❌ Évite si :

  • besoin d’analogique
  • besoin d’interruptions par pin
  • besoin de retours d’état complexes

Conclusion

Les registres SIPO et PISO sont des briques fondamentales de l’électronique embarquée.
Ils sont simples, rapides, économiques et parfaitement adaptés à Arduino et ESP.

Si tu construis :

  • une carte maison
  • un automate
  • un distributeur
  • une domotique custom

Leave a Reply

Your email address will not be published. Required fields are marked *