Controlando arduino gsm gprs desde 2 números. Controlamos el enchufe vía SMS. Descripción del módulo SIM900

Quiero presentarles una manera muy sencilla. mando a distancia fuente de alimentación
Usaremos enchufes RC ya preparados, por lo que no necesitaremos soldar nada. Esto es genial, porque es mejor no tocar 220 V (para principiantes).

Código

Si no está utilizando GSMSHIELD, sino alguna otra biblioteca, entonces el código, por supuesto, será diferente, pero el principio será el mismo. A intervalos determinados comprobamos si tenemos algún SMS sin leer, los analizamos y, si ha llegado un comando válido de un número autorizado, enviamos una señal de radio con las funciones mySwitch.switchOff o mySwitch.switchOn, pasándoles la dirección del enchufe.
Nota en mi caso, para el escudo de Seeedstudio tuve que entrar en GSM.cpp y cambiar pines especificados a las 7 y 8./* Código de ejemplo del interruptor Arduino GSM Encender/apagar tomacorrientes controlados por radio Autor: Vladislav Ross, 2014 Contacto: [correo electrónico protegido] Necesita descargar: 1. rc-switch https://code.google.com/p/rc-switch/ 2. GSMSHIELD http://www.gsmlib.org/ Para GSMSHIELD: * Para cambiar pines para software Serie, utilice las dos líneas en GSM.cpp. *Si eres usando Mega, descomente la línea "#define MEGA" en HWSerial.h * Puede habilitar mensajes de depuración en el puerto serie definiendo DEBUG_ON */ #include "SIM900.h" #include #incluye "sms.h" #incluye "llamada.h" #incluye<= 21; i++) { sms.DeleteSMS(i); } mySwitch.enableTransmit(RCpin); }; void loop() { //hang up all incoming calls /*stat=call.CallStatus(); if(stat==CALL_INCOM_VOICE) { call.HangUp(); }*/ position = sms.IsSMSPresent(SMS_UNREAD); //get new SMS if (position) { sms.GetSMS(position, number, smsText, 10); sms.DeleteSMS(position); if(strcmp(number, adminNumber) == 0) //accept SMS only from defined number { for (i = 0; i < sizeof(smsText) - 1; i++) { if(deviceLetterIdx != -1) { //got letter, now expecting 0 or 1 if(smsText[i] == "0") { mySwitch.switchOff(groupAddress, deviceAddresses); delay(500); } if(smsText[i] == "1") { mySwitch.switchOn(groupAddress, deviceAddresses); delay(500); } deviceLetterIdx = -1; } else { //waiting for letter A,B,C... for(j = 0; j < sizeof(smsLetters) - 1; j++) { if(smsLetters[j] == smsText[i]) { deviceLetterIdx = j; break; } } } } } } delay(10000); }; GitHub .

// Byte constante del pin del transmisor de 433 MHz RCpin = 12; dirección de grupo char = "11111"; char smsLetters = "ABC"; char* direccionesdedispositivo = ( "10000", //A "01000", //B "00100" //C ); char adminNumber = "+74991356235"; //tu número de teléfono Llamada GSM call; SMS SMS SMS; RCSwitch miInterruptor = RCSwitch(); número de carácter; estadística de bytes=0; char smsText; posición del byte; int dispositivoLetterIdx = -1; byte i,j; configuración vacía() ( gsm.begin(2400); retraso(10000); for(i = 1; i

¿Problemas?

Si los enchufes no quieren cambiar a ninguno, puede intentar recibir una señal del control remoto original al receptor. rc-switch tiene un código de muestra.

¿Qué sigue?
¿Cómo se puede desarrollar más este proyecto?
En segundo lugar, solo usamos SMS y el módulo también puede transmitir voz y GPRS. GPRS puede transferir muchos más datos. Además, no es necesario colgar al llamar, sino, por ejemplo, aceptar la llamada y dejar que escuchen lo que sucede en el acto.
También es posible que desee recibir SMS de control no de un número, sino de varios. En este caso recomendaría almacenar los números en la libreta de direcciones; la biblioteca tiene las funciones correspondientes.

Arduino es una plataforma de hardware que se utiliza para crear rápidamente varios dispositivos electrónicos, incluidos los de seguridad. Gracias al diseño simple, la simplicidad del lenguaje de programación y el uso de códigos abiertos, incluso un no profesional puede crear de forma independiente un sistema de alarma multifuncional para proteger su casa, cabaña, apartamento o garaje. El módulo Arduino GSM será la mejor opción para crear un sistema de seguridad económico que se pueda configurar de manera óptima para un objeto específico.

Ámbito de aplicación

La plataforma de hardware Arduino se usa ampliamente en el proceso de creación de diversos sistemas y dispositivos electrónicos que pueden recibir y procesar señales de varios sensores y sensores funcionales analógicos o digitales. Los resultados del procesamiento de las señales recibidas pueden controlarse mediante actuadores y sistemas externos conectados a Arduino.

Un ejemplo del uso de estos módulos en el video:

Objetivo

La plataforma de hardware Arduino permite interactuar eficazmente con el entorno controlado a través de una amplia gama de sensores funcionales que pueden monitorear varios parámetros. Gracias a esto, sobre la base de dichas plataformas, es posible formar complejos de seguridad que monitorearán los movimientos a lo largo del perímetro protegido, la apertura de ventanas y puertas y los daños al vidrio. Además de los sensores de seguridad, también puede utilizar sensores de temperatura, sensores para controlar fugas de agua o gas.

Al utilizar el módulo Arduino GSM con la plataforma, se puede proporcionar al propietario información sobre un peligro o una situación de emergencia en una instalación lo más rápido posible. Para ello se utiliza una de las redes de operadores móviles.

Una característica distintiva de los dispositivos Arduino es que su microcontrolador puede ser programado por el usuario utilizando el lenguaje Arduino, basado en Wiring. Gracias a esto, cualquiera puede programar el algoritmo de funcionamiento de la alarma de seguridad creada según sea necesario para un objeto protegido específico y las características de su aplicación.

Beneficios de uso

Hoy en día existen muchas plataformas de hardware y microcontroladores que pueden recibir información de sensores externos, procesarla y enviar señales de control a sistemas ejecutivos. La plataforma Arduino simplifica al máximo la implementación de los procesos enumerados y tiene una amplia gama de ventajas sobre otros dispositivos de este tipo.

  1. Bajo costo. Las plataformas son dispositivos bastante económicos en comparación con sus homólogos, lo que no afecta en modo alguno a su funcionalidad.
  2. Multiplataforma. El software Arduino funciona eficazmente en plataformas operativas como Windows, Linux, Macintosh-OSX.
  3. Facilidad de programación. Para configurar microcontroladores se utiliza el entorno de programación Processing. Es ideal tanto para usuarios profesionales como para usuarios inexpertos que trabajan con dispositivos Arduino.
  4. Posibilidad de mejora. El software Arduino especializado es de código abierto, lo que permite a los usuarios experimentados adaptarlo a requisitos específicos.

Alta confiabilidad de la plataforma de hardware. Las placas Arduino están disponibles con microcontroladores ATMEGA8 y ATMEGA168 (modelos anteriores) y controladores ATmega32u4, Atmel ATmega328 (modelos más nuevos), que son altamente funcionales y confiables.

Principio de funcionamiento

Para garantizar el funcionamiento completamente funcional de los sistemas de seguridad u otros dispositivos construidos con plataformas Arduino, es necesario tener un módulo GSM para Arduino. Se puede utilizar para acceder a Internet, realizar llamadas de voz o enviar mensajes SMS.

La placa GSM utiliza un radiomódem especial M10, cuya interacción se proporciona mediante comandos AT especiales. El intercambio de información con el módem se implementa mediante una interfaz serie de software que utiliza códigos digitales.

El módem GSM utilizado en Arduino es un módem de 4 bandas que puede funcionar en las siguientes frecuencias: GSM 850MHz y 900MHz, PCS1900MHz y DCS1800MHz. El módem admite protocolos como TCP/UDP y HTTP, proporcionando conexiones a través de GPRS. La velocidad de transmisión de paquetes de información en este modo será de aproximadamente 90 kbit/seg.

El envío de SMS a través de Arduino y el módulo GSM se implementa si tienes una tarjeta SIM instalada de uno de los operadores celulares”.

Además, será posible transmitir mensajes de voz y realizar llamadas; para ello necesitará además un micrófono y un altavoz externo. La instalación de una tarjeta SIM le permitirá utilizar Arduino en modo celular o GPRS.

Cómo conectar módulos a Arduino

Antes de conectar el módulo GSM al Arduino en su ranura, debe instalar una tarjeta SIM adecuada de uno de los operadores de telefonía móvil. Después de esto, el módulo se conecta a la plataforma de hardware Arduino de acuerdo con las instrucciones y se actualiza su firmware. Para ello se utiliza un PC, que se conecta al dispositivo mediante un cable USB. Después de cargar el entorno Arduino, presione el botón Cargar, que iniciará el proceso de descarga del software. Una vez completado este proceso, la plataforma se puede desconectar de la computadora y alimentarla con una fuente de alimentación externa.

Características comparativas de los módulos GSM.

El mercado de consumo ofrece una amplia selección de diferentes módulos GSM para Arduino. A continuación se detallan las principales características de los más populares.

Neoway M590

El módulo Arduino GSM M590 es un dispositivo de comunicación inalámbrica que se utiliza para recibir y transmitir información en redes de comunicaciones móviles. El módulo de esta serie se crea en una placa con cableado mínimo y se posiciona como un módulo GSM para la plataforma de hardware Arduino.

Con este dispositivo, puede establecer una conexión móvil con un teléfono externo, enviar mensajes SMS e intercambiar información utilizando el estándar GPRS Clase-10. El módulo de este diseño no tiene entrada de micrófono, lo que limita la posibilidad de recibir comunicaciones de voz: se puede establecer una conexión, pero no se transmitirá el sonido.

Para controlar el M590, se utilizan comandos AT, que se emiten mediante comunicación en serie. Como radiofrecuencias operativas se utilizan frecuencias de 900 MHz a 1800 MHz. El voltaje de alimentación está en el rango de 3,3...5 V. Por lo tanto, el módulo GSM Neoway M590 se conecta a Arduino a través de un convertidor de voltaje especial de 5 V a 3,3 V.

Módulo GSM SIM800L

El módulo compacto Sim800l GPRS GSM es un dispositivo que se utiliza para admitir comunicaciones móviles. El módulo está construido sobre el merengue SIM-800L, creado por SIMCom Wireless Solutions y está diseñado para brindar servicios de redes de información GPRS\GSM, utilizando frecuencias de 850 MHz a 1900 MHz. Se puede utilizar para enviar mensajes SMS, realizar llamadas e intercambiar información a través de canales GPRS.

El módulo GSM está equipado con una antena; si necesita mejorar el nivel de la señal, puede utilizar antenas adicionales. Para controlar el módulo, se puede utilizar una PC conectada a través de una placa de conversión de interfaz USB-UART especial o directamente a través del propio UART. Si se utiliza el módulo GSM GPRS Sim800l , La conexión a Arduino debe realizarse a través de un convertidor de nivel lógico. Esto se debe al hecho de que en SIM800L el voltaje en el nivel lógico alto es de 2,8 V, y en Arduino es de 3,3...5 V.

Escudo GPRS de Seeed Studio

La conexión del módulo GSM a Arduino permitirá utilizar tecnologías de intercambio de datos GSM/GPRS, así como realizar llamadas y enviar mensajes SMS. Los dispositivos de este tipo se construyen utilizando el módulo SIMCom SIM900. Disponen de una ranura para instalar una tarjeta SIM, un conector para conectar una antena externa y un juego de jacks de 3,5 mm para entrada y salida de audio. El control y trabajo con Arduino GSM Shield se realiza a través de conexiones seriales y un conjunto de comandos AT especializados.

Este módulo es una placa especial que se utiliza para controlar dispositivos digitales de forma remota, así como para intercambiar información. El uso de SIM900 permite a Arduino trabajar utilizando tecnologías GSM/GPRS, proporcionando comunicación de voz, enviando SMS e intercambio de datos utilizando redes celulares y móviles.

Para operar este módulo, se le conecta un controlador de control, una fuente de alimentación, una antena y también se instala una tarjeta SIM de un operador de telefonía móvil. Utilizando puentes especiales, configura el método de intercambio de datos con el controlador. Si es necesario, puede conectar un altavoz y un micrófono.

También puedes enviar mensajes SMS; todo lo que necesitas para esto es un módulo especial Arduino GSM/GPRS SIM900. Esta placa de expansión es adecuada para placas Arduino UNO, MEGA y Leonardo comunes. Con su ayuda puedes realizar muchos proyectos diferentes utilizando Internet GPRS o acceso a la red GSM. Funcionará dondequiera que haya una red móvil. Con este módulo podrá crear un sistema de alarma GSM que, junto con un sistema de videovigilancia, proporcionará una excelente protección a su hogar.

El módulo le permite utilizar redes de los estándares GSM 850, GSM 900, GSM 1800, GSM 1900 y admite el protocolo TCP con acceso a la red GPRS.

ArduinoGSM El módulo SIM900 también se puede utilizar para realizar llamadas; puede recibir y realizar llamadas. Para ello, la placa cuenta con conectores especiales para conectar un micrófono y un altavoz. El módulo también se puede conectar a una computadora y enviar y recibir datos directamente desde la PC. Por ejemplo, puede realizar envíos masivos a suscriptores registrados en la tarjeta SIM en modo automático.

Características de conectar la placa GSM a las placas Arduino Leonardo y Arduino Mega

La placa con extensión GSM funciona con Arduino directamente gracias a la biblioteca Software Serial. Con la configuración estándar, los pines digitales No. 2 y No. 3 están conectados para interactuar con el Arduino. Estas configuraciones son adecuadas para el Arduino Uno, pero se deben realizar correcciones para que el escudo funcione correctamente en el Arduino Leonardo o Arduino Mega.

El pin GSM_TX, también llamado pin #2 en la placa de expansión, envía información a Arduino. Para saber exactamente en qué momento es necesario leer información, Arduino utiliza un mecanismo de interrupción: cuando cambia el nivel de la señal digital, se produce la interrupción correspondiente en este pin. Sin embargo, en Arduino Leonardo y Arduino Mega, el pin n.° 2 no admite interrupciones.

Para que el escudo funcione normalmente en Arduino Mega o Leonardo, no es necesario cambiar el código del programa en absoluto, la biblioteca misma cambia el número de pin de Arduino RX al seleccionar el modelo apropiado en el menú "Herramientas" del entorno de desarrollo; .

arduino leonardo


Para funcionar correctamente con Leonardo, la biblioteca GSM utiliza el pin digital No. 8. Para hacer esto, los pines digitales No. 2 y No. 8 deben estar en cortocircuito con un conductor en la placa de expansión GSM.

En la parte posterior de la placa GSM, debe doblar el pin correspondiente al pin No. 2 hacia un lado para que no entre en contacto con el Arduino Leonardo.

ArduinoMega2560


La biblioteca GSM para su correcto funcionamiento con Mega utiliza el pin digital No. 10. En la placa de expansión GSM es necesario cortocircuitar los pines digitales No. 2 y No. 10 con un conductor, como ocurre con el Arduino Leonardo. No olvides doblar hacia un lado el pin de contacto correspondiente al pin No. 2 en la parte posterior de la placa GSM, para que no toque el Arduino Mega.

Buenas tardes De nuevo, un multi-review de componentes electrónicos chinos, como es habitual sobre un poco de todo, intentaré ser breve, pero ¿funcionará? Así, encontrará un sistema de alarma GSM que cuesta hasta 700 rublos. ¿Interesante? ¡Utilice "cortar"!

¡Empecemos! Antes de empezar recomiendo echarle un vistazo a este, menos componentes y mayor autonomía. Entonces, las “especificaciones técnicas”, los requisitos básicos para la señalización:

1) Notificar cuando se activan los sensores.
2) En caso de corte de energía, se debe proporcionar cierta autonomía.
3) Control de alarmas vía SMS y llamadas.

Debido a que el proceso de creación de una alarma tomó varios meses y algunos vendedores ya no venden los componentes que les compraron, se actualizarán enlaces a productos de otros vendedores que tengan el número máximo o cercano al máximo de ventas de productos. y el mejor precio. Los precios en la revisión están actualizados a la fecha en que se escribió.

Lista de lo que necesitarás:

Lista de cambios

GSM_03_12_2016-14-38.hex- funcionamiento fijo del dispositivo con el módem M590.
GSM_05_12_2016-13-45.hex- Se agregó el comando de consola memtest, optimizando el uso de RAM.
GSM_2016_12_06-15-43.hex- salida agregada de los resultados del comando a la consola, optimización de la memoria. Ocupado: 49% SRAM.
GSM_2016_12_07-10-59.hex- Ahora los números de teléfono se agregan y eliminan correctamente. Ocupado: 49% SRAM, 74% Memoria Flash.
GSM_2016_12_07-15-38.hex- Se agregó la capacidad de conectar un sensor de movimiento, conectarlo al pin A0 (en en este caso el pin A0 se utiliza como digital). Comandos SMS agregados PIRón, PIROff. Ocupado: 48% SRAM, 76% Memoria Flash.
GSM_2016_12_08-13-53.hex- Ahora, después de ejecutar con éxito un comando que no envía un mensaje SMS como respuesta, el dispositivo parpadea el LED azul una vez. Ahora, tras una ejecución incorrecta de un comando que no envía un mensaje SMS como respuesta, el dispositivo parpadea dos veces el LED azul. Ahora, después de inicializar los parámetros del dispositivo, si el modo “silencioso” está habilitado (SendSms = 0), el dispositivo parpadea el LED azul con frecuencia durante 2 segundos. Se corrigió un error por el cual el número no siempre se eliminaba de la memoria usando el comando Eliminar Teléfono. Ocupado: 48% SRAM, 78% Memoria Flash.
GSM_2016_12_11-09-12.hex- Se agregaron comandos de consola AddPhone y DeletePhone, la sintaxis es similar a los comandos SMS. Optimización de la memoria. Ocupado: 43% SRAM, 79% Memoria Flash.
GSM_2017_01_03-22-51.hex- Se ha implementado soporte para expansores de puertos de E/S similares en el chip PCF8574, para conectar 8 sensores adicionales, incluidos interruptores de láminas. Búsqueda automática de direcciones y configuración automática de módulos. Los nombres estándar de los sensores y el nivel lógico de su respuesta se cambian usando el comando EditSensor. Se ha modificado el contenido del SMS de alarma del sensor principal (pin D0): “¡Alarma! Sensor principal! y sensor de movimiento (pin A0) “¡Alarma! ¡Sensor PIR! Se agregaron comandos EditSensor e I2CScan. Ocupado: 66% SRAM, 92% Memoria Flash.
GSM_2017_01_15-23-26.hex- Soporte para módem A6_Mini. Monitoreo de la presencia de alimentación externa (pin D7). Se agregaron comandos SMS WatchPowerOn, WatchPowerOff. Se agregaron comandos de consola ListConfig, ListSensor. Ahora el comando SMS EditSensor funciona correctamente. Se ha reducido ligeramente la salida de información de depuración al monitor del puerto. Ocupado: 66% SRAM, 95% Memoria Flash.
GSM_2017_01_16-23-54.hex- Ahora en el mensaje de respuesta al comando SMS “Info” también se informa el estado del sensor de movimiento. Se corrigió un error por el cual a veces se enviaban mensajes SMS de respuesta vacíos. Ahora el dispositivo notifica no solo sobre el apagado, sino también sobre la reanudación de la alimentación externa. Todos los módems empezaron a parlotear menos y ahora el monitor del puerto está un poco más limpio. Ocupado: 66% SRAM, 95% Memoria Flash.
GSM_2017_02_04-20-23.hex- Se corrigió el error "Observar el encendido". Ahora, después del desarmado, el “pin de alarma” se apaga. Ahora, después de eliminar un número, se muestra la información correcta en la consola. Posiblemente se solucionó un error por el cual a veces se enviaban mensajes SMS de respuesta vacíos. Ocupado: 66% SRAM, 90% Memoria Flash.
GSM_2017_02_14-00-03.hex- Ahora los mensajes SMS se envían por defecto, el parámetro SendSms vuelve a ser igual a 1. Ahora, cuando los contactos del sensor reed principal están cerrados (cerrando la puerta), el dispositivo parpadea con un LED azul durante 2 segundos, indicando funcionamiento normal. del sensor. Ocupado: 66% SRAM, 90% Memoria Flash.
GSM_2017_03_01-23-37.hex- Se ha eliminado el comando WatchPowerOn. Se agregó el comando de consola WatchPowerOff, idéntico al comando SMS. Se agregaron los comandos WatchPowerOn1, WatchPowerOn2. WatchPowerOn1: el monitoreo de energía externa está habilitado si la alarma está activada, WatchPowerOn2: el monitoreo de energía externa siempre está habilitado. Para ello se implementa la función de armado y desarmado mediante dispositivos externos; La alarma se activa/desactiva cuando aparece un nivel alto de +5 V en el pin A1 (D15) o un nivel bajo de GND aparece en el pin A2 (D16). El pin A1 (D15) se eleva a GND, el pin A2 (D16) se eleva a +5 V a través de resistencias de 20 (10) kOhm. Se agregaron los comandos GuardButtonOn y GuardButtonOff. Ahora, después de armar, el LED rojo parpadea hasta que se verifica la integridad del circuito del interruptor de láminas principal. Si el circuito está intacto, el LED rojo se enciende. Ocupado: 66% SRAM, 95% Memoria Flash.
GSM_2017_03_12-20-04.hex- Ahora la consola se ha vuelto aún más limpia, pero si el modo de prueba "TestOn" está habilitado, se muestra información adicional en la consola. Se solucionó el error "Enviado"; la información sobre el envío de mensajes ahora se muestra correctamente en la consola. Se corrigió el error de "llamada falsa repetida". Ahora la solicitud de saldo debería funcionar correctamente en todos los módems. Ocupado: 67% SRAM, 95% Memoria Flash.
GSM_2017_04_16-12-00.hex- Corregido. Ahora los comandos Información y Dinero siempre enviarán un SMS de respuesta. El comando GuardButtonOn ha sido reemplazado por los comandos GuardButtonOn1 y GuardButtonOn2. Ocupado: 67% SRAM, 99% Memoria Flash.
GSM_2017_04_21-09-43.hex: no se recomienda su uso, solo con fines de prueba, gracias por identificar errores :) - Ahora el parámetro sendsms no afecta el envío de mensajes SMS para el monitoreo de la red eléctrica. Se agregó el comando SMS DelayBeforeGuard responsable del retraso al armar, el valor no puede exceder los 255 segundos. Se agregó el comando SMS DelayBeforeAlarm, que es responsable de retrasar el envío de notificaciones y activar el "pin de alarma" cuando se activan los sensores, el valor no puede exceder los 255 segundos. Se eliminaron los comandos ClearSMS, los mensajes ahora se eliminan automáticamente al recibirlos. Ocupado: 68% SRAM, 100% Memoria Flash.
GSM_2017_04_22-20-42.hex- Se corrigieron múltiples errores. Los comandos ClearSMS vuelven a estar presentes en el firmware. Optimización de la memoria. Ocupado: 68% SRAM, 98% Memoria Flash.
GSM_2017_04_23-17-50.hex- Ahora la solicitud de saldo debería funcionar correctamente en todos los módems. Armar y desarmar con dispositivos externos ahora funciona correctamente. Los mensajes de respuesta SMS del comando Información no deben estar vacíos. Optimización de la memoria. Ocupado: 68% SRAM, 98% Memoria Flash.
GSM_2017_04_24-13-22.hex- Ahora los comandos de la consola se envían al módulo GSM solo si el modo de prueba está habilitado. Ahora no existe división entre comandos SMS y comandos de consola; todos los comandos existentes se pueden transmitir tanto por SMS como por consola. Es posible que se haya solucionado un error con el comando Información. Optimización de la memoria. Ocupado: 68% SRAM, 94% Memoria Flash.
GSM_2017_04_25-20-54.hex- Se corrigió un error por el cual el comando ListConfig cambiaba el valor del último evento. Ahora, al ingresar comandos a través de la consola, no se envían mensajes SMS innecesarios. Es posible que se haya solucionado un error con el comando Información. Optimización de la memoria. Ocupado: 66% SRAM, 94% Memoria Flash.
GSM_2017_04_30-12-57.hex- Habilitó temporalmente la salida de información adicional a la consola al enviar mensajes SMS y generar una respuesta al comando Info. Es posible que se haya solucionado un error con el comando Información. Optimización de la memoria. Ocupado: 66% SRAM, 92% Memoria Flash.
GSM_2017_05_06-11-52.hex- Corregido con la función DelayBeforeAlarm. Ocupado: 66% SRAM, 93% Memoria Flash.
GSM_2017_05_23-21-27.hex- Se ha modificado ligeramente la salida de información a la consola. Se agregó soporte para módulos de expansión de puertos en PCF8574A con direcciones de 0x38 a 0x3f inclusive. Error solucionado c. Ahora el dispositivo se reinicia automáticamente después de los comandos FullReset, ResetConfig, ResetPhone y si el comando MemTest se ejecuta correctamente. Se agregó el comando WatchPowerTime. Ahora es posible configurar el tiempo después del cual se enviará un mensaje SMS indicando que la fuente de alimentación externa está apagada. Ocupado: 67% SRAM, 94% Memoria Flash.
GSM_2017_05_26-20-22.hex- Se ha solucionado la inicialización de la memoria del sensor de la placa de expansión. Se ha cambiado la sintaxis del comando AddPhone. Se agregó el comando EditMainPhone. Se ha cambiado el principio de funcionamiento del sistema de notificación; cuando se activa el sensor, primero se enviarán mensajes SMS y luego se realizarán llamadas de voz. Los mensajes SMS de alarma se enviarán a los números de teléfono con el signo “S” (SMS). Las llamadas de voz se realizarán a números con el signo “R” (Timbre). Los mensajes sobre cómo apagar/encender la fuente de alimentación externa se enviarán a los números de teléfono con el signo “P” (Encendido). Se agregó el comando RingTime. Ahora es posible configurar la duración de una llamada de voz alarmante; el parámetro puede tener un valor de 10 a 255 segundos. El comando RingOn/RingOff ahora habilita/deshabilita globalmente las alertas de llamadas de voz. Se agregó el comando ResetSensor. Ocupado: 68% SRAM, 99% Memoria Flash.
GSM_2017_06_02-17-43.hex- Se agregó el parámetro “I” (Info) a los comandos AddPhone y EditMainPhone, que es responsable de la notificación por SMS sobre cómo armar o desarmar el dispositivo. Ahora, después de agregar el número principal, el dispositivo se reinicia automáticamente. Ahora puedes ingresar números idénticos en la memoria del dispositivo. Al agregar el segundo número duplicado y los siguientes, los atributos “M”, “S”, “P” e “I” se eliminarán automáticamente de ellos. Estos números se utilizarán para llamadas de voz repetidas cuando se activen los sensores. Se solucionó un error con una salida incorrecta de la consola después de ejecutar el comando AddPhone. Ahora la información no se muestra automáticamente después de agregar un número. Se agregó el comando de reinicio. Ocupado: 69% SRAM, 99% Memoria Flash.
GSM_2017_06_11-00-07.hex- Ahora nuevamente, cuando los contactos del sensor reed principal están cerrados (cerrando la puerta), el dispositivo parpadea con un LED azul durante 2 segundos, indicando el funcionamiento normal del sensor, pero no toma en cuenta si el dispositivo está armado. o desarmado. Se han eliminado los comandos RingOn/RingOff. Ahora el dispositivo se puede desarmar durante una llamada de alarma; ahora se realizan en segundo plano. Ocupado: 69% SRAM, 99% Memoria Flash.
GSM_2017_07_04-21-52.hex- Ahora el comando Pausa no envía SMS de respuesta. Se han eliminado los comandos TestOn y TestOff. El atributo Gestión se ha eliminado de todos los números. Ocupado: 68% SRAM, 96% Memoria Flash.
GSM_2017_07_24-12-02.hex- Se agregaron comandos ReedSwitchOn/ReedSwitchOff para monitorear el sensor de láminas principal, ahora se puede encender/apagar de la misma manera que un sensor de movimiento. Se corrigió un error en el comando Información. Los comandos TestOn y TestOff vuelven a estar presentes en el firmware. Ocupado: 68% SRAM, 96% Memoria Flash.
GSM_2017_07_26-10-03.hex- Se agregó el comando ModemID. La detección automática del módem se lleva a cabo solo si el valor de este parámetro es 0. Después de establecer el valor del parámetro en 0, el dispositivo se reinicia automáticamente. Ocupado: 68% SRAM, 98% Memoria Flash.
GSM_2017_08_03-22-03.hex- Ahora la alarma puede controlar dispositivos externos. Para el control se utiliza la salida analógica A3 (D17 - utilizada como digital). El nivel de salida lógica (+5V o GND) se puede cambiar después de cambiar el nivel mediante el comando de configuración, el dispositivo se reiniciará automáticamente. La duración de la señal de control del dispositivo externo se puede cambiar. Se agregaron comandos ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime y Open. Algunos cambios en la lógica de los comandos de control. Optimización de la memoria. Ocupado: 68% SRAM, 99% Memoria Flash.
GSM_2017_08_10-12-17.hex- Se han eliminado los comandos SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff y todo lo relacionado con ellos. El comando DelayBeforeAlarm ha sido reemplazado por comandos extendidos. Cambió la salida del comando Información. Se ha optimizado la salida del comando ListConfig a la consola. Ahora cualquier sensor digital con niveles de respuesta altos o bajos, incluidos los interruptores de láminas, se puede conectar a los pines D6 y A0. Los pines D6 y A0 deben conectarse a tierra (GND) mediante una resistencia de 10 (20) kOhm. Si el sensor está configurado en un nivel de respuesta bajo (habilitado en el modo de interruptor de láminas), entonces se verifica la integridad del circuito. El nivel de disparo lógico en las entradas D6 y A0 (+5V o GND) se puede cambiar; después de cambiar el nivel lógico, el dispositivo se reiniciará automáticamente. Para cada uno de los sensores (principal, segundo, placa de expansión PCF), cuando se activa, se puede configurar su propio tiempo, después del cual se realizará una notificación (SMS y/o llamada de voz). El nombre del "Sensor PIR" ha cambiado a "Segundo sensor". Se corrigió el funcionamiento de la tarjeta de expansión, error por el cual el dispositivo siempre notificaba cuando se activaban los sensores, independientemente de si el dispositivo estaba armado o no. Ahora puede seleccionar un modo de funcionamiento en el que el dispositivo puede monitorear los sensores de la tarjeta de expansión tanto en modo armado (GuardOn) como en modo deshabilitado (GuardOff). Se agregaron comandos PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeforeAlarm, PCFDelayBeforeAlarm. Ocupado: 68% SRAM, 99% Memoria Flash.

*Las versiones de firmware posteriores incluyen cambios con respecto a versiones anteriores.


Puertos Arduino Nano v3 utilizados

D4- salida de un pin de "alarma" cuando se activa el sensor, se establece una señal de alto nivel en este pin;
D5- salida inversa del pin "alarma" cuando se activa el sensor, se establece una señal de nivel bajo en este pin;

D6- sensor de láminas. A partir de la versión GSM_2017_08_10-12-17.hex, cualquier sensor digital con niveles de respuesta altos o bajos, incluidos los interruptores de láminas, se puede conectar al pin D6. El pin D6 debe conectarse a tierra (GND) a través de una resistencia de 10 (20) kOhm.
D7- conectado a un divisor de voltaje desde una fuente de alimentación externa de +5V. Brazo superior 2,2 kOhm, brazo inferior 3,3 kOhm.

Divisor de voltaje


D8- Módem TX
D9- Módem RX

D10- LED rojo
D11- LED azul
D12- LED verde

Conexión periférica:
A0- sensor de movimiento. A partir de la versión GSM_2017_08_10-12-17.hex, cualquier sensor digital con un nivel de respuesta alto o bajo, incluidos los interruptores de láminas, se puede conectar al pin A0. El pin A0 debe conectarse a tierra (GND) a través de una resistencia de 10 (20) kOhm.

A1- Entrada para control externo. La alarma se activa/desactiva cuando aparece un nivel alto de +5 V en la entrada.
A2- Entrada inversa para control externo. La alarma se arma/desarma cuando aparece un nivel bajo de GND en la entrada.

A3- Salida configurable (+5V o GND) para controlar dispositivos externos. Cuando se recibe un comando de control, el valor en esta salida cambia dependiendo de lo que se configuró durante un período de tiempo determinado.

A4-SDA I2C
A5-SLC I2C
, para conectar 8 sensores adicionales.


Comandos de control para firmware hexadecimal

¡Atención! Equipos dedicados en negrita Solo se puede ejecutar desde el número principal, ya que son los responsables de la configuración del dispositivo. Se pueden ejecutar otros comandos a partir de números con el atributo "Gestión".

SMS: los comandos de control no distinguen entre mayúsculas y minúsculas:
Agregar teléfono- Agregar un número de teléfono. En total, no se pueden agregar más de 9 números + 1 número principal, que se guarda automáticamente en la memoria la primera vez que llama al dispositivo después de restablecerlo a la configuración de fábrica mediante comandos Restablecer teléfono o Reinicio completo. Aquellos. Quien llamó primero al dispositivo después de restablecerlo a la configuración de fábrica es el "maestro", este número se ingresa en la primera celda de memoria y no se puede cambiar ni eliminar mediante SMS. No es posible sumar dos números idénticos.
Comando de ejemplo:



Sintaxis del comando:

Agregar teléfono- equipo
: - separador
5 - escribe en la quinta celda de memoria
+71234567890 - número de teléfono
Hasta la versión GSM_2017_05_26-20-22.hex:
a - parámetro "Alarma" - Se enviarán mensajes SMS a los números con este parámetro - mensajes sobre activación de alarma y mensajes sobre armado o desarmado.
A partir de la versión GSM_2017_05_26-20-22.hex:
m - parámetro “Gestión” - la gestión de alarmas está habilitada
s - parámetro "SMS": se enviará un mensaje SMS cuando se activen los sensores
r - parámetro "Ring": se realizará una llamada de voz cuando se activen los sensores
p - Parámetro "Encendido": se enviará un mensaje SMS cuando se encienda o apague la alimentación externa
i - Parámetro “Info” - se enviará un mensaje SMS al armar o desarmar
Si faltan los parámetros “m”, “s”, “r”, “p”, “i”, el teléfono se almacena en la memoria, pero no se utiliza de ninguna manera.


EliminarTeléfono- Eliminar número de teléfono.
Comando de ejemplo:

Sintaxis del comando:

EliminarTeléfono - comando
: - separador
+71234567891 - número de teléfono


EditarTeléfono Principal- Cambiar los parámetros “s”, “r”, “p”, “i” del teléfono principal, este número se almacena en la primera celda de memoria.
Comando de ejemplo:

Sintaxis del comando:

Editar teléfono principal - comando
: - separador
srpi-parámetros


Número de saldo- Cambiar el número de solicitud de saldo y procesar la duración de la respuesta a la solicitud. Valor predeterminado para Beeline: #100#L22.
Comando de ejemplo:

Sintaxis del comando:

NumSaldo - comando
: - separador
#103# - número de solicitud de saldo
L24: la longitud (len) de la respuesta reenviada es de 24 caracteres, eliminamos el spam de la solicitud de saldo.


EditarSensor- Cambiar el nombre del sensor y el nivel de respuesta lógica. En total no puede haber más de 8 sensores adicionales. Después de cambiar los parámetros, se debe reiniciar el dispositivo.
Comando de ejemplo:
EditSensor:1+Datchik dvizheniya v koridore#h

Sintaxis del comando:

EditSensor - comando
: - separador
1 - escribe en la primera celda de memoria
+ - separador
Datchik dvizheniya v koridore: el nombre del sensor no puede exceder los 36 caracteres, incluidos los espacios.
#h: señal de un nivel lógico alto del sensor, al recibirlo se activará una alarma. Si falta "#h", la alarma se activará cuando se reciba un nivel lógico bajo del sensor.


hora de dormir- El tiempo que la alarma se apaga al recibir el comando SMS “Pausa” se indica en minutos. Valor predeterminado: 15, no puede ser menor que 1 ni mayor que 60.
Comando de ejemplo:

Sintaxis del comando:

Hora de dormir - comando
: - separador
20 - 20 minutos de “dormir”.


AlarmaPinTime- El tiempo durante el cual se enciende/apaga la alarma/pin inverso se indica en segundos. Valor predeterminado: 60, no puede ser inferior a 1 segundo ni superior a 43200 segundos (12 horas).
Comando de ejemplo:

Sintaxis del comando:

AlarmPinTime - comando
: - separador
30 - 30 segundos para encender/apagar el pin de alarma.


RetrasoAntesGuardia- Tiempo antes de armar el dispositivo, después de recibir el comando correspondiente.
Comando de ejemplo:

Sintaxis del comando:

DelayBeforeGuard - comando
: - separador
25 - 25 segundos antes de armar


Retraso antes de la alarma- El tiempo después del cual se enviará una notificación SMS de “alarma” si la alarma no ha sido desarmada durante este período de tiempo. Reemplazado por comandos extendidos a partir de la versión GSM_2017_08_10-12-17.hex
Comando de ejemplo:

Sintaxis del comando:

Retardo antes de la alarma - comando
: - separador
40 - 40 segundos antes de enviar una notificación de "alarma"


RelojPoderTiempo- Tiempo en minutos tras el cual se enviará un mensaje SMS indicando que la fuente de alimentación externa está apagada. Si se restablece la alimentación externa antes de que haya transcurrido el tiempo establecido, el mensaje no se enviará.
Comando de ejemplo:

Sintaxis del comando:

WatchPowerTime - comando
: - separador
5 - 5 minutos antes de enviar mensaje SMS


hora del timbre- Duración de una llamada de voz alarmante, el parámetro puede tener un valor de 10 a 255 segundos.
Comando de ejemplo:

Sintaxis del comando:

RingTime - comando
: - separador
40 - 40 la duración de la llamada será de 40 segundos, después de lo cual se llamará al siguiente suscriptor.


ID de módem- Instalación forzada del modelo de módem utilizado. Valores posibles: 0 - detección automática de módem, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Comando de ejemplo:

Sintaxis del comando:

ID de módem - comando
: - separador
2 - ID del módem.


ExtDeviceTime- El número de segundos durante los cuales cambiará el nivel de la señal en la salida de control del dispositivo externo.
Comando de ejemplo:

Sintaxis del comando:

comando ExtDeviceTime
: - separador
5 - 5 segundos


NivelDeDispositivoExtBajo- El dispositivo externo conectado a la salida A3 está controlado por un nivel de señal bajo (GND). La salida tendrá un nivel predeterminado de +5 V hasta que se reciba un comando de control desde un dispositivo externo.
NivelDeDispositivoExtAlto- Un dispositivo externo conectado a la salida A3 está controlado por un nivel de señal alto (+5V). La salida estará predeterminada en GND baja hasta que se reciba un comando de control de dispositivo externo.

ReiniciarSensor- restablecer los sensores del expansor de puerto

Restablecer configuración- restablecer la configuración a la configuración de fábrica

Restablecer teléfono- borrar todos los números de teléfono de la memoria

Reinicio completo- restablecer la configuración, eliminar todos los números de teléfono de la memoria, restaurar el valor predeterminado del comando BalanceNum.

RingOn- habilitar la notificación llamando al número "principal" registrado en la primera celda de memoria cuando se activa el sensor. Eliminado a partir de la versión GSM_2017_06_11-00-07.hex
Timbre desactivado- desactive la notificación haciendo sonar cuando se active el sensor. Eliminado a partir de la versión GSM_2017_06_11-00-07.hex

SMSOn- habilitar la notificación por SMS cuando se activa el sensor. Eliminado a partir de la versión GSM_2017_08_10-12-17.hex
SMSApagado- Desactive la notificación por SMS cuando se active el sensor. Eliminado a partir de la versión GSM_2017_08_10-12-17.hex

PIRón- habilitar el procesamiento del sensor de movimiento
PIROff- desactivar el procesamiento del sensor de movimiento

interruptor de caña- habilitar el procesamiento del sensor de láminas principal
LengüetaApagar- desactivar el procesamiento del sensor del interruptor de láminas principal

VerEncender- habilitar el control de energía externa, se enviará un mensaje SMS sobre el apagado de la energía externa siempre que el sistema de alarma esté armado. Eliminado a partir de la versión GSM_2017_03_01-23-37.

VerPowerOn1- habilitar el control de energía externa, se enviará un mensaje SMS sobre el apagado de la energía externa siempre que el sistema de alarma esté armado.
VerPowerOn2- habilitar el control de alimentación externa, en cualquier caso se enviará un mensaje SMS sobre el apagado de la alimentación externa

VerApagar- apague el control de energía externo

Botón de guardia activado- Se habilita el control de alarma mediante dispositivos externos o botón. Eliminado a partir de la versión GSM_2017_04_16-12-00.
BotónGuardarOn1- función establecer o eliminar la protección mediante dispositivos externos o botón está habilitada
BotónGuardarOn2- función solo producciones armado por dispositivos externos o el botón está encendido; el desarmado se realiza llamando al dispositivo o usando un comando SMS.
BotónGuardiaApagado- el control de alarma mediante dispositivos externos o botón está deshabilitado

PCForceOn- monitoreo constante de un grupo de todos los sensores del módulo de expansión
PCFForceOff- monitorear un grupo de todos los sensores del módulo de expansión solo cuando el dispositivo está armado

NivelSensorPrincipalAlto- se enviará una notificación de alarma cuando aparezca una señal de nivel alto (+5 V) en la entrada (D6) del sensor
Nivel del sensor principal bajo- se enviará una notificación de alarma cuando aparezca una señal de nivel bajo (GND) en la entrada (D6) del sensor
Nivel del sensor principal apagado- el procesamiento de entrada del sensor (D6) está deshabilitado

Segundo nivel del sensor alto- se enviará una notificación de alarma cuando aparezca una señal de nivel alto (+5 V) en la entrada (A0) del sensor
Segundo nivel del sensor bajo- se enviará una notificación de alarma cuando aparezca una señal de nivel bajo (GND) en la entrada (A0) del sensor
Segundo nivel del sensor apagado- el procesamiento de la entrada del sensor (A0) está deshabilitado

Retraso principal antes de la alarma- el tiempo después del cual se enviará una notificación SMS de “alarma” cuando se active el sensor principal (D6), si la alarma no ha sido desactivada durante este período de tiempo. La sintaxis es la misma que la del comando DelayBeforeAlarm.
Segundo retraso antes de la alarma- tiempo tras el cual se enviará una notificación SMS de “alarma” cuando se active un sensor adicional (A0), si la alarma no ha sido desarmada durante este período de tiempo. La sintaxis es la misma que la del comando DelayBeforeAlarm.
PCFDelayAntes de la alarma- el tiempo después del cual se enviará una notificación SMS de “alarma” cuando se activen los sensores de la placa de expansión (PCF8574), si la alarma no ha sido desarmada durante este período de tiempo. La sintaxis es la misma que la del comando DelayBeforeAlarm.

GuardOn - brazo
GuardOff - quitar la guardia

Abierto: comando de control de dispositivo externo

Información: verifique el estado, en respuesta a este mensaje se enviará un SMS con información sobre qué número se activó o desactivó la seguridad.

Pausa: pausa el sistema durante el tiempo establecido por el comando de suspensión en minutos; el sistema no responde a los activadores del sensor.

TestOn: el modo de prueba está activado, el LED azul parpadea.
TestOff: el modo de prueba está desactivado.

LedOff: apaga el LED de espera.
LedOn: enciende el LED de espera.

Dinero - solicitud de saldo.

ClearSms: elimina todos los SMS de la memoria

Comandos de consola (hasta la versión GSM_2017_04_24-13-22.hex): ingresados ​​en el monitor del puerto IDE de Arduino:

AddPhone: similar al comando AddPhone sms

DeletePhone: similar al comando SMS DeletePhone

EditSensor: similar al comando SMS de EditSensor

ListPhone: envía al monitor de puerto una lista de teléfonos almacenados en la memoria

ResetConfig: similar al comando SMS ResetConfig

ResetPhone - similar al comando SMS ResetPhone

FullReset: similar al comando SMS FullReset

ClearSms: similar al comando ClearSms sms

WatchPowerOn1: similar al comando SMS WatchPowerOn1
WatchPowerOn2: similar al comando SMS WatchPowerOn2
WatchPowerOff: similar al comando SMS WatchPowerOff

GuardButtonOn: similar al comando SMS GuardButtonOn. Eliminado a partir de la versión GSM_2017_04_16-12-00
GuardButtonOn1: similar al comando SMS GuardButtonOn1
GuardButtonOn2: similar al comando SMS GuardButtonOn2
GuardButtonOff: similar al comando SMS GuardButtonOff

Memtest: prueba de la memoria no volátil del dispositivo; se restablecerán todas las configuraciones del dispositivo, similar al comando FullReset.

I2CScan: busca e inicializa dispositivos compatibles en el bus I2C.

ListConfig: muestra la configuración actual del dispositivo en el monitor de puerto.

ListSensor: salida al monitor de puerto de la configuración actual del sensor.

UPD. Cuando se utiliza un sensor de movimiento, para evitar falsos positivos durante el funcionamiento del módem, es necesario entre patas Tierra Y A0 arduino poner resistencia, gracias camarada
AllowPhone = (“70001234501”, “70001234502”, “70001234503”, “70001234504”, “70001234505”): números que pueden administrar la seguridad.
AlarmPhone = (“70001234501”, “70001234502”): números para enviar notificaciones por SMS cuando se activa el sensor y notificaciones sobre desarmado o armado. Se llamará al primer número de la lista cuando se active el sensor si se ejecuta el comando RingOn de forma predeterminada, esta opción está habilitada; Esto se hace porque los mensajes SMS pueden llegar con cierto retraso, pero la llamada debe realizarse de inmediato.

Si se recibe una llamada de un número autorizado o un mensaje SMS con el comando GuardOn/GuardOff, entonces, dependiendo del estado de seguridad actual, se enviará un mensaje SMS sobre el armado o desarmado a los números que figuran en la matriz de AlarmPhone y un También se enviará un mensaje SMS al número desde el que provino la llamada.

Cuando se activa el sensor Los mensajes SMS se envían a todos los números de la matriz AlarmPhone (lista) y se realiza una llamada de voz al primer número de esta matriz.

Indicación luminosa:
El LED se ilumina en rojo: está armado.
El LED se ilumina en verde: desarmado, encendido/apagado mediante comando SMS LedOn/LedOff.
El LED parpadea constantemente en azul: indica que todo está en orden con Arduino, la placa no está congelada, se usa exclusivamente para depuración, se enciende/apaga mediante el comando SMS TestOn/TestOff.
* El código contiene la función LedTest(), parpadea con un LED azul, está hecho solo para monitorear el Arduino, parpadea - significa que está funcionando, no parpadea - está congelado. Aún no he colgado :)

¡NO es relevante!

Conexión de 2 o más sensores para firmware abierto (se aplica solo a este firmware sketch_02_12_2016.ino)
Para conectar sensores de láminas adicionales utilizamos los pines digitales libres D2, D3, D5 o D7. Esquema de conexión con sensor adicional en D7.

Cambios necesarios en el firmware.
... #define DoorPin 6 // Número de entrada conectado al sensor principal int8_t DoorState = 0; // Variable para almacenar el estado del sensor principal int8_t DoorFlag = 1; // Variable para almacenar el estado del sensor principal #define BackDoorPin 7 // Número de entrada conectado al sensor adicional int8_t BackDoorState = 0; // Variable para almacenar el estado del sensor adicional int8_t BackDoorFlag = 1; // Variable para almacenar el estado del sensor adicional...
configuración vacía () (... pinMode (DoorPin, ENTRADA); pinMode (BackDoorPin, ENTRADA); ...
... void Detect() ( // Leer valores de los sensores DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); // Procesando el sensor principal if (DoorState == LOW && DoorFlag == 0) ( DoorFlag = 1; retardo(100); if (LedOn == 1) digitalWrite(GLed, LOW); if (DoorState == HIGH && DoorFlag == 1)( DoorFlag = 0; retardo(100); ) //Procesando sensor adicional if (BackDoorState == BAJO && BackDoorFlag == 0) ( BackDoorFlag = 1; retraso(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); ) if (BackDoorState == ALTO && BackDoorFlag = = 1)( BackDoorFlag = 0; retraso(100); ) ) ...

Y una cosa más:
1. Es mejor usar diodos clasificados para una corriente de 2 A, ya que el módulo transporta una corriente de 1 A y todavía necesitamos alimentar el Arduino y el módem con algo. Esta instancia utiliza diodos 1N4007; si fallan, reemplácelos por unos de 2 A.
2. Utilicé todas las resistencias para el LED de 20 kOhm para no iluminar todo el pasillo por la noche.
3. También coloqué una resistencia de 20 kOhm en el sensor de láminas entre el pin GND y el pin D6.

Eso es todo por ahora. ¡Gracias por su atención! :)

Estoy pensando en comprar +204 Añadir a favoritos Me gustó la reseña +112 +243

El módulo GSM y GPRS en proyectos Arduino le permite conectarse a dispositivos autónomos remotos a través de comunicaciones celulares regulares. Podemos enviar comandos al dispositivo y recibir información del mismo mediante comandos SMS o mediante una conexión a Internet abierta vía GPRS. En este artículo veremos los módulos más populares para Arduino, entenderemos la conexión y veremos ejemplos de programación.

Módulos GSM GPRS

El módulo GSM se utiliza para ampliar las capacidades de las placas Arduino normales: enviar SMS, realizar llamadas e intercambiar datos a través de GPRS. Existen diferentes tipos de módulos, los más utilizados son SIM900, SIM800L, A6, A7.

Descripción del módulo SIM900

El módulo SIM900 se utiliza en varios sistemas automatizados. Utilizando la interfaz UART, los datos se intercambian con otros dispositivos. El módulo brinda la posibilidad de realizar llamadas e intercambiar mensajes de texto. El módulo está implementado en el componente SIM900, creado por SIMCom Wireless Solution.

Presupuesto:

  • Rango de voltaje 4,8-5,2 V;
  • En modo normal, la corriente alcanza los 450 mA, la corriente máxima en modo pulso es 2 A;
  • soporte 2G;
  • Potencia de transmisión: 1 W 1800 y 1900 MHz, 2 W 850 y 900 MHz;
  • Hay protocolos TCP y UDP integrados;
  • GPRS multiranura clase 10/8;
  • Temperatura de funcionamiento de -30C a 75C.

Con el dispositivo, puede rastrear la ruta de un vehículo junto con GLONASS o un dispositivo GPS. La capacidad de enviar mensajes SMS se utiliza en alarmas inalámbricas y diversos sistemas de seguridad.

Descripción del módulo SIM800L

El módulo se basa en el componente SIM800L y se utiliza para enviar SMS, realizar llamadas e intercambiar datos vía GPRS. Una tarjeta micro SIM está instalada en el módulo. El dispositivo tiene una antena incorporada y un conector al que se puede conectar una antena externa. La alimentación del módulo se suministra desde una fuente externa o mediante un convertidor CC-CC. El control se realiza mediante un ordenador mediante UART, Arduino, Raspberry Pi o dispositivos similares.

Presupuesto:

  • Rango de voltaje 3,7 V – 4,2 V;
  • Soporte para red de 4 bandas 900/1800/1900 MHz;
  • GPRS clase 12 (85,6 kB/s);
  • Corriente máxima 500 mA;
  • soporte 2G;
  • Búsqueda automática en cuatro rangos de frecuencia;
  • Temperatura de funcionamiento de –30C a 75C.

Descripción del módulo A6

El módulo A6 fue desarrollado por AI-THINKER en 2016. El dispositivo se utiliza para intercambiar mensajes SMS e intercambiar datos a través de GPRS. La placa se caracteriza por su bajo consumo de energía y su pequeño tamaño. El dispositivo es totalmente compatible con los operadores móviles rusos.

Presupuesto:

  • Rango de voltaje 4,5 – 5,5 V;
  • Fuente de alimentación 5V;
  • Rango de temperatura de funcionamiento de -30 °C a 80 °C;
  • Consumo máximo de corriente 900mA;
  • GPRS Clase 10;
  • Soporta protocolos PPP, TCP, UDP, MUX.

El módulo admite tarjetas microsim.

Descripción del módulo A7

A7 es el último módulo de AI-THINKER. En comparación con su predecesor, el A6 tiene GPS integrado, lo que permite un diseño de dispositivo simplificado.

Presupuesto:

  • Rango de voltaje de funcionamiento 3,3 V-4,6 V;
  • Tensión de alimentación 5V;
  • Frecuencias 850/900/1800/1900 MHz;
  • GPRS Clase 10: Máx. 85,6 kbits;
  • Supresión de ecos y ruidos.

El dispositivo admite tarjetas microSIM. El módulo admite el intercambio de llamadas, el intercambio de mensajes SMS, la transmisión de datos vía GPRS y la recepción de señales vía GPS.

Dónde comprar módulos GSM para Arduino

Como es habitual, antes de empezar, aquí tienes algunos consejos y enlaces útiles a vendedores de Aliexpress.

Módulo GPRS GSM KEYES SIM900 de muy alta calidad Módulo SIM800C para Arduino de un proveedor confiable
Shield para desarrollo, compatible con Arduino, basado en el módulo GPRS/GSM SIM900 Módulo mini A6 GPRS GSM económico

Conexión del escudo GSM GPRS a Arduino

En esta sección veremos los problemas de conexión de módulos GSM a la placa Aduino. Casi todos los ejemplos se basan en Arduino Uno, pero la mayoría de los ejemplos también se utilizarán para placas Mega, Nano, etc.

Conexión del módulo SIM800

Para conectarse, necesita una placa Arduino, un módulo SIM800L, un convertidor reductor de voltaje, cables de conexión y una batería de 12 V. El módulo SIM800L requiere un voltaje Arduino no estándar de 3,7 V; esto requiere un convertidor de voltaje reductor.

La distribución de pines del módulo SIM800 se muestra en la figura.

La placa Arduino debe estar conectada a la computadora mediante un cable USB. Conecte una batería de 12 V a través de un convertidor: -12 V a tierra de Arduino, de tierra al convertidor negativo, +12 V al convertidor positivo. Las salidas del módulo TX y RX deben conectarse a los pines 2 y 3 del Arduino. Se pueden conectar varios módulos a cualquier pin digital.

Módulo de conexión A6

El módulo A6 es más económico que el SIM900 y es muy fácil de conectar a Arduino. El módulo se alimenta con un voltaje de 5V, por lo que la conexión no requiere elementos reductores de voltaje adicionales.

Para conectarse, necesitará una placa Arduino (en este caso, se considera Arduino UNO), un módulo GSM A6 y cables de conexión. El diagrama de conexión se muestra en la figura.

El pin RX del módulo GSM debe estar conectado al TX en la placa Arduino, el pin TX debe estar conectado al pin RX en el Arduino. La tierra del módulo está conectada a la tierra del microcontrolador. El pin Vcc del módulo GSM debe estar conectado a PWR_KEY.

Conexión mediante blindaje GSM-GPRS

Antes de realizar la conexión, es importante prestar atención a la tensión de alimentación del blindaje. La corriente en el momento de una llamada o envío de datos puede alcanzar valores de 15-2 A, por lo que no debes alimentar el blindaje directamente desde el Arduino.

Antes de conectarse a Arduino, debe instalar una tarjeta SIM en el escudo GSM-GPRS. También es necesario instalar los puentes TX y RX, como se muestra en la figura.

La conexión se realiza de la siguiente manera: el primer contacto (cable amarillo en la figura) del blindaje debe conectarse al TX del Arduino. El segundo pin (cable verde) se conecta a RX en el Arduino. La tierra del escudo está conectada a la tierra del aruino. La alimentación se suministra al microcontrolador a través de un cable USB.

El diseño de la conexión entre el escudo y la placa Arduino se muestra en la figura.

Para funcionar, necesitará instalar la biblioteca GPRS_Shield_Arduino.

Para verificar la corrección del circuito ensamblado, debe hacer lo siguiente: conecte RESET y GND en el Arduino (esto hará que los datos se transfieran directamente desde el escudo a la computadora), inserte la tarjeta SIM en el escudo y encienda el poder del escudo. La placa Arduino debe estar conectada a la computadora y presionar el botón de encendido. Si todo está conectado correctamente, el LED rojo se encenderá y el LED verde parpadeará.

Breve descripción de la interacción mediante comandos AT

Los comandos AT son un conjunto de comandos especiales para el módem, que constan de cadenas de texto cortas. Para que el módem reconozca el comando que se le ha dado, las líneas deben comenzar con las letras en. La cadena será aceptada cuando el módem esté en modo comando. Los comandos AT se pueden enviar mediante software de comunicaciones o manualmente mediante el teclado. Casi todos los comandos se pueden dividir en 3 modos: prueba, en la que el módulo responde si es compatible con el comando; leer: generar los parámetros del comando actual; escribir: se escribirán nuevos valores.

Lista de comandos AT más utilizados:

  • AT – para comprobar si el módulo está conectado correctamente. Si todo está bien, se devuelve OK.
  • A/ – repite el comando anterior.
  • ¿AT+DPI? – obtener información sobre la velocidad del puerto. La respuesta será +IPR: 0 OK (0 en este caso es automático).
  • ¿AT+ICF? – configuración de transmisión. La respuesta será +ICF: bit, paridad.
  • ¿AT+CFI? – control de transmisión. La respuesta será +IFC: terminal desde módulo, módulo desde terminal (0 – sin control, 1 – control de software, 2 – control de hardware).
  • AT+GCAP – muestra las capacidades del módulo. Un ejemplo de respuesta es +GCAP:+FCLASS,+CGSM.
  • AT+GSN – obtención del módulo IMEI. Respuesta de ejemplo 01322600XXXXXXX.
  • ¿AT+policías? – muestra los operadores disponibles.
  • AT+CPAS – estado del módulo. Respuesta +CPAS: 0. 0 – listo para trabajar, 3 – llamada entrante, 4 – conexión de voz, 2 – desconocido.
  • ¿AT+CCLK? – información sobre la hora y fecha actuales.
  • AT+CLIP=1 – habilitar/deshabilitar el identificador de llamadas. 1 – habilitado, 0 – deshabilitado.
  • AT+CSCB=0 – recepción de mensajes SMS especiales. 0 – permitido, 1 – deshabilitado.
  • AT+CSCS= “GSM” – codificación de mensajes SMS. Puede seleccionar una de las siguientes codificaciones: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1.
  • AT+CMEE=0 – recepción de información de error.
  • AT+CPIN=XXXX: ingrese el código PIN de la tarjeta SIM.
  • AT&F: restablecer la configuración de fábrica.
  • AT+CPOWD=1 – apagado urgente (0) o normal (1) del módulo.
  • ATD+790XXXXXXXX – llamada al número +790XXXXXXXX.
  • ATA: responde a la llamada.
  • AT+CMGS=”+790XXXXXXXX”>Sms de prueba: envío de un mensaje SMS al número +790XXXXXXXX.

En este caso, consideramos comandos básicos Para módulo SIM900. Para diferentes módulos Los comandos pueden variar ligeramente. Los datos para el módulo se suministrarán a través de programa especial"terminal" que debe instalarse en su computadora. También puedes enviar comandos al módulo a través del monitor de puerto en el IDE de Arduino.

Bocetos para trabajar con el módulo GSM.

Envío de SMS usando SIM900 como ejemplo

Antes de enviar un mensaje, debe configurar el módulo. Primero que nada, necesitas convertir a formato de texto mensaje transmitido. Hay un comando AT+CMGF=1 para esto. Debe convertir la codificación a GSM usando el comando AT+CSCS="GSM". Esta codificación es la más conveniente, ya que los caracteres se representan en código ASCII, que el compilador entiende fácilmente.

Luego debes marcar un mensaje SMS. Para ello, se envía un comando con el número de suscriptor AT+CMGS=»+79XXXXXXXXXX» r, en respuesta se le pide que escriba un texto SMS. Necesitas enviar un mensaje. Al finalizar, debe enviar el código de combinación Ctrl+Z, el módulo permitirá enviar texto al destinatario. Cuando se envíe el mensaje, se devolverá OK.

La interacción con el módulo se basa en índices que se asignan a cada nuevo mensaje. Con este índice, puede especificar qué mensaje eliminar o leer.

Recepción de SMS. Para leer un mensaje SMS, utilice el comando AT + CNMI = 2,2,0,0,0. ¿Cuándo llegará el módulo? mensaje de texto, él enviará a puerto serie+CMTI: “SM”,2 (en este caso 2 – número de serie mensajes). Para leerlo, debe enviar el comando AT+CMGR=2.

Recepción llamada de voz. En primer lugar, para mantener una conversación, es necesario conectar un altavoz y un micrófono al módulo. Cuando se reciba una llamada se mostrará el número desde el que se realizó. Para funcionar, debe habilitar la biblioteca GSM:

#incluir

Si la tarjeta SIM está bloqueada, deberá ingresar su código PIN. Si no se requiere un código PIN, este campo debe dejarse en blanco.

#definir NÚMERO PIN “”

En setup(), se debe inicializar la transferencia de datos a la computadora. El siguiente paso es crear una variable local para rastrear el estado de la conexión de red. El boceto no se ejecutará hasta que la tarjeta SIM esté conectada a la red.

booleano notConnected = verdadero;

La función gsmAccess.begin() se utiliza para conectarse a la red. Cuando se establezca la conexión, se devolverá el valor GSM_READY.

vcs.hangCall(); – una función que indica que el módem está listo para recibir llamadas.

getvoiceCallStatus() – determina el estado del boceto. Si alguien llama, devuelve RECEIVINGCALL. Para registrar un número, debe utilizar la función retrieveCallingNumber(). Cuando se responda la llamada, TALKING volverá. El boceto luego esperará a que el personaje nueva linea para interrumpir la conversación.

Establecer una conexión GPRS y enviar datos a un servidor remoto

Primero debe instalar la biblioteca SoftwareSerial, que le permite transferir información en serie y conectar el módulo GSM y el microcontrolador Arduino.

Para enviar datos al servidor es necesario enviar los siguientes comandos:

AT+SAPBR=1,1 – apertura del transportista.

Los siguientes tres comandos están relacionados con la configuración de la conexión de red.

AT+SAPBR=3,1,\”APN\”,\”internet.mts.ru\” – elección operador mts, nombre del punto de acceso.

AT+SAPBR=3,1,\”USER\”,\” mts \” – seleccione el usuario mts.

AT+SAPBR=3,1,\”PWD\”,\” mts\”

AT+SAPBR=1,1 – establecimiento de conexión.

AT+HTTPINIT – inicialización de http.

AT+HTTPPARA=”URL”, – dirección URL.

AT+HTTPREAD – esperando una respuesta.

AT+HTTPTERM – detener http.

Si todo se hace correctamente, aparecerán líneas con comandos AT en el monitor del puerto. Si no hay conexión con el módem, mostrará una línea a la vez. Cuando la conexión GPRS se establezca correctamente, el LED del módulo comenzará a parpadear.




Arriba