Alarma de seguridad de bricolaje gsm chip arduino. Alarma doméstica o uso de sensor de movimiento y monitor LCD con Arduino

Los sensores de infrarrojos (IR, IR) se usan comúnmente para medir distancias, pero también se pueden usar para detectar objetos. Al conectar varios sensores de infrarrojos al Arduino, puede crear una alarma antirrobo.

Visión general

Los sensores de infrarrojos (IR, IR) se usan comúnmente para medir distancias, pero también se pueden usar para detectar objetos. Los sensores de infrarrojos constan de un transmisor de infrarrojos y un receptor de infrarrojos. El transmisor emite pulsos de radiación infrarroja mientras que el receptor detecta reflejos. Si el receptor detecta un reflejo, significa que hay un objeto a cierta distancia frente al sensor. Si no hay reflejo, tampoco hay objeto.

El sensor IR que usaremos en este proyecto detecta reflejos en un rango específico. Estos sensores tienen un pequeño dispositivo de carga acoplada lineal (CCD) que detecta el ángulo en el que la radiación IR regresa al sensor. Como se muestra en la figura siguiente, el sensor transmite un pulso infrarrojo al espacio, y cuando un objeto aparece frente al sensor, el pulso se refleja de regreso al sensor en un ángulo proporcional a la distancia entre el objeto y el sensor. El receptor del sensor detecta y emite el ángulo y, con este valor, puede calcular la distancia.

Al conectar un par de sensores IR al Arduino, podemos hacer una simple alarma antirrobo. Instalaremos los sensores en el marco de la puerta, y alineando correctamente los sensores, podremos detectar cuando alguien entra por la puerta. Cuando esto sucede, la señal en la salida del sensor IR cambiará, y detectaremos este cambio leyendo constantemente la salida de los sensores con el Arduino. En este ejemplo, sabemos que el objeto atraviesa la puerta cuando la lectura del sensor de infrarrojos supera los 400. Cuando esto sucede, el Arduino activará una alarma. Para restablecer la alarma, el usuario puede presionar el botón.

Componentes

  • 2 x sensor de distancia IR;
  • 1 x Arduino Mega 2560;
  • 1 x timbre;
  • 1 x botón;
  • 1 x resistencia de 470 ohmios;
  • 1 x transistor NPN;
  • saltadores.

Diagrama de conexión

El diagrama de este proyecto se muestra en la siguiente figura. Las salidas de los dos sensores IR están conectadas a los pines A0 y A1. Los otros dos pines están conectados a 5V y GND. Un zumbador de 12 voltios está conectado al pin 3 a través de un transistor, y el botón que se usa para apagar la alarma está conectado al pin 4.


La foto de abajo muestra cómo pegamos los sensores al marco de la puerta para este experimento. Por supuesto, en caso de uso constante, instalaría los sensores de manera diferente.


Instalación

  1. Conecte los pines 5V y GND de la placa Arduino a los pines de alimentación y GND de los sensores. También puede suministrarles energía externa.
  2. Conecte los cables de salida de los sensores a los pines A0 y A1 de la placa Arduino.
  3. Conecte el pin 3 del Arduino a la base del transistor a través de una resistencia de 1K.
  4. Aplique 12 V al colector del transistor.
  5. Conecte el cable positivo del zumbador de 12V al emisor y el cable negativo al riel de tierra.
  6. Conecte el pin 4 al pin 5V mediante un botón. Por razones de seguridad, siempre es mejor hacer esto a través de una pequeña resistencia adicional para evitar un alto flujo de corriente.
  7. Conecte la placa Arduino a su computadora a través de un cable USB y cargue el programa en el microcontrolador usando el IDE de Arduino.
  8. Encienda la placa Arduino con una fuente de alimentación, batería o cable USB /

Código

const int zumbador = 3; // el pin 3 es la salida del zumbador const int pushbutton = 4; // el pin 4 es la entrada para el botón void setup () (pinMode (buzzer, OUTPUT); // establece el pin 3 en la salida pinMode (pulsador, INPUT); // establece el pin 4 en la entrada) void loop () (/ / leer la salida de ambos sensores y comparar el resultado con el umbral int sensor1_value = analogRead (A0); int sensor2_value = analogRead (A1); if (sensor1_value> 400 || sensor2_value> 400) (while (true) (digitalWrite (buzzer , HIGH); // habilita la alarma if (digitalRead (pulsador) == HIGH) break;)) else (digitalWrite (zumbador, LOW); // deshabilita la alarma))

Video

Hola a todos, hoy vamos a ver un dispositivo llamado sensor de movimiento. Muchos de nosotros hemos oído hablar de esto, alguien incluso se ha ocupado de este dispositivo. ¿Qué es un sensor de movimiento? Intentemos resolverlo, así que:

Sensor de movimiento o sensor de desplazamiento - un dispositivo (dispositivo) que detecta el movimiento de cualquier objeto. Muy a menudo, estos dispositivos se utilizan en sistemas de seguridad, alarma y monitoreo. Hay muchas formas de factores de estos sensores, pero consideraremos precisamente el módulo de sensor de movimiento para conectar a las placas. Arduino,y es de la firma RobotDyn. ¿Por qué esta empresa en particular? No quiero publicitar esta tienda y sus productos, pero fueron los productos de esta tienda los que fueron elegidos como muestras de laboratorio debido a la presentación de alta calidad de sus productos al consumidor final. Entonces, nos encontramos - el sensor de movimiento(Sensor PIR) de RobotDyn:


Estos sensores son de tamaño pequeño, consumen poca energía y son fáciles de usar. Además, los sensores de movimiento de RobotDyn también tienen contactos marcados con serigrafía, lo cual es ciertamente un poco insignificante, pero muy agradable. Bueno, aquellos que usan los mismos sensores, pero solo de otras compañías, no deben preocuparse: todos tienen la misma funcionalidad, e incluso si los contactos no están marcados, el pinout de dichos sensores es fácil de encontrar en Internet.

El principal especificaciones sensor de movimiento (sensor PIR):

Área de trabajo del sensor: de 3 a 7 metros

Ángulo de seguimiento: hasta 110 o

Voltaje de funcionamiento: 4,5 ... 6 voltios

Corriente de consumo: hasta 50 μA

Nota: La funcionalidad estándar del sensor se puede ampliar conectando un sensor de luz a los pines IN y GND, y luego el sensor de movimiento solo funcionará en la oscuridad.

Inicialización del dispositivo.

Cuando se enciende, el sensor tarda casi un minuto en inicializarse. Durante este período, el sensor puede dar señales falsas, esto debe tenerse en cuenta al programar el microcontrolador con el sensor conectado a él, o en los circuitos de los dispositivos ejecutivos, si la conexión se realiza sin usar el microcontrolador.

Ángulo y área de detección.

El ángulo de detección (seguimiento) es de 110 grados, el rango de distancia de detección es de 3 a 7 metros, la siguiente ilustración muestra todo esto:

Ajuste de sensibilidad (distancia de detección) y retardo de tiempo.

La siguiente tabla muestra los principales ajustes del sensor de movimiento, a la izquierda hay un ajustador de retardo de tiempo, respectivamente, en la columna de la izquierda, se da una descripción de los posibles ajustes. La columna de la derecha describe los ajustes de la distancia de detección.


Conexión del sensor:

  • Sensor PIR - Arduino Nano
  • Sensor PIR - Arduino Nano
  • Sensor PIR - Arduino Nano
  • Sensor PIR - para sensor de luz
  • Sensor PIR - para sensor de luz

En el siguiente diagrama se muestra un diagrama de conexión típico, en nuestro caso, el sensor se muestra convencionalmente desde la parte posterior y está conectado a la placa Arduino Nano.

Un boceto que demuestra el funcionamiento del sensor de movimiento (use el programa):

/ * * Sensor PIR -> Arduino Nano * Sensor PIR -> Arduino Nano * Sensor PIR -> Arduino Nano * / void setup () (// Establezca una conexión con el monitor del puerto serie.begin (9600);) void loop ( ) (// Leer el valor de umbral del puerto A0 // normalmente es superior a 500 si hay una señal if (analogRead (A0)> 500) (// Señal del sensor de movimiento Serial.println ("¡Hay movimiento! !! ");) else (/ / No hay señal Serial.println (" Todo está en silencio ... ");))

El boceto es una prueba de rutina del sensor de movimiento, tiene muchos inconvenientes, como:

  1. Posibles falsas alarmas, el sensor debe autoinicializarse en un minuto.
  2. Enlace duro al monitor de puerto, sin dispositivos ejecutivos de salida (relé, sirena, indicación de luz)
  3. El tiempo de la señal en la salida del sensor es demasiado corto; cuando se detecta movimiento, es necesario retrasar la señal mediante programación durante un período de tiempo más largo.

Complicando el circuito y ampliando la funcionalidad del sensor, se pueden evitar las desventajas anteriores. Para hacer esto, deberá complementar el circuito con un módulo de relé y conectar una lámpara normal de 220 voltios a través de este módulo. El módulo de relé en sí se conectará al pin 3 de la placa Arduino Nano. Entonces el diagrama esquemático:

Ahora es el momento de perfeccionar el boceto utilizado para probar el sensor de movimiento. Es en el boceto donde se implementará el retardo de apagado del relé, ya que el sensor de movimiento en sí tiene un tiempo de señal demasiado corto en la salida cuando se activa. El programa implementa un retraso de 10 segundos cuando se activa el sensor. Si lo desea, este tiempo se puede aumentar o disminuir cambiando el valor de la variable DelayValue... A continuación se muestra un boceto y un video de todo el circuito ensamblado:

/ * * Sensor PIR -> Arduino Nano * Sensor PIR -> Arduino Nano * Sensor PIR -> Arduino Nano * Módulo de relé -> Arduino Nano * / // relout - pin (señal de salida) para el módulo de relé const int relout = 3 ; // prevMillis - variable para almacenar el tiempo del ciclo de exploración del programa anterior // intervalo - intervalo de tiempo para contar los segundos hasta que el relé se apaga unsigned long prevMillis = 0; int intervalo = 1000; // DelayValue - el período durante el cual el relé se mantiene en el estado encendido int DelayValue = 10; // initSecond - Variable de iteración del ciclo de inicialización int initSecond = 60; // countDelayOff - contador de intervalos de tiempo static int countDelayOff = 0; // disparador - bandera del sensor de movimiento que activa el disparador bool estático = falso; void setup () (// El procedimiento estándar para inicializar el puerto al que está conectado el módulo de relé // ¡¡¡IMPORTANTE !!! - para que el módulo de relé permanezca en el estado inicialmente apagado // y no se active durante la inicialización, debe escribir el valor ALTO en el puerto de E / S //, esto evitará un falso "volteo" y guardará // el estado del relé como estaba antes de que todo el circuito se activara pinMode (relout, OUTPUT); digitalWrite (relout, HIGH); // Todo es simple aquí - estamos esperando el final de 60 ciclos (variable initSecond) // que dura 1 segundo, durante este tiempo el sensor se "autoinicializa" para (int i = 0; yo< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) (// Establecer la bandera de activación del sensor de movimiento if (! Trigger) (trigger = true;)) // Mientras que la bandera de activación del sensor de movimiento está configurada while (trigger) (// Ejecutar las siguientes instrucciones // Almacenar en el currMillis variable // valor en milisegundos transcurrido desde el inicio de // ejecución del programa unsigned long currMillis = millis (); // Compare con el valor anterior de milisegundos // si la diferencia es mayor que el intervalo especificado, entonces: if (currMillis - prevMillis > intervalo) (// Almacenamos el valor actual de milisegundos en una variable prevMillis prevMillis = currMillis; // Comprobamos el contador de retardo comparándolo con el valor del período // durante el cual el relé debe mantenerse en estado ON / / if (countDelayOff> = DelayValue) (// Si el valor es igual, entonces: // reinicia el movimiento de la bandera de activación del sensor trigger = false; // Reinicia el contador de retardo countDelayOff = 0; // Apaga el relé digitalWrite (relout , HIGH); // Abortar la ruptura del bucle;) else (// Si el valor es aún menor, entonces // Incrementar el contador de retardo en un countDelayOff ++; // Mantenga el relé en digitalWrite (relout, LOW); ))))

El programa contiene una construcción:

unsigned long prevMillis = 0;

int intervalo = 1000;

...

currMillis largo sin firmar = millis ();

si (currMillis - prevMillis> intervalo)

{

prevMillis = currMillis;

....

// Nuestras operaciones están encerradas en el cuerpo de la estructura

....

}

Para aclarar, se decidió comentar por separado sobre esta construcción. Entonces, esta construcción le permite realizar una especie de tarea paralela en el programa. El cuerpo de la estructura se activa aproximadamente una vez por segundo, esto es facilitado por la variable intervalo... Primero, la variable currMillis se le asigna el valor devuelto cuando se llama a la función millis ()... Función millis () devuelve el número de milisegundos desde el comienzo del programa. Si la diferencia currMillis - prevMillis mayor que el valor de la variable intervalo entonces esto significa que ha pasado más de un segundo desde el inicio de la ejecución del programa, y ​​necesita almacenar el valor de la variable currMillis en una variable prevMillis luego realice las operaciones encerradas en el cuerpo de la estructura. Si la diferencia currMillis - prevMillis menor que el valor de la variable intervalo, entonces todavía no ha pasado un segundo entre los ciclos de exploración del programa y se omiten las operaciones incluidas en el cuerpo de la estructura.

Bueno, al final del artículo, un video del autor:

Habilite javascript para que los comentarios funcionen.

Su autor quería hacer un producto casero para que fuera barato e inalámbrico.
Este producto casero utiliza un sensor de movimiento PIR y la información se transmite mediante un módulo de RF.

El autor quería utilizar el módulo de infrarrojos, pero dado que tiene un rango de acción limitado, y además puede funcionar solamente línea de visión al receptor, por lo que eligió un módulo de RF que puede alcanzar un alcance de aproximadamente 100 metros.


Para facilitar a los visitantes la visualización del conjunto de alarma, decidí dividir el artículo en 5 etapas:
Etapa 1: Construye un transmisor.
Etapa 2: Crea un receptor.
Etapa 3: Instalación del software.
Etapa 4: Prueba de los módulos ensamblados.
Etapa 5: Montaje de la carcasa e instalación del módulo en ella.

Todo lo que necesitaba el autor era:
- 2 placas ARDUINO UNO / ARDUINO MINI / ARDUINO NANO para receptor y transmisor;
- Módulo transceptor de RF (433 MHZ);
- sensor de movimiento PIR;
- Baterías de 9V (2 piezas) y conectores para ellas;
- Zumbador;
- Diodo emisor de luz;
- Resistencia con una resistencia de 220 Ohm;
- Tabla de pan;
- Jumpers / cables / jumpers;
- Placa de circuito;
- Conectores de clavija de placa a placa;
- Interruptores;
- Carcasas para receptor y transmisor;
- Papel coloreado;
- Cinta de montaje;
- Bisturí mecanografiado;
- Pistola de silicona;
- Soldador;
- Pinzas / herramienta pelacables;
- Tijeras para metal.


Nivel 1.
Comencemos a crear el transmisor.
A continuación se muestra un diagrama de cómo funciona el sensor de movimiento.


El propio transmisor consta de:
- Sensor de movimiento;
- Placas Arduino;
- Módulo transmisor.


El sensor en sí tiene tres salidas:
- VCC;
- GND;
- FUERA.

Después de eso, verifiqué el funcionamiento del sensor.


¡¡¡Atención!!!
Antes de descargar el firmware, el autor se asegura de que la placa actual y el puerto serie estén configurados correctamente en la configuración del IDE de Arduino. Luego subí el boceto:

Posteriormente, cuando el sensor de movimiento detecte movimiento frente a él, el LED se iluminará y también podrá ver el mensaje correspondiente en el monitor.


Según el diagrama siguiente.


El transmisor tiene 3 pines (VCC, GND y Data), los conectamos:
- VCC> 5V por pin en la placa;
- GND> GND;
- Datos> 12 pines en la placa.

Etapa 2.


El receptor en sí consta de:
- módulo receptor de RF;
- Placas Arduino
- Zumbador (altavoz).

Circuito receptor:


El receptor, al igual que el transmisor, tiene 3 pines (VCC, GND y Data), los conectamos:
- VCC> 5V por pin en la placa;
- GND> GND;
- Datos> 12 pines en la placa.


Etapa 3.
El autor eligió el archivo de la biblioteca como base para todo el firmware. Descargué cuál es y lo coloqué en la carpeta de bibliotecas de Arduino.

Software transmisor.
Antes de cargar el código de firmware en la placa, el autor estableció los siguientes parámetros IDE:
- Tablero -> Arduino Nano (o cualquier tablero que esté usando);
- Puerto serie ->


Después de configurar los parámetros, el autor descargó el archivo de firmware Wireless_tx y lo cargó en la placa:

Software receptor
El autor repite los mismos pasos para la placa receptora:
- Tablero -> Arduino UNO (o cualquier tablero que esté usando);
- Puerto serie -> COM XX (compruebe el puerto com al que está conectada su placa).



Una vez que el autor ha establecido los parámetros, descarga el archivo wireless_rx y lo carga en la placa:


Luego, con la ayuda de un programa que se puede descargar, el autor generó un sonido para el timbre.

Etapa 4.
Además, después de descargar el software, el autor decidió comprobar si todo funciona correctamente. El autor conectó las fuentes de alimentación, pasó la mano por delante del sensor y el timbre empezó a funcionar para él, lo que significa que todo funciona como debería.


Etapa 5.
Montaje final del transmisor
Primero, el autor cortó los pines que sobresalen del receptor, transmisor, placas arduino, etc.


Después de eso, conecté la placa arduino con un sensor de movimiento y un transmisor de RF usando puentes.


Luego, el autor comenzó a hacer una carcasa para el transmisor.

Primero, cortó: un orificio para el interruptor, así como un orificio redondo para el sensor de movimiento, y luego lo pegó al cuerpo.




Luego, el autor dobló una hoja de papel de colores y pegó la imagen en la portada para ocultar las partes internas del producto casero.


Después de eso, el autor comenzó a insertar el relleno electrónico dentro de la caja, usando cinta de doble cara.



Montaje final del receptor
El autor decidió conectar la placa Arduino a la placa de circuito con cinta de goma y también instalar el receptor de RF.


A continuación, el autor corta dos agujeros en la otra caja, uno para el timbre y el otro para el interruptor.


Y lo pega.


Después de eso, el autor instala puentes en todas las partes.




Luego, el autor inserta el tablero terminado en el estuche y lo fija con pegamento de doble cara.

La primavera, como sabéis, va acompañada de todo tipo de exacerbaciones, y la principal “exacerbación” ha salido de sus huecos a la calle para apropiarse de lo que no le pertenece. Esto significa que el tema de la protección de su propiedad es cada vez más relevante.
El sitio ya tiene varias reseñas sobre las caseras. Son, por supuesto, funcionales, pero todos tienen una característica común: la dependencia de una toma de corriente. Si esto no es un problema de bienes raíces, donde ya se ha suministrado electricidad, ¿qué pasa con la propiedad donde la toma de corriente está lejos o los alrededores están completamente desenergizados? Decidí ir al otro lado: ensamblar un dispositivo de larga duración, extremadamente simple e independiente del suministro de red, que dormirá todo el tiempo, y cuando los ladrones penetren, comience y llame al propietario por teléfono, señalando con un simple llamada de alarma.

Revisar elementos

Adquirido:
1. Placa de desarrollo de una cara de 5x7 cm: getinax- o fibra de vidrio
* - la fibra de vidrio es mucho mejor que getinax.
2. Módulo Neoway M590 -, con antena PCB -
3. Arduino Pro Mini "RobotDyn" ATmega168PA 8MHz 3.3V -
4. Tablero de control de carga-descarga de litio -

Extraído de las ruinas de la civilización:
1. Estantes para el tablero, aserrados de los estuches de instrumentos - 6 uds.
2. Batería de litio plana 1300mAh
3. Soportes utilizados para fijar el cable a la pared
4. Borrador de papelería
5. Alambre de cobre de 1,5 mm de espesor
6. Caja de instrumentos del mercado de radio local - 1.5$
7. Par de LED color diferente(tomado del reproductor VHS)
8. Antena y un botón con tapa (tomado de un enrutador Wi-Fi)
9. Bloque de terminales de 4 pines (tomado del atenuador)
10. Conector de alimentación (tomado de un cargador 18650 antiguo)
11. Conector de 6 pines (tomado de una unidad de DVD)
12. Lata (para café, por ejemplo)

Arduino Pro Mini "RobotDyn" Atmega 168PA 3.3V 8MHz

Especificaciones:
Microcontrolador: ATmega168PA
Voltaje de funcionamiento directo:.8 - 5.5V
Voltaje de funcionamiento a través del estabilizador LE33: 3,3 V o 5 V (según modelo)
Temperatura de trabajo:-40 ° C ... 105 ° C
Voltaje de entrada: 3,35-12 V (modelo de 3,3 V) o 5-12 V (modelo de 5 V)
Entradas / Salidas digitales: 14 (6 de las cuales se pueden utilizar como salidas PWM: 3, 5, 6, 9, 10 y 11)
Entradas analógicas: 6
Temporizadores-contadores: dos de 8 bits y uno de 16 bits
Modos de ahorro de energía: 6
Corriente continua a través de entrada / salida: 40 mA
Memoria flash: 16 KB (2 utilizados para el gestor de arranque)
RAM: 1 Kb
EEPROM: 512 bytes
Memoria de escritura / borrado de recursos: 10,000 Flash / 100,000 EEPROM
Frecuencia de reloj: 8 MHz (modelo de 3,3 V) o 16 MHz (modelo de 5 V)
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
I2C: A4 (SDA) y A5 (SCL)
UART TTL: 0 (RX) y 1 (TX)
Ficha de datos:

La elección recayó en este atmega por casualidad. en un foro donde se debatieron proyectos de eficiencia energética, en los comentarios se encontraron consejos para utilizar exactamente el atmega 168.
Sin embargo, tuve que hacer pequeños retoques para encontrar una placa de este tipo, ya que todos los lotes a menudo estaban llenos de 328 atmegs a una frecuencia de 16 MHz, operando desde 5V. Para mi proyecto, tales características fueron redundantes e inconvenientes desde el principio, la búsqueda se volvió más complicada.
Como resultado, me encontré con un 3.3 voltios Versión Pro Mini en Atmega 168PA en eBay, y no solo chino, sino bajo la marca RobotDyn de un desarrollador ruso. Sí, yo también, al principio, como tú, tenía una pizca de duda. Pero en vano. Cuando el proyecto ya estaba armado, y AliExpress introdujo una entrega paga obligatoria para productos baratos (después de lo cual los paquetes se perdían con mucha más frecuencia), luego ordené el Pro Mini Atmega168 habitual (sin PA) 3.3V 8MHz. Experimenté un poco con los modos de ahorro de energía con ambas placas, mostrando un boceto especial en cada uno, sumergiendo el microcontrolador en el modo de máximo ahorro de energía, y esto es lo que sucedió:
1) Arduino Pro Mini "RobotDyn": ~ 250μA
2) Arduino Pro Mini "NoName": cuando se aplicó energía al regulador de voltaje (salida RAW) y se quitó el LED, el consumo de corriente fue ~ 3.92mA




- como comprenderá, la diferencia en el consumo de energía es casi 16 veces, todo porque el NoName "Pro Mini usa un montón de Atmega168 +, de los cuales el MK solo come 20μA corriente (verifiqué esto por separado), todo el resto de la gula recae en el convertidor de voltaje lineal AMS1117; la hoja de datos solo confirma esto:


En el caso de la placa RobotDyn, el paquete es algo diferente, este es Atmega168PA +, aquí hemos utilizado otro estabilizador LDO, cuyas características en términos de ahorro de energía resultaron ser más agradables:


No lo soldé, así que no puedo decir cuánta corriente consume Atmega168PA en su forma pura. En este caso, tuve suficiente ~ 250μA cuando se alimenta con una batería de litio Nokia. Sin embargo, si suelda AMS1117 desde el NoName "de la placa base, entonces el ATmega168 es uno ordinario, en su forma pura, como dije anteriormente, consume 20μA.
Los LED de alimentación se pueden apagar con algo afilado. No es un problema. El estabilizador se soldó con un secador de pelo. Sin embargo, no todo el mundo tiene un secador de pelo y las habilidades para trabajar con él, por lo que las dos opciones anteriores tienen derecho a existir.

Módulo Neoway M590E

Especificaciones:
Frecuencias: EGSM900 / DCS1800 de doble banda, GSM850 / 1900 o de cuatro bandas
Sensibilidad:-107dBm
Potencia máxima de transmisión: EGSM900 Clase 4 (2 W), DCS1800 Clase 1 (1 W)
Corriente pico: 2A
Corriente de trabajo: 210 mA
Corriente de sueño: 2,5 mA
Temperatura de trabajo:-40 ° C ... + 85 ° C
Tensión de trabajo: 3,3 V ... 4,5 V (se recomienda 3,9 V)
Protocolos: GSM / GPRS Phase2 / 2 +, TCP / IP, FTP, UDP, etc.
Internet: GPRS CLASE 10
Ficha de datos:

El módulo GSM más barato que se puede encontrar en el mercado, por regla general, es de segunda mano, no siempre soldado por hábiles manos chinas del equipo. ¿Por qué no siempre diestro? Sí, todo por la soldadura con secador de pelo; a menudo, estos módulos llegan a personas con un más y un menos en cortocircuito, que es una de las razones de su inoperabilidad. Por lo tanto, el primer paso es hacer sonar los contactos de alimentación para detectar un cortocircuito.

Nota. En mi opinión, me gustaría señalar un punto importante aparte: estos módulos pueden venir con un conector coaxial redondo para la antena, lo que le permite pedir por separado una antena más seria y conectarla al módulo sin bailar con una pandereta. Y pueden venir sin este conector. Aquí es cuando hablamos de los conjuntos más baratos. Si no quiere depender de una casualidad, entonces hay conjuntos un poco más caros, donde este conector está presente + una antena externa en una placa de textolite está incluida en el kit.

Este módulo también es caprichoso antes de la alimentación, ya que en su pico consume hasta 2A de corriente, y el diodo incluido en el kit parece estar concebido para bajar el voltaje de 5V (por eso está escrito en la propia placa de 5V). ) a 4,2 V, pero a juzgar por las quejas de la gente, crea más problemas que beneficios.
Supongamos que ya has montado este módulo, y en lugar de un diodo se suelda un jumper, ya que no lo vamos a alimentar con un voltaje de 5V, sino que lo alimentaremos directamente desde una batería de litio, que está dentro del rango de voltajes permitidos de 3.3-4.2V.
Será necesario conectarlo de alguna manera a la computadora y verificar su operatividad. Para este caso, es mejor comprarse con anticipación; a través de él, nos comunicaremos con el módulo y las placas Arduino a través de la interfaz serie UART (USART).
La conexión se muestra a continuación en la imagen (la dibujé como pude):
Módem TX >>> Convertidor RX
Módem RX<<< TX конвертера
Batería Plus - Modem Plus
El menos de la batería de litio se combina con el GND del módem y el GND del convertidor
Para iniciar el módem, aplique el pin BOOT a través de una resistencia de 4.7 kOhm a GND


Mientras tanto, ejecute el programa en la computadora. Preste atención a la configuración:
1) Seleccione el puerto COM al que está conectado el convertidor TTL, en mi caso es COM4, ​​es posible que tenga uno diferente.
2) Seleccione la velocidad en baudios. (Hay un matiz aquí, porque los módulos en sí pueden configurarse para diferentes velocidades, la mayoría de las veces 9600 baudios o 115200 baudios. Aquí debe seleccionar empíricamente, elegir algo de velocidad, conectarse y enviar el comando AT, si los crackers responden , se apagará, seleccionará una velocidad diferente y repetirá el comando, y así sucesivamente hasta que obtenga una respuesta correcta).
3) Seleccione la longitud del paquete (en este caso 8 bits), el bit de paridad está deshabilitado (ninguno), el bit de parada es (1).
4) Asegúrese de marcar la casilla + CR, y luego se agregará automáticamente un carácter de retorno de carro a cada comando que enviemos al módulo al final; el módulo comprende los comandos solo con este carácter al final.
5) Conexión, aquí todo está claro, pulsamos y podemos trabajar con el módulo.

Si hace clic en "Conectar" y luego inicia el módulo aplicando BOOT a través de una resistencia de 4.7K a tierra, entonces el terminal primero mostrará la inscripción "MODEM: STARTUP", luego, después de un tiempo, la inscripción "+ PBREADY" , lo que significa que la guía telefónica, aunque esté vacía:

Bajo este spoiler, equipos de AT con ejemplos

Imprimimos el comando AT; en respuesta, el módulo nos envía nuestro comando, ya que el modo de eco está habilitado, y OK:

Verifiquemos el estado del módem con el comando AT + CPAS; en respuesta, nuestro comando es nuevamente, + CPAS: 0 y OK.
0 - significa que el módulo está listo para funcionar, pero dependiendo de la situación, puede haber otros números, por ejemplo, 3 - llamada entrante, 4 - en modo de conexión, 5 - modo de suspensión. No encontré información sobre 1 y 2.

El cambio de la velocidad de transferencia de datos en la UART se realiza mediante el comando AT + IPR = 9600; esto es si la velocidad es 9600. Si es cualquier otra, es similar a AT + IPR = 19200 por ejemplo o AT + IPR = 115200.

Revisemos la señal de la red. AT + CSQ, la respuesta es + CSQ: 22.1 - el valor del punto decimal tiene un rango de 0 ... 31 (115 ... 52dBl) - este es el nivel de señal, cuanto más, mejor. Pero 99 significa su ausencia. El valor después del punto decimal es la calidad de la señal 0 ... 7 - aquí ya es lo contrario, cuanto menor sea el número, mejor.

Desactive el modo de eco enviando el comando ATE0 para que los comandos duplicados no se interpongan en el camino. A la inversa, este modo se activa mediante el comando ATE1.

Ver versión de firmware AT + GETVERS



Estos y muchos otros comandos se pueden ver

Alinear tableros

Si bien Pro Mini es fácil de soldar a la placa de pruebas, la situación con el módulo GSM es un poco más complicada. Su peine de contacto está ubicado solo en un lado, y si solo lo suelda, entonces el otro lado de la placa simplemente colgará en el aire. Luego, de nuevo a ojo, tuve que perforar 3 orificios adicionales cerca de las tres esquinas del tablero. Las áreas alrededor de cada uno de los agujeros fueron luego despojadas de la máscara. Para mayor comodidad, coloqué los cables desconectados del peine en la placa de prueba sin soldadura (blanca) y, habiendo instalado la placa del módulo GSM en ellos, normalmente soldada:

Posteriormente tuve que hacer otro agujero, en mi caso en la letra "I", donde dice "Made In China", en el borde del tablero.


Resultó que el contacto agregado, que es esencialmente GND, se ubicó junto al GND de la placa Pro Mini, y así fue posible combinar la tierra del módulo GSM y el Pro Mini con una gota de soldadura (la larga pin en el medio y a la derecha está el pin Pro Mini) - los marqué con flechas. Por supuesto, resultó un poco torcido, pero ahora se mantiene de manera confiable:



Queda algo de espacio entre las placas; en él coloqué una placa de control de carga de descarga de litio con un conector microUSB presoldado y cables soldados.

La bufanda se ajusta muy bien allí, mientras que el brillo de los LED desde el costado será claramente visible a través de un pequeño orificio en la carcasa.



Soportes para PCB

Para arreglar de forma segura la placa dentro de la carcasa, tuve que pasar un par de días pensando en cómo se podría implementar. La opción con pegamento termofusible no se consideró por varias razones: puede caerse, deformarse y, lo que es más importante, la estructura sería difícil de desmontar.
Llegué a la idea de que la opción más sencilla y correcta aquí sería utilizar racks, que, por supuesto, no tenía. Sin embargo, había un par de cargadores que no funcionaban, de donde se cortó una rejilla larga con una rosca para tornillos autorroscantes. Cada soporte se cortó por la mitad y se terminó con una lima de aproximadamente 9,5 mm - es a esta altura que la batería ubicada debajo del tablero tiene un margen suficiente, aproximadamente 2 mm - esto se hace para que los contactos soldados del tablero no se toquen con sus puntas y de manera que se pueda insertar entre ellas una pieza de gomaespuma para su fijación.
En cuanto a colocar la tabla directamente en la caja, aquí corté cuatro tiras de una lata de café, en cuyos extremos hice un agujero, luego las fijé en los mismos tornillos que se atornillaron en las rejillas. Abajo en la foto, mira cómo se ve.
El siguiente paso es atornillar un par de rejillas en el otro lado del tablero, es decir, desde arriba, para que cuando la caja esté cerrada, la tapa descanse ligeramente sobre estas rejillas, creando una fijación adicional. Un poco más tarde, en este caso, me encontré con un cuerpo de debajo de la radio de propaganda soviética (si lo hubieran encontrado antes, habría tomado todos los bastidores de aquí), donde encontré un par más o menos adecuado en altura, pero primero los taladré en el centro con un taladro debajo de tornillos autorroscantes. Luego los cortó y también los remató con una lima, quitando el exceso. Aquí tengo una sutileza: en la foto se puede ver que un soporte blanco está atornillado a la placa getinax desde el borde, y el otro blanco, directamente a la placa del módulo, porque desde un borde de la placa del módem cubre completamente la placa inferior, y desde el borde opuesto, por el contrario, la inferior mira hacia afuera. Al mismo tiempo, en ambos tableros fue necesario perforar adicionalmente orificios para que las tapas de los tornillos autorroscantes pudieran pasar libremente.
Y finalmente, queda por asegurarse de que la placa siempre esté paralela a la carcasa: los soportes, que se utilizan para fijar alambres y cables en la pared, se ajustan perfectamente a esta carcasa, previamente les quité los clavos. Los soportes se adhieren bien a la placa con el lado cóncavo sin ningún dispositivo adicional, lo único que queda a la derecha de la tarjeta SIM, el ancho del soporte resultó excesivo y hubo que lijar también.
Todos los detalles fueron ajustados a ojo y empíricamente, debajo de la foto de todo lo anterior:



Conectores. LEDs. Botón.

Como se me acabó el peine, tuve que desmontar el conector de 6 pines de la placa de la unidad de DVD, que luego soldé al Pro Mini, esto es para la conveniencia de flashear la placa. Cerca de allí, soldé un conector redondo (Nokia de 3,5 mm) para cargar litio.

El cuerpo del conector de 6 pines se remató ligeramente con una lima, porque sus bordes sobresalían ligeramente por encima del cuerpo. La toma de carga encaja perfectamente contra la pared del estuche.

En el otro lado de la placa, soldé un botón para reiniciar el dispositivo y dos LED para depurar el firmware: el LED rojo está conectado al módulo GSM, el segundo LED verde al pin 10 del Pro Mini, es más fácil para mí para depurar el programa que lo usa.

Refinamiento de la batería

Una batería Nokia descargada de los teléfonos Nokia no es menos común que la 18650, pero muchos simplemente se niegan a usarla debido al inconveniente de conectar los contactos, que están empotrados en la propia batería. No es deseable soldarlos, por lo que se decidió utilizar el método propuesto por estos, a saber, hacer un bloque de terminales a partir de un borrador de papelería y un cable de cobre (1,5 mm de grosor).
Primero, perforé un trozo de goma de borrar con dos cables con extremos previamente pelados y lo puse en los contactos de la batería para que la distancia entre ellos coincidiera,
Doblé las puntas, lo estañé con un soldador y lo aparté un poco por los extremos largos para que los contactos resultantes se hundieran en el borrador.



Colocación de una batería:

Puedes arreglar el bloque de terminales con una banda elástica o envolverlo con cinta aislante azul, lo que hice al final.

Montaje.

La parte principal del trabajo está hecha, queda recolectar y arreglar todo.
Entre la batería y la placa puse un trozo de gomaespuma para que luego no se arrastre dentro de la carcasa. Además, soldé un condensador de 2200 uF para alimentar el módulo.

Cuando la carga está conectada:

Cuadro. Bloque de terminales externo.

Conseguí el estuche en el mercado de radio local por alrededor de $ 1.5, si se traduce a dólares, con un tamaño de 95x60x25 mm, casi el tamaño de un paquete de cigarrillos. Le hice varios agujeros. Primero, para un bloque de terminales de 4 pines, tomado de un atenuador que no funciona.
Liberé completamente los dos contactos extremos de los pernos con juntas, taladré agujeros para pernos más largos, en los que todo el bloque de terminales se sujetará a la caja. En el caso en sí, por supuesto, los dos orificios extremos serán grandes y los dos en el medio son más pequeños: tendrán clavijas enroscadas a través de ellas, una de las cuales está conectada al VCC Pro Mini y la segunda clavija a la clavija. 2.

Perforar agujeros, aunque simple a primera vista, no requiere menos tiempo, es muy fácil pasarlo por alto, así que lo hice primero con un taladro más pequeño y luego con uno más grande.

Para el botón de tacto, seleccioné una gorra con una parte superior ligeramente cóncava para que fuera conveniente golpearla con una cerilla o un clip a través de un agujero estrecho en el estuche.

Placa en un estuche con un lazo convertidor USB-TTL conectado:

Sobre la antena.
La antena, como habrás notado en el camino, cambiaba constantemente, ya que experimenté con diferentes antenas caseras. Inicialmente, había un conector coaxial redondo en la placa del módulo, pero por quinta vez que se usó para una antena externa, simplemente se vino abajo, así que tenga en cuenta que es endeble. Como resultado, arranqué la antena de la PCB del enrutador antiguo y la soldé a la placa del módulo, tk. atrapa la red un poco mejor que el resorte y el alambre.

Bueno, completamente ensamblado con un cargador conectado se ve así:

Prueba. Cómo funciona:

Además de las pruebas con antenas, comprobé cómo se comportaría la alarma en la calle, en las heladas -15. Para hacer esto, simplemente coloqué el interior por completo en un contenedor y lo dejé en el balcón durante la noche, la alarma no se activó al mismo tiempo, la razón era, en general, obvia: al litio no le gustan las heladas. Esto fue confirmado por otra prueba, donde dejé la batería en casa, llevé la placa a la calle a través de cables largos y la dejé allí por un día en la misma helada, la operación, como si nada hubiera pasado. Por otro lado, sería extraño que la alarma no funcionara. en hojas de datos para atmega, para módulo, para cuarzo - temperaturas de funcionamiento permitidas hasta -40 grados.

El principio de funcionamiento está organizado por una interrupción externa, inicialmente el pin 2 está cerrado a VCC y, por lo tanto, se admite un 1 lógico en el pin, y el controlador duerme. Tan pronto como se rompe el contacto y aparece 0 en el pin 2, el microcontrolador se despierta, baja el tercer pin (al que está conectado el BOOT del módem a través de una resistencia) a tierra: el módulo se inicia, el MC sondea periódicamente el módulo para estar listo, y tan pronto como detecta la red, envía inmediatamente una llamada al número de teléfono del propietario especificado en el código. Después de rechazar la llamada, el dispositivo se apaga sin enviar más llamadas interminables de las que son culpables muchas alarmas chinas.

información adicional

#incluir #incluir // biblioteca de software UART SoftwareSerial gsm (7, 6); // RX (7), TX (6) void wakeUp () () // controlador de interrupciones vacío ////////////////////////////// /////////////// void gsmOFF () (// PORTD | = (1<<3); // ВЫКЛЮЧЕНИЕ МОДУЛЯ _delay_ms(10); // gsm.println("AT+CPWROFF"); // ПЕЧАТАЕМ КОМАНДУ OFF PORTB &=~ (1<<2); // выключить LED 10 } // //========================================= void gsmON(){ // PORTD|=(1<<6); // 6-му порту (TX) назначить 1 PORTD &= ~(1<<3); // ЗАПУСК МОДУЛЯ _delay_ms(10); // while(!gsm.find("+PBREADY")); // ждём прочтения тел. книги PORTB |= (1<<2); // включить LED 10 _delay_ms(100); // while(1){ // gsm.println("AT+CREG?"); // проверяем в сети ли модуль if (gsm.find("0,1")) break; // если сеть есть, выходим из цикла _delay_ms(400); // проверка раз в 0,4 сек } // } // /////////////////////////////////////////// // void sleepNow(){ // функция засыпания ADCSRA = 0x00; // отключить подсистему АЦП (экономия 140 мкА) PORTD&=~(1<<6); // в вывод TX поставить 0 _delay_ms(100); // set_sleep_mode(SLEEP_MODE_PWR_DOWN); // режим сна PWR_DOWN sleep_enable(); // включение сна attachInterrupt(0, wakeUp, LOW); // включить прерывания sleep_mode(); // sleep_disable(); // detachInterrupt(0); // отключить прерывания } void setup(){ gsm.begin(9600); // скорость работы UART DDRD = B01001000; // 3-й и 6-й выводы на выход DDRB |= (1<<2); // вывод 10 на выход gsmON(); // запуск модуля для теста gsmOFF(); // выключаем модуль } void loop(){ if (!(PIND&(1<<2))){ // если на 0-ом прерывании появился 0 gsmON(); gsm.println("ATD+79xxxxxxxxx;"); // отзваниваемся, в ответ приходит OK и CONNECT _delay_ms(100); if (gsm.find("OK")) while(1){ // ожидание сброса вызова gsm.println("AT+CPAS"); // при каждой итерации опрашиваем модуль if (gsm.find("0")) break; // если 0, то выходим из цикла while _delay_ms(100); // проверка раз в 0,1 сек } for (char i=0; i<14; i++){ PORTB|=(1<<2); // LED 10 ON _delay_ms(200); PORTB&=~(1<<2); // LED 10 OFF _delay_ms(200); } gsmOFF(); // выключить модуль _delay_ms(10); while(1); // блокируем программу } else { sleepNow(); // укладываем контроллер спать } }

Circuito (sin tablero de control de carga-descarga)



Conclusiones y pensamientos. Planes.

La alarma se usa en el país, estoy satisfecho con el trabajo, sin embargo, con un mayor estudio del AVR, surgen más y más ideas para su posterior modificación. Arduino con su cableado en pseudolenguaje me molestó mucho, porque hubo un momento desagradable en el trabajo. Cuando usé las funciones para trabajar con puertos digitalWrite (); o pinMode (); - Entonces, el módulo GSM, por alguna razón, se colgó muy a menudo. Pero valió la pena reemplazarlos con monstruos como DDRB | = (1<Solo la operación de acceso directo a los puertos hizo que el dispositivo funcionara, como estaba previsto.

El ahorro de energía ...
El dispositivo montado funcionó durante cuatro meses completos sin recargar y sigue funcionando, aunque sería más correcto decir "dormir". Esto se verifica mediante un simple reinicio a través del botón blanco. Con un consumo de energía de 250 μA (a través del estabilizador LE33) y una batería de ~ 1430 mAh, aunque está bien, debido a la no novedad de la batería, redondeamos a 1000 mAh, resulta que el dispositivo puede dormir unos 5,5 mAh. meses sin recargar. Si, no obstante, evapora el estabilizador, el tiempo de funcionamiento se puede multiplicar de forma segura por 10 veces. Pero en mi caso, no es necesario, porque todavía necesita gastar el saldo de la tarjeta SIM cada tres meses, al mismo tiempo que el dispositivo se puede verificar y recargar.
El ejemplo de ahorro de energía que se da en la revisión está lejos del límite, ya que a juzgar por la información de la hoja de datos, puede reducir la frecuencia de reloj del microcontrolador (y esto se hace instalando fusibles) a 1 MHz y, si aplica voltaje de 1.8V, entonces el consumo caerá por debajo de la barra de 1μA en modo activo . ¡Nada mal! Pero si el MC está sincronizado desde el generador RC interno, entonces aparecerá otro problema: el éter UART se obstruirá con basura y errores, especialmente si el controlador se calienta o enfría.

En la terminación ...
1) Un cable ordinario instalado en un espacio no es muy conveniente, planeo experimentar con un sensor Hall y un interruptor de láminas, aunque dicen sobre este último que no es muy confiable, porque los contactos en su interior se pueden pegar.
2) Sería bueno agregar la capacidad de cambiar el "número maestro" sin la participación de una computadora y sin flashear. Esto ya tiene que funcionar con EEPROM.
3) Intente las interrupciones del temporizador de vigilancia, pero no solo por curiosidad, sino para que el microcontrolador se despierte periódicamente por sí mismo, tome medidas del voltaje de la batería y envíe el valor recibido a través de SMS para estar al tanto de la carga de la batería. se descarga.
4) El panel solar puede eliminar por completo la necesidad de recargar el dispositivo, esto será relevante especialmente para baterías de baja capacidad.
5) Durante mucho tiempo quise comprar baterías LiFePo4, que, según las revisiones, toleran las heladas normalmente, pero mientras buscaba un lote adecuado, la primavera ya había llegado imperceptiblemente.
6) Trabajar en el componente estético

¿Qué Pro Mini deberías comprar?
Si no hay secador de pelo, entonces Pro Mini "RobotDyn" Atmega168PA 3.3V, quita el LED con algo afilado y tienes ~ 250μA.
Si tiene un secador de pelo, luego cualquier tablero, suelde el estabilizador y el LED de encendido; obtiene ~ 20μA de consumo de corriente.

Eso es todo por ahora, espero que la revisión haya sido interesante y útil.

Planeo comprar +174 Agregar a favoritos Me gustó la reseña +143 +278


Cómo hacer un sistema de alarma GSM simple para SIM800L y Arduino para un garaje o cabaña de verano. Lo hacemos nosotros mismos basándonos en módulos listos para usar de Aliexpress. Módulos básicos- Módulo GSM SIM800L, Arduino Nano (puede usar any-Uno, etc.), tablero reductor, batería del teléfono celular.

Arroz. 1. Disposición de los módulos de alarma de seguridad en Arduino

Producción de señalización

Montamos en el tablero a través de las almohadillas, lo que le permitirá reemplazar los módulos si es necesario. Habilitando la alarma al suministrar energía de 4.2 voltios a través del interruptor al SIM800L y al Arduino Nano.



Cuando se activa el primer bucle, el sistema llama primero al primer número, luego desconecta la llamada y vuelve a llamar al segundo número. El segundo número se agrega en caso de que el primero se desconecte repentinamente, etc. Cuando se activan los bucles segundo, tercero, cuarto y quinto, se envía un SMS con el número de la zona activada, también a dos números. Esquema y boceto que estén interesados ​​en la descripción debajo del video.
Colocamos toda la electrónica en una carcasa adecuada.



Si no necesita 5 stubs, conecte el pin de 5V del Arduino a las entradas que no necesita. Sistema de alarma GSM de 5 lazos con batería, que permitirá que el dispositivo siga funcionando de forma autónoma durante varios días en caso de un corte de luz. Puede conectarles cualquier sensor de contacto de seguridad, contactos de relé, etc. Como resultado, obtenemos un dispositivo de seguridad compacto, simple y económico para enviar SMS y marcar 2 números. Se puede utilizar para proteger una casa de verano, un apartamento, un garaje, etc.

Más en el video



Publicaciones similares