Domotique et objets connectés à faire soi-même

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

add io esp32 esp8266 arduino project ADS1115 MCP23017 PCF8574 PCA9685

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
 

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

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

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

 

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

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

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.

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 entrées A/N 16 bits supplémentaires

Documentation technique

0x48 0x4B
MCP23017

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

Vitesse bus : 100kHz, 400kHz, 1.7MHz

Documentation technique

0x20 0x27
PCF8574

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

Vitesse bus : 100kHz, 400kHz, 1MHz

Documentation technique

0x38 0x3F
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: 2 Moyenne: 4.5]
Quitter la version mobile