Per Klinke-Stecker Signal an Arduino

Hi Leute,

ich war gestern richtig verzweifelt, da ich den ganzen Tag versucht habe einen Klinkenstecker mit meinem Arduino zu benutzen. Hier mal eine kurze Zusammenfassung was später passieren soll:

Ein iPhone wird per Klinke-Stecker mit einem Arduino verbunden und das Arduino soll solange abwarten bis es ein beliebiges Signal über den Stecker erhält. Ist dies der Fall soll es bestimmte Befehle ausführen.

Ich muss dazu sagen dass ich mich jetzt noch nicht soo gut mit der Materie auskenne, und ich dachte mir, dass das ja eigentlich nicht schwer sein kann, aber ich kam nach 6 Stunden ausprobieren zu keinem Ergebnis.

Hat jemand von euch vielleicht eine Lösung für mich?

Liebe Grüße,
Alvaro

Du willst dir dein Iphone durch wildes Testen zerschießen? Wie hast du den Klinkenanschluss am Arduino realisiert? Warum keinen anderen Übertragungsweg (Bluetooth).

Wird reden hier über Audio, oder? Dabei musst du beachten, dass ein Audio-Signal Wechselspannung ist. Also muss man den Pegel auf Ub/2 anheben:
http://cdn.instructables.com/FMP/7YUO/HAQ2TJOE/FMP7YUOHAQ2TJOE.LARGE.jpg

Und wenn du dann ca. 512 misst, hast du eigentlich 0V

Kannst du "ein beliebiges Signal " etwas näher spezifizieren?
Das ist etwas ungenau.

@sschultewolter: Ich habe noch ein altes Handy hier, mit dem ich das getestet habe, letztendlich soll das ganze aber über mein iPhone laufen :wink:

@guntherb: Es geht darum, dass ich später ein Video auf meinem iPhone abspielen werde. Darin wollte ich eine kurze Audiosequenz integrieren, die dem Arduino lediglich sagen soll, dass es jetzt etwas machen soll. Der Ton in dem Video soll also als Auslöser für das Arduino dienen.

Ich habe mich nach diesem Tutorial gerichtet: http://arduinoarts.com/2011/08/uv-meter/
Das hat bei mir leider nicht geklappt, und hier seht ihr einmal meinen Testaufbau:

LG

Ein Bild mit 3,9MB hochladen ist wohl ein Scherz :-X

Bei eingesteckten Klinkenstecker kommt vermutlich aber überhaupt kein Ton mehr über die Lautsprecher raus.

Zeigmal deinen Sketch. Lass dir die Signale auf die Serielle Schnittstelle alle x ms ausgeben, um zu schauen, ob überhaupt etwas ankommt.

Mein Sketch:

void setup() {
  Serial.begin(9600);
}

void loop(){
  pinMode(A0, INPUT);
  int x = analogRead(A0);
  Serial.println(x);
}

Das Ergebnis: 0. Immer wieder 0. Auch wenn ich mit dem Handy etwas abspiele, wird es über die Lautsprecher und nicht den Klinke-Stecker übertragen. Trotzdem wird das Kopfhörer-Symbol am Handy angezeigt.

Der Spannungsteiler muss zwischen Vcc und Masse. Siehe der Link in Post #2

Schließ mal Kopfhörer an das Handy und lass dann den Ton über Lautsprecher ausgeben. Vermutlich kommt dann über Klinke(Kopfhörer) nichts mehr an.

@sschultewolter: Ja ganz genau das passiert ja momentan :wink:

@Serenifly: Ich bin sehr schlecht darin solche Zeichnungen zu verstehen :smiley: Ich habe es jetzt mal auf meinem Breadboard so nachgebaut wie ich es verstanden habe. Wäre das so korrekt? (Statt 2,2k Widerstände dann 10k, und was man bei dem Bild schlecht sieht, ist dass der linke Widerstand in - geht.)

Guppinator:
Der Ton in dem Video soll also als Auslöser für das Arduino dienen.

Das ist die entscheidende Information

Du musst auf alle Fälle auch die Masse des I-Phone Steckers anschliessen.

Wenn du nur einfach einen Spannungsteiler willst, dann musst du das wie auf dem Bild unten machen.

wenns nicht funktioniert, kannst du noch eine Diode und einen Kondensator (orange Kabel) mit dran hängen, das erhöht die Wahrscheinlichkeit, dass du Signale erkennst.

@guntherb: Vielen Dank! :slight_smile: Also erstmal ohne Diode und Kondensator versuchen und wenn es dann nicht klappt beide dazu schalten? Und ich soll weiterhin den 2,2k Widerstand nehmen, oder genau den der in deiner Zeichnung zu sehen ist?

Guppinator:
@guntherb: Vielen Dank! :slight_smile: Also erstmal ohne Diode und Kondensator versuchen und wenn es dann nicht klappt beide dazu schalten? Und ich soll weiterhin den 2,2k Widerstand nehmen, oder genau den der in deiner Zeichnung zu sehen ist?

Da ich nicht weiss, wie groß der Pegel ist, den dein Iphone bringt, kann ich zur dimensionierung der Widerstände nichts sagen. Es kann sein, dass du nur Spannungen im mV Bereich bekommst, das hängt auch von dem von dir verwendeten Tonsignal ab.
die oben gezeigte Schaltung ist "quick & dirty". Es kann sein, dass sie garnicht funktioniert, weil die Spannungen einfach zu klein sind.

zum Probieren: Nimm' am besten einen einzelnen Ton mit fester Frequenz, möglichst niedrig. z.B. ein 50Hz Brummton möglichst laut.

Wenn du nur sehr kleine Signalpegel bekommst, dann lass mal den Widerstand nach Masse (der obere in der Zeichnug) weg.

Da ein Audiosignal wechselstrom ist würd ich die Diode sehr befürworten.
Grüße Uwe

uwefed:
Da ein Audiosignal wechselstrom ist würd ich die Diode sehr befürworten.

Man braucht sie nicht unbedingt. Man hebt das Signal ja mit dem Spannungsteiler an. Die Diode kann allerdings die Software dann vereinfachen.

Bei Wechselspannung muss man sich darüber klar sein, dass der gemessene Wert kleiner und größer als Ub/2 ist und es um die Differenz zum Ruhepegel geht. Nicht um den absoluten Wert.

uwefed:
Da ein Audiosignal wechselstrom ist würd ich die Diode sehr befürworten.
Grüße Uwe

Mit dem 10K Vorwiderstand steckt das die interne Schutzdiode locker weg.

@guntherb: ich kam leider jetzt erst dazu deinen Schaltplan zu testen. Ich habe ihn 1:1 nachgebaut und mir die Werte von A1 und A0 ausgeben lassen (Als Widerstand habe ich 10k genommen). Es bleibt leider dabei, dass das Handy den Ton immernoch über die Lautsprecher ausgibt und die Werte von A1 & A0 bleiben immernoch bei 0. :frowning:

Edit: Abgespielt habe ich am Handy einen langen Ton mit 50hz. Gerade habe ich gemerkt, dass das Handy mit einem Mediaplayer den Sound doch über den Kopfhörerausgang abspielt, aber dennoch kommt kein Signal beim Arduino an.

Ich habe einfach nur gnd vom kopfhörerausgang an gnd vom board gesteckt und den signalausgang direkt an einen analogen eingang das funktioniert zimlich gut nur halt nicht sehr genau

MrProgrammer:
Ich habe einfach nur gnd vom kopfhörerausgang an gnd vom board gesteckt und den signalausgang direkt an einen analogen eingang das funktioniert zimlich gut nur halt nicht sehr genau

Sehr komisch... Könntest du mir evtl. mal deinen Sketch zeigen?
LG

ich hab einfach den analogwert ausgelesen und damit gearbeitet