Dominar GSM basado en el módulo SIM900D

No hace mucho, un amigo me ofreció un trabajo relacionado con la creación de firmware para un microcontrolador que debía comunicarse con el servidor mediante el módulo GSM SIM900D. Nunca antes había tenido nada que ver con la programación de microcontroladores, y la última vez que programé en C fue durante mi época de estudiante, pero la curiosidad se impuso y me puse manos a la obra. La documentación para este hardware está disponible en Internet, pero no fue posible encontrar buenos ejemplos de cómo trabajar con TCP/IP en código. No quedaba más que hacer que cargar documentación, abastecerse de cigarrillos y té y empezar a maniobrar entre los rastrillos. Y hubo muchos rastrillos. En realidad, es por eso que escribí este artículo: para ponérselo más fácil a los demás.

que se necesitaba

Fue necesario escribir un código que pudiera inicializar el módulo GSM, establecer una conexión con el servidor, recibir y enviar datos arbitrarios, verificar el estado de la conexión y funcionar sin fallas. Y también ser lo suficientemente compacto como para caber en la memoria limitada del microcontrolador y dejar espacio para la funcionalidad principal y un poco más de reserva.

Que pasó al final

El resultado fue un código C que podía hacer todo lo necesario. Debido a los requisitos de compacidad, tuvimos que analizar las respuestas y generar cadenas usando nuestro propio código, lo cual es incluso vergonzoso mostrárselo a personas honestas. Por lo tanto, recomiendo a todos que utilicen expresiones regulares para estos fines. También voy a transferir mi código a un motor de expresión regular liviano, pero después de crear un firmware completamente funcional.

El código requiere funciones/macros para funcionar con el puerto serie, así como la presencia de las funciones memset y memcpy. Por lo tanto, se puede transferir a otra plataforma con relativa facilidad, sin tocar muchas bibliotecas en el camino.

¿Y cómo se ve?

La programación y las pruebas se llevaron a cabo en Windows 7. El código resultante se convirtió en el material principal de este artículo. No daré el código completo ni lo comentaré, sino que mostraré el algoritmo para configurar y trabajar con el módulo GSM.

Características que requiere el código:

  • uint16_t init_serial_port(char *port_name) Esta función configura el puerto serie especificado. Bajo Windows.
  • uint16_t puts_serial(uint8_t *buffer, uint16_t size) Y este escribe una cadena de bytes en este puerto.
  • gets_serial(uint8_t *buffer, uint16_t size) Esto, en consecuencia, lee una cadena de bytes del puerto serie.
Funciones que proporciona el código:
  • init_gprs() & stop_gprs() El módulo GSM se inicializa y desactiva en consecuencia.
  • uint16_t connect_gprs(índice uint8_t, modo uint8_t, char *dirección, char *puerto) Establece una conexión con el servidor. Vale la pena señalar que el módulo puede funcionar con los protocolos TCP y UDP tanto como cliente como como cliente. Se admiten un máximo de 8 conexiones simultáneas.
  • uint16_t close_gprs(uint8_t index) Cierra la conexión especificada.
  • uint16_t send_gprs(índice uint8_t, uint8_t *búfer, tamaño uint16_t) Envía un mensaje a través de la conexión especificada.
  • uint16_t recv_gprs(índice uint8_t, uint8_t *búfer, tamaño uint16_t) Recibir un mensaje. Una función sin bloqueo, lo que significa que no esperará a que aparezcan datos en la transmisión, pero devolverá el control si no hay nada que recibir. Vale la pena señalar que este comportamiento es más fácil de implementar que bloquear.

Cómo trabajar con un puerto serie

Es bastante simple. Hay macros para el microcontrolador de destino para enviar/recibir datos a través de USART, pero como es más fácil depurar dicho código desde una computadora de escritorio, me proporcionaron un paquete de un adaptador USB.<->Módulo USART y GSM. Todo lo que quedaba era aprender a trabajar con el puerto serie en Windows. Resultó sencillo. En resumen, un puerto serie se representa en el sistema operativo como un archivo normal, la información se transfiere mediante las funciones ReadFile y WriteFile. Solo necesita configurar algunos parámetros usando las funciones SetCommTimeouts y SetCommState.

Así es como se ve la función de inicialización del puerto:
uint16_t init_serial_port(char *port_name) ( tiempos de espera de COMMTIMEOUTS; parámetros DCB; int resultado; serial_port_handle = CreateFile(port_name, // "\\\\.\\COMx" GENERIC_READ | GENERIC_WRITE, 0, // Los valores de los parámetros posteriores se corrigen cuando se trabaja con el puerto NULL, OPEN_EXISTING, 0, NULL); if (serial_port_handle == INVALID_HANDLE_VALUE) ( printf("¡Error al abrir un puerto serie!\n"); return 1; ) // Tiempo máximo entre lecturas de dos bytes en una fila timeouts.ReadIntervalTimeout = 100 ; // El siguiente valor se multiplica por el número de caracteres leídos del puerto timeouts.ReadTotalTimeoutMultiplier = 0 // y se suma a este valor, se obtiene el tiempo máximo para completar // toda la operación; timeouts.ReadTotalTimeoutConstant = 1000 // El valor es el mismo que para los dos parámetros anteriores, sin embargo, el tiempo de espera se calcula para la escritura. timeouts.WriteTotalTimeoutConstant = 1000; resultado = SetCommTimeouts(serial_port_handle, &timeouts); ( printf("¡Error al configurar los tiempos de espera para el puerto serie!\ n"); close_serial_port(); devolver 1; ) // Los parámetros del puerto contienen las configuraciones más simples: sin paridad, // sin control de flujo, 1 bit de parada. memset(&parámetros,0,tamañode(parámetros)); parámetros.DCBlength = tamaño de (DCB); GetCommState(serial_port_handle, &parameters); parámetros.BaudRate = (DWORD)BAUD_RATE; parámetros.ByteSize = 8; parámetros.Paridad = NOPARIDAD; parámetros.StopBits = ONESTOPBIT; parámetros.fAbortOnError = VERDADERO; parámetros.fDtrControl = DTR_CONTROL_DISABLE; parámetros.fRtsControl = RTS_CONTROL_DISABLE; parámetros.fBinary = VERDADERO; parámetros.fParity = FALSE; parámetros.fOutX = FALSO; parámetros.fInX = FALSO; parámetros.XonChar = (uint8_t)0x00; parámetros.XoffChar = (uint8_t)0xff; parámetros.fErrorChar = FALSO; parámetros.fNull = FALSO; parámetros.fOutxCtsFlow = FALSO; parámetros.fOutxDsrFlow = FALSO; parámetros.XonLim = 128; parámetros.XoffLim = 128; resultado = SetCommState(serial_port_handle, &parameters); if (resultado == 0) ( printf("¡Error al configurar los parámetros del puerto serie!\n"); close_serial_port(); devuelve 1; ) devuelve 0; )

¿Cómo se produce la comunicación con el módulo GSM?

Una vez configurado el puerto serie, se le pueden enviar comandos AT. El primer comando debe ser la secuencia "AT\r", que permite al módulo ajustar automáticamente la velocidad en baudios en el puerto serie. La respuesta que luego se podrá recibir desde el puerto será similar a "AT\r\r\nOK\r\n" .

El comando es una simple cadena de caracteres ASCII. Para que el módulo acepte el comando, debe colocar un carácter de retorno de carro "\r" al final. En respuesta, el módulo transmitirá una cadena de caracteres que consta de dos partes: el comando al que responde el módulo y la respuesta separada de él por los caracteres "\r\r\n", que termina con los caracteres "\r\n " . Para que sea más conveniente analizar las respuestas, creé una macro que establece un puntero al comienzo de la respuesta en el búfer de recepción. Si desea enviar la respuesta a la consola, debe agregar un carácter nulo al final del mensaje recibido.

Void at_send(char *cmd, tamaño uint16_t) ( resultado uint16_t; cmd = "\r"; resultado = puts_serial(cmd, tamaño); return; ) uint16_t at_recv(uint8_t *buffer, tamaño uint16_t) ( resultado uint16_t; resultado = gets_serial (búfer, tamaño); resultado devuelto;
Así es aproximadamente como se ven las funciones auxiliares para enviar un comando y recibir una respuesta.

Inicialización del módulo

La función más grande del código es responsable de configurar el módulo. Durante la inicialización, se envían muchos comandos AT. Los describiré en el orden en que se envían al módulo. No describo específicamente los argumentos y las opciones de respuesta en detalle, porque se pueden encontrar en la documentación.
  • "AT+CPIN=código pin" Como puedes imaginar, este comando desbloquea la tarjeta SIM ingresando un código pin. Para comprobar si se requiere un PIN, puede utilizar el comando "¿AT+CPIN?" .
  • "¿AT+CREG?" Este comando devuelve el estado de registro del módulo en la red. Debe realizar esto hasta que el módulo responda que está registrado en la red.
  • "AT+CGATT=1" Fuerza al módulo a conectarse a GPRS. Puedes comprobar si está conectado usando el comando "AT+CGATT?" .
  • "AT+CIPRXGET=1" Habilita la recuperación manual de los datos transferidos a través de la conexión. De forma predeterminada, esta opción está deshabilitada y los datos se envían al puerto serie tan pronto como se reciben. Esto no es muy conveniente, aunque no es crítico: puede configurar el módulo para que, junto con los datos, también transmita encabezados IP, mediante los cuales puede determinar de quién se recibió el paquete. Decidí que sería más fácil obtener datos manualmente y no me equivoqué. Según tengo entendido, este comando solo lo aceptan los módulos GSM SIM.COM.
  • "AT+CIPMUX=1" De forma predeterminada, el módulo solo puede establecer una conexión. Esta configuración habilita la capacidad de crear múltiples conexiones. El envío y la recepción de datos diferirán solo en un parámetro: el índice de conexión.
  • "AT+CSTT="internet"" APN - Nombre del punto de acceso, nombre del punto de acceso para GPRS. Para mi proveedor se ve exactamente así.
  • "AT+CIICR" Establece una conexión inalámbrica GPRS. Puede que lleve algo de tiempo, por lo que deberá ejecutarlo en bucle y comprobar la respuesta.
  • "AT+CIFSR" Devuelve la dirección IP del módulo. Lo uso para comprobar si el módulo está conectado a Internet.
  • "AT+CDNSCFG="8.8.8.8","8.8.4.4"" Este comando configura los servidores DNS que utilizará el módulo.
  • "AT+CIPSTATUS" Además de información sobre el estado de la conexión, este comando proporciona información sobre si el módulo está listo para establecer conexiones. Entonces necesitas verificar su respuesta.
Después de ejecutar estos comandos, el módulo estará listo para su uso. Bueno, o no lo será. Depende de tu suerte.

Hacer y romper conexiones

La conexión se crea con el comando "AT+CIPSTART=index,"mode","address","port"".
  • index indica el número de serie de la conexión, puede tomar valores del 0 al 7.
  • modo especifica el protocolo que utilizará la conexión. Puede ser "TCP" o "UDP".
  • dirección especifica la dirección del servidor. Si se especificaron servidores DNS durante la configuración, puede usar tanto la dirección IP como el nombre de dominio.
  • puerto especifica el puerto del servidor con el que se establecerá la conexión.
Tenga en cuenta que cuando se utiliza el protocolo UDP, de forma predeterminada, los datagramas se enviarán y recibirán desde una sola dirección. Para utilizar UDP al máximo y enviar/recibir datos desde cualquier dirección, puede utilizar el llamado modo UDP extendido, configurado con el comando "AT+CIPUDPMODE". Le remito a la documentación para más detalles.

En respuesta a un comando, puede recibir varias respuestas posibles. Si todo está bien, luego del "OK" estándar, después de un corto período de tiempo puede obtener una de tres respuestas:

  • "índice, YA CONECTADO" esto significa que ya se ha establecido una conexión con el índice dado y vale la pena buscarla.
  • "índice, CONECTAR OK" aquí todo es obvio.
  • "index,CONNECT FAIL" significa que hubo problemas al establecer la conexión.
Puede cerrar la conexión con el comando "AT+CIPCLOSE=index". Puede interrumpir todas las conexiones y desactivar la interfaz GPRS con el comando "AT+CIPSHUT".

Transferencia de datos

Los datos se transfieren con el comando "AT+CIPSEND=index,length", donde índice especifica la conexión a través de la cual se deben enviar los datos y longitud especifica la longitud del paquete de datos. Por cierto, puedes averiguar la MTU para cada conexión usando el comando "AT+CIPSEND=?" .

Si todo está bien, el módulo responderá al comando con un mensaje ">", después del cual deberá enviar datos al puerto serie. Una vez que el módulo reciba una cantidad de bytes igual a la longitud, dirá algo como "índice, ENVIAR OK". En general, no es necesario utilizar el parámetro de longitud, pero en este caso el final del paquete de datos debe indicarse explícitamente utilizando el símbolo 0x1A, en la combinación de terminal Ctrl+Z. Obviamente, esta opción no es adecuada para transmitir datos arbitrarios.

Como puedes ver, la transferencia de datos no es un proceso muy complicado. Por tanto, pasemos a la parte más interesante: la recepción de datos.

Recibiendo información

Tan pronto como el módulo GSM recibe datos, lo indica enviando una cadena como "+CIPRXGET:1,index\r\n" al puerto serie. Sinceramente no sé qué significa, porque la función de este módulo está poco documentada, pero a mí me aparece en todos los mensajes sobre recepción de paquetes.

No me gustaba la idea de tener que monitorear los mensajes del módulo de una forma u otra. Sin embargo, después de jugar un poco con el depurador, descubrí que el módulo no envía ningún otro mensaje asincrónico, y también que después de ejecutar cualquier comando AT, este mensaje aparece al principio del búfer. Como hice una macro para separar la respuesta del comando buscando la subcadena "\r\r\n", no me afectó de ninguna manera. Así, la función de recepción de datos se implementó de forma bastante sencilla.

Entonces, puede recibir datos con el comando "AT+CIPRXGET=2,index,length". Dos significa modo de recepción, en este caso los bytes simplemente se vierten en el puerto serie. También puede especificar recibir datos como texto HEX, presumiblemente para evitar conflictos con el control de flujo del software. No necesitaba esto porque no uso ningún control de flujo. El parámetro de longitud especifica el tamaño del paquete de datos que queremos recibir a la vez.

En respuesta, recibiremos algo como "+CIPRXGET:2,index,received,excess\r\n__DATA__\r\nOK\r\n" . El campo recibido contendrá la cantidad de bytes en el paquete de datos __DATA__ y el campo sobrante contendrá la cantidad de bytes en espera en el búfer del módulo. Entonces, si el campo recibido es cero, puedes decir con la conciencia tranquila que no hay nada que recibir. De hecho, al usar esto, implementé una función sin bloqueo para recibir datos.

Finalmente

Antes de escribir código, le recomiendo encarecidamente que se familiarice con los comandos AT utilizando PuTTY, que funciona muy bien con el puerto serie.

Espero que la información de este artículo ayude a alguien a escribir código para su SIM900. Es muy posible que los principios de trabajo con el módulo GSM descritos anteriormente se puedan aplicar a módulos de otros modelos y, posiblemente, de fabricantes.

Etiquetas:

  • microcontroladores
  • programación
  • gsm
  • gprs
Agregar etiquetas

Un componente importante de la automatización de cualquier instalación es un sistema de seguimiento y control. Si controlar un objeto a distancias cortas (hasta varios cientos de metros) no causa grandes problemas, puede utilizar transceptores individuales de baja potencia. Esta técnica no funcionará para monitorear objetos remotos; organizar su propio canal de radio, digamos, durante 100 km, no funcionará tan fácilmente. Pero hay una salida: puede utilizar las redes de operadores de telefonía móvil desplegadas en todas partes. Para ello, existen incluso módulos GSM especializados que simulan ser un simple teléfono móvil en la red opsos.Uno de estos módulos GSM SIM900D cayó en mis manos (gracias al compañero RD3AVJ), y hablaremos de ello.

SIM900D es esencialmente un dispositivo completo que es capaz de utilizar la mayoría de los servicios móviles: realizar y recibir llamadas, enviar y recibir SMS y MMS, utilizar GPRS y acceder a FTP. Además de ventajas como un controlador de carga de batería de iones de litio incorporado, un reloj en tiempo real, una interfaz de salida PWM para conectar una pantalla y un convertidor analógico a digital (ADC).

Para poner en marcha el módulo necesitas un mínimo de elementos externos y alimentación, pero primero lo primero.


PAG ITANIA


El módulo debe alimentarse con un voltaje constante en el rango de 3,2 a 4,5 voltios. Además, se suministra energía a los pines 38-39 (VBAT). Tierra está conectada a todos los pines GND.

El consumo en modo de espera es de sólo 1 mA, pero hay que tener en cuenta que durante el alta de la red o cuando la señal es mala, el módulo aumenta la potencia y el consumo puede subir brevemente a 2 A. Se debe preparar la fuente de alimentación para ello y los electrolitos. Por un par de miles de microfaradios no será superfluo aquí.


En caso de funcionamiento autónomo, se recomienda utilizar baterías de Li-Ion, que el módulo puede recargar por sí solo. Para ello hay un controlador de carga incorporado. Para que el módulo pueda controlar el proceso de carga, existe una entrada TEMP_BAT (pin 27). El tercer terminal de la batería está conectado a este terminal (este es el terminal del termistor integrado en la batería) y si la batería se sobrecalienta, se detendrá la carga.



La fuente de alimentación para cargar la batería está conectada al pin VCHG (pin 28). El voltaje de la fuente puede estar en el rango de 5 a 6 voltios con la capacidad de consumir corriente de hasta 750 mA.

La carga comienza automáticamente cuando se aplica voltaje al pin VCHG, por lo que el programa de control debe sondear el estado de la batería y, si es necesario, aplicar voltaje de carga, por ejemplo, a través de un interruptor de transistor.

CONECTAR UNA TARJETA SIM

El siguiente elemento principal es la tarjeta SIM. Esta es la clave para ingresar a la red opsos :) Para trabajar con el módulo, necesita tarjetas SIM con un voltaje de alimentación de 3 o 1,8 voltios (las tarjetas SIM antiguas de cinco voltios no funcionarán). El diagrama general de conexión se encuentra a continuación.


Está conectado a los pines SIM_x (pines 6-9). Para que el voltaje de suministro aparezca en el pin SIM_VDD, es necesario presionar el pin KBR0 (pin 10) contra el suelo.

Para proteger las líneas de la estática, se recomienda utilizar diodos TVS especiales como el SMF05C. Pero no los encontrarás por ningún lado, así que puedes dejarlos sin ellos, lo principal es tocar estas conclusiones lo menos posible. Y al soldar, si no hay una estación de soldadura, suelde con el soldador apagado.

ANTENA

Aquí todo parece sencillo, se conecta al pin 33 (ANT). Es recomendable utilizar una antena GSM especial; de su calidad dependerá el consumo de energía del transmisor y, como resultado, la duración de la batería del módulo. Para un tramo de pista en una tabla de 7 mm de largo, el nivel de señal fue 4 sobre 31, es decir, se capta pero muy débilmente. Pero esto siempre que el repetidor GSM esté ubicado en un edificio vecino.

El lado derecho del circuito (encerrado con una línea de puntos) sirve para igualar la impedancia de la antena si no está conectada directamente al módulo, sino a través de un cable largo. Las denominaciones aquí se seleccionan de forma práctica y utilizando dispositivos especiales, por lo que esta parte del circuito se puede perder.

RELOJ EN TIEMPO REAL

El módulo dispone de su propio RTC, capaz de mantener la hora incluso en ausencia de alimentación principal. Para hacer esto, se debe conectar una fuente de energía de respaldo, por ejemplo, una batería CR2032 de 3 voltios o un ionistor, al pin VRTC (pin 15). Si conecta una fuente no recargable (como una batería simple), debe usar un diodo Schottky para limitar la corriente inversa. A continuación se muestran dos diagramas, a la izquierda está la conexión del ionizador; a la derecha están las baterías.

INDICACIÓN

Para indicar su propio estado durante el funcionamiento, el módulo tiene varios pines para conectar LED. El primero de ellos es el pin NETLIGHT (pin 41). En este pin aparece una onda cuadrada cuando el módulo está en funcionamiento, con una frecuencia que depende del estado de conexión a la red celular: durante la búsqueda y el registro, aparece un nivel alto en este pin con un período de 800 ms, después del registro del red - con un período de 3 segundos. Puede conectar un LED a este pin solo a través de un interruptor de transistor:



Para indicar el funcionamiento del módulo, hay otro pin: ESTADO (pin 5). Aparece un nivel alto cuando el módulo está en modo operativo. El LED se conecta a esta pata de la misma forma que al pin NETLIGHT (a través de un transistor NPN).

El pin RING (pin 11) se utiliza para indicar llamadas entrantes y mensajes de texto. Este pin es conveniente para usar con una interrupción de controlador externo para una respuesta rápida a eventos. A diferencia de los dos anteriores, el nivel activo en el pin RING es bajo, por lo que si conectas un LED aquí, necesitas usar un transistor PNP como clave:



INICIO DEL MÓDULO

El módulo arranca con un impulso negativo de al menos 1 segundo de duración. en la pierna PWRKEY (pin 12). Para suministrar un impulso, se recomienda utilizar el siguiente esquema:


Para abrir el transistor, puede utilizar un botón o un pulso del microcontrolador. Si aplica nuevamente un impulso a esta pierna, el módulo se apagará.

AUDIO

El módulo SIM900D tiene dos entradas para micrófono y una salida de altavoz. Los pines 18 a 26 se utilizan para la conexión. El diagrama correspondiente se muestra a continuación.

Conexión de micrófono:

Recientemente, han aparecido muchas opciones diferentes para esquemas de dispositivos de alarma GSM. Si en este esquema se utiliza un módulo GSM, en la mayoría de los casos se trata de un módulo ampliamente utilizado producido por la empresa china SimCom SIM300. Este módulo ha demostrado ser muy bueno, tanto en términos de confiabilidad como de bajo costo.
Se presenta una descripción de un dispositivo de señalización GSM basado en el módulo SIM300, desarrollado por el autor. También hay dibujos de placas de circuito impreso y una versión con todas las funciones del firmware del microcontrolador. Además, para este sistema de alarma se han desarrollado diversos módulos de ampliación, mandos a distancia, unidades de control por teclado, fuentes de alimentación...
Pero el fabricante anunció que a partir de finales de 2010 se suspenderá la producción de módulos GSM de la línea SIM3xx. En su lugar, se recomienda utilizar un módulo nuevo producido por el mismo fabricante: SIM900. Además, como ya hemos dicho, el SIM900 será mucho más funcional que su “antepasado” y, lo que para nosotros es uno de los criterios más importantes, más barato.

Algo sobre SIM900...

Entonces, ¿qué es el módulo SIM900? Tomemos la hoja de datos e intentemos leerla.
El módulo SIM900 es un dispositivo GSM/GPRS cuatribanda que funciona en frecuencias 850/900/950/1900 MHz, diseñado para transmitir voz, datos, mensajes SMS, etc.
Principales características técnicas del módulo:
Rango de frecuencia:
GSM850, EGSM900, DCS1800, PCS1900
Con compatible con GSM fase 2/2+.
Potencia emitida:
clase 4 (2W/900MHz)
clase 1 (1W/1800MHz)

Control: Comandos AT (GSM 07.10)
Tensión de alimentación del módulo: 3,4 – 4,5 V
Corriente de consumo:
en modo de suspensión - 1,5 mA
en modo transferencia – hasta 500 mA
máximo – 1,8 A
Temperatura de trabajo: -30 … +80°C
Dimensiones: 24x24x3mm
Peso: 3,4 gramos
Como puede ver, este módulo difiere en tamaño de su predecesor, el módulo SIM3xx, aproximadamente una vez y media. Pero en términos de parámetros y funcionalidad también es superior en un orden de magnitud.


Figura 1 – Aspecto del módulo GSM SIM900



Figura 2: Asignaciones de pines del módulo SIM900

La apariencia del módulo se muestra en la Fig. 1, y la asignación de los pines está en la Fig. 2. De las figuras se puede determinar que además del conjunto de interfaces estándar inherente a los modelos anteriores (puertos UART para intercambio de datos, salida de estado del módulo STATUS, pines de interfaz de tarjeta SIM, etc.), se han agregado varios nuevos (conexión de teclado). pines KBR/KBC, salida PWM, pin de reinicio del módulo NRESET).
Debido al hecho de que este módulo en el momento de escribir este artículo aún no ha sido "probado" completamente en la inmensidad de Ucrania, el software se mejora constantemente, es posible que se realicen cambios en la descripción que no empeoren el trabajo en su conjunto; .

Parámetros básicos del dispositivo

Este dispositivo es una continuación de la línea de dispositivos de alarma GSM desarrollados por el autor. Por tanto, los parámetros son en gran medida idénticos.
Monitorear el estado de cuatro bucles de alarma (AL) en todos los modos de funcionamiento, excepto el modo "Programación", y mostrar el estado de los bucles mediante indicadores LED ubicados en el panel frontal del dispositivo (la luz indicadora indica "el bucle está en condiciones normales”, en caso contrario hay rotura o cortocircuito del circuito de alarma).
Los bucles de alarma pueden incluir:
> dispositivos de señalización de contacto magnético (interruptores de láminas SMK, SOMK);
> detectores del tipo “Foil” y “Window”;
> detectores de incendios (IP-104, IP-105);
> sensores de movimiento, volumen y ritmo;
> otros sensores que tienen salida cerrada en condiciones normales y contactos abiertos en caso de violación.
El dispositivo admite los siguientes tipos de zonas de alarma (bucles):
"normal" (la señal de "Alarma" se genera inmediatamente después de recibir una señal de violación de la integridad del bucle de alarma; el bucle no se restablece después de la activación);
“con retraso” (al usuario se le da tiempo para salir y entrar para que pueda tener tiempo de encender el dispositivo y dejar el objeto o abrir el objeto y apagar el dispositivo);
“corredor” (cuando una zona se activa y luego vuelve a la normalidad, este tipo de zona se arma nuevamente);
“Incendio las 24 horas” (el bucle de alarma está constantemente protegido, el desarmado y el desarmado se realiza mediante un comando SMS especial);
“Botón de pánico las 24 horas” (el bucle de alarma está constantemente armado, el desarmado y armado se realiza mediante un comando SMS especial, cuando se activa el bucle solo se realiza la marcación, se envía un mensaje SMS sobre sabotaje, la sirena no encender);
“deshabilitado” (el sistema no responde a ningún cambio en la entrada AL).
Habilitar el modo "Seguridad" usando un botón "oculto" o "secreto", un interruptor "secreto" (en lugar del cual se puede usar un teclado con contactos normalmente abiertos, como "Satel"), un control remoto, una tecla TouchMemory (Dallas) o un teclado adicional, según el firmware del controlador. El firmware descrito aquí utiliza sólo el interruptor "secreto", otras versiones se analizarán más adelante.
Se admiten dos modos de funcionamiento del dispositivo:
Alarma GSM (el terminal GSM está conectado y se intercambian datos con él);
sistema de alarma autónomo (el terminal GSM no participa en el funcionamiento del sistema, el dispositivo funciona como un sistema de alarma autónomo).
Desarmar y armar mediante llamada desde un teléfono específico (se puede deshabilitar) con la transmisión del correspondiente SMS sobre el estado del sistema.
Transmisión de un mensaje SMS de confirmación cuando un objeto está bajo protección (se puede desactivar).
Generar una señal de "Alarma" (encender la sirena, transmitir datos de "alarma" a un teléfono móvil) en caso de una violación de la integridad ("rotura" o "cortocircuito") de al menos uno de los bucles de alarma.
Envío de mensajes SMS y marcación automática a tres números de teléfono móviles o fijos (si su operador de telecomunicaciones admite funciones de SMS).
Cambiar el dispositivo al modo "Desarmado" usando solo el control remoto, el teclado, recibiendo un mensaje SMS del número de teléfono móvil 1 y (o) llamando desde este número (se puede desactivar), así como un interruptor "secreto", dependiendo del firmware del controlador.
La capacidad de controlar remotamente el dispositivo enviando mensajes SMS de cierto contenido (se puede desactivar).
Programar las funciones y parámetros básicos del dispositivo (números de teléfono, tiempo de retardo, tiempo de funcionamiento de la sirena, etc.) utilizando el programa informático Lite Programmer en el modo “Programación” del dispositivo. En este caso, la salida del puerto COM de la computadora (pins RxD y TxD) se conecta al conector correspondiente del dispositivo de alarma mediante un cable especial.
El dispositivo envía una señal específica al usuario sobre la falta de fondos en la cuenta de la tarjeta móvil.
El dispositivo envía una señal específica al usuario sobre la ausencia de señal de comunicación con la estación móvil.
Transmisión de una señal SMS cuando se pierde la tensión de red (220V) en el modo "Seguridad" (se puede desactivar).
El uso de un módem GSM incorporado le permite prescindir de bloqueos y conexiones innecesarias, así como aumentar la compatibilidad y estabilidad de la conexión del canal GSM.
Reacción programada de la salida de potencia: enciende la salida sólo en el modo "Alarma" durante un tiempo configurado por el usuario (de 60 a 240 segundos).
El uso del protocolo de transmisión de datos IR original por parte del control remoto para controlar el dispositivo y el control remoto RF, así como la codificación original de los datos recibidos desde el teclado.
Es posible que el dispositivo monitoree el voltaje de suministro de la red y el voltaje de la batería, y cuando el voltaje de la red desaparece o aparece, se envían los mensajes SMS correspondientes. Además, cuando el voltaje de suministro de la fuente de respaldo (batería) cae por debajo de un nivel específico (8-9 V), se envía un mensaje, después del cual el dispositivo entra en modo de "suspensión", del que solo se puede salir cuando la fuente de alimentación ( red o batería) se restablece.
Envío de un mensaje SMS al móvil número 1 al recibir llamadas entrantes indicando el número entrante (se puede desactivar).
El dispositivo permite activar alarmas sonoras o luminosas externas (timbre, sirena, lámpara) con una tensión de funcionamiento de 12V y un consumo de corriente de hasta 1,25A.
El firmware del microcontrolador descrito en este artículo está diseñado para operar el dispositivo junto con un interruptor "secreto", así como para encender y apagar el dispositivo marcando y enviando mensajes SMS. Otras versiones del dispositivo se describirán en los siguientes materiales, si, por supuesto, hay interés del lector.

Especificaciones

Número de bucles de alarma – 4.
Resistencia del elemento remoto (terminal), kOhm – 2,7.
La resistencia máxima del bucle de seguridad sin tener en cuenta la resistencia del elemento remoto, Ohm – 750.
Consumo de corriente de una fuente de CC (sin sensores de alarma activos conectados), a una tensión de 12,6 V, en los siguientes modos de funcionamiento, no más:
- “de servicio”, sin utilizar módulo GSM – 0,16 A;
- “en servicio”, cuando se utiliza un módulo GSM – 0,23 A;
- “seguridad”, cuando se utiliza un módulo GSM – 0,28 A;
- “alarma”, cuando se utiliza el módulo GSM y la sirena está apagada – 0,34 A;
- consumo máximo (pulsos) – 1,8 A.
Estándares GSM soportados: 850/900/1800/1900 MHz.
Límites de configuración de tiempo:
- Tiempo de retardo de entrada – 0…150 segundos;
- Tiempo de retardo de salida – 0…250 segundos;
- Tiempo de funcionamiento de la sirena: 30…250 segundos.

Descripción del esquema

El diagrama del circuito eléctrico de la unidad principal se muestra en la Fig. 3. Aclaro – “unidad principal”, porque además se ha desarrollado un gran conjunto de periféricos para estos sistemas de alarma: aquí hay varios paneles de control, unidades de expansión, etc.
En comparación con la versión anterior, el circuito ha sufrido cambios cualitativos: además, como se mencionó anteriormente, el uso de otro módulo GSM, también se eliminó el relé (en su lugar, se usa un IC, un conjunto de potentes interruptores de transistores), y el También se ha eliminado la unidad convertidora RS232-UART (como lo ha demostrado la práctica, la programación no se realiza con mucha frecuencia y para ello se utiliza principalmente una computadora portátil, que a menudo simplemente no tiene un puerto RS232).



Figura 3 – Diagrama del circuito eléctrico

El principal elemento de control del dispositivo es el microcontrolador ATmega168 fabricado por Atmel. El microcontrolador monitorea los estados de los bucles de alarma conectados a las entradas del ADC y, según el modo de funcionamiento, lleva a cabo acciones adicionales, como marcar y enviar mensajes SMS, encender la sirena, etc.
Las entradas ADC PC0-PC3 están diseñadas para monitorear el estado de los bucles de alarma, el MK mide el voltaje en estos pines y, dependiendo del voltaje, genera una señal de "interrupción", "normal" o "corto". PC5, PC6 reciben voltajes de la salida de la fuente de alimentación para controlar sus valores. Por cierto, si estos pines no están conectados, ¡el dispositivo no se iniciará!
El circuito utiliza LED de control: LED1 – control del funcionamiento del módulo GSM (si hay conexión y el módulo está funcionando, parpadea con una frecuencia de 1 parpadeo durante 2-3 segundos, en otros casos hay problemas con la comunicación o con el propio módulo), LED2 – control del funcionamiento del sistema (en modo de funcionamiento parpadea con una frecuencia de 3-5 veces por segundo, en modo de programación se enciende con una luz constante). Además, los LED para monitorear el estado de los bucles de alarma LED4...LED7 están conectados a los pines IND1...IND4. KEY_S es en realidad el botón o interruptor “secreto”. ALTAVOZ – conector para conectar un altavoz, puede ser de cualquier resistencia, potencia de al menos 0,25 W.

Sobre la fuente de alimentación del dispositivo. Este dispositivo requiere una tensión de alimentación en el rango de 10 - 18 V, con una corriente de hasta 2 A. Es aconsejable construir la fuente de alimentación de tal manera que la tensión de alimentación no desaparezca incluso cuando se corte la red. es decir, proporcionar una batería recargable. Se recomienda utilizar la fuente de alimentación utilizada en versiones anteriores del dispositivo descrito. También describe cómo conectar la fuente de alimentación al dispositivo de alarma.

Programación de las funciones básicas del dispositivo.

La programación de las funciones principales del dispositivo se realiza mediante un programa especial: Lite Programmer. La última versión del programa siempre se puede descargar desde el sitio web del autor. En principio, en lugar de un ordenador para programar el dispositivo, es posible utilizar un teléfono móvil conectado al dispositivo a través de un puerto de datos o de infrarrojos, pero para ello es necesario escribir al menos un midlet de Java, y debido a la falta de tiempo libre, el autor simplemente no tiene tiempo para hacer esto, y programar usando una computadora portátil está bien por ahora. Si alguien está interesado en solucionar este problema que escriba al autor por correo electrónico, se le proporcionará toda la documentación.
El dispositivo se conecta a un puerto COM libre de la computadora a través de un convertidor RS232-UART especial, o a un puerto USB a través de un adaptador USB-UART. ¡No intente conectarse directamente, sin un adaptador (ahora existen artesanos así)! ¡Esto amenaza con la muerte del microcontrolador o del puerto de la computadora!
Cómo cambiar al modo de programación:
1. Presione el botón S1 durante al menos 2 segundos y espere hasta que el indicador de estado de funcionamiento del módulo 2HL1 deje de parpadear (generalmente no más de 10 segundos).
2. Desenergice el dispositivo.
3. Colocar el puente J1, poniendo el dispositivo en modo “Programación”.
4. Conecte el cable para conectar el dispositivo a la computadora.
5. Establezca la conexión con el dispositivo y prográmelo (descrito a continuación).
6. Desenergice el dispositivo.
7. Desconecte el cable de comunicación con la PC y retire el puente J1.
8. Se completa la programación, puede encender y usar el dispositivo.
La forma principal del programa es estándar, sin lujos ni lujos. En el lado derecho del formulario se configura el número de puerto COM, así como la velocidad de transmisión y recepción de datos (para nuestro caso – 115200 baudios), para poner el dispositivo en modo de programación, seleccione "establecer conexión" en la "Acción ”(en la esquina inferior derecha), en este caso, el LED 1LED1 se iluminará con luz constante. ¡Puedes programar!



Figura 4 – Forma principal del programa Lite Programmer

Trabajar con el programa no presenta ninguna dificultad particular para un usuario que ha encendido una computadora al menos una vez en su vida. Además, todo se describe detalladamente en las instrucciones de funcionamiento y programación mencionadas más de una vez. En resumen: configura los parámetros que necesitas, asegúrate de que “Cambiar” aparezca en rojo en la tercera columna, selecciona “Programación” en el cuadro “Acción”, haz clic en el botón “Ejecutar” y listo. Si el parámetro está programado, en la quinta columna aparecerá la inscripción “Programado”; en caso de errores, el programa también mostrará el mensaje correspondiente;

Algunos matices de programación.

Se debe prestar especial atención al proceso de programación, ya que de esto depende el funcionamiento del dispositivo en su conjunto. Como ha demostrado la práctica, el principal error se comete al configurar el número del centro de SMS de un operador de telefonía móvil. Si no conoce este número o no está seguro, es mejor no programarlo en absoluto. En este caso, el software del módulo GSM determinará el número de forma independiente.
Además, tenga cuidado al configurar el número de solicitud de saldo USSD si planea usarlo. Inicialmente, el dispositivo fue desarrollado para usuarios ucranianos, por lo que el saldo mínimo es de uno a nueve rublos hryvnia. Hay dos opciones de instalación disponibles. La primera es seleccionar el operador deseado, y el programa mismo establecerá el número requerido y el monto del saldo mínimo igual a dos jrivnia. La segunda opción es seleccionar TUNE USSD en el menú desplegable para seleccionar un operador de solicitud de USSD y luego completar los parámetros requeridos en el formulario que aparece: cantidad mínima (de uno a nueve rublos), separador de rublo-kopek (algunos Los operadores utilizan diferentes caracteres de separación, por ejemplo, punto, coma, dos puntos).
Actualmente, el programa solo admite el alfabeto latino al ingresar textos SMS, ya que esta función también es compatible con el programa del microcontrolador. Actualmente se está trabajando para incluir el alfabeto cirílico.

Guía de inicio rápido.

Antes de instalar una alarma en el dispositivo, conviene “preparar” la tarjeta SIM de alguna manera, a saber: deshabilitar la contraseña. Se recomienda utilizar una tarjeta SIM del mismo operador de telefonía móvil que los teléfonos de acceso telefónico. Como mínimo, la probabilidad de que se entreguen mensajes SMS aumentará muchas veces.
Después de aplicar y encender la energía, el dispositivo emitirá un pitido largo desde el altavoz interno, luego se establece la comunicación con el módulo, al finalizar sonarán tres pitidos cortos. El dispositivo está listo para usar.
A continuación hablaremos sobre el uso del dispositivo como dispositivo de alarma de seguridad para edificios interiores, etc. Para usar el dispositivo como alarma de automóvil u otras funciones, primero se requiere un firmware de microcontrolador diferente, y esto está fuera del alcance de este artículo. Este es el tema de publicaciones posteriores.
Para armar el dispositivo, debe cerrar el interruptor KEY_S. Por cierto, en lugar de este interruptor puedes utilizar cualquier teclado con contactos normalmente abiertos, por ejemplo Satel SW02. Después de esto, el dispositivo comenzará a contar el tiempo de salida (el tiempo se establece durante la programación), durante el cual es necesario abandonar el objeto protegido. Si, una vez transcurrido el tiempo de salida, todos los bucles están ensamblados, el dispositivo entra en modo de seguridad. Si, una vez transcurrido el tiempo de entrada, al menos uno de los bucles está abierto o en cortocircuito, el dispositivo emite un sonido intermitente durante 100-140 segundos, se envía un mensaje sobre el objeto que no está armado al número 1 (si está programado), después de lo cual entra en modo de alarma enviando todos los mensajes y marcando. También puedes armar el dispositivo llamando desde el número programado primero, o enviando un mensaje SMS con el texto “INICIAR” desde el mismo número. Cabe recordar que en esta versión del firmware no se recomienda utilizar el interruptor “secreto” y las funciones GSM juntas al armar para evitar su influencia mutua. Cuando se usan juntos, la prioridad estará en el lado del interruptor, ¡las funciones GSM no funcionarán!
En modo de seguridad, el dispositivo monitorea constantemente el estado de todos los bucles de alarma, así como el estado del módulo GSM. En este caso, si se activa el bucle, se envían mensajes SMS y se realizan llamadas de acuerdo con la tarjeta de programación. La marcación se realiza hasta que el suscriptor levanta el teléfono, pero no más de ocho veces. También en modo de seguridad se controla el suministro de energía a la red 220V y la batería de respaldo. Al mismo tiempo, con cada pérdida de 220V y su posterior reaparición, se envía el correspondiente mensaje SMS (esta función se puede desactivar durante la programación).
Para desarmar el dispositivo, debe abrir el objeto y abrir los contactos del interruptor durante el tiempo de salida. Si no se hace esto, el dispositivo entra en modo de alarma. O desarmar el objeto antes de abrir llamando o enviando el mensaje SMS “STOP” desde el primer número.
En modo de espera, el dispositivo también monitorea el estado de los bucles de alarma, así como el módulo GSM. Si se pierde la comunicación con el módulo o se pierde la red, suenan cinco zumbadores de corta duración cada 2 a 4 minutos. Además, cada 30-40 minutos se consulta el estado de la cuenta del número de móvil. En este caso, se escuchan diez señales sonoras de corta duración ("trino") y se envía un mensaje SMS ("¡¡NO HAY DINERO!!") al número 1.
La tabla muestra los mensajes de servicio que el dispositivo puede enviar cuando ocurren ciertos eventos (si la función de envío está desactivada durante la programación, ¡estos mensajes no se envían!):

texto SMS

Descripción

Nota

¡Paren la guardia!

Confirmación de desarmado del sistema.

Modo de espera

¡¡¡APAGADO!!!

Mal funcionamiento o ausencia de tensión de red de 220V

Sólo en modo de seguridad

Encendido

Aparición de tensión de red de 220V (después de ausencia)

¡¡¡TODOS LOS PODERES APAGADOS!!!

Todos los voltajes de suministro están por debajo de lo normal. Después de un tiempo, el dispositivo entrará en modo de suspensión.

En todos los modos de funcionamiento

Empezar después de dormir

Reanudación del funcionamiento del dispositivo después de un corte de energía

¡¡¡SIN DINERO!!!

Cantidad mínima de fondos en la cuenta. ¡Necesitas recargar tu cuenta!

Este dispositivo tiene un gran potencial de mejora y modernización; puede ser utilizado no sólo como alarma, sino también como cualquier dispositivo de adquisición y transmisión de datos configurando el programa del microcontrolador para cada caso específico.

Conclusión

El dispositivo descrito pasó las pruebas iniciales en el laboratorio del autor y mostró buenos resultados. El módulo SIM900 mostró un funcionamiento estable cuando se controlaba mediante comandos AT estándar, no hubo quejas especiales. Próximamente se desarrollarán placas de circuito impreso para este dispositivo y se preparará la documentación correspondiente. Se adjunta a este artículo una versión de demostración del firmware del microcontrolador. Una versión completamente funcional del firmware del microcontrolador del dispositivo está disponible para todos de forma gratuita. Para ello, debe enviar la solicitud correspondiente a la dirección de correo electrónico del autor o vía ICQ. También se consideran posibles propuestas para organizar la producción del dispositivo de alarma y los dispositivos periféricos descritos.
En el futuro, se prevé garantizar la compatibilidad del dispositivo con todos los dispositivos periféricos diseñados para la versión anterior del dispositivo de alarma GSM del autor D. Dmitrenko. Aquí hay adiciones al artículo para varias aplicaciones específicas.

Actualmente, todo el firmware es completamente funcional, excepto el firmware que admite teclas iButton, existen restricciones en la cantidad máxima de teclas utilizadas, de una a tres.

1. Usar una tecla TouchMemory para controlar el dispositivo

Actualmente, se ha desarrollado firmware de microcontrolador para funcionar con teclas TouchMemory. Para hacer esto, es necesario complementar el dispositivo con un dispositivo simple que consta de dos resistencias, una capacitancia y un diodo zener. Y, por supuesto, utilizar el firmware para este tipo de dispositivos.
Un ejemplo del uso de un dispositivo de este tipo se describe claramente en el artículo Señalización GSM mediante teclas iButton. Allí, en el diagrama del circuito eléctrico, se muestra la conexión de un dispositivo adicional y se dan dibujos de la placa de circuito impreso.
El firmware se puede descargar [buscando el dispositivo DDN Research HG45Q]

Finalmente, logré comenzar a estudiar quizás el módulo GSM más popular en el entorno del bricolaje: GSM900. ¿Qué es un módulo GSM? Este es un dispositivo que implementa las funciones de un teléfono celular. En otras palabras, GSM900 le permite llamar a otros suscriptores de la red celular, recibir llamadas, enviar y recibir mensajes SMS. Y, por supuesto, transmitir datos mediante el protocolo GPRS.

Necesitaba este módulo para un propósito muy específico: se me ocurrió un proyecto para un sistema de iluminación controlado remotamente. La forma más sencilla de solucionar este problema es mediante mensajes SMS: envíe un SMS - la luz se enciende, envíe otro - se apaga. No necesitas ningún control remoto y todo el mundo tiene un teléfono (incluso las personas sin hogar). De hecho, en este artículo consideraré exactamente esta opción para utilizar el módulo GSM900.

1. firmware

Quiso el destino que terminé con el módulo GSM900A en mis manos. Después de leer el primer foro que encontré sobre el resurgimiento de esto, resultó que la letra A en el nombre significa que el módulo pertenece a la región asiática. Y por tanto, no trabajará con nuestros operadores. Desánimo 🙁

Afortunadamente, las siguientes publicaciones en el mismo foro contenían información tranquilizadora :) Resultó que no todo es tan malo, y para que el módulo funcione en nuestra región, simplemente es necesario actualizarlo. Este proceso está bien descrito en el blog de nuestro colega Alex-EXE: firmware sim900 “todo en uno”
Intentaré hacer lo mismo, pero con más detalle y teniendo en cuenta las características de mi módulo.

Si tiene el módulo correcto y no se requiere firmware, puede pasar inmediatamente a la sección No. 2.

Herramientas

Entonces, primero, preparemos todas las herramientas necesarias. En primer lugar, directamente para el firmware necesitará la aplicación de desarrollo de herramientas de descarga de la serie SIM900, que se puede encontrar fácilmente en Internet ().

En segundo lugar, también será útil el archivo de firmware 1137B02SIM900M64_ST_ENHANCE, que también es fácil de obtener ().

Finalmente, en tercer lugar, necesitaremos un buen terminal para experimentar con el módulo. Normalmente uso TeraTerm, pero esta vez sus capacidades no fueron suficientes (o no lo entendí). Tuve que instalar un monstruo con un nombre brillante.

Conexión al puente USB-UART

Ahora conectamos las líneas RX y TX al puente. Para este último utilicé CP2102. En mi caso, contrariamente a la lógica, los RX y TX del puente estaban conectados a los RX y TX del módulo GSM de forma simétrica (y no transversal, como es habitual).

También debes alimentar el módulo desde una fuente estable y potente, ya que la corriente máxima en el módulo puede alcanzar 2A (supuestamente). Apto para 4 pilas tamaño AA. El diagrama de conexión completo se ve así:

SIM900
CP2102 Tierra Tierra
CP2102 +5V VCC_MCU
CP2102 RX SIMR
CP2102TX SIMT
Fuente externa de +5V VCC5
Fuente externa Gnd Tierra
primero

Este modelo no tiene botón de reset, por lo que para flashear el firmware necesitaremos tirar el pin RST a tierra durante un par de segundos. Para ello lo dejaremos suspendido en el aire por ahora.

Preconfiguración del módulo

Antes de comenzar a actualizar el firmware, nos conectaremos al módulo y cambiaremos su velocidad UART. Para hacer esto, inicie el terminal Terminal, seleccione el puerto correcto y establezca el tipo de cambio en 9600. Después de eso, haga clic en "Conectar".

Toda la comunicación con el módulo se produce mediante comandos AT.

Lo primero que le indicaremos al módulo será el comando AT más primitivo: “AT”. Se trata de una especie de ping al que el módulo debe responder con la palabra “OK”.

Si todo ha ido bien y el módulo realmente nos ha respondido “OK”, enviamos el comando de configuración de velocidad:

AT+IPR=115200

Al final del comando debe haber un carácter de retorno de carro: CR. En la tabla ASCII tiene el código 13 (o 0x0D en hexadecimal). El símbolo se insertará automáticamente si marca la casilla de verificación “+CR” junto a la línea de entrada en nuestra terminal. Otros terminales también tienen configuraciones similares.

En respuesta al comando ingresado recibiremos nuevamente “OK”.

Necesitaremos esta configuración para acelerar el procedimiento de firmware. De lo contrario, como indica Alex-EXE en su blog, el firmware tardará aproximadamente una hora.

Configurando el programa

Después de que todos los cables estén conectados en los lugares correctos y el módulo esté preparado para el firmware, inicie la aplicación de desarrollo de herramientas de descarga de la serie SIM900. La configuración del programa consta de solo unos pocos puntos:

  • En el campo Objetivo indicamos el chip objetivo. Por alguna razón no pude cargar el firmware al SIM900A, así que elegí “SIM900”;
  • seleccione el puerto correcto en el campo Puerto;
  • Establezca la velocidad en baudios en 115200;
  • finalmente, especifique el archivo de firmware en el campo Archivo principal (archivo con la extensión cla).

Eso es todo con la configuración.

firmware

Ahora llevamos a cabo de forma estricta y coherente seis pasos importantes.

  • Conectamos energía al módulo (nuestras 4 baterías). La luz roja de encendido debería encenderse y la luz de estado debería comenzar a parpadear.
  • Conectamos USB-UART al ordenador.
  • Cerramos el cable RST a tierra (recordemos que todo este tiempo estuvo suspendido en el aire).
  • Haga clic en el botón Iniciar descarga en el programa.
  • Contamos hasta tres mentalmente y levantamos el RST del suelo.

Esperamos 6 minutos hasta que se complete el firmware.

¿Qué tenemos después del firmware?

En primer lugar, el módulo ahora puede funcionar con nuestros operadores. En segundo lugar, instalamos firmware avanzado, entre cuyas características, por ejemplo, se encuentran la recepción de coordenadas de módulos desde torres de telefonía móvil, el trabajo con correo electrónico y el acceso a 2,5 MB adicionales de memoria.

2. Experimentos con módulo GSM

Intentemos ahora realizar varias operaciones útiles con el módulo. Primero, ingrese su código PIN (si tiene uno):

EN+CPIN=8899

La respuesta del módulo será:

CPIN: LISTO.

Después de esto recibiremos información del módulo.

AT+GMR - identificador de firmware. AT+GSN - IMEI. AT+CPAS - estado (0 – listo para trabajar, 2 – desconocido, 3 – llamada entrante, 4 – conexión de voz). ¿AT+policías? - información sobre el operador.

Llamadas telefónicas

Ahora marquemos algún número. Esto se hace usando el comando:

ATD+790XXXXXXXXX;

El punto y coma al final del comando es muy importante, ¡no lo olvides!

Si alguien llama al dispositivo durante una sesión UART, se devolverá el siguiente mensaje:

Puede contestar la llamada (captar) con el comando:

Si hay auriculares y un micrófono conectados al módulo, puede comunicarse con un suscriptor remoto como si usara un teléfono celular normal.

El comando finaliza la llamada:

Envío de SMS

Primero, habilitemos el modo de mensaje de texto:

AT+CMGF=1

y establece la codificación:

AT+CSCS= "GSM"

El módulo también admite otras codificaciones que son más convenientes para sistemas automáticos. Pero para nuestros experimentos, lo más conveniente es utilizar el modo GSM, en el que el teléfono se especifica en números y el texto de los mensajes está escrito en codificación ASCII. Ahora enviemos un mensaje a alguien:

AT+CMGS="+79123456789"

Y al final del comando necesitas agregar dos caracteres de servicio a la vez: CR y LF. En Terminal, esto se puede hacer marcando CR=CR+LF, o agregando manualmente al final de la línea: AT+CMGS=»+79123456789″&0D&0A

Luego de ingresar este comando, se recibirá como respuesta el símbolo “>”, indicando el comienzo de ingresar un mensaje. Escribimos un texto:

¡Hola Mundo!

Al final del mensaje tendremos que pasar uno de dos caracteres especiales. Para enviar un mensaje, ingrese un carácter de la tabla ASCII con el número 26. Para cancelar el envío, ingrese un carácter con el número 27.

En la terminal que usamos, para enviar un carácter por código, puedes usar una de dos expresiones: en hexadecimal: $1A, y en decimal: #026

Recibir SMS

Si se envía un SMS al dispositivo durante una sesión, se devolverá un mensaje en el siguiente formato:

CMTI: "SM",4

aquí 4 es el número del mensaje entrante no leído.

AT+CMGR=4

En respuesta obtenemos:

CMGR: "REC READ", "+790XXXXXXXX", "","13/09/21,11:57:46+24" ¡Hola mundo! DE ACUERDO

En general, todo es sencillo. Esto es suficiente para que podamos realizar nuestros planes. Para un estudio más profundo de las capacidades del GFM900, recomiendo leer otro artículo de Alex-EXE: comandos at para el módem gsm sim900

3. Interacción con microcontroladores

En general, para controlar dispositivos externos no es necesario emparejar el módulo GSM900 con otro microcontrolador. Puedes incorporar tu propio programa en este módulo, que hará lo que quieras con pines GPIO gratuitos. Sin embargo, en la mayoría de las placas prefabricadas los GPIO no están enrutados, por lo que para crear un prototipo del dispositivo deseado, usaremos el Arduino Uno/Nano más simple.

Arduino y GSM900 se comunicarán a través de la misma interfaz UART. Para ello, conecte estos dos dispositivos según el siguiente esquema:

GSM900 Tierra VCC_MCU SIMT SIMR
ArduinoUno Tierra +5V RX Texas

Ahora creemos un programa que captará mensajes SMS e iluminará el LED en la pata número 13 durante un par de segundos. Con esto simulamos el control de algún dispositivo externo.

Giro constante de cadena = "1234"; constante int rel_pin = 13; Cadena ss = ""; // Enviar un código PIN void sendPin())( String cmd = "AT+CPIN="+spin+char(0x0D); Serial.print(cmd); ) // Enciende el LED durante 2 segundos void recibirSMS(String s)( digitalWrite(rel_pin, HIGH); delay(2000); digitalWrite(rel_pin, LOW); // Analiza la cadena que proviene del módulo void parseString(String src)( bool Collect = false; String s = ""; para(byte i =0;

Cargamos el programa en el Arduino y probamos el sistema. Si todo se hace correctamente, al enviar un mensaje SMS al dispositivo se encenderá el LED durante 2 segundos. Por supuesto, en lugar de un LED, puedes encender/apagar un potente relé al que está conectada la caldera de calefacción de una casa de campo.

Escudo GPRS/GSM SIM900 con antena
Kit de cuatro bandas de placa de desarrollo de escudo SIM900 GPRS/GSM para Compatible con Arduino

Módulo para el funcionamiento de Arduino y dispositivos microcontroladores similares en redes celulares utilizando estándares GSM y GPRS. Enfocado al uso en sistemas de automatización y control. El intercambio de datos con otros módulos se realiza a través de la interfaz UART. Shield GPRS/GSM SIM900 con antena puede interactuar directamente con un microcontrolador a través de una interfaz UART o trabajar en conjunto con una computadora personal usando un convertidor de interfaz portPC-UART. Esto es posible gracias a la compatibilidad del software a nivel de la clase de comandos utilizados para controlar los módems: comandos AT.
Los objetos se monitorean y controlan mediante el intercambio de datos al alcance de las comunicaciones móviles. Proporciona comunicación por voz, envío de SMS, MMS y muchas otras funciones y servicios. El funcionamiento del módulo se basa en el componente SIM900.

Artículo en ruso de una revista sobre el componente SIM900. El componente fue desarrollado por SIMCom Wireless Solutions. El sitio web de SIMCom tiene una versión rusa. La placa del módulo GSM en el lado del componente contiene conectores para conectar una antena, auriculares y un micrófono. En el lado de soldadura de la placa hay un soporte para batería CR1220 de 3 voltios que admite el funcionamiento del reloj del módulo y un contenedor para instalar una tarjeta SIM.
Una de las aplicaciones del dispositivo es un sistema de seguimiento del movimiento de vehículos junto con GLONASS o un dispositivo GPS. El envío de mensajes SMS le permite utilizar el módulo en despacho, alarmas inalámbricas y sistemas de seguridad. Como resultado de eventos en curso, se pueden enviar varios SMS: "Parada de emergencia del ascensor 2 del edificio No. 34", "La puerta de la cabina está abierta", "El sótano está abierto", "La tensión de 220 V está apagada", "El La puerta principal de la cabaña está abierta”, “La iluminación está encendida”, “La temperatura en el invernadero está por debajo del nivel crítico”. El módulo es indispensable para monitorear y controlar objetos en movimiento que se desplazan a largas distancias. O en el caso de que el operador se mueva a gran distancia de un objeto estacionario.

Shield GPRS/GSM SIM900 con antena brinda amplias oportunidades para estudiar el funcionamiento del componente SIM900. La instalación del componente SIM900 se realiza utilizando las tecnologías más modernas, lo que dificulta mucho la soldadura del SIM900 a la placa de circuito impreso en condiciones de laboratorio. Al tener un módulo con SIM900 instalado, puede realizar experimentos sobre el uso del componente SIM900. Al utilizar el componente SIM900 en sus propios desarrollos, es posible depurar el software y comprobar los diseños de los circuitos.

Características

Nutrición
tensión, V
nominal 5
rango 4.8-5.2
actual
modo normal 50-450 mA
en modo de suspensión 1,5 mA
pulso máximo 2 A
Admite tarjetas SIM alimentadas por 1,8 y 3 V
Bandas de comunicación 850, 900, 1800, 1900 MHz
Soporta red 2G
Potencia de transmisión en diferentes bandas.
1W 1800 y 1900MHz
2W 850 y 900MHz
Cumple con el estándar GSM fase 2/2+
Protocolos TCP y UDP integrados
Clase de transferencia de datos GPRS multislot clase 10/8
Códecs de audio HR, FR, EFR, AMR, cancelación de eco
CDS hasta 14,4 kbit/s
Pila de APP
MUX (07.10)
Protocolos HTTP y FTP
Es posible enviar señales DTMF y reproducir grabaciones como en un contestador automático.
Soporte de reloj en tiempo real RTC
Temperatura, ℃
aire durante el funcionamiento -30...75
almacenamiento -45...90
dimensiones 86 x 58 x 19 mm

Componentes de control

El interruptor de selección de energía establece la fuente de alimentación: externa, conectada a un conector coaxial o la fuente de alimentación del módulo del microcontrolador Arduino.

La tecla Encendido enciende o apaga la alimentación cuando se presiona y se mantiene presionada durante 2 segundos.

Indicación

El estado del módulo se indica mediante 3 LED:
PWR (verde) - indicador de alimentación del módulo,
Estado (rojo): indicador de alimentación del componente SIM900,
Net Light (verde): conexión a la red.
Mensajes LED de luz neta.
Apagado: SIM900 no funciona.
Parpadea a intervalos, indicados en segundos:
0,064 activado y 0,8 desactivado: red no detectada,
0,064 activado y 0,3 desactivado: red detectada,
0,064 activado, 0,03 desactivado: GPRS conectado.

Contactos

El componente SIM900 contiene un puerto UART, sus señales se envían a los pines del componente y se conectan a puentes que determinan qué pines del módulo Shield GPRS/GSM SIM900 se conectarán al puerto UART del componente SIM900 con D0, D1 o D7. D8.
UART Shield GPRS/GSM se puede conectar: ​​a la interfaz de hardware del MK a través de los contactos TXD y RXD del módulo Shield GPRS/GSM, para esto se utilizan D0, D1. O a un software emulado Arduino, para ello se utilizan los contactos D7 y D8 del módulo Shield GPRS/GSM. La interfaz UART completa tiene 10 señales enviadas a los pines en la esquina de la placa: R1, DCD, DSR, CTS, RTS, GND, 2V8, TX, RX, DTR.
En la esquina del tablero se encuentran 12 pines GPIO digitales firmados. Hay 2 contactos de señal de salida con modulación de ancho de pulso PWM1, PWM2. Pin ADC de entrada ADC. La interfaz del contador de tiempo incorporado tiene 4 contactos. Designaciones de pines: DISP_CLK, DISP_DATA, DISP_D/C, DISP_CS.
El pin D9 se utiliza para controlar mediante programación si SIM900 está encendido o apagado.
La placa tiene un conector para conectar una antena.

Asignación de pines del componente SIM900.

Encendido y apagado de energía externa

Puede encender o apagar la alimentación del módulo usando la señal en la entrada de control D9. Para cambiar el estado, se envía un impulso de 1 s de duración a D9. El cambio de estado se produce 3,2 s después del inicio del pulso.

Habilitando el módulo. Gráficas de tensión de alimentación del módulo, pulso de control externo e indicador de ESTADO de alimentación.

Al controlar el módulo con un dispositivo de control, el encendido debe realizarse sin usar el botón de encendido, es decir, inmediatamente después de aplicar energía. Para hacer esto, se deben agregar varios comandos al programa MK.

Vacío powerUpOrDown()
{
pinMode(9, SALIDA);
escritura digital(9,BAJO);
retraso(1000);
escritura digital (9, ALTO);
retraso(2000);
escritura digital(9,BAJO);
retraso(3000);
}

Este grupo de comandos en el programa también se puede utilizar para apagar el módulo. También puede apagar el módulo GSM enviando un comando AT.




Arriba