Wie steuere ich ein Handy mit einem Arduino?

Ich möchte ein klassisches Handy mit einem Arduino Nano steuern, indem ich die Tasten des Handys mit digitalen Pins verbinde und sie mit einem Programm schalte, das ich auf dem Arduino installieren werde. Die Idee ist, ein Pseudo-GSM-Schild zu erstellen und beispielsweise SMS-Nachrichten zu senden, einen Anruf zu tätigen oder einfach einen Text auf dem LCD des Mobiltelefons zu drucken.

Die 2 Probleme, die ich gefunden habe:

  1. Das Mobiltelefon, das ich verwende, enthält 25 Tasten, aber das Nano enthält nur 13 digitale Pins. Gibt es also eine intelligente Möglichkeit, mit wenigen Pins die 25 Tasten zu steuern?
  2. Um eine Taste ein- und auszuschalten, dachte ich, einen Transistor zu verwenden, bei dem E (Mitter) und C (ollector) jeweils mit GND und V + der Taste verbunden sind und B (ase) mit Arduino verbunden ist. Durch Setzen von HIGH oder LOW an diesem Pin wird der EC-Schaltkreis des Transistors geöffnet oder geschlossen.

Frage: Gibt es eine intelligentere Möglichkeit, die Tasten mit nur wenigen Komponenten ein- und auszuschalten (weil ich in meinem Fall 25 Transistoren verwenden werde und das viel ist !!)? Und sollte ich dieselbe Stromquelle für den Arduino Nano und das Mobiltelefon verwenden?

Dein Englisch ist gut. Ich habe die letzten paar Zeilen entfernt.
Siehe Multiplexer. Vielleicht ist das, wonach Sie suchen.
Wenn Sie die Tastatur zurückentwickeln, werden Sie feststellen, dass sie eine Matrixverbindung verwendet (Linien, die mit Spalten verbunden sind). Sie müssen nicht für beide dieselbe Stromquelle verwenden, aber die Masse muss verbunden werden, wenn Sie Transistoren zum Schalten verwenden möchten. Sie können auch Optokoppler anstelle von Transistoren zum Schalten verwenden, dann müssen Sie die Masse nicht verbinden.
Danke für eure Antworten Jungs :-). Ich habe mir den Multiplexer angesehen und ja, es scheint eine gute Lösung zu sein, um die Anzahl der verwendeten Pins zu reduzieren, und nebenbei habe ich festgestellt, dass ich einige 74h595-Chips habe, also ist es an der Zeit, sie für dieses Projekt nützlich zu machen.
Die Optokoppler scheinen eine gute Idee zu sein, um den 2-Kreis zu isolieren, und sind einfacher zu verwenden, aber ich habe sie jetzt nicht in der Hand, also behalte ich für diesen Moment die Transistormethode bei. Nebenbei entdecke ich, dass ich ein altes kabelgebundenes Telefon habe, und ich entdecke, dass es voller Transistoren ist (MPS-A42, S8550, S9014).
Ich habe eine nützliche Seite gefunden, die erklärt, wie man einen Transistor als Schalter und andere gleichwertige Methoden verwendet
Erstens ist dies kein praktisches Projekt - die Bemühungen richten sich besser auf ein eingebettetes GSM-Modul, ein USB-GSM-Modul oder sogar ein Telefon mit einer seriellen Steuerungsfunktion für eine Headset-Buchse. Zweitens erfordert das Fälschen von Tastatureingaben eine Interaktion mit dem Matrixscannen – Antworten, die lediglich einen Weg vorschlagen, so viele E/A-Pins wie Tasten zu erhalten, sind keine nützlichen Antworten.

Antworten (3)

Wenn wir eine Reihe von Annahmen treffen, können wir beschreiben, wie man mit einem Arduino Nano eine Handytastatur ohne oder mit minimaler zusätzlicher Hardware steuern kann. Wenn Sie feststellen, dass die Annahmen nicht gültig sind, müssen Sie einige Arbeit leisten, um eine Lösung zu finden. Eine Standardmethode zum Entwerfen einer Tastatur besteht darin, Schalter auf einem Drahtgitter so zu platzieren, dass sie einen „Zeilen“-Draht mit einem „Spalten“-Draht kurzschließen. Am effizientesten lassen sich Schalter in einem (fast) quadratischen Raster anordnen. Wir gehen also davon aus, dass ein 5 x 5-Raster für 25 Schalter verwendet wird. Weiterhin gehen wir davon aus, dass die Zeilen "gescannt" und die Spalten "erfasst" werden und dass die Logikspannung mit dem Arduino Nano kompatibel ist. Schließlich gehen wir davon aus, dass das Telefon die Schalter viel langsamer scannt als die Arduino-Läufe, so dass wir eine Zeilenspannungsänderung erkennen und im Gegenzug Treiben Sie die Spaltenspannung schnell genug, um einen Tastendruck zu emulieren. Wenn all diese Annahmen zutreffen, müssen wir 5 Arduino Nano-Pins als Eingänge konfigurieren. Eine für jede Reihe. Und 5 Arduino Nano Pins als Ausgang. Eine für jede Spalte. Um einen gefälschten Schalter zu aktivieren, warten wir, bis die Zeile aktiviert ist, die den gefälschten Schalter enthält. Dann treiben wir die Spalte aktiv, die den gefälschten Schalter enthält. Es gibt viele weitere Details, die Sie durcharbeiten müssen. Zum Beispiel wird das Telefon wahrscheinlich versuchen, das Schließen des Schalters zu entprellen. Daher muss ein gefälschter Schalter wahrscheinlich für viele Zyklen des Tastaturscans geschlossen bleiben. Um einen gefälschten Schalter zu aktivieren, warten wir, bis die Zeile aktiviert ist, die den gefälschten Schalter enthält. Dann treiben wir die Spalte aktiv, die den gefälschten Schalter enthält. Es gibt viele weitere Details, die Sie durcharbeiten müssen. Zum Beispiel wird das Telefon wahrscheinlich versuchen, das Schließen des Schalters zu entprellen. Daher muss ein gefälschter Schalter wahrscheinlich für viele Zyklen des Tastaturscans geschlossen bleiben. Um einen gefälschten Schalter zu aktivieren, warten wir, bis die Zeile aktiviert ist, die den gefälschten Schalter enthält. Dann treiben wir die Spalte aktiv, die den gefälschten Schalter enthält. Es gibt viele weitere Details, die Sie durcharbeiten müssen. Zum Beispiel wird das Telefon wahrscheinlich versuchen, das Schließen des Schalters zu entprellen. Daher muss ein gefälschter Schalter wahrscheinlich für viele Zyklen des Tastaturscans geschlossen bleiben.

Ich würde in Betracht ziehen, den I2C-Port-Expander MCP23017 von Microchip zu verwenden . Es enthält 16x GPIO-Pins zusätzlich zu 2x Interrupt-Pins.

Anmerkungen:

  • Die Interrupt-Fähigkeit könnte sich in Ihrem Fall als sehr nützlich erweisen: Sie würde es Ihnen ermöglichen, den Arduino im Ruhezustand zu lassen, während Sie auf das Drücken einer Taste warten, und dann aufwachen, wenn Sie die Tasten tatsächlich lesen möchten. Dies wäre viel effizienter, als ständig Daten aus einem MUX- oder PISO-Schieberegister (parallel in serial out) zu ziehen.
  • Sie können bis zu 8 dieser Chips an einen einzigen I2C-Bus anschließen.
  • Pins, die nicht zum Lesen von Schaltflächen verwendet werden, können als zusätzliche (langsame) Ausgänge oder Eingänge konfiguriert werden.
  • Es kann mit 5V- und 3,3V-Logik umgehen.
  • Der MCP23008 ist eine kleinere Version des 017 mit 8x I/O-Pins.
Die Tastatur wird mit ziemlicher Sicherheit matrixabgetastet, sodass Sie die Leitungen nicht einfach beliebig ansteuern können, sondern das Abtastmuster erkennen und die Leitungen zu geeigneten Zeiten mit geeigneten Spannungen ansteuern müssen. Außerdem scheinen Sie die Absicht der Frage rückwärts gelesen zu haben - es geht nicht darum, die Tastatur zu überwachen, sondern um das Einfügen gefälschter Tastendrücke.
@ChrisStratton, danke für die Notizen. Da ich neu in diesem Bereich und in diesem Forum bin, sollte ich diesen Antwortversuch löschen?

Sie könnten nur fünf Pins verwenden, um das Ganze mit einem [[FIVE]]-Bit-Demultiplexer zu steuern. Je nachdem, wie das Tastenfeld funktioniert, benötigen Sie möglicherweise noch die Transistoren, aber Sie sollten sich ansehen, wie das Tastenfeld verdrahtet ist, und es besteht eine gute Chance, dass Sie nur ein paar Pins verwenden und Spannung an das Datenkabel des Tastenfelds anlegen können. Beim zweiten Gedanken brauchen Sie möglicherweise keine Transistoren, wenn Sie das Mobiltelefon aus derselben Stromquelle betreiben, die das Arduino verwendet. Stellen Sie nur sicher, dass das Telefon nicht überspannt wird, wenn es eine 3,3-V-Logik verwendet. Wenn dies der Fall ist, benötigen Sie möglicherweise einen Logikpegelwandler. (Entschuldigung für die falsche Bitanzahl, ich habe falsch gerechnet: / Danke, dass Sie das herausgepickt haben.)

Sein Handy hat 25 Tasten. Eine 4-Bit-Dekodierung liefert nur maximal 16 Schlüssel.