Come utilizzare il sensore di touch capacitivo MPR121 con Arduino

How to Use the MPR121 Capacitive Touch Sensor with Arduino

MPR121 è un controller del sensore di touch capacitivo in grado di rilevare fino a 12 elettrodi sensibili al tocco. È comunemente usato in interfacce sensibili al touch, strumenti musicali e altri progetti interattivi. In questo tutorial, ti mostreremo come connetterti e utilizzare MPR121 con Arduino per creare applicazioni basate su touch.


Cosa avrai bisogno

  1. Modulo del sensore tocco MPR121
  2. Arduino Board (ad es. Uno, Mega, Nano)
  3. Breadboard e fili jumper
  4. Un computer con l'IDE Arduino installato

Passaggio 1: comprensione del modulo MPR121

MPR121 utilizza la comunicazione I2C per interfacciarsi con un microcontrollore. Ha 12 input sensibili al tocco in grado di rilevare cambiamenti capacitivi quando un oggetto conduttivo (ad esempio un dito) è vicino agli elettrodi.

Pinout MPR121

Spillo Funzione
VCC Alimentazione (3.3V/5V)
GND Terra
SDA Linea di dati I2C
SCL Linea di orologio i2c
Irq Interrupt output (opzionale)

Passaggio 2: cablaggio da MPR121 ad Arduino

Ecco come collegare MPR121 a un Arduino Uno:

PIN MPR121 Arduino Pin
VCC 5v
GND GND
SDA A4 (SDA)
SCL A5 (SCL)
IRQ (opzionale) Non connesso

Nota: Per altre schede Arduino, verifica i pin i2C nella documentazione della tua scheda.


Passaggio 3: installare la libreria richiesta

La libreria Adafruit MPR121 semplifica il lavoro con il sensore.

Passi da installare:

  1. Apri l'IDE Arduino.
  2. Vai a Schizzo > Includi la libreria > Gestisci le biblioteche.
  3. Cerca "Adafruit MPR121" e fai clic su Installare.

Passaggio 4: caricare il codice

Ecco uno schizzo di esempio per rilevare gli input di tocco dall'MPR121:

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

Adafruit_MPR121 mpr121 = Adafruit_MPR121();

void setup() {
  Serial.begin(9600);
  Serial.println("Initializing MPR121...");

  if (!mpr121.begin(0x5A)) { // Default I2C address is 0x5A
    Serial.println("MPR121 not found. Check connections.");
    while (1);
  }

  Serial.println("MPR121 initialized.");
}

void loop() {
  // Read touch status
  uint16_t touchStatus = mpr121.touched();

  for (uint8_t i = 0; i < 12; i++) {
    if (touchStatus & (1 << i)) {
      Serial.print("Electrode ");
      Serial.print(i);
      Serial.println(" touched.");
    }
  }

  delay(100); // Update every 100ms
}

Passaggio 5: testare l'installazione

  1. Collega l'Arduino al tuo computer tramite USB.
  2. Apri l'IDE Arduino e seleziona il corretto Asse E Porta sotto il Utensili menu.
  3. Carica il codice su Arduino facendo clic Caricamento.
  4. Apri il monitor seriale (Utensili > Monitor seriale) e impostare il tasso di baud su 9600.
  5. Toccare gli elettrodi sul modulo MPR121 e osservare il monitor seriale per gli ingressi di tocco rilevati.

Opzionale: usando il pin IRQ per gli interrupt

Il perno IRQ può essere utilizzato per attivare un interrupt quando viene rilevato un tocco, riducendo la necessità di pollicare costantemente il sensore.

  1. Collegare il IRQ Pin dell'MPR121 su un perno digitale sull'Arduino (ad esempio, PIN 2).
  2. Modifica il codice per allegare un rilevamento di interruzioni e gestire il rilevamento del touch nella routine di servizio di interruzione (ISR).

Applicazioni dell'MPR121

  1. Interfacce tocco capacitive
  2. Strumenti musicali
  3. Installazioni artistiche interattive
  4. Controlli basati su gesti

Risoluzione dei problemi

  • Nessuna risposta dal sensore: Verifica le connessioni e l'indirizzo I2C.
  • Rilevamento incoerente del tocco: Assicurarsi che gli elettrodi siano puliti e correttamente collegati.
  • Errori della libreria: Conferma che sia installata la libreria Adafruit MPR121.

Conclusione

Hai interfacciato con successo il sensore di touch capacitivo MPR121 con Arduino. Questo sensore versatile apre possibilità per la creazione di progetti interattivi e sensibili al touch. Sperimenta diversi disegni e configurazioni di elettrodi per espandere la sua funzionalità!

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.