Qué hacer el fin de semana: control remoto por intercomunicador, reasignación sin presupuesto de Nextion, enfrentamiento con Onlaym



A veces los viernes la ficción se considera aceptable aquí. Hoy, por supuesto, no es viernes, pero no es del todo ficción, sino tres mini novelas que tienen algo que ver con mi vida.

Un lector apresurado también puede preguntarse qué relaciones pueden realmente conectar el intercomunicador y el proveedor de Internet. Y será correcto, porque yo tampoco llegué inmediatamente a esto.

Pero sobre todo (Arduino, trucos de vida banales, disputas telefónicas) en orden.



Sim-sim, abre!


Para ser honesto, el control remoto del intercomunicador según mi versión es casi inútil, y me di cuenta de esto antes de comenzar. Por lo tanto, para justificar la empresa, tuve que usar todo el poder de la imaginación para llegar a un par de casos, como dicen.

Para empezar, decidí que de esta manera dejaría que los invitados se calentaran en el porche, si aún no había logrado correr a casa. O no me molestaré especialmente en obtener las llaves con anticipación; después de todo, puede configurar el teléfono para que me dé la orden de abrir la puerta cuando llegue a la casa.

Para la gente común suena bastante salvaje, pero como dicen, por aspera ad astra.

Y realmente quería usar de alguna manera un par de relés en el caso, que han estado inactivos en el controlador central desde el comienzo de su operación. La situación, de hecho, es ridícula: en ese momento solo había un bloqueo para 4 relés disponibles, de los cuales solo se necesitaban dos. Y no quería esperar otro mes para el bloqueo de dos relés, así que deduje lo que tenía a mano e inmediatamente comencé a preocuparme por la redundancia.

Sin embargo, a los intercomunicadores. En general, la apertura automática de un sistema de intercomunicación no es algo exclusivo. Por ejemplo, aquí en Geektimes, camarada En 2013 (cuando el dólar era 30), Cluster no solo hizo un control remoto, sino también un contestador automático para los invitados .

Esta es, con mucho, la cosa más genial que he visto en esta clase.

Pero mucho antes, los visitantes de RadioKota y muchos otros foros temáticosse divirtió con dispositivos como "abridor" - desbloquear el intercomunicador inmediatamente en una llamada.

No iba a repetir ni lo uno ni lo otro. El primero, porque es difícil y porque ya tenía un controlador que funcionaba, que planeaba dar nuevos poderes. El segundo por razones más obvias: demasiados detalles y muy poco sentido, me disculpo si ofendí a los autores.

Sentido, por supuesto, para mí, y para nada. Es decir, categóricamente no me gusta el esquema, que hospitalariamente abre la puerta a cualquiera que marque un número de apartamento.

De ahí los requisitos básicos para mi abridor:

1) Uso de un controlador central para controlar a través de Internet y radio
2) Protección mínima contra el acceso no autorizado
3) mínima interferencia en el interior

Inicio



Comencé familiarizándome con el principio de funcionamiento del intercomunicador, que tomé prestado aquí :

El tubo funciona de manera muy simple: cuando se coloca el tubo, tiene una resistencia de 50 ohmios, cuando se retira el tubo, la resistencia es de aprox. 400 ohmios, cuando se presiona el botón de desbloqueo, la resistencia se mide en kiloohmios ... Cuando no hay llamada, no hay voltaje en la línea. Cuando entra una llamada y el teléfono pone una corriente grande y el voltaje resulta ser pequeño 5-7V, cuando el teléfono está ausente y la resistencia se llama al infinito y el voltaje es máximo aprox. 15 V cuando el teléfono está apagado, aproximadamente 10 V. Cuando se presiona el botón de voltaje, el máximo es de aprox. 15V: presionar el botón equivale al salto de línea.


En el caso de Digital, esto es ligeramente diferente, ya que la documentación del teléfono, pero tenía KM-2NO (por cierto, expreso mi gratitud a Digital por publicar el esquema) indica:

1. Consumo de corriente en el modo "Talk" 18-22 mA
2. Voltaje de línea con un tubo instalado en la carcasa 1.5–2.5 V
3. Voltaje de línea con un tubo arriba 5.8-6.5 V


Por lo tanto, me familiaricé con más detalle con el diagrama de circuito de mi tubería:



y descubrí que todo es exactamente igual en términos de resistencia, y lo más probable es que el resto de la lógica de la Digital no sea diferente de la Visita.

Llamo la atención sobre el hecho de que mi modificación es sin un LED. Pero esto resultó ser correcto, ya que este hecho hace que sea muy fácil transmitir información de llamadas al controlador central.

A saber: la llamada suena, el LED "se enciende", el optoacoplador se enciende, en el pin del controlador tenemos un cambio de nivel de mayor a menor.

Entonces, en lugar del LED, instalé mi optoacoplador 4N35, cuya salida envié directamente al Arduino. De acuerdo con el esquema estándar de la misma Internet:



Y como quería sobrevivir con un mínimo de detalles y recursos de controlador disponibles, de los cuales los pines digitales eran los más valiosos (Uno no era suficiente para ellos), en lugar de una resistencia pull-up de 10K, utilicé la resistencia pull-up incorporada de Arduino.

Cuando se conecta a un pin digital, se ve así:

#define ringPin _

pinMode(ringPin, INPUT_PULLUP);


Cuando se conecta a un pin analógico:

#define ringPin _

pinMode(ringPin, INPUT);
digitalWrite(ringPin, HIGH);


Decidí colocar el optron del microcontrolador. No puedo justificarlo, pero pensé que hay menos riesgo de falsos positivos por posibles recogidas. Es posible que esté equivocado, pero hasta ahora todo es normal con consejos. No lo son.

En cuanto a la tierra en el ejemplo anterior, debe comprender: aunque la tierra parece ser común en el diagrama, esto no es así; de hecho, en realidad hay un aislamiento optoelectrónico. Bueno, para eso él es un ejemplo.

¡Deshazte de mí!


La decisión de deshacerse por completo de los circuitos de intercomunicación no llegó de inmediato, sino inevitablemente. Por cierto, recordé mucho el caso de hace seis años, cuando vi cómo se formó un momento incómodo con una cerradura electromagnética durante la instalación de un ACS.

No sé cómo sucedió, pero resultó que el castillo funcionaba de alguna manera. Ese "arrastre", luego nada en absoluto, y los propios instaladores ya se rompieron la cabeza. Pero al final se sugirió que tenían un cortocircuito inesperado en algún lugar (o algo así) en los circuitos de control. Por supuesto, verificamos todo, por supuesto, sin mucho éxito, ya que se configuraron claramente de acuerdo con las instrucciones.

Se agregó aceite al fuego por el hecho de que exactamente la misma cerradura tenía exactamente la misma configuración, pero funcionó bien en el otro piso.

Cuánto tiempo, brevemente, decidieron que el asunto estaba en la puerta misma, en la cual está conectada la cerradura. En mi opinión, sugirieron que cuando se instaló, se clavaron en la armadura, que, a su vez, estaba conectada a tierra, lo que provocó efectos inesperados en la cerradura (que, posiblemente, tenía una cerradura de control en la carcasa).

En general, resolvieron bastante tiempo y tediosamente. Y no quería repetir lo mismo en casa.

Por lo tanto, no guardé cables y conecté los contactos del relé de la manera más simple:

1) Normalmente cerrado un relé - en serie con el botón arriba SW1 (porque este botón está cerrado en el estado normal)
2) Normalmente abierto otro relé - en paralelo con el botón de apertura de la puerta SB1 ( porque este botón normalmente está abierto)

Los contactos de control de relé, por supuesto, conectados a los pines digitales libres (hurra, todavía eran) del microcontrolador.

En total, es fácil imaginar que se necesitaron seis cables: dos para el optoacoplador y cuatro más para el relé.

Pido disculpas por el primitivismo de la ilustración:

Desde el intercomunicador




Por arduino




Los relés aquí se muestran exclusivamente esquemáticamente. Desde entonces, repito, utilicé módulos de relés listos para usar con relleno completo: optoacopladores, transistores, diodos, etc. Recomiendo no conectar relés desnudos a Arduino.

... y no me llames más!


Ya en esta etapa, pude abrir fácilmente el teléfono de

la puerta a través de Internet o la red de área local desde una computadora o teléfono inteligente de acuerdo con el siguiente principio: 1) En el momento en que suena el teléfono de la puerta, el controlador entra en modo de permiso para abrir la puerta durante 40 segundos. El tiempo se selecciona en función de la documentación del interfono digital, donde se indica que la duración de la señal de llamada es exactamente 40 segundos.

Es decir durante más tiempo, no tiene sentido permanecer condicionalmente abierto.

2) Al recibir un comando abierto a través de Internet (HTTP POST), el controlador conmuta secuencialmente el relé. Primero, abre el relé de tubo, que simula su ascenso. Luego, después de una breve pausa, el relé del botón de apertura se cierra, simulando así su presión. Después: "suelta" el botón y "cuelga" el teléfono.

El banco de pruebas fue muy primitivo:



Sería posible detener esto si yo, como orgulloso propietario de KTsDV-12-2, no fuera consciente de lo inconveniente que es, correr por el control remoto o el teléfono cada vez que necesite encender / apagar algo.

Y, en particular, si no hubiera terminado recientemente una estación meteorológica de escritorio con una pantalla táctil y, al parecer, no tiene un potencial completamente desarrollado.



En resumen, rápidamente (en realidad no) agregué a la estación meteorológica el transmisor de 433 MHz más común y vulgar con modulación de amplitud, cuyas toneladas se venden en Aliexpress por dinero ridículo.

Como resultado, la estación meteorológica se ha convertido en otro punto de control para el intercomunicador y, por lo tanto, si suena una campana y te sientas a su lado, no tiene sentido romper el teléfono, porque desde la pantalla puedes:

1) Abra la cerradura

2) Levante el auricular y lentamente (de acuerdo con la documentación, la conversación dura 1.5 minutos versus 40 segundos de la llamada), vaya al intercomunicador, responda y decida si abrir o no

3) Contestar la llamada (el controlador contesta e inmediatamente "Cuelga")

Para esto, por supuesto, tuve que modificar ligeramente el código y la interfaz de la estación meteorológica, pero en el camino descubrí que hay errores molestos en la visualización de gráficos (como resultó, tengo ADN, pero esta es una historia diferente).

La nueva interfaz, por cierto, ahora no se parece a HAL en absoluto. Ahora, todo es tan colorido y divertido que solo tienes que reír. Y ya ves, entiendo: no bebí batidos, los hipsters no me mordieron, no había lamberseks en la familia, y el material me atrae como nunca antes en mi vida:



Esta pantalla reemplaza los datos climáticos cuando suena el intercomunicador: en este momento, el controlador central emite un comando de radio, al que responde la pantalla meteorológica.

Puede ser un poco ilógico aquí, pero la campana en el centro le informa principalmente sobre la llamada de intercomunicador. Al presionarlo (ilógico aquí) se silencia el sonido del intercomunicador de la manera más bárbara, al imitar el proceso de subir y bajar el auricular.

El castillo de la izquierda es la apertura del castillo. Auricular a la derecha: levantar el auricular para simular el inicio de una conversación.

La pantalla cambia a la principal después de 40 segundos desde el inicio de la llamada, y no inmediatamente presionando el botón de icono. Esto le permite presionar varias veces si el controlador repentinamente no "escuchó" un comando, lo que no es raro dado el tipo de canal de radio utilizado.

Algoritmos


Como mencioné, al principio era modesto y solo quería una cosa: abrir el intercomunicador por comando desde el teléfono y en el momento de la llamada.

Pero después de jugar un par de días, me di cuenta de que pararse frente al intercomunicador y tocar la pantalla es una tarea bastante aburrida, y es mucho más interesante permitir una apertura "retrasada" cuando te acercas a la entrada. Luego solo queda marcar el número del apartamento en el panel del interfono y listo, la puerta está abierta.

Finalmente, pensé que en esta situación, probablemente tenga sentido prohibir la apertura, en general.

Pero luego se recuperó, luego se soltó, tomó una herramienta más útil, popularmente llamada navaja de afeitar de Occam, y rápidamente se deshizo de entidades adicionales. A saber: como estaba haciendo el control remoto, no era para apagarlo. Por lo tanto, el apagado no es necesario en absoluto.

En segundo lugar, de acuerdo con el pensamiento sobrio (y no como de costumbre), resultó que no había una diferencia especial entre abrir por un comando inmediatamente en el momento de la llamada o por un comando dado.

Finalmente, volviendo a la ergonomía del control, quiero decir que cuantos más modos, menos gente común los usará. Sí, soy aburrido, pero cuando imaginé que tenía tres modos para diferentes ocasiones, me di cuenta de que todavía estaría usando uno.

Por lo tanto, el modo es uno y el comando es uno, y hay dos procesadores:

1) Si suena el intercomunicador, el controlador permite la apertura dentro de los 40 segundos desde el inicio de la llamada

2) Si el comando de apertura se recibe primero, el controlador permite la apertura y espera una llamada dentro de N minutos desde el momento en que se recibió el comando (esto es para preparar el intercomunicador para abrir en el camino a la casa)

Puede haber dos fuentes del comando de apertura:

1) HTTP POST- una solicitud a través de una red local o Internet (por ejemplo: myserver.com/?sim-sim-openup ), es decir puede abrir al menos desde Kuala Lumpur

2) El comando de radio desde los paneles o botones de la casa (en mi implementación, a través de la biblioteca RC-Switch )

Y dado que toda la estructura está conectada al teléfono sin afectar su funcionamiento, el intercomunicador puede continuar usándose de la manera habitual (botón de timbre-auricular-hola-hola), es decir. nacionales, no pueden apreciar los méritos del progreso tecnológico, y no están obligados a profundizar en los detalles.

Bonos repentinos


Incluso si no utiliza la función de apertura de puerta, ahora resulta que el controlador notifica regularmente que alguien está rascando la puerta de la entrada a través del intercomunicador. Para mí, como persona curiosa, esta información no carece de interés, y ahora la recibo regularmente.

Más importante aún, esta función continúa funcionando incluso si apaga el auricular con su interruptor. Potencialmente, esto significa que ahora hay menos posibilidades de dejar el intercomunicador desactivado, si de repente necesita excluir temporalmente la posibilidad de sus llamadas.

Desafortunadamente, el circuito de intercomunicación es tal que cuando se apaga, se hace imposible controlar remotamente el bloqueo (parece que la unidad central cree que en este caso el teléfono está "colgado", independientemente de su posición real).

Y paisajismo


Como me esforcé por lograr una interferencia mínima en el interior, tuve que tomar una decisión sobre cómo conectarme al controlador central, sobre la base de que el controlador y el interfono estaban en diferentes lados de la puerta, y el controlador tenía electricidad, pero el interfono no.



Al final, decidí que sería mejor estirar el cable detrás del marco de la puerta y cerrar sus fragmentos con paneles decorativos impresos en una impresora 3D que ocupar otro tomacorriente con una fuente de alimentación, no está claro cómo tirar de su cable al auricular del teléfono y bloquear el canal de radio entre el auricular y el controlador.



Y creo que en mis condiciones esta es la mejor opción. Sí, y el relevo se puso en marcha, pero con un canal de radio, nuevamente habría permanecido en reserva.

Reasignación de Nextion


Hablando de la pantalla del clima de escritorio (estación meteorológica, si lo desea), mencioné que durante el proceso de acabado logré dañar el componente principal: la pantalla táctil Nextion.

El desglose no afectó el funcionamiento de su microcontrolador y pantalla de datos a bordo, pero el panel táctil casi falló. Sin embargo, experimentalmente, descubrí que incluso si no presiona demasiado la placa Nextion en un lugar determinado, de esta manera puede restaurar la sensibilidad de la mitad izquierda (aproximadamente) de la pantalla.

Este truco funciona inestable y no siempre, pero con la frecuencia suficiente para que pueda soportarlo, pensando en pedir una nueva pantalla.

Por supuesto, esto me hizo feliz y triste. Por un lado, fue posible lograr una operabilidad parcial. Por otro lado, me gustaría jugar un poco más con las listas. Y de repente me di cuenta de la estúpida trampa en la que caí: por alguna razón estaba obsesionada con el uso de toda el área de la pantalla, cuando podía transferir libremente los botones de "no funciona" al área de trabajo.

Entiendo que para muchos esta es realmente una decisión banal. Pero me gustaría compartir alegría inocente con aquellos que, como yo, aman ir a los extremos.

Entonces, lo descubrí, cambié ligeramente el tamaño de los botones, dibujé un nuevo circuito de control virtual en mi cabeza y ¡listo! Hemos restaurado casi por completo la funcionalidad de una pantalla parcialmente eliminada.

Fue: se



convirtió en:



En el camino, sin embargo, tuve que matar a un perfeccionista en mí mismo y rehacer la pantalla de control de entrada del teléfono original a una mínimamente funcional:



Vivir




Cuando el soporte técnico no es ale


Parecería que en todos estos altibajos sería posible terminar, si no fuera por un detalle: de repente descubrí que el intercomunicador (y detrás de él el resto de la automatización) dejó de controlarse al acceder desde redes externas.

Es decir, todos los comandos funcionaron sin problemas cuando se conectaron a Internet a través de la red doméstica y a direcciones externas (y no de acuerdo con el tipo interno 192.xxx.xxx.xxx), pero igualmente se negaron sin problemas a ser ejecutados desde las redes de otros operadores (probé dos).

Debe comprender de inmediato que los comandos se transmiten a través de una solicitud HTTP a un puerto externo específico del enrutador, y desde allí ya se redirigen a la IP interna y al puerto necesarios.

Y este esquema ha funcionado sin los más mínimos problemas desde su lanzamiento en 2013 hasta que algo se rompió en el actual. Y todavía estoy seguro de que no es mi culpa. Pero no sé cómo verificarlo.

En realidad, al principio quería jurar con Beeline, porque inicialmente pensé que el problema estaba en Internet móvil. Pero luego me recuperé, encontré otro proveedor, lo probé y descubrí que a través de él el mismo problema.

Luego llamé a Onlaym y, como pude, le expliqué la esencia de las afirmaciones. Y en respuesta, me explicaron popularmente que:

:
TCP/25 – -;
TCP/135-139, TCP/445 UDP/135-139 – , MS Windows;
TCP/23, TCP/161, UDP/69 UDP/161– .

, , .


Yo, a su vez, insistí en que mi puerto a) no entra en este rango, b) no funciona, como se esperaba yc) no cambié nada.

¿Qué tal una pared de guisantes?

Bueno, ¿qué debo hacer? Entonces, cortésmente, le expliqué que, aunque entiendo que mis desafortunados 450 rublos al mes no les harán el mal tiempo, pasaré de ese sinsentido a buscar el mismo sinsentido, pero al menos funciona.

En respuesta, murmuraron nuevamente que me estaban proporcionando IP y luego todos mis problemas. Bueno mío, decidí, luego mío. Y por una decisión decidida, primero verifiqué la operabilidad del sistema en otro puerto (cambiado a una unidad): funciona. Y luego realizó una configuración flexible del número de puerto en Tasker, a través del cual, de hecho, el volante es automático.

En realidad, a lo que describo mis sufrimientos: objetivamente realmente quería entender quién estaba equivocado en tal situación. Porque me siento como un completo idiota: reinicié el enrutador y verifiqué la configuración (además, por iniciativa propia y no por indicación de "especialistas"), y aún así me enviaron al infierno, insinuando mis manos torcidas.

Fuera de la pantalla


En conclusión, que utilicé para la construcción del siglo:

1) KTSDV-12-2 - 1 pc.
2) Auricular digital KM-2NO - 1 pc.
3) Optoacoplador 4N35 - 1 pc.
4) Cable plano de 10 núcleos (se usaron seis, pero póngalo todo, por si acaso) - 3 m.5
) Conectores al cable - 2 piezas. papás y mamás
6) Pantalla meteorológica casera con pantalla táctil Nextion - 1 pc.
7) Transmisor de 433 MHz ( de un kit como este ) para modificar la pantalla del clima - 1 pc.
8) resistencia de 1 kΩ para optoacoplador - 1 pc.

Opciones:

interfaz actualizada para Nextion

Código de prueba (antes de la integración con KTSDV-12-2 y un conjunto completo de funciones de servicio, solo para comprender el tren de pensamiento)
#include <RCSwitch.h> //   http://code.google.com/p/rc-switch/


#define ringTimeOut 40000 //       2094
#define openTimeOut 300000 //    allowOpen        
#define handsetPin A3 //    0
#define openPin A4 //    (1)
#define ringPin 7 //   (3)
#define ringCode 360500 //        
#define doorBell 3395840 //       
#define openCode 255899 //     
#define openDelay 1500 //    
#define handsetDelay 2500 //    
#define txPin 8

unsigned long ringTime, openTime; //    
boolean ring = false;
boolean ringRepeat = false; //       
boolean allowOpen = false; //     

RCSwitch mySwitch = RCSwitch();

//  
void openDoor() {
    
    digitalWrite(handsetPin, LOW);
    delay(handsetDelay);
    digitalWrite(openPin, LOW);
    delay(openDelay);
    digitalWrite(openPin, HIGH);
    digitalWrite(handsetPin, HIGH);
    ring = false; //   
    allowOpen = false; //      
    // sendMail(37); //           
}


void setup() {
  Serial.begin(9600);
  mySwitch.enableTransmit(txPin); //  
  mySwitch.enableReceive(0); //  
  pinMode(handsetPin, OUTPUT); //    
  pinMode(openPin, OUTPUT);
  pinMode(ringPin, INPUT_PULLUP  );
  digitalWrite(handsetPin, HIGH); //  
  digitalWrite(openPin, HIGH);
  Serial.println("Ready");
}

void loop() {
  
  if (digitalRead(ringPin) == LOW && ring == false) { //            
    ring = true; //    
    ringTime = millis();
    // sendMail(36); //     
    mySwitch.send(ringCode, 24);
    Serial.println("Sent ringCode");
    if (ringRepeat == true) { //      
      mySwitch.send(doorBell, 24);
      Serial.println("DoorBell repeat");
    }
    Serial.println("Ring-ring!");
  }

if ((millis() - ringTime) > ringTimeOut && ring == true) { //   40  (   )    
  ring = false; //   
  Serial.println("Ring reset");
  // sendMail(38); //      
}

//   
if (ring == true && allowOpen == true) {
  openDoor(); //  
  Serial.println("Door opened via net");
}

if (ring == false && allowOpen == true) { //  ""   
  if ((millis() - openTime) > openTimeOut) { //       
   allowOpen = false; 
   // sendMail(39); //     
  }
  
}

//   

if (mySwitch.available()) { //
    int value = mySwitch.getReceivedValue();
    if (value != 0) {
      Serial.println(mySwitch.getReceivedValue());
      switch (mySwitch.getReceivedValue()) {
        
        case openCode: //   
          if (ring == true) {
            mySwitch.disableReceive();
            openDoor(); //  
            Serial.println("Door opened via radio");
            mySwitch.enableReceive(0); //   
          }
          break;
    }
    mySwitch.resetAvailable();
  }

//   
}

}






Tomé las fotos para la interfaz en el maravilloso sitio web de Pixabay .

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


All Articles