4 solutions pour ajouter des E/S à un projet Arduino, ESP8266, ESP32, ESP8266, Raspberry Pi. ADS1115, MCP23017, PCF8574, PCA9685

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Les circuits intégrés ADS1115, MCP23017, PCF8574 et PCA9685 sont 4 solutions pour augmenter très facilement le nombre d’entrées / sorties numériques, PWM, analogiques via le bus I2C. Cela permettra de conserver le code source de votre projet et de gagner du temps de développement en évitant de devoir migrer vers une autre plateforme telle que le STM32 ou l’ESP32. C’est par exemple le cas du micro-contrôleur ESP8266 dispose d’une seule entrée analogique et 8 E/S numériques.

 

Toutes ces cartes d’extension utilisent le bus I2C pour communiquer. Par conséquent, elles sont utilisables par toutes les plateformes compatibles y compris les nano PC Raspberry Pi, Orange Pi, Odroid…

Remarque, tous les circuits présentés dans cet article sont pris en charge par le firmware ESP Easy et ESP Easy Mega. Donc inutile de savoir programmer pour fabriquer votre premier objet connecté !

ADS1115 (ADSxxxx), 4 entrées A/N 16 bits

Le circuit intégré ADS1115 permet d’ajouter 4 entrées analogiques

Principales caractéristiques techniques

  • Fabricant : Texas Instrument
  • Alimentation électrique :
    • de 2,0V à 5V
    • consommation en continu : 150 μA
  • Convertisseur Analogique / numérique
    • Résolution : 16-bits
    • Fréquence d’échantillonnage de 8 à 860 échantillons / seconde (SPS)
  • Adresses I2C
    • Principale : 0x48
    • Alternative : 0x4B
  • Vitesse du bus I2C supportées : 100kHz, 400kHz et 3.4MHz
  • Autres références
  • Broches
    • VDD Alimentation (2,7V à 5,5V)
    • GND masse électrique
  • Librairies
  • Disponibilité
    • Carte d’extension
    • HAT pour Raspberry PI (toute génération)
  • Documentation technique
 

ADS1115 pinout i2c

Voir plus d’offres

MCP23017, 16 I/O numériques I2C. MCP23S17 (version SPI)

Le circuit intégré MPC23017 permet d’ajouter 16 entrées / sorties numériques supplémentaires via le bus I2C.

Le MCP23S17 est une version adaptée au bus SPI jusqu’à 10 MHz.

Principales caractéristiques techniques

  • Fabricant : Microchip
  • Alimentation électrique :
    • de 2,7V à 5,5V
    • courant de veille : 1 μA max.
  • Courant de sortie : 20mA par sortie sans dépasser 150mA au total sur VSS
  • Adresses I2C
    • Principale : 0x20
    • Alternative : 0x27
    • Autre : utiliser les broches A0, A1 et A2 pour attribuer une adresse
  • Vitesse du bus I2C supportées : 100kHz, 400kHz et 1.7MHz
  • Broches
    • VDD Alimentation (2,7V à 5,5V)
    • VSS GND, masse électrique
    • A0, A1, A2 : sélection de l’adresse I2C
  • Librairies
  • Disponibilité
    • Boitier DIP28 à souder au pas de 2,54mm
    • Boitier SO28 à souder
    • Carte d’extension
  • Documentation technique
Repérage des broches du MCP23017 I2C

MCP23S017 pinout dip28 spi 16 io

Voir plus d’offres

Branchement de base pour les circuits intégrés

Attention, pour pouvoir utiliser la version en boitier DIP28 ou SO28, il faut connecter les broches suivantes

  • Broches I2C SDA et SCL au 3,3V à l’aide d’une résistance de pull-up de 4.7 KΩ.
  • Broches A0, A1 et A2 au GND
  • RESET au 3,3V
  • VDD au 3,3V
  • VSS au GND

Circuit avec un circuit intégré MCP23017 branché sur le buss i2c esp8266 ou esp32

Exemple de code permettant d’allumer une LED

#include <Wire.h>
#include "Adafruit_MCP23017.h"

// Basic pin reading and pullup test for the MCP23017 I/O expander
// public domain!

// Connect pin #12 of the expander to Analog 5 (i2c clock)
// Connect pin #13 of the expander to Analog 4 (i2c data)
// Connect pins #15, 16 and 17 of the expander to ground (address selection)
// Connect pin #9 of the expander to 5V (power)
// Connect pin #10 of the expander to ground (common ground)
// Connect pin #18 through a ~10kohm resistor to 5V (reset pin, active low)

// Input #0 is on pin 21 so connect a button or switch from there to ground

Adafruit_MCP23017 mcp;
  
void setup() {  
  mcp.begin();      // use default address 0

  mcp.pinMode(0, INPUT);
  mcp.pullUp(0, HIGH);  // turn on a 100K pullup internally

  pinMode(13, OUTPUT);  // use the p13 LED as debugging
}

void loop() {
  // The LED will 'echo' the button
  digitalWrite(13, mcp.digitalRead(0));
}

PCF8574, 8 entrées/sorties numériques

Le circuit intégré PCF8574 de Texas Instrument permet d’ajouter 8 entrées / sorties numériques supplémentaires. Sont fonctionnement est très similaire au MCP23017 de Microchip vu précédemment

Principales caractéristiques techniques

  • Fabricant : Texas Instrument
  • Alimentation électrique :
    • de 2,5V à 6V
    • courant de veille : 10 μA max
  • Courant de sortie : 25mA par sortie
  • Adresses I2C
    • Principale : 0x38
    • Alternative : 0x3F
    • Autre : utiliser les broches A0, A1 et A2 pour attribuer une adresse
  • Vitesse du bus I2C supportées : 100kHz, 400kHz et 1MHz
  • Broches
    • VCC Alimentation (2,5V à 6V)
    • GNG masse électrique
    • A0, A1, A2 : sélecteur d’adresse I2C. Inutile de relier au GND ou VCC si adresse par défaut
  • Librairies
  • Disponibilité
    • Boitier DIP16 à souder au pas de 2,54mm
    • Carte d’extension
  • Documentation technique

 

pcf8574 pinout broches i2s output

Voir plus d’offres

PCA9685, 16 canaux PWM 12 bits pour LED

Le circuit intégré PCA9685 permet d’ajouter 16 canaux PWM 12-bits qui permettra de piloter des LED ou des servo-moteurs de faible puissance. Le PCA9685 est parfaitement adapté pour piloter des bras robotique.

Principales caractéristiques techniques

  • Fabricant : NXP
  • Alimentation électrique :
    • de 2,3V à 5,5V
    • protection contre la sur-tension
    • courant de veille : 1 μA max.
  • Courant de sortie : 20mA par sortie sans dépasser 150mA au total sur VSS
  • Sorties PWM
    • 16 sorties 12-bits (4096 niveaux) pour LED
    • Fréquence de 24 Hz à 1526 Hz
  • Adresses I2C
    • Principale : 0x40 
    • Alternative : 0x7F
    • Autre : utiliser les broches A0 à A5 pour attribuer une adresse manuellement. 64 adresses possibles
  • Vitesse du bus I2C supportées : 1MHz
  • Broches
    • VDD Alimentation (2,3V à 5,5V)
    • VSS GND, masse électrique
    • A0 à A5 : jusqu’à 62 adresses I2C permettant de piloter jusqu’à 992 LED en combinant plusieurs PCA9685
  • Librairies
  • Disponibilité
    • Carte d’extension
  • Documentation technique
PCA9685 16 canaux pwm led servo pinout

Repérage des broches du PCA9685

Voir plus d’offres

Le test complet de la carte d’extension Geekcreit avec du code Arduino ou MicroPython

A LIRE AUSSI :
Déballage du shield Geekcreit PCA9685 I2C 16 servos + 2 moteurs pour Arduino ou ESPDuino (ESP8266)

Autres projets

Exemple de code Arduino pour piloter un servomoteur

Un petit exemple qui fait varier la position d’un servo-moteur sur 180° développé à l’aide de la librairie de Sumotoy.

/*
  Test PCA9685 driver Doit.am 16 servos I2C shield
  Compatible Arduino Uno / Espduino / ESP8266
*/

#include <Wire.h>
#include <servo_PCA9685.h>

#define MAX_SERVOS 16

/*
 * ESP8266 I2C - pins
 * SDA: 4 - D2
 * SCL: 5 - D1
 */

servo_PCA9685 servo = servo_PCA9685();

uint8_t servonum = 0;

void setup() {
#if defined(ESP8266)
  Serial.begin(115200);
#else
  Serial.begin(38400);
#endif
  Serial.println("\nservo start");
  servo.begin();
}
int angle = 0;

void loop() {
  if ( angle == 180 ) {
    angle = 0;
  }  
  servo.moveServo(0,angle);
  Serial.println("Move to "+angle);
  angle++;
  delay(200);
}

Adresses I2C des cartes ADS1115, MCP23017, PCF8574, PCA9685

Si vous rencontrez des difficultés à initialiser l’équipement vous pouvez utiliser le scanner I2C proposé dans ce tutoriel.

A LIRE AUSSI :
Adresses I2C des capteurs et actionneurs les plus courants

Chaque équipement dispose d’une adresse I2C alternative. En fonction du fabricant de la carte d’extension, la sélection de l’adresse alternative se ferra via un jumper, un pont à souder ou directement par programmation. Consultez la documentation technique du fabricant pour savoir comment choisir l’adresse I2C.

Equipement Application Adresse I2C Adresse alternative
ADS1115

4 io i2c ads1115 arduino esp32 esp8266 raspberry pi

4 entrées A/N 16 bits supplémentaires

Documentation technique

0x48 0x4B
MCP23017

mcp23017

16 entrées/sorties numériques supplémentaires, boîtier DIP28

Vitesse bus : 100kHz, 400kHz, 1.7MHz

Documentation technique

0x20 0x27
PCF8574

mcp23017

8 entrées/sorties numériques supplémentaires

Vitesse bus : 100kHz, 400kHz, 1MHz

Documentation technique

0x38 0x3F
PCA9685

pca9685

16 canaux PWM 12 bits

Documentation technique

0x40 0x7F

Mises à jour

8/10/2020 Publication de l’article

English Version

Avez-vous aimé cet article ?
[Total: 1 Moyenne: 4]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Nous serions ravis de connaître votre avis

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment.