Du bist hier: Sensor > Mikrofon

Arduino Sensor Mikrofon

1. Mikrofon Sensor anschliessen

Das Mikrofon ist ein simpler Sensor für das Arduino. Erkenne mit diesem Sensor die Lautstärke von Geräuschen und stelle einen Schwellenwert in % ein.

Das einstellen des Schwellenwerts geschieht am einfachsten mit einem feinen Schraubenzieher oder mit einem Küchenmesser:

2. Mikrofon Sensor programmieren

2.1. Lautstärke mit LED anzeigen

Steuere eine LED direkt oder über eine Variable "Helligkeit" mit der Lautstärke deiner Musik. Wenn du die Variable verwendest, kannst du den Grenzwert für die leisesten Töne einstellen, die noch abgebildet werden sollen.

Sketch 1: Mit LED Lautstärke von Musik direkt anzeigen
Sketch 2: Mit LED Lautstärke von Musik indirekt anzeigen. Mit justierbarem Grenzwert

2.2. Lautstärke mit 4 LEDs als Pegel anzeigen

Programmiere eine Pegelanzeige mit 4 LEDs. Experimentiere mit den Grenzwerten, bis dein Pegel so auf die Musik reagiert, wie es dir gefällt. Stelle auch die Empfindlichkeit des Sensors richtig ein (Kapitel 1).

Sketch 3: Mit 4 LEDs Lautstärke von Musik als Pegel anzeigen. Mit justierbaren Grenzwerten

2.3. Neopixel mit Mikrofon steuern

Das PGLU-Projekt "Neopixel" eignet sich hervorragend, um den Sensor Mikrofon kennenzulernen. Die folgenden Links führen dich zur PGLU-Hauptseite mit allen Neopixel Projekten.

2.4. Klatsch-Schalter

Der Klatschschalter ist eine simple Form einer Sprachsteuerung. Mit einem kurzen Klatsch-Geräusch wird eine Aktion ausgelöst, weil seine Lautstärke einen gewissen Grenzwert überschreitet. Dies kann zum Beispiel das Einschalten eines Lichts sein.

Sketch 4: Mit dem Mikrofon Sensor ein Licht ein- und ausschalten

3. Challenge

3.1. Klatschschalter mit Code Funktion

Programmiere einen Klatschschalter, der wie eine Sprachsteuerung, unterschiedliche Signale verstehen kann. Im Video siehst du, dass die LED nur geschaltet wird, wenn genau dreimal geklatscht wird.

Sketch 5: Eine simple Spracherkennung mit dem Arduino (Klick für Zoom)

<xml xmlns="https://developers.google.com/blockly/xml"><variables><variable id="9%We)YRY!AR}+iPo66j@">Zähler</variable><variable id="HtRX85xcoY5aa;fy=M5!">Zeitstempel</variable></variables><block type="expert_setup" id="T4Vb[@SEWfVjB)U[)CTI" x="-478" y="-937"><statement name="CODE"><block type="led_write_state" id="NwiV+IT4XyUUB|Esu67+"><value name="LED"><block type="led_pin" id="b.Otkkz!L(uzPi*7Lj)y"><field name="LED">LED1</field></block></value><value name="VALUE"><block type="basic_digital_state" id="KSWLL7t8ya(@VaAiLe*-"><field name="STATE">HIGH</field></block></value><next><block type="led_write_state" id="F!;*AvzxCqcVpwzGYpZw"><value name="LED"><block type="led_pin" id="j5b2*R@R{y5~DOfJy[o_"><field name="LED">LED2</field></block></value><value name="VALUE"><block type="basic_digital_state" id="vo_iApvLk;@S3Y~W36P{"><field name="STATE">HIGH</field></block></value><next><block type="led_write_state" id="7Jxc?_:Raz)49ngKWx_."><value name="LED"><block type="led_pin" id="qm*+;[dvq}n@{;JJC[rr"><field name="LED">LED3</field></block></value><value name="VALUE"><block type="basic_digital_state" id="MYS-icfej{F$FZ=6b2)^"><field name="STATE">HIGH</field></block></value></block></next></block></next></block></statement></block><block type="basic_comment" id="]I*iW4Y.v*KoUH_MuAJ7" x="-175" y="-902"><field name="COMMENT">LED 1 ist die LED, die ein- oder ausgeschaltet werden soll</field></block><block type="basic_comment" id="S!0;6#V6zI-dJEAw;`Vv" x="-174" y="-859"><field name="COMMENT">LED 2 zeigt die Dauer der Tonaufnahme an</field></block><block type="basic_comment" id="*R%5C^Vz/H7,zr2tdImZ" x="-174" y="-814"><field name="COMMENT">LED 3 zeigt während der Tonaufnahme die Klatschgeräusche an</field></block><block type="basic_main_loop" id="*9us1=RB,!5tW`QCvQPh" deletable="false" x="-479" y="-732"><value name="BLINK"><block type="basic_blinkcode" id="V6V8i=rV7:i5bEsLsuRz"><field name="SHORT">1</field><field name="LONG">1</field></block></value><statement name="CODE"><block type="variables_set" id="Rg8=Z/?e5*)xN+22V8wW"><field name="VAR" id="9%We)YRY!AR}+iPo66j@">Zähler</field><value name="VALUE"><block type="math_number" id="k@]9bKL5=*Zgp^NC9cp`"><field name="NUM">0</field></block></value><next><block type="logic_if" id="loe=a:_Nk5nDR%^]WSjS"><value name="IF0"><block type="logic_compare" id="33@E5;J!~+RGa6#C!D:S"><field name="OP">GT</field><value name="A"><block type="sensor_read_percentage" id="y@%f#^vIA3fxxxX]UY:i"><value name="SENSOR"><block type="sensor_pin" id="%p%f(WuTw~#*aAOViNxM"><field name="SENSOR">SENSOR3</field></block></value></block></value><value name="B"><block type="math_number" id="K./kdj^_2m{IIva|Z#dE"><field name="NUM">50</field></block></value></block></value><statement name="DO0"><block type="flow_delay" id="BC9^R4n[}0{Yeoz8ev@="><value name="DELAY"><block type="math_number" id="msUa~^seFrMD$3DpNYU|"><field name="NUM">70</field></block></value><next><block type="led_write_state" id="j[qgyVb)q5oBo[qsH%_9"><value name="LED"><block type="led_pin" id="Uq)xB-t`lq_TF8[O-N+8"><field name="LED">LED2</field></block></value><value name="VALUE"><block type="basic_digital_state" id="dLe#0ulF$Xt,M4~B2PVg"><field name="STATE">LOW</field></block></value><next><block type="variables_set" id="/1AX*H{*UilM6dcA+2.h"><field name="VAR" id="HtRX85xcoY5aa;fy=M5!">Zeitstempel</field><value name="VALUE"><block type="flow_ms" id="[8Qc4]?^b^2G06l^%JO{"></block></value><next><block type="flow_until" id="|mg*pdRL{#yQV[fDYbPJ"><value name="CONDITION"><block type="logic_compare" id="eJ.=8G!JP2@~KVdk@AO#"><field name="OP">GT</field><value name="A"><block type="math_arithmetic" id="W{EyXts}=Qh;0^vaVn+8"><field name="OP">MINUS</field><value name="A"><block type="flow_ms" id="fg}6Q9FpAsN(t`J^!j/R"></block></value><value name="B"><block type="variables_get" id="(h|0cMd$wQpd(lGdN%Jp"><field name="VAR" id="HtRX85xcoY5aa;fy=M5!">Zeitstempel</field></block></value></block></value><value name="B"><block type="math_number" id="7X_X@[F{#FvF(wHK(Piq"><field name="NUM">2000</field></block></value></block></value><statement name="DO"><block type="logic_if" id="%-3TvM/BRVN-V8EHgJz("><value name="IF0"><block type="logic_compare" id="7=IH8GU`$}%.zJrsg)m0"><field name="OP">GT</field><value name="A"><block type="sensor_read_percentage" id="|{y{g+:9P#yAw8fYfd^w"><value name="SENSOR"><block type="sensor_pin" id="I0mRxzMUGdKs5_7tiK~A"><field name="SENSOR">SENSOR3</field></block></value></block></value><value name="B"><block type="math_number" id="4N1(atUj`?O4}Gg|UcU,"><field name="NUM">50</field></block></value></block></value><statement name="DO0"><block type="led_write_state" id="EK4To]56FjG,j3+6r]@{"><value name="LED"><block type="led_pin" id="rOY_0C/(UjH=!b}HWmQ@"><field name="LED">LED3</field></block></value><value name="VALUE"><block type="basic_digital_state" id="]*w~=1BIFU[es:nboITp"><field name="STATE">LOW</field></block></value><next><block type="flow_delay" id="6v~H-`7v07gee%G9Ce4Z"><value name="DELAY"><block type="math_number" id="EV}`E@+N7gE2^A$_vcGa"><field name="NUM">70</field></block></value><next><block type="variables_set" id=":+FG=ymNeLs:TQ[td;.q"><field name="VAR" id="9%We)YRY!AR}+iPo66j@">Zähler</field><value name="VALUE"><block type="math_arithmetic" id="R(nl$YArToi+pamBOH#0"><field name="OP">ADD</field><value name="A"><block type="variables_get" id="v6az]N*TCUAhLUm,5Y:G"><field name="VAR" id="9%We)YRY!AR}+iPo66j@">Zähler</field></block></value><value name="B"><block type="math_number" id="%4o:UX|z*s-x.^7Rru5a"><field name="NUM">1</field></block></value></block></value><next><block type="led_write_state" id="ty8TZr@wzy|n/=WVYqn]"><value name="LED"><block type="led_pin" id="Z,pB?=l@o=scOR1BQ?^B"><field name="LED">LED3</field></block></value><value name="VALUE"><block type="basic_digital_state" id="uM?QVgr,@=X?,K)#U9Nh"><field name="STATE">HIGH</field></block></value></block></next></block></next></block></next></block></statement></block></statement><next><block type="led_write_state" id="(8`j^on*s?{u:H1Jt/#k"><value name="LED"><block type="led_pin" id="eD+?C$cai-#0L?]k6x4x"><field name="LED">LED2</field></block></value><value name="VALUE"><block type="basic_digital_state" id="%=J@g)rZJjuL?tu?5@Zl"><field name="STATE">HIGH</field></block></value></block></next></block></next></block></next></block></next></block></statement><next><block type="logic_if" id="3)`}bU|V;`,wXAH`C(uu"><value name="IF0"><block type="logic_compare" id="W|zykfs^a;W)a/t8a,?N"><field name="OP">EQ</field><value name="A"><block type="variables_get" id="U/8)=NxU*kNW[lo}oq=u"><field name="VAR" id="9%We)YRY!AR}+iPo66j@">Zähler</field></block></value><value name="B"><block type="math_number" id="4AZ(0y0(V($x8r;%{CL)"><field name="NUM">3</field></block></value></block></value><statement name="DO0"><block type="led_write_state" id="Veq5+9q+GG0c#w)mlTFo"><value name="LED"><block type="led_pin" id="e/cDywR1/mGfb;j{jC$z"><field name="LED">LED1</field></block></value><value name="VALUE"><block type="logic_negate" id="hzggZ-9Lf:^=aj%nM$Fq"><value name="BOOL"><block type="led_read_state" id="M}vl_TsUD`#thBCb2PJ6"><value name="LED"><block type="led_pin" id="lzp;kQ$[XkMP$JbA%8()"><field name="LED">LED1</field></block></value></block></value></block></value><next><block type="flow_delay" id="Fz:/tMPstKIVuf56MAQv"><value name="DELAY"><block type="math_number" id=";j,5`]E0=+|RN0%s9:i0"><field name="NUM">70</field></block></value></block></next></block></statement></block></next></block></next></block></statement></block><block type="basic_comment" id=":;S@-Q+dDE]g,U#oK{8w" x="63" y="-656"><field name="COMMENT">Aktiviere die Tonaufnahme</field></block><block type="basic_comment" id="AY}ZTdLHw?vxQSv^Z`AQ" x="63" y="-609"><field name="COMMENT">Pausiere kurz, um das Echo nicht erneut zu messen</field></block><block type="basic_comment" id="z0,}jH,=r)iZ%KCU?gzQ" x="64" y="-546"><field name="COMMENT">Setze den Zeitstempel mit der aktuellen Zeit gleich</field></block><block type="basic_comment" id="V?91n)+FZHT_e-^ismdC" x="107" y="-500"><field name="COMMENT">Messe die Geräusche, bis die Differenz zwischen Zeitstempel und aktueller Zeit grösser als 2 Sekunden wird</field></block><block type="basic_comment" id="2Qw$DxVNN%XjRH.?4CtK" x="63" y="-442"><field name="COMMENT">Messe, ob geklatscht wird</field></block><block type="basic_comment" id=":G3)NG%Crp0y~;-c8:J#" x="66" y="-360"><field name="COMMENT">Pausiere kurz, um das Echo nicht erneut zu messen</field></block><block type="basic_comment" id="hj/A,q~d[^+pY+C/Qbp:" x="69" y="-316"><field name="COMMENT">Erhöhe den Klatschzähler um 1</field></block><block type="basic_comment" id="PsNQVFwCJYimRrB]vU:r" x="61" y="-104"><field name="COMMENT">Schalte die LED um, wenn innerhalb von 2 Sekunden genau 3x geklatscht wurde</field></block></xml>

Sketch 5: Kopiere diesen XML-Code mit Klick/Berührung und füge ihn in den Editor ein

3.2. Fahrzeugsteuerung mit Klatschgeräuschen

Eine etwas ungewöhnliche Anwendung eines Mikrofons hat ein Schüler einer Sekundarschule realisiert: Ein Fahrzeug wird mittels Klatschgeräusch gesteuert. Sobald der Soundsensor ein Geräusch über einem vordefinierten Pegel "hört" wendet das Fahrzeug. Dieses Wendemanöver dauert eine bestimmte Zeit.

Video: Bruno Rutishauser

Entscheidend für das Gelingen dieses Vorhabens ist eine sorgfältige Aufhängung des Mikrofons. Dieses soll nämlich möglichst keinen eigenen Körperschall (Motorengeräusche) des Fahrzeugs aufnehmen.

 

Gehe bei der Programmierung so vor:

  • Orientiere dich an der klassischen Programmierung des Roboter Autos: Arbeitsblatt Lösung 6 ↗
  • Bestimme die Aktoren und den Sensor
  • Definiere die "WENN-SONST" Frage
  • Bedenke: Es gibt nur einen Sensor. Schaue im Video, wie unser Schüler damit umgegangen ist.

 

Spannende Erweiterungen:

  • Schaffst du es, dass parallel zu dieser akustischen Steuerung, die klassischen Tast-Sensoren dennoch aktiv bleiben? So gewährst du die Kollisionssicherheit deines Roboters.
  • Das gezeigte Fahrzeug dreht beim Klatschgeräusch immer in die gleiche Richtung ab. Ist es möglich, die Drehrichtung bei einem Doppelklatschen umzukehren? Tipp: Arbeite mit nicht blockierendem Code und mit einer Variable, die die Anzahl Klatschgeräusche zählen kann.