Mit Touch Sensor MPR121 Sound Effekte abspielen

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 Library

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

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();
}


Verbundene Suchwörter

Tutorial Anleitung Code Beispiel Arduino Elektro Lernen Programm Beispiel Sensor MP3 Sound I2C

Kommentare

Hinweis: HTML ist nicht verfügbar!

Im Beitrag erwähnte Produkte

MPR121 Capacitive Touch Sensor Breakout

MPR121 Capacitive Touch Sensor Breakout

Der MPR121 ist ein Mikrochip der bis zu 12 kapazitive Elektroden auswerten kann. Das Breakout Board ..

6,50CHF

DFPlayer mini MP3 Player Modul für Arduino

DFPlayer mini MP3 Player Modul für Arduino

Mit diesem MP3 Player Modul kannst du auf einfachste Weise mit deinem Arduino Sound Effekte oder Mus..

7,90CHF

Mini Lautsprecher 8Ohm 0.25W

Mini Lautsprecher 8Ohm 0.25W

Mit diesem kleinen Lautsprecher kannst du mit deinem Arduino Töne erzeugen oder Musik abspielen. Dam..

1,00CHF

Breadboard-Halter für Arduino UNO und ESP8266

Breadboard-Halter für Arduino UNO und ESP8266

Mit diesem Breadboard-Halter kannst du einfach deine Steckschaltungen aufbauen. Die Halterungen werd..

7,00CHF

Kupferklebeband 4m x 25mm

Kupferklebeband 4m x 25mm

Dieses Kupferklebeband eignet sich nicht nur zum Abschirmen, sondern auch zum Basteln von Elektronis..

6,90CHF

Breadboard / Lochraster Steckplatine Half-Size

Breadboard / Lochraster Steckplatine Half-Size

Ein Breadboard, auch Steckplatine oder Steckboard in der Umgangssprache, wird zum Aufbauen von Elekt..

5,50CHF

Jumperkabel Dupont Set 10cm 60 Stk.

Jumperkabel Dupont Set 10cm 60 Stk.

Dupont Kabel dienen zum schnellen verbinden von Bauteilen. In der Umgangssprache werden Dupont Kabel..

4,90CHF

Arduino UNO kompatibles Board Atmega328

Arduino UNO kompatibles Board Atmega328

Dieses Arduino UNO kompatible Board ist sehr gut verarbeitet und auch qualitativ hochstehend. Dieses..

12,90CHF