In diesem Blog Eintrag möchte ich euch zeigen wie ihr einen Kapazitiven Sensor mit dem Touch Sensor MPR121 und einem Arduino selber bauen könnt. Zusätzlich werde ich euch auch noch den Mini MP3 Player vorstellen und zeigen wie dieser angesteuert werden kann. 


Kapazitiver Touch Sensor MPR121


Der MPR121 ist ein Mikrochip der bis zu 12 kapazitive Elektroden auswerten kann. Das Breakout Board wird über den I2C Bus an dein Arduino angeschlossen. Dank dem I2C ist kein aufwändiges verkabeln notwendig und die Ansteuerung ist mit der geeigneten Library auch sehr einfach zu realisieren. Der MPR-121 kann über den Adress-Pin adressiert werden. Das heisst, du kannst bis zu MPR121 Breakoutboards an einem I2C Bus betreiben. Somit könntest du also 4x12 48 Elektroden auslesen und auswerten. Als Elektroden kannst du leitende Materialen verwenden oder auch organische die leicht leitend sind. Z.B. Obst und Gemüse :-). Ich setze oft auch Kupferklebeband ein. Das kannst du z.B. auch auf die Rückseite eines Papieres kleben und wenn du dann das Papier auf der anderen Seite berührst, kann diese Berührung ausgewertet werden.

Adressierung und Adressen vom MPR121

ADD Pin MPR121I2C Adresse
Nicht verbunden0x5A
Mit 3V verbunden0x5B
Mit SDA verbunden0x5C
Mit SCL verbunden0x5D

Verwendete Arduino Librarys 

Ich verwende zum Ansteuern eine Library die ich auf Github gefunden habe und die perfekt für diesen Touch Sensor funktioniert. Ihr findet die Library unter folgendem Link:
https://github.com/BareConductive/mpr121

Die Library ist grundsätzlich selbsterklärend. Ihr müsst nur die Adresse verändern auf 0x5A und könnt gleich loslegen. Je nachdem was für Elektroden ihr einsetzt, müsst ihr zuerst noch den Schwellwert einstellen, ab wann das eine Berührung erkannt wird, und diese wieder zurückgesetzt wird. Dies macht ihr mit folgenden zwei Befehlen:

MPR121.setTouchThreshold(50);         // Schwellwert erkennen von Berührung
MPR121.setReleaseThreshold(20);       // Schwellwert erkennen loslassen, muss kleiner sein als Berührung

Dies Sensordaten Aktualisiert ihr mit dem Befehl:

MPR121.updateTouchData();             // Touch Daten aktualisieren

Dieser Befehl muss vor jedem auswerten ausgeführt werden, sonst habt ihr alte Messdaten.

Der Zustand einer Elektrode oder Taste kann mit dem Aufruf abgefragt werden:

MPR121.isNewTouch(0);                // Pin 0 vom Touch Sensor abfragen (Pin 0 bis 11 möglich)

Kommt als retour Wert 1 zurück wurde die Taste Betätigt und bei 0 wurde keine Berührung erkannt.


Mini MP3 Player Modul


Der Mini MP3 Player ist grundsätzlich ein vollwertiger MP3 Player mit Verstärker. Der Player kann auch autonom ohne Arduino betrieben werden, indem die Playtaste usw. direkt angeschlossen werden. In unserem Beispiel möchten wir den MP3 Player aber über ein Arduino ansteuern. Die Ansteuerung könnte auch ohne Library gemacht werden, jedoch habe ich eine sehr schöne Library gefunden die uns die Ansteuerung noch mehr erleichtert. Du findest die Library auf Github unter folgenden Link:
https://github.com/DFRobot/DFPlayer-Mini-mp3

Arduino Kommunikation mit MP3 Modul 

Die Kommunikation zum MP3 Player erfolgt über den Serial Hardware Anschluss des Arduino. Wichtig ist das ihr hier noch zwei Serielle 1k Ohm Widerstände einbaut damit es nicht zu überströmen führt. 

SD Karte und Abspielen von MP3 Files

Für den MP3 Player brauchst du noch eine formatierte micro SD Karte. Auf der Micro SD Karte legst du einen Ordner mit der Bezeichnung MP3 an. In diesen Ordner kannst du nun ein *.mp3 File ablegen. Wenn du die Files z.B. 0001.mp3 oder 0002.mp3 usw. anlegst, kannst du die MP3 Files über die Nummer abspielen. Der Player kann bis zu 2999 MP3 Files abspielen. Um z.B. das File 0001.mp3 abzuspielen, kannst du folgenden Befehl zum Abspielen nutzen:

mp3_play (1);                        // MP3 File im MP3 Ordner mit der Bezeichnung 0001.mp3 abspielen

Lautsprecher

Der Lautsprecher darf nicht mehr als 3W haben. Ich setze für mein Beispiel einen 0.25W Lautsprecher ein der schon sehr laut ist. Ihr könnt hier aber auch einen kleinen Verstärker anschliessen oder auch einfach nur ein Kopfhörer. Die Lautstärke könnt ihr im  Bereich von 0 bis 30 mit folgendem Befehl verstellen:

 mp3_set_volume (30);                // Lautstärke im bereich 0 bs 30 verstellen

Link für Kostenfreie Sound Effekte:

Hier noch ein paar hilfreiche links die ich zum finden von Sound Effekten und erstellen der MP3 Files genutzt habe.
Sasmmlung von Sound Effekten: https://www.freesound.org/
MP3 File Konverter:                      https://www.freac.org


Schaltplan MPR121 und MP3 Player mit Arduino 

Hier noch ein Schaltplan / Schema wie ihr den Touch Sensor und das MP3 Sound Modul an das Arduino UNO anschliessen könnt.



Programm Beispiel für Arduino UNO

Das Programm so wie die Librarys, Schaltpläne und MP3 files könnt ihr auch komplett von unserem FTP Server herunterladen unter folgendem Download Link:
Bastelgarage_FTP_Arduino_MPR121_Capacitive_Touch_MP3.zip

/**************************************************************************************************
 **************************************************************************************************
 **                                    www.bastelgarage.ch                                       **
 **     Der Onlineshop mit Videoanleitungen und kompletten Bausätzen für Anfänger und Profis!    **
 **************************************************************************************************
 **************************************************************************************************
 ** Programm Beispiel zum Ansteuern von unserem mini MP3 Player mit einem Kapazitiven            **
 ** Touch Sensor MPR121. Wichtig ist beim MP3 Player Modul, dass die MP3 Files in einem          **
 ** Ordner mit dem Namen MP3 abgelegt sind. Die MP3 Files können dann über ihre Nummer           **
 ** abgespielt werden.                                                                           **
 ** Beim Touch Sensor könnt ihr bis zu 12 Elektroden anschliessen und als Tasten nutzen.         **
 ** Ideale Elektrode ist ein Kupferklebeband. Ihr könnt aber auch Obst oder sonstige             **
 ** Gegenstände nutzen. Probiert es einfach aus. Je nachdem was für eine Elektrode du            **
 ** hast, musst du die Schwellwerte noch anpassen.                                               **
 **                                                                                              **
 ** Für den MPR121 Touch Sensor habe ich folgende Library von GitHub genutzt:                    **
 ** https://github.com/BareConductive/mpr121/tree/public/MPR121                                  **
 **                                                                                              **
 ** Für den MP3 Player habe ich folgende Library von GitHub genutzt:                             **
 ** https://github.com/DFRobot/DFPlayer-Mini-mp3                                                 **
 **                                                                                              **
 ** Autor: Philippe Keller                                                                       **
 ** Datum: November 2016                                                                         **
 ** Version: 1.0                                                                                 **
 * ************************************************************************************************
*/

/******************************(Importieren der genutzten Bibliotheken)***************************/
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
#include <MPR121.h>
#include <Wire.h>

/*********************************(Definieren der Globale Variablen)******************************/
#define numElectrodes 12          // Anzahl der Elektroden 12

/**********************************************(Setup)********************************************/
void setup () {
  Serial.begin (9600);

  mp3_set_serial (Serial);        // Setzen des Serialport zum MP3 Player
  delay(1);                       // 1ms warten zum Setzen von der Lautstärke
  mp3_set_volume (30);            // Lautstärke 0~30

  MPR121.begin(0x5a);             // MPR121 Kapazitiv Touch mit Adresse 0x5a initialisieren
  MPR121.setInterruptPin(4);      // MPR121 Kapazitiv Touch Interrupt Pin definieren
  MPR121.setTouchThreshold(50);   // Schwellwert erkennen von Berührung
  MPR121.setReleaseThreshold(20); // Schwellwert erkennen loslassen, muss kleiner sein als Berührung
  MPR121.updateTouchData();       // Touch Daten aktualisieren
}

/*****************************************(Hauptprogramm)*****************************************/
void loop () {
  if (MPR121.touchStatusChanged()) {
    MPR121.updateTouchData();
    if (MPR121.isNewTouch(0))     mp3_play (1); // Wenn Touch 0 betätigt MP3/1.mp3 File abspielen
    if (MPR121.isNewTouch(1))     mp3_play (2); // Wenn Touch 1 betätigt MP3/2.mp3 File abspielen
    if (MPR121.isNewTouch(2))     mp3_play (3); // Wenn Touch 2 betätigt MP3/3.mp3 File abspielen
    if (MPR121.isNewTouch(3))     mp3_play (4); // Wenn Touch 3 betätigt MP3/4.mp3 File abspielen
    if (MPR121.isNewTouch(4))     mp3_play (5); // Wenn Touch 3 betätigt MP3/4.mp3 File abspielen
    if (MPR121.isNewTouch(5))     mp3_play (6); // Wenn Touch 3 betätigt MP3/4.mp3 File abspielen
    if (MPR121.isNewTouch(6))     mp3_play (7); // Wenn Touch 3 betätigt MP3/4.mp3 File abspielen
  }
  DebugMPR121(); //Für Analyse vom MPR121 kann auch auskommentiert werden
}

/*************************************(Funktion zum Debuggen)*************************************/
void DebugMPR121() {
  // Dient zum Bestimmen der Schwellwerten oder sonstigen Analysen
  MPR121.updateBaselineData();            //Daten aktualisieren
  MPR121.updateFilteredData();            //Daten aktualisieren
  Serial.print("DIFF: ");
  for (int i = 0; i < 12; i++) {          // 12 Anzahl Elektroden
    Serial.print(MPR121.getBaselineData(i) - MPR121.getFilteredData(i), DEC);
    if (i < 11) Serial.print(" ");
  }
  Serial.println();
}
 
DOT Matrix 8x8 Wlan Display mit ESP8266 und Arduino
Programm Beispiel zum ansteuern von einem 8x8 DOT Matrix Display mit MAX7219 Treiber. Verbinde dich mit deinem Handy mit dem ESP8266 und schicke draht...
Folientastatur mit i2C Portexpander PCF8574
In diesem Blog Eintrag möchte ich euch erklären wie ihr eine Matrix Folientastatur über einen I2C Portexpander PCF8574 ansteuern könnt. ...
5 Bemerkungen
Audrey
Audrey

Hey,
Thank you for this tutorial ! very interesting. Following yours I am making a small circuit using two mpr121, I would love to include the mpr121 in my fritzing sketch. Would you share your MPR121 fritzing file ?
Thanks again,
Audrey

jihad
jihad

Hello,

Unfortunately I can't merge the library with Arduino nano and keep coming back to not being valid. Do you know why this?

steffen
steffen

Hi,

leider kann ich die Library nicht einbinden bei Arduino kommt immer wieder dass es keine gültige ist. Weißt du woran das liegt?

Sabrina
Sabrina

Hallo, ich versuche gerade genau deine anleitung umzusetzen für ein Teil meines Projektes. Allerdings bekomme ich es einfach nicht zum Laufen scheinbar wegen den Librarys. Wenn ich es mit den aktualisierten versionen der librarys versuche wird mir gesagt das die funktionen nicht deklariert sind. Kannst du mir da helfen oder hast eine aktuelle version von diesem code mit passenden librarys?
Viele dank schon mal, Sabrina


George
George

Schön, ein solches Projekt mit Ihnen zu teilen, vielen Dank. Ich habe eine Frage an Sie, Ich möchte das gleiche Projekt wie du machen, aber ich brauche mehrere Ordner und vielleicht zwei Knöpfe, um Ordner zu wechseln. Kannst du mit dem Code helfen?

Philippe
Philippe

Hallo George, Mittlerweile gibt es eine neuere Library mit der du MP3 in verschiedenen Ordner abspielen kannst. Du findest die Library unter folgendem Link: https://github.com/DFRobot/DFRobotDFPlayerMini Getestet habe ich es bisher noch nicht. Was willst du den genau Bauen?

Zeige 1 bis 1 von 5 (1 Seite(n))
Einen Kommentar hinterlassen
Anmerkung: HTML wird nicht unterstützt!