¿Cómo controlar un teléfono celular usando un Arduino?

Deseo controlar un teléfono celular clásico usando un Arduino Nano conectando las teclas del teléfono celular a los pines digitales y cambiarlos usando un programa que instalaré en el Arduino. La idea es hacer un escudo pseudo-GSM, y poder por ejemplo enviar mensajes SMS, hacer una llamada, o simplemente imprimir un texto en la pantalla LCD del celular.

Los 2 problemas que encontré:

  1. El teléfono celular que uso contiene 25 teclas, pero el nano contiene solo 13 pines digitales, entonces, ¿hay alguna forma inteligente de usar algunos pines para controlar las 25 teclas?
  2. Para encender/apagar una tecla, pensé en usar un transistor, donde E (mitter) y C (ollector) se conectaron respectivamente a GND y V + de la tecla y B (ase) se conectaron a arduino. al establecer ALTO o BAJO en ese pin, se abrirá o cerrará el circuito EC del transistor.

Pregunta: ¿Hay una forma más inteligente de encender/apagar las teclas usando solo unos pocos componentes (porque en mi caso usaré 25 transistores y son muchos)? ¿Y debo usar la misma fuente de alimentación para Arduino Nano y el teléfono celular?

Tu inglés bien. Eliminé las últimas líneas.
Eche un vistazo al multiplexor. Tal vez es lo que estás buscando.
Si aplica ingeniería inversa al teclado, encontrará que utiliza una conexión de tipo matriz (líneas que se conectan a columnas). No tiene que usar la misma fuente de alimentación para ambos, pero las conexiones a tierra deben estar conectadas si desea usar transistores para cambiar. También puede usar optoacopladores en lugar de transistores para cambiar, entonces no es necesario conectar los terrenos.
Gracias por sus respuestas chicos :-). Eché un vistazo al multiplexor y sí, parece una buena solución para reducir la cantidad de pines usados ​​y, por cierto, descubrí que tengo algunos chips 74h595, así que es hora de hacerlos útiles para este proyecto.
Los optoacopladores parecen una buena idea para aislar el circuito 2 y son más fáciles de usar, pero no los tengo en mi mano ahora, así que mantendré el método del transistor por ahora. por cierto descubro que tengo un teléfono viejo con cable, y descubro que está lleno de transistores (MPS-A42, S8550, S9014).
Encontré una página útil que explica cómo usar un transistor como interruptor y otro enlace de métodos equivalentes
En primer lugar, este no es un proyecto práctico: es mejor dirigir el esfuerzo a un módulo GSM incorporado, un módulo USB GSM o incluso un teléfono con capacidad de control en serie de conector para auriculares. En segundo lugar, falsificar la entrada del teclado requiere interactuar con el escaneo de matriz; las respuestas que simplemente proponen una forma de obtener tantos pines de E/S como teclas no son respuestas útiles.

Respuestas (3)

Si hacemos una serie de suposiciones, podemos describir cómo usar un Arduino Nano para controlar el teclado de un teléfono celular sin o con un mínimo de hardware adicional. Si encuentra que las suposiciones no son válidas, tendrá que trabajar un poco para encontrar una solución. Una forma estándar de diseñar un teclado es colocar interruptores en una rejilla de alambre de manera que cortocircuiten un cable de "fila" con un cable de "columna". La forma más eficiente de organizar los interruptores es en una cuadrícula (lo más cercana posible) cuadrada. Por lo tanto, asumimos que se utiliza una cuadrícula de 5 por 5 para 25 conmutadores. Además, asumimos que las filas están "escaneadas" y la columna está "detectada" y que el voltaje lógico es compatible con el Arduino Nano. Finalmente, asumimos que el teléfono escaneará los interruptores mucho más lento que el Arduino, de modo que podamos detectar un cambio de voltaje de fila y, a su vez, Impulse el voltaje de la columna lo suficientemente rápido como para emular una pulsación de botón. Si todas estas suposiciones son ciertas, entonces necesitamos configurar 5 pines Arduino Nano como entradas. Uno para cada fila. Y 5 pines Arduino Nano como salida. Uno para cada columna. Para activar un interruptor falso, esperamos hasta que se active la fila que contiene el interruptor falso. Luego activamos la columna activa que contiene el interruptor falso. Hay muchos más detalles en los que tendrá que trabajar. Por ejemplo, es probable que el teléfono intente bloquear el cierre del interruptor. Por lo tanto, es probable que un interruptor falso deba permanecer cerrado durante muchos ciclos del escaneo del teclado. Para activar un interruptor falso, esperamos hasta que se active la fila que contiene el interruptor falso. Luego activamos la columna activa que contiene el interruptor falso. Hay muchos más detalles en los que tendrá que trabajar. Por ejemplo, es probable que el teléfono intente bloquear el cierre del interruptor. Por lo tanto, es probable que un interruptor falso deba permanecer cerrado durante muchos ciclos del escaneo del teclado. Para activar un interruptor falso, esperamos hasta que se active la fila que contiene el interruptor falso. Luego activamos la columna activa que contiene el interruptor falso. Hay muchos más detalles en los que tendrá que trabajar. Por ejemplo, es probable que el teléfono intente bloquear el cierre del interruptor. Por lo tanto, es probable que un interruptor falso deba permanecer cerrado durante muchos ciclos del escaneo del teclado.

Consideraría usar el expansor de puerto Microchip MCP23017 I2C. Contiene 16 pines GPIO además de 2 pines de interrupción.

Notas:

  • La capacidad de interrupción podría resultar muy útil en su caso: le permitiría dejar el Arduino en suspensión mientras espera que se presione una tecla, y luego despertar cuando realmente quiera leer las teclas. Esto sería mucho más eficiente que extraer constantemente datos de un registro de desplazamiento MUX o PISO (entrada paralela en serie).
  • Puede conectar hasta 8 de estos chips en un solo bus I2C.
  • Los pines que no se usan para leer botones se pueden configurar como salidas o entradas adicionales (baja velocidad).
  • Puede manejar lógica de 5V y 3.3V.
  • El MCP23008 es una versión más pequeña del 017, con 8 pines de E/S.
Es casi seguro que el teclado está escaneado en matriz, por lo que no puede ir y controlar arbitrariamente las líneas, sino que debe detectar el patrón de escaneo y controlar las líneas con los voltajes apropiados en los momentos apropiados. Además, parece que ha leído la intención de la pregunta al revés: no se trata de monitorear el teclado sino de inyectar pulsaciones de teclas falsas.
@ChrisStratton, gracias por las notas. Como soy nuevo en este campo y en este foro, ¿debería eliminar este intento de respuesta?

Podría usar solo cinco pines para controlar todo usando un demultiplexor de [[CINCO]] bits. Es posible que aún necesite los transistores dependiendo de cómo funcione el teclado, pero debe ver cómo está cableado el teclado, y es muy probable que pueda usar solo unos pocos pines y aplicar voltaje al cable de datos del teclado. Pensándolo bien, es posible que no necesite transistores si alimenta el teléfono celular con la misma fuente de alimentación que usa el arduino, solo asegúrese de no sobrecargar el teléfono si usa una lógica de 3.3V. Si es así, es posible que necesite un convertidor de nivel lógico. (Perdón por el conteo de bits incorrecto, hice mal mis cálculos: / Gracias por señalar eso).

Su celular tiene 25 teclas. La decodificación de cuatro bits solo proporcionará un máximo de 16 claves.