Teléfono móvil Arduino: 9 pasos (con fotos)

Teléfono móvil Arduino: 9 pasos (con fotos)

Tabla de contenido:

Anonim

En realidad, no hay razones reales por las que uno deba construir un teléfono (móvil) por sí mismo. Especialmente porque el teléfono más simple cuesta menos que hacerlo tú mismo. Sin embargo, el aprendizaje es un aspecto muy importante del proceso de montaje. Además, caminar con un teléfono hecho por sí mismo suena una idea increíble.

La mayoría de nosotros tenemos nuestro propio teléfono móvil, y yo también. Después de crear T-gameBoY, estaba buscando nuevos desafíos y pensé que debía hacerme un teléfono. Claramente, no puedo lograr la funcionalidad del teléfono inteligente, pero llamar y quizás también enviar SMS-s sería suficiente.

Suministros:

Paso 1: Planificación

Con la búsqueda de Google encontré un ejemplo perfectamente adecuado de Matt Richardson (MR). Su diseño es muy agradable e interesante, además mencionó algunas posibles áreas problemáticas.

  • Su diseño en Instructables.
  • Otro

Junto a su diseño hay dos alternativas de Adafruit.com. Uno usa una Raspberry Pi y el segundo un Arduino como base. La unidad de teléfono en sí es la misma para ambos. El diseño de Adafruit es fácil de construir y se ve muy atractivo con la pantalla táctil. Sin embargo, no hay casi nada que ver con la construcción. Se trata más de comprar los componentes y luego de un montaje rápido. Esto sonaba demasiado simple para mí.

  • Teléfono frambuesa
  • Telefono arduino

Ya basta de eso y concentrémonos en el dispositivo en sí. Utilicé el diseño de MR como inspiración y me centré en el modelo Arduino de Adafruit.

Módulo celular GSM

El componente más importante, el módulo celular GSM, el utilizado por MR es difícil de adquirir y costoso. El diseño de Adafruit utiliza un módulo alternativo (SIM800L) y estaba buscando lo que podía hacer con eso. Pronto descubrí que podía comprar este módulo de eBay a un precio muy razonable sin tener que hacer casi ninguna soldadura. Mi objetivo no era evitar la soldadura, sino reducir el tiempo de trabajo de soldadura.

Adafruit usa el mismo chip SIM800L y luego, para mi sorpresa, pude usar su código directamente sin ninguna modificación.

  • Adafruit FONA

El módulo funciona en sistemas 850/900/1800 / 1900MHz, permite radio FM y mucho más. La radio no era importante para mí, pero tal vez en el futuro pudiera aprovechar eso. Las funciones importantes como llamadas, recepción y envío de SMS están cubiertas, eso es suficiente.

Como bono extra el módulo comprado ya tenía incluida una antena. En el otro lado de la placa del módulo hay una ranura para tarjeta SIM, que me hace la vida más fácil (reduciendo el pequeño y lento proceso de soldadura).

El altavoz “+” (SpkP) y “-” (SpkN) se conectan directamente con el SIM800L. Del mismo modo, el micrófono. El pin "Ring" se está agotando cuando entra una llamada. "Net" es para la antena, pero eso ya está en la placa, por lo tanto, deje en blanco. "Vbat2" es para la conexión de la batería "+".“GND” - masa del Arduino y la batería “-“. “RST_sim800”, “RXD” y “TXD” están conectados con el Arduino. "DTR": no sé el uso, así que lo dejé abierto.

El módulo celular funciona con red 2G. Es importante que tu tarjeta SIM lo admita. Como he escuchado, algunos proveedores de servicios ya no lo proporcionan o en un futuro muy cercano. SIM800 utiliza el tamaño de "mini SIM".

La pantalla

MR menciona que la pantalla LCD de Nokia se rompió con bastante facilidad. Al mismo tiempo, no me gustaba mucho la pantalla LED que usaba, por lo que opté por la pantalla LCD de Nokia.

Después de algunas investigaciones, asumo que MR tuvo problemas con la pantalla de Nokia porque estaba usando un voltaje demasiado alto. Sparkfun dice que deben usarse resistores si se usan señales de 5V. La tensión de alimentación debe ser en todos los casos 3.3V. MR utiliza 5V.

Se deben usar (copiados de Sparkfun) resistencias de 10kΩ entre SCLK (CLK), DN (DIN), D / C (DC) y RST y una resistencia de 1kΩ entre SCE (CS). Para la retroiluminación se recomienda mínimo 330Ω. Se usan símbolos diferentes para los mismos pines: SCLK = CLK; DN = DIN; D / C = DC; SCE = CS.

La pantalla requiere 3.3V, por lo tanto, se agrega un convertidor DC-DC para ese propósito. Todos los pines están conectados con el Arduino, que funciona con 5V. Para aumentar la duración de la pantalla, se agregan resistencias entre los pines (mire los esquemas: "Hand1_R4 - R8").

Los botones

El arreglo de botones es como muchos teléfonos de botón de la vieja escuela. Este diseño se veía muy razonable.

El teclado utiliza 16 botones. Para usar todos los botones se necesita un microcontrolador enorme o un teclado un poco más avanzado.

Mediante el uso de una tecnología de divisor de voltaje, el teclado podría lograrse mediante el uso de un solo pin analógico.

Paso 2: Breadboard- Botones

Hacer un teclado y utilizar un divisor de voltaje para eso es relativamente simple y uno podría calcular todo fácilmente. El divisor de tensión se puede ver en los esquemas. El principio es muy simple, pero los valores de datos de raw (voltaje) reales que deberían indicar que se presionan diferentes botones son ligeramente diferentes de los cálculos teóricos.

En teoría, solo se podían usar los cálculos, pero me pareció más preciso medir con el sistema final el voltaje con cada botón y, en consecuencia, ajustar el script. Obviamente, eso significa que uno tiene que ajustar el script cada vez que el sistema está cambiando. Por el contrario, eso no sucede a menudo.

Los valores de raw_data calculados y medidos se muestran en la siguiente tabla y figura. Como se puede observar, existe una desviación relativamente grande, especialmente en los niveles de voltaje más bajos. Las resistencias utilizadas fueron del 5% de precisión, lo que hace que el resultado sea relativamente variable.

Paso 3: Breadboard- Micro Controller

El cerebro del teléfono fue planeado para ser hecho esperar un Arduino Pro-Micro. Eso es un instrumento barato, pero lo suficientemente potente para esta aplicación. Esta placa tiene muchos beneficios, ya que se puede conectar con una computadora directamente a través de un cable USB. Esto simplifica las actualizaciones de código y la carga de la batería, ya que ya existe un puerto micro-USB.

La realidad a menudo no es tan simple y no era compatible con el SIM800L. No sé por qué, pero de alguna manera no funcionó aunque hubo una conexión física. Tuve que reemplazar el Pro-Micro con un Arduino UNO regular y todo estaba funcionando de nuevo.

Se adjunta esquema de conexión Arduino. Aunque se usó UNO en el diseño final, los pines de conexión son los mismos, excepto D14-D16 (pero no los usé de todos modos).

Paso 4: Breadboard- Pantalla

Como se mencionó se utilizó una pantalla Nokia 5110.

El pin 7 de la pantalla está controlando la luz de fondo. Al aplicar 3.3V en este pin, la luz de fondo se enciende. Compré varias pantallas de eBay (diferentes proveedores) y una era diferente. Se requería la conexión a tierra del pin para encender la luz de fondo. La pantalla ya tenía resistencias, por lo que la resistencia de la serie (Hand1_R3) no era necesaria. En el tablero fue fácil de ajustar, pero descubrí que después de ordenar el PCB, por lo tanto, poco molesto.

Paso 5: Bradboard- Power Management

Usé una batería de LiPo para el poder. El voltaje de la batería se usa directamente con el módulo celular (SIM800L). El módulo celular puede requerir hasta 2 A de potencia y su voltaje de operación es de 3.7-4.2V, exactamente como la batería.

Para la versión de tablero no usé ningún sistema de carga de batería sofisticado. Usé una batería LiPo 18650 normal y la conecté directamente con el SIM800L.

El Arduino UNO fue alimentado con el cable USB.

La pantalla 3.3V puede manejarse directamente desde la UNO, por lo que no necesita elementos adicionales.

Paso 6: Bradboard- Software

La mayoría de los programas que escribí yo mismo, por lo tanto, no están muy bien hechos, son lentos y carecen de funcionalidad. Aún así, uno siempre podría mejorar eso.

Para el teclado encontré una buena descripción de OtakuSanel. He modificado mucho su código, pero la base es de él. Para probar el teclado, si los valores en bruto son correctos, he adjuntado el archivo (T-keyBoardTest1.ino).

El sencillo programa para comunicarse con el SIM800L puede tomarse de adafruit (FONAtest en los ejemplos). Puede que necesite ajustar los pines. Desde Adafruit FONA necesitas descargar las bibliotecas. En este paso, la pantalla es innecesaria y toda la comunicación se realiza a través del puerto serie.

El programa de llamada simple también está aquí (T-mobile_OnlyCalling.ino). El código se ajusta para mí, por lo que no es muy fácil de entender.

Paso 7: Breadboard MobilePhone

El primer sistema de prueba que construí como prototipo para el teclado, luego el SIM800L y finalmente todo con la pantalla. Quería asegurarme de poder comunicarme con todo y de que los componentes encajaran antes de ordenar el PCB. En varias otras ocasiones, intenté saltarme el paso de la placa de pruebas y terminé comprando PCB dobles, mientras que el primer diseño tenía errores.

Paso 8: Prototipo de PCB

Después de tener la versión de Breadboard en funcionamiento, inmediatamente hice un diseño de PCB. Varias cosas que no probé completamente ni anticipé al principio hicieron que el resultado no fuera tan suave como esperaba, pero al final pude hacer funcionar mi móvil. A continuación abordaré todas las dificultades que encontré después de ensamblar el PCB.

Microcontrolador

Como ya se mencionó, quería usar Pro-Micro como el controlador. En mis proyectos anteriores, Pro-Micro y UNO eran completamente compatibles entre sí y no tuve ningún problema en absoluto. Por lo tanto, no hice ninguna prueba especial con Pro-Micro antes de tener la PCB.

Cuando llegaron los PCB, estaba muy emocionado, soldé la batería, Pro-Micro y SIM800 y traté de ejecutarlo. Sin conexión. Lo controlé con multímetro y todo parecía estar bien, hice una prueba por separado en una placa de pruebas y lo mismo, sin conexión …

Decidí usar un UNO en su lugar y no tuve problemas, aunque necesitaba soldar muchos cables entre los orificios Pro-Micro y el UNO.

Gestion de energia

El controlador no fue el único problema que tuve.

Mi idea fue aumentar el voltaje de la batería (3.7-4V a 5.0V) con un chip RT9261A. Este chip en sí no puede manejar grandes corrientes. Por lo tanto, controla un pequeño interruptor BJT-NPN. El voltaje de la compuerta NPN se filtra a través de una resistencia y un capacitor. Los valores son directamente de la hoja de datos.

El impulsor funcionó bien sin carga, cuando conecté una carga mínima de 0.1 mA, el voltaje se redujo inmediatamente al voltaje de la batería. El refuerzo no pudo hacer su trabajo. Afortunadamente, hice un lugar para usar un refuerzo preparado (también de eBay). Este impulsor funcionaba bien, pero tenía un problema: el voltaje de salida es de 5.2V. No es realmente un problema, pero volveré a él en la sección de botones.

El refuerzo causó otro problema que realmente no estaba pensando antes. Tenía un ruido de alta frecuencia. Mientras el tablero esté sobre la mesa, no es un problema, pero al llamar, pude escucharlo demasiado. Debería encontrar uno de mayor frecuencia.

Para la pantalla se necesita 3.3V. Este voltaje se realiza con un convertidor CC-CC PAM2305 ("Hand1_VoltReg1"). De nuevo, el dispositivo es muy simple y solo requiere un inductor ("Hand1_L2") para funcionar. El condensador “Hand1_C3” es para la estabilidad de voltaje.

Botones

Los botones funcionaban bien con la versión de tablero. Esperaba lo mismo con el PCB, pero no era tan simple. Primero, como las conexiones eran diferentes, las referencias de voltaje fueron cambiadas. Tuve que ajustar los valores en bruto en el script. No es realmente una gran sorpresa.

Hice estos ajustes de valor bruto mientras la UNO estaba conectada a la computadora. Con el cable todo funcionaba como debía. Inmediatamente después de quitar el cable, los botones no funcionaban en absoluto. ¿Por qué? Me preguntaba a mi mismo

Problema muy interesante. Mi convertidor boost tiene 5.2V como salida, pero la referencia de UNO es hasta 5.0V. Por lo tanto, los dos últimos voltajes de los botones ya estaban fuera de la escala medida (ambos tenían un valor bruto de 1023). Con otros botones pude hacer otra ronda de corrección y luego volvieron a funcionar, pero no pude usar los botones "*" y "#". En realidad no es realmente un problema, pero todavía hay algo en que pensar para la próxima vez.

Filtrar

Cuando uno mira el esquema de Adafruit o MR, siempre hay un filtro para el micrófono y el altavoz. Comprendiendo por qué un filtro podría ser útil, no estaba realmente pensando mucho y simplemente lo copié. Los dos son casi idénticos, así que pensé que este es el camino.

Después de ensamblar el PCB, noté inmediatamente que algo es extraño con el altavoz. Realmente no estaba funcionando. Después de que quité el filtro todo estaba funcionando de nuevo. Algunos controlando lo que estaba mal noté una conexión abierta y eso causó las dificultades. Al menos esto podría decir que fue directamente mi error y debería haberlo notado.

Así que sí, el diseño sin filtros parece funcionar lo suficientemente bien, por lo tanto, para empezar, no hay que preocuparse por eso.

Zumbador

El pin "Anillo" de SIM800L se puede usar para que un zumbador le avise si está llegando un mensaje. El pin será naturalmente alto siempre que no haya mensajes. Eso significa que se puede usar un transistor PNP. Hice eso, pero nuevamente no funcionó y tuve que desconectarlo. De todos modos, no me gusta mucho el zumbido, por lo que no fue una verdadera pérdida para mí.

Software

El programa principal es el mismo que antes, pero los valores sin procesar de los botones deben cambiarse. Los principales problemas con el código están relacionados con el bucle de código principal. Estaba planeando que cuando presiono el botón "A", todo se cancele, si está entrando una llamada o estoy llamando o cuando tengo el número escrito, todo vuelve a la etapa cero. En realidad, no funcionó realmente, y para cancelar o finalizar una llamada necesitaba desconectar la alimentación. Un pequeño problema de software.

Para medir los voltajes de los botones, aquí hay otro boceto, esta vez los valores se muestran en la pantalla 5110.

Paso 9: Resumen

A pesar de que mi diseño tenía varios errores y sorpresas, pude modificar todo para que al final la llamada funcionara. Ahora volvamos al dibujo de PCB y al código escrito.

Algunos otros proyectos e imágenes: drTonis