Pregunta:
Múltiples escudos GSM en un Arduino
Snowlav
2015-05-10 13:45:15 UTC
view on stackexchange narkive permalink

Estoy buscando una forma de escuchar los mensajes de texto recibidos en varios números. Cuando me encontré con Arduino y sus escudos, pensé que esta podría ser la manera perfecta de hacerlo.

Uno de los módulos / escudos que encontré en Internet al ver un video de YouTube es el TC 35 GSM.

He estado leyendo varias preguntas aquí sobre el "apilamiento" de escudos, y la respuesta habitual es "comprobar qué pines / si están usando los mismos pines". Aunque estas preguntas no eran específicas del módulo GSM y no incluían apilar los mismos escudos.

Tengo mucha curiosidad por saber si esto es posible. Digamos que quiero escuchar 10 tarjetas SIM a la vez para los mensajes recibidos, ¿será posible apilando los módulos en un Arduino?

¡Gracias!

Tres respuestas:
RedGrittyBrick
2015-05-10 21:50:45 UTC
view on stackexchange narkive permalink

La hoja de datos del Siemens TC35 dice "La interfaz de datos se implementa como un transmisor y receptor asíncrono en serie conforme a ITU-T RS-232 Interchange Circuits DCE. Opera en CMOS nivel (2.65V). Todas las señales RS-232 en el conector ZIF son de baja actividad. "

esto es en realidad un equivalente de bajo voltaje de la serie" RS232 ". Real RS232 usa señalización de -12V y + 12V para 0 y 1 binarios, pero la mayoría de los dispositivos modernos funcionan con niveles lógicos, a menudo invertidos (por ejemplo, 0V y ~ 3.3V).

La mayoría de los Arduinos admiten en hardware solo una interfaz serie de nivel lógico. Algunos Arduino, como el Arduino Mega, admitirán hasta cuatro interfaces RS232 de nivel lógico.

Con una biblioteca de software, puede emular un puerto serie a través de los pines IO digitales, pero el Arduino se agotará rápidamente de potencia de procesamiento si intenta emular varias interfaces RS232.

¿Será esto posible apilando los módulos en un arduino?

Es casi seguro que no. Dudo que los diseñadores de la placa hija ("escudo") hayan previsto eso. Como mínimo, tendría que redirigir la interfaz en serie a pines no estándar y verificar que los requisitos de energía no excedan lo que Arduino puede suministrar.

Si puede encontrar un módulo que se comunique a través de I2C o SPI, es posible que haya más posibilidades de que funcione.

Creo que esto debería leer lógica TTL, no RS232 de bajo voltaje. Consulte [Comunicación en serie RS-232 frente a TTL] (https://www.sparkfun.com/tutorials/215). RS232 de bajo voltaje implica que un voltaje bajo sigue siendo un 1 y un voltaje alto sigue siendo un 0, sin embargo, TTL en realidad invierte la lógica, no es solo la misma lógica a un voltaje más bajo.
cjs
2017-04-01 08:53:05 UTC
view on stackexchange narkive permalink

La respuesta corta es, no, no puede simplemente apilarlos, pero sí, es posible (aunque no trivial) conectar diez o más de estos a una sola placa Arduino y hacer que los monitoree todos.

Tenga en cuenta que la siguiente explicación está simplificada, posiblemente demasiado simplificada, en aras de la brevedad y le da una idea general de lo que le espera si intenta esto. Muchos de los detalles (como menciono a continuación) podrían ser fácilmente una o varias preguntas propias.

No proporcionó la hoja de datos para el tablero que está considerando. así que trabajaré a partir de la descripción de una placa similar (aunque no un escudo Arduino) usando el mismo chip, la placa de desarrollo GSM TC35 de Cytron Technologies.

Los protectores Arduino conectan varios pines de sus chips a pines en la placa Arduino. En muchos (quizás la mayoría) de los casos, no puede tener dos dispositivos diferentes conectados al mismo pin de Arduino, por lo que si solo fuera a colocar otra placa en ella, tendría que tener un soporte especial para cambiar los pines que está usando (a menudo a través de jumpers) o poder tener varias placas comunicándose en los mismos pines. El chip GSM que está considerando utiliza dos pines dedicados para la transmisión y recepción de comunicación en serie; estos son los pines que necesitará volver a cablear si va a utilizar varias placas en un solo Arduino.

El tipo de recableado que necesitará hacer dependerá de cuántos realmente desee. El Arduino Uno tiene 14 pines de E / S digitales, dos de los cuales generalmente se usan para la interfaz serial USB a la computadora, lo que le brinda seis dispositivos si dedica un par de pines a cada dispositivo. Dado que la velocidad de comunicación con las placas es bastante lenta (9600 bps, ver más abajo), puede multiplexar muchos de estos en un par de pines Arduino mediante varias técnicas diferentes (como el uso de registros de desplazamiento); esto por sí solo es lo suficientemente complejo como para que se pueda dedicar una pregunta diferente a considerar las posibles opciones, con más preguntas sobre los detalles de la implementación de cada opción. Debería considerar, si está interactuando con una PC, usar varios microcontroladores Arduino, cada uno con solo uno o unos pocos chips GSM hablando con ellos, hablando con una PC a través de USB y realizando un procesamiento adicional en la PC.

Si está utilizando muchas placas, deberá asegurarse de poder suministrarles suficiente energía; es posible que deba utilizar una fuente de alimentación fuera de la placa Arduino. Un Arduino alimentado desde su interfaz USB no puede extraer más de 500 miliamperios (porque ese es el límite de USB). Si está utilizando una fuente de alimentación separada y el regulador integrado de Arduino, la limitación se basará en las limitaciones eléctricas y térmicas de ese regulador; esta publicación de blog es una discusión detallada de eso.

También está el problema del cambio de nivel; Las placas Arduino suelen hacer E / S digital a 5 voltios o 3,3 V; este chip parece que habla a 2.65 V y usted o la placa que está usando deberán manejar eso. Si el tablero que está utilizando no realiza la conversión de nivel adecuada, hay otras preguntas (como esta) que tratan los detalles de soluciones de conversión de nivel particulares.

Una vez que tener pines conectados a los dispositivos que necesitará para hablar con ellos; esto involucra las partes de "entramado" de nivel inferior del protocolo serial y el conjunto de comandos de nivel superior.

Para enmarcar, el chip GSM parece utilizar el encuadre de protocolo serie de baja velocidad que es estándar en el mundo de la informática; aparte de la diferencia de nivel de voltaje, es el mismo que se usa en las comunicaciones RS-232 entre una computadora y un módem u otro dispositivo "en serie". La configuración de la hoja de datos que utilicé es "9600bps, 8-1-N, sin control de flujo", que es lo suficientemente lento como para que el propio microcontrolador pueda comunicarse fácilmente con varios de estos sin ningún hardware adicional utilizando bit banging. Un Arduino de 16 MHz ejecuta algo que se acerca a 16 millones de instrucciones por segundo (la mayoría de las instrucciones son de un ciclo de reloj), lo que le brinda más de 1500 instrucciones por bit-time para leer un bit de cada dispositivo conectado, hacer el procesamiento para convertir los bits en bytes y procesar los mensajes resultantes. Si tiene cuidado con su programación, y dependiendo de lo que esté haciendo, no debería ser demasiado difícil lidiar con hasta un par de docenas de chips GSM, aunque es casi seguro que este no es un trabajo de programación trivial que usted vamos a hacer con las bibliotecas estándar de Arduino.

El conjunto de comandos de nivel superior también es bastante similar a la comunicación entre el módem y la computadora antigua; el chip GSM (y por lo tanto casi cualquier placa que lo use) habla con el protocolo serial estándar de PC a 9600 bps usando el conjunto de comandos AT. Verá mensajes como

  + CMGR: "REC READ", "+ 60125651453" ,, "12/07 / 31,10: 0702 + 32" Hola  

cuando recibe un SMS y otros similares cuando envía un SMS.

Nate B
2015-10-08 09:57:01 UTC
view on stackexchange narkive permalink

No apilable directamente, no. Podrías hacer un truco sucio en el que doblas los pines seriales hacia los lados, dejando que la pila maneje toda la energía, la tierra y los pines de activación y demás. Luego maneje las comunicaciones seriales con cada módulo por separado.

El Uno y similares solo tienen un único UART (puerto serial) cada uno, pero puedes emular más con técnicas de "software serial", también conocidas como "bit-bang". Estos están llenos de advertencias y no se las desearía a un novato.

El Mega2560 tiene cuatro UART, por lo que se está acercando. Necesitaría usar cables que salen de esos pines doblados hacia los lados para llevar las señales a los diferentes pines tx / rx por UART, pero pude ver que funciona.

También puede agregar UART sobre SPI / I2C, pero eso está entrando en una buena parte de la complejidad del programa. Mire el SC16IS750 o el MAX3100 para empezar.

(También me está surgiendo un truco horrible, horrible: conecte una única línea de transmisión a un chip demux, para que pueda elegir un solo TC35 para hablar en cualquier momento. Bus todas las líneas de recepción junto con resistencias / diodos. Espero que nunca termines en una situación en la que dos hablen a la vez.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...