Proyecto IRotary

En el que un teléfono con un marcador recibe dispositivos electrónicos para trabajar en redes móviles y puede funcionar según lo previsto.


Esta es una descripción de proyecto de tres partes, que tuve que escribir como la finalización solemne del proyecto en sí, pero como retrasé demasiado este punto, decidí describir todo el proyecto como una exposición única y coherente.

Si alguien recuerda, soy una persona muy enojada. Me enojo fácilmente cuando hablo por teléfono, pero en este momento no hay una buena manera de expresar mi molestia. Echo de menos los viejos tiempos, cuando podías voltear con fuerza el auricular del dispositivo para aliviar la tensión, pero los teléfonos móviles no brindan esa oportunidad. Y me propuse crear un teléfono móvil con un marcador.

Entonces nació iRotary

Proyecto IRotary



Belleza

Comencé comprando un teléfono real de la vieja escuela con un marcador rotativo, justo el que usé cuando era niño. Elegí un glorioso color naranja para que la belleza de iRotary no sea inferior a la ambición del proyecto.

La foto fue tomada desde el mismo teléfono el primer día de la compra, con cables y todo lo demás. Se ve muy bien hoy, aunque tiene un 50% menos de cables, lo cual es bueno en el caso de los teléfonos móviles.

Todo el proyecto me costó $ 150 por piezas y $ 2000 por el tiempo de desarrollo: tomó dos días completos para ensamblar, y duró varios meses de todo tipo de acciones, esperando piezas de repuesto, usando piezas de repuesto, esperando las siguientes piezas, etc. El primer paso, por supuesto, fue extraer todo lo innecesario y reemplazarlo con todo lo que necesita.

Paso 1: primero, ¡wah!



¡Imagina cómo se siente hacer una fresa así!

El mejor candidato para las interfaces con el marcador antiguo, por supuesto, es el Arduino. También será responsable de trabajar con GSM. Es ideal para leer pulsos de un marcador y convertirlos a un número entero, que luego puede usarse para marcar un número.

Las comunicaciones son procesadas fácilmente por el escudo GSM. Este es un dispositivo periférico que se conecta al Arduino (en las calles lo llamamos un "escudo"). Es muy simple de programar, viene con una biblioteca con la mayoría de las funciones necesarias: leer SMS, enviar y recibir llamadas, enviar DTMF, etc.

El siguiente paso fue escribir código para convertir el dial a números. El marcador funciona así: después de una rotación forzada, comienza a girar hacia atrás, toca el interruptor una vez por cada número marcado. Esto significa que si marca tres, el conmutador enviará tres señales, ya que pasarán tres números. Para determinar el número marcado, solo necesita contar cuántas veces se ha abierto y cerrado el interruptor.

Esto fue fácil de hacer con el siguiente código, que simplemente incrementa la variable cada vez que el voltaje del interruptor cambia de bajo a alto:

void readPulses() {
    char pinPulse = digitalRead(PIN_PULSE);
 
    if (pinPulse == HIGH && edge == 0) {
        pulses++;
        edge = 1;
    } else if (pinPulse == LOW && edge == 1) {
        edge = 0;
    }
}


Todo lo que debe hacer a continuación es recopilar los números y hacer la llamada cuando el número de dígitos llegue a 10. En Grecia, todos los números son de diez dígitos, con la excepción de los números de teléfono, un código que agregaré más adelante.

Agregar números a una línea a su vez es un proceso simple, se realiza con el siguiente código.

void readDialing() {
    char digit;
    bool finalDigit = false;
    char pinDialing = digitalRead(PIN_DIALING);
 
    if (pinDialing == 1 && dialing == 0) {
        digit = getDigit();
        if (digit != -1) {
            number += (int)digit;
            showNumber(number);
 
            if (number.length() == NUMBER_LENGTH) {
                dialNumber(number);
            }
        }
    }
    dialing = pinDialing;
}


Todavía no había enviado una llamada, ya que el escudo aún no estaba conectado; este era el siguiente paso. Aquí hay un prototipo en el trabajo:



Hizo un buen dinero de inmediato, incluso con la vieja y destartalada máquina que encontré para hacer prototipos. El marcador es una cosa asombrosamente precisa, y debería ser así, de lo contrario, podría haberse metido en el lugar equivocado y no haberlo descubierto hasta que un tipo le respondió y llamó a su novia y decidió que ella lo estaba engañando. , y lanzar un escándalo, pero de hecho es solo un cambio de basura. Es por eso que el número de divorcios se ha desplomado después de la introducción de los marcadores de tonos digitales. Además, se redujo la violencia contra las personas con una gran cantidad de ceros en las habitaciones.

Paso 2: quién no toma riesgos, eso no es GSM-it


El siguiente paso después del reconocimiento exitoso de números es agregar la capacidad de realizar llamadas móviles. Conecté el escudo con Arduino y agregué el código necesario para las llamadas:

void dialNumber(String number) {
    call.Call(numArray);
}


Emocionante

Aunque era tan simple, era genial, porque la mayor parte de la funcionalidad del teléfono móvil (marcar y llamar) estaba lista. Así es como funciona:



En este paso, me encontré con varias dificultades. El primero es dónde colocar el Arduino con el escudo en el teléfono, ya que prácticamente no había espacio debido a los componentes del teléfono. Para resolver este problema casi insoluble, tuve que comprometerme: eliminé la llamada, que todavía no podía ser alimentada por la batería (necesita 50 V), lo que redujo la autenticidad del dispositivo. ¿Por qué necesito un teléfono con un marcador si no puede producir el sonido familiar de un dzzzzzzzzzzzzzzzzz?

¡Y llegó la inspiración! La solución fue simple: dejar que el teléfono funcione en modo silencioso, ser cortés, para no molestar a otras personas, pero hermoso.

Después de resolver dos problemas de una sola vez, sentí que mi alegría crecía. Otro problema era que de alguna manera era necesario conectar la entrada y la salida del escudo al teléfono. Aquí las excusas no ayudarán, ya que ningún teléfono que se precie será sordo y tonto, así que primero decidí comprar un pequeño micrófono y altavoz, y ponerlos en el auricular. Y casi lo pedí cuando de repente decidí: primero probaré el micrófono y el altavoz existentes.

Rápidamente salté al Kuhlmann y dibujé un circuito muy complicado que consta de una gran cantidad de componentes: tres cables y dos conectores. Poniendo todo junto, inserté los conectores en las entradas y salidas del escudo e hice una llamada.

- hola! - dijo mi voz
- hola! Le respondí alegremente.
- Te puedo escuchar! Me dije a mi mismo.
- Y yo soy tu! - sonó la respuesta.

La prueba fue un éxito rotundo. Los componentes existentes no solo se ajustan al escudo, sino que también producen un auténtico sonido de susurro y comentarios, que logré olvidar.

La diferencia entre un teléfono móvil y un teléfono de este tipo es que el primero no necesita reproducir su voz a través del altavoz. Por lo tanto, le parece que su voz es más baja de lo que es (ya que conecta el oído con el altavoz) y grita más, como si estuviera tratando de escuchar música en los auriculares mientras habla con alguien.

Y en el teléfono antiguo, puede escuchar su voz cuando habla, lo cual es agradable, y eso no requiere que grite a su interlocutor. Este es un efecto agradable que hemos perdido.

Aquí está el avance para el producto final:



Los tonos de llamada son falsos, pero es Hollywood.

Paso 3: paso más allá


Cuando el audio, el reconocimiento de números y el GSM han funcionado, es hora de conectar el resto de los controles: una palanca, un botón y un LED extraño, un indicador de descarga.

Es mejor hacer esto a través de eventos. Arduino no funciona así porque constantemente tienes que preguntar: "¿Se presiona el botón?" muchos miles de veces por segundo, pero la arquitectura de eventos es fácil de falsificar usando un pequeño código.

Quería levantar el teléfono de la palanca para contestar la llamada si sonaba, y volver a colocar el teléfono en la palanca interrumpió la llamada actual. También quería que se ignoraran todas las señales de control cuando el auricular estaba en la palanca.

Esto es fácil de lograr con una máquina de estado. Esto significa que hay una variable que contiene el estado actual del teléfono: solo, hablando, sonando, marcando, etc. Y si ocurre algún evento (presionando el botón), simplemente pueden verificar en qué estado se encuentra el teléfono y realizar una acción o no.

Eventos

Los eventos se pueden reconocer de la misma manera que los números. Verificaremos si el estado del botón cambia e iniciaremos el evento solo si detectamos el cambio (de lo contrario, dispararíamos el evento miles de veces cuando preguntamos si se presionó el botón y Arduino respondería "sí" miles de veces por segundo).

#define PIN_BUTTON_HALF 6
 
char buttonHalfEdge = 0;
 
void checkButtonHalfPressed() {
    if (digitalRead(PIN_BUTTON_HALF) == LOW) {
        if (buttonHalfEdge == 0) {
            buttonHalfPressed();
        }
        buttonHalfEdge = 1;
    } else {
        if (buttonHalfEdge == 1) {
            buttonHalfReleased();
        }
        buttonHalfEdge = 0;
    }
}


Este botón tiene dos estados, medio presionado y completamente presionado (o medio presionado y presionado por completo, si le pregunta al pesimista). El código define ambos estados, y otros eventos se manejan de la misma manera.

Puede ver el funcionamiento del sistema en el siguiente video, donde se encuentran los componentes en el estuche, pero aún necesita estar conectado a USB para obtener energía.



Belleza!

Paso 4: energía de la batería



Conector USB para cargar la batería

Por supuesto, ¿qué tipo de teléfono móvil sería si no fuera móvil? ¡No sería un teléfono móvil! Entonces, las dos opciones para transportar el teléfono son una pequeña batería de 5 voltios y un circuito para cargar USB, o un cable muy, muy largo. Como el cobre es más caro que el oro hoy, y no estoy hecho de dinero, elegí la primera opción.

Necesita tres componentes:
  • ( , ). , , , .
  • , , – USB- «». USB-.
  • ( ). , , . , , , Arduino 5, .



Regulador y conjunto de carga

Una vez más, la batería y el regulador están conectados a la carga. La carga tiene un puerto USB (y usé un cable de extensión para enrutarlo a donde estaba el cable del teléfono), que se usará para cargar. El regulador arruinará todo y entregará el voltaje necesario a los componentes necesarios, de modo que pueda encender y apagar el teléfono durante el funcionamiento, y el voltaje no caerá.

También puede cargar el teléfono incluido, lo cual es conveniente. No sé cuánto dura la batería, no la he usado durante más de unas pocas horas, pero tal vez durante un par de días no pueda escribir a sus amigos desde su teléfono (necesita conectar una máquina de escribir). Intentaré probarlo algún día, pero por ahora solo diré que la batería dura meses, y puedes hablar durante semanas, y luego se venderá mejor, o al menos recogerá la cantidad requerida en un pedal de arranque.

Paso 5: no hay paso 5.



Los interiores están ensamblados

y el proyecto se ha completado. Después de tirar de los cables y empujar las cosas a lugares para los que no fueron diseñados, puede cerrar el caso en el que todo encaja bien, a menos que lo agite.

Puede comprender aproximadamente la ubicación de los componentes. Arduino está en la esquina superior derecha, debajo de él hay un escudo (se puede ver una antena sobresaliente), un cable de alimentación USB azul va al regulador conectado a la batería y al cargador, que va al conector de tipo madre en la esquina superior izquierda. Puede ver los cables para el micrófono y el altavoz (desde la parte superior derecha a la izquierda).

Los circuitos en la placa de circuito marrón a continuación son los circuitos originales del teléfono. No se usan, pero sería difícil quitarlos, y tal vez la palanca (una pieza de plástico transparente a la izquierda) no funcionaría sin ellos, lo que sería inaceptable.

Y ahora, como se prometió, el comercial final, en toda su belleza final. ¡Qué encanto! Asegúrese de enviarlo a todos sus amigos, incluso a aquellos con quienes no ha hablado durante mucho tiempo. ¿Qué podría ser más importante que volver a chatear con viejos amigos gracias al loco proyecto de internet de un tipo de Grecia? Por supuesto, nada!

Si te daña directamente hacer tu propio teléfono móvil con un marcador, y estás considerando escribir desde cero, pasar noches sin dormir haciendo ingeniería inversa de mis fragmentos de código, tengo buenas noticias para ti. Publiqué todo el código en línea porque soy una persona así.

github.com/skorokithakis/iRotary ¡

Dime cuánto ha cambiado tu vida este increíble proyecto en los comentarios en el artículo original o en Twitter! Smack!

Source: https://habr.com/ru/post/es396653/


All Articles