Tabla de contenido:

Control remoto por SMS confiable, seguro y personalizable (Arduino / pfodApp) - No se requiere codificación: 4 pasos
Control remoto por SMS confiable, seguro y personalizable (Arduino / pfodApp) - No se requiere codificación: 4 pasos

Video: Control remoto por SMS confiable, seguro y personalizable (Arduino / pfodApp) - No se requiere codificación: 4 pasos

Video: Control remoto por SMS confiable, seguro y personalizable (Arduino / pfodApp) - No se requiere codificación: 4 pasos
Video: Tesla Cybertruck Crash Test - BeamNG.Drive #shorts 2024, Noviembre
Anonim
Control remoto por SMS confiable, seguro y personalizable (Arduino / pfodApp): no se requiere codificación
Control remoto por SMS confiable, seguro y personalizable (Arduino / pfodApp): no se requiere codificación

Actualización del 6 de julio de 2018: una versión 3G / 2G de este proyecto, usando SIM5320, está disponible aquí

Actualización: 19 de mayo de 2015: utilice la versión 2.5 o superior de la biblioteca pfodParser. Soluciona un problema informado de no permitir suficiente tiempo para que el escudo se conecte a la red después de encenderse

Introducción

¿En qué se diferencia el control remoto de pfodSMS de otras implementaciones?

  • Es confiable: los comandos siempre se responden y los mensajes perdidos se vuelven a solicitar
  • Es seguro: utiliza protección con contraseña de 128 bits
  • No requiere cuentas de servicios web de terceros, solo necesita una tarjeta SIM activa (sin un pin)
  • Es personalizable: puede usar pfodDesigner para crear su propio menú personalizado
  • Es fácil: pfodDesigner genera todo el código. No es necesario realizar ninguna codificación.
  • Es flexible: todas las pantallas de pfod están disponibles a través de SMS, como submenús, lista de selección múltiple y única, entrada de texto, registro de datos y trazado.

Consulte el diseño de mensajes pfodSMS para ver cómo se hace confiable la conexión SMS. Consulte Seguridad de desafío y respuesta para pfodDevices conectados a Internet para obtener detalles sobre la seguridad de 128 bits. Consulte pfodDesigner, menús de Android / Arduino simplificados para obtener detalles sobre el diseño de su propio menú personalizado. Consulte pfodSpecification.pdf para obtener detalles de todos los mensajes y pantallas de pfod que puede agregar usted mismo.

Proyecto de ejemplo: control de agua caliente por SMS

Como proyecto de ejemplo, este instructivo describe cómo encender y apagar su calentador de agua a través de SMS y verificar si está encendido o apagado. Necesitará un electricista para instalarlo.

Paso 1: Inicio rápido - Control remoto por SMS

Inicio rápido: control remoto por SMS
Inicio rápido: control remoto por SMS
Inicio rápido: control remoto por SMS
Inicio rápido: control remoto por SMS

Aquí hay una guía de inicio rápido para crear su propio control de agua caliente por SMS.

  1. Compre las piezas de esta lista.
  2. Instale Arduino IDE versión 1.5.8 y descargue e instale la biblioteca pfodParser.
  3. Descargue el pfodDesigner gratuito.
  4. Diseñe su menú personalizado para activar y desactivar una entrada digital desde un control deslizante de menú en su móvil Android.
  5. Genere el código, seleccionando SeeedStudio SIM900 GPRS shield como conexión. (También hay una opción para el escudo IteadStudio SIM900).
  6. Transfiera el código generado desde su móvil al IDE (consulte pfodAppForAndroidGettingStarted.pdf para más detalles), agregue su contraseña secreta, compile y descargue al Arduino Mega 2560.
  7. Instale su tarjeta SIM en el protector GPRS y enchufe el protector en el Mega 2560. Asegúrese de que los enlaces en serie estén configurados en Serie de hardware como se muestra arriba.
  8. Conecte la salida digital al relé de estado sólido, o normal, entre D3 y GND (o cualquier pin que elija en el pfodDesigner). Consulte Cómo agregar relés a Arduino para obtener más detalles sobre los relés.
  9. Aplique energía USB al Mega. El código de la biblioteca enciende el escudo GPRS por usted.
  10. Instale pfodApp en su móvil Android y configure una conexión SMS al teléfono sim del shield no. (consulte pfodAppForAndroidGettingStarted.pdf para obtener más detalles). Establezca la contraseña para la conexión si agregó una.
  11. Conéctese y vea su menú personalizado que se muestra a través de SMS. Haga clic en el botón para encender o apagar el relé.
  12. Haga que su electricista instale el relé en su circuito de agua caliente y conecte la fuente de alimentación USB para alimentar el Mega y el escudo.

Paso 2: más detalles

pfodDesigner

El pfodDesigner generará todo el código que necesita para encender y apagar el relé de estado sólido o algún otro relé, pero la conexión de SMS en la biblioteca pfodParser es compatible con todas las pantallas de pfod, por lo que una vez que comience, puede agregar submenús, controles deslizantes numéricos, controles deslizantes de texto múltiple, pantallas de entrada de texto, registro de datos y trazado, todo a través de SMS. Consulte el pfodSpecification.pdf para ver todas las pantallas y mensajes compatibles.

El código generado está aquí. No tiene aviso y solo un interruptor para mantener el mensaje corto. Los menús largos se envían a través de varios mensajes SMS que tardan más en llegar. Si tiene un menú largo, el código de conexión sms en la biblioteca pfodParser maneja todo esto por usted.

Para agregar una contraseña a su conexión SMS, modifique la línea

parser.connect (& pfodSMS); // conecta el analizador al flujo de SMS a algo como parser.connect (& pfodSMS, F ("173057F7A706AF9BBE65D51122A14CEE"));

pero use su propia contraseña de hasta 32 dígitos hexadecimales, 0..9 A.. F. Las contraseñas de menos de 32 dígitos hexadecimales se rellenan con ceros. Consulte A simple Wifi / Internet pfodDevice con seguridad de 128 bits (Arduino) para saber cómo generar una contraseña aleatoria y enviarla a un código QR para ingresarla fácilmente en su Android. Consulte también pfodAppForAndroidGettingStarted.pdf

El pfodDesigner también generará código para conexiones bluetooth y wifi a través de serie y Ethernet a través de SPI, todo con seguridad opcional de 128 bits.

pfodApp

Lo primero que hay que tener en cuenta es que los SMS son lentos y es posible que no lleguen en absoluto o que lleguen fuera de servicio. Entonces, cuando se conecte con pfodApp, habrá un retraso antes de que haya una respuesta por SMS. Si el mensaje se pierde o se retrasa, pfodApp lo reenviará automáticamente después de 3 minutos. Después de 5 reintentos de este tipo, pfodApp le dirá que se perdió la conexión. Puede ajustar el tiempo de 3 minutos en la pantalla de edición de conexión de pfodApp.

Si agrega una contraseña, hay seis mensajes SMS (tres en cada sentido) antes de que pfodApp reciba el menú principal. Estos mensajes adicionales solo ocurren en la conexión inicial después de la cual no hay mensajes adicionales cuando se usa una contraseña. Así que comience sin una contraseña para ver que todo funciona y luego agregue la contraseña más tarde.

Escudo SMS / GPRS

Los posibles problemas son las tarjetas SIM protegidas por números de PIN o no autorizadas para conectarse a la red. La biblioteca pfod enciende automáticamente el escudo GPRS y busca la respuesta de 'llamada lista'. Si esa respuesta no llega, la biblioteca se apaga y vuelve a intentarlo, por lo que si ve que la luz de encendido en el protector GPRS se enciende durante 20 segundos y luego se apaga, hay un problema para conectarse a la red. Saca la SIM y pruébalo en un teléfono normal. Compruebe que no se le solicite un número de PIN.

Si ese no es el problema, tendrá que activar la depuración de inicio, como se describe a continuación, para ver qué está sucediendo.

Alimentando el escudo Mega / GPRS

El escudo consume hasta 2A pulsado y hasta 0.5A continuamente. Suponiendo un suministro de batería de 12V, el 0.5A excede la capacidad de la fuente de alimentación Mega a bordo. Por lo tanto, este escudo NO debe alimentarse desde la entrada de 7V a 12V en el Mega. La alternativa es alimentar el Mega y el blindaje a través de la conexión USB. Usé un suministro USB de 1A. Para las pruebas, utilicé un concentrador con alimentación de Belkin (F4U020) para evitar el consumo excesivo de corriente del puerto USB de mi computadora.

Para un suministro de batería de 12 V, sugiero usar un cargador USB de 5 V para automóvil de calidad, 1 A o superior. Se debe diseñar un suministro de 5V USB automotriz de calidad para manejar los picos de voltaje que ocurren en los sistemas eléctricos de los automóviles y, por lo tanto, debe ser adecuado para la mayoría de los sistemas de carga de 12V.

Relé de estado sólido

Dado que este proyecto de ejemplo está controlando un calentador de agua caliente (una carga resistiva), un relé de estado sólido es ideal. Si desea encender o apagar motores, encender generadores, etc., hable con su electricista sobre un relé adecuado para el trabajo. Si necesita un relé de alta potencia, puede usar un pequeño relé junto a la placa arduino para encender y apagar el relé de potencia.

Hay muchas versiones de relés de estado sólido disponibles. Asegúrese de comprar que pueda manejar la corriente y el voltaje de su calentador y que pueda ser controlado por 5V dc y algunos miliamperios disponibles desde el pin de salida de Arduino. El que se usa aquí, FOTEK SSR-40 DA, cambia hasta 380VAC a 40Amps y está controlado por cualquier cosa más de 3V dc y toma menos de 7mA.

Debe usar un disipador de calor y debe aplicar una fina mancha de compuesto disipador de calor o grasa térmica en la parte posterior del relé de estado sólido antes de atornillarlo al disipador de calor. La idea es cubrir completamente la superficie con la capa más delgada de compuesto de fregadero para rellenar los valles microscópicos en la superficie del metal. Cuando se enciende, el interruptor de estado sólido cae 1.6V, lo que genera 16Watts de calor a 10Amps. El disipador de calor debe eliminar este calor, por lo que debe montarse al aire libre, no dentro de una caja de plástico.

Las demoras son malas

El escudo GPRS envía mensajes SMS a través de la conexión en serie en cualquier momento y su bucle principal () debe llamar a cmd = parser.parse (); a menudo para procesar los datos en serie antes de que el búfer de 64 bytes en el código de la biblioteca Arduino se llene y se pierdan los datos.

Por lo tanto, debe mantener su bucle principal () ejecutándose rápidamente. Nunca debe usar delay () y debe verificar que ninguna de las bibliotecas que está usando tenga retrasos. Usando la velocidad en baudios predeterminada de 19200 del SIM900 a través de la serie de hardware, no he considerado necesario aumentar el tamaño del búfer en el código de la biblioteca Arduino. No uso Software Serial, solo Serial y Serial1, conexiones de Hardware Serial, y casi todos los mensajes que envía pfodApp son muy pequeños, 10 o 12 bytes. Sin embargo, puede aumentar el tamaño del búfer de Arduino, si lo desea, modificando la definición en HardwareSerial.h de #define SERIAL_BUFFER_SIZE 64 a #define SERIAL_BUFFER_SIZE 128

Sin embargo, lo que encontré fue que si habilitaba la salida de depuración, como se describe a continuación, tenía que tener una velocidad en baudios muy rápida para la conexión del terminal; de lo contrario, el retraso introducido al enviar mensajes de depuración al terminal hacía que se perdieran partes de los mensajes SMS..

Instalación

Agregué un protector de terminal de tornillo para tener algo a lo que conectar los cables del relé de estado sólido. Todavía no he hecho que mi electricista instale el controlador. Debe colocarse en una caja aislada, pero con el disipador de calor sobresaliendo por una ranura y conectado al cable de alimentación de agua caliente.

Paso 3: Sugerencias para mejoras adicionales: alertas, registro de datos y trazado

El proyecto de ejemplo anterior solo muestra cómo el agua está encendida o apagada y le permite cambiarla. Pero la conexión SMS maneja todos los mensajes pfod (ver pfodSpecification.pdf)

Si agrega un sensor de temperatura a su arduino, también puede enviar un monitor de temperatura y enviar lecturas a intervalos regulares. Para enviar una lectura de datos es lo mismo para bluetooth, wifi o SMS, solo agregue el código como el ejemplo a continuación. Consulte Registro y trazado de datos para obtener más detalles y ejemplos de registro y trazado de datos.

parser.println (tiempo); parser.print (','); parser.println (temperatura);

Cuando la biblioteca pfodSMS ve la nueva línea de println (), enviará los datos sin procesar como un SMS. En tu móvil, simplemente deja pfodApp ejecutándose en segundo plano y tu móvil te notificará cuando se reciba un SMS. Abra pfodApp nuevamente para traerlo al frente y luego abra la pantalla Raw Data desde el menú del móvil para ver los datos. Nota: Los mensajes pfodSMS son caracteres UTF-8 junto con los números de conexión y mensaje, codificados usando una codificación Base64 para que no se vean como texto normal. Consulte el diseño de mensajes de pfodSMS para conocer todos los detalles.

Puede utilizar el mismo proceso para enviar una alerta cuando algo cambia de forma remota. es decir, parser.println (F (“Temperatura exterior por debajo de 0 ℃”)); Nota: el carácter ℃ UTF-8 en la cadena. pfodSMS pasa todos los caracteres UTF-8 a pfodApp.

Paso 4: Depurar mientras se usa la conexión SMS en la biblioteca PfodParser

Depurar mientras se usa la conexión SMS en la biblioteca PfodParser
Depurar mientras se usa la conexión SMS en la biblioteca PfodParser
Depuración durante el uso de la conexión SMS en la biblioteca PfodParser
Depuración durante el uso de la conexión SMS en la biblioteca PfodParser

El pfodDesigner genera código que funciona, pero es posible que desee depurar su propio código adicional o ver lo que sucede mientras el escudo GPRS se inicia o recibe mensajes SMS. Hay un par de enfoques que puede tomar.

Depurando tu propio código

Si está depurando su propio código, puede simplemente comentar la línea pfodSMS y conectar el analizador a Serial y luego quitar el escudo GPRS y ejecutar Mega desde la terminal Arduino. es decir, cambie la configuración () a

//pfodSMS.init(&Serial, 9); // no inicie el analizador de protección GPRS.connect (& Serial); // conecta el analizador al serial en lugar del flujo de SMS

Luego, desde la terminal Arduino, puede escribir {.} Para que Mega regrese al menú principal y luego envíe el comando que desea ejecutar, por ejemplo. {A`1} para encender el relé y {A`0} para apagarlo. (La pfodApp generalmente envía estos mensajes por usted cuando hace clic en el control deslizante). Luego agregue parser.println () de depuración adicional para monitorear lo que está haciendo el código adicional que agregó.

Supervisión del escudo GPRS

Si quieres ver qué está haciendo el escudo GPRS. Cómo se está iniciando, recibiendo mensajes SMS, etc. Luego, debe cambiar el cableado del blindaje, conectarlo al Mega Serial1 (serial uno) y liberar la conexión Serial (USB) para la salida de depuración al Arduino IDE Monitor.

Para conectar el blindaje GPRS al Mega 2560 Serial1, quite los enlaces que se muestran arriba y agregue los cables a los pines TX1 y RX1 del Mega.

Luego cambie el código de configuración () a

configuración vacía () {Serial1.begin (19200); // cambia Serial a Serial 1 Serial.begin (57600); // TENGA EN CUENTA la velocidad en baudios rápida para el puerto serie USB // al monitor Arduino IDE. for (int i = 3; i> 0; i--) {// esperamos unos segundos para ver si estamos siendo programados delay (1000); } pinMode (cmd_A_pin, SALIDA); pfodSMS.setDebugStream (& Serial); // Necesito hacer esto antes de pfod_SMS.init // o cualquier otra llamada al método pfod_SMS // inicializar el SMS y conectar el analizador // cambiar la siguiente línea a Serial1 pfodSMS.init (& Serial1, 9); // conectar Seeed GPRS shield V2 a Serial1 en lugar de Serial parser.setDebugStream (& Serial); // Necesito hacer esto antes de parser.connect // o cualquier otro método de parser llame parser.connect (& pfodSMS); // conecta el analizador al flujo de SMS}

Ahora puede descomentar algunas de las configuraciones de depuración en la biblioteca pfodParser al final del archivo pfodSMS_SIM900.cpp.

Por ejemplo, descomentar #define DEBUG_SETUP imprimirá (en el flujo de depuración) lo que está sucediendo mientras se enciende el escudo GPRS y lo prepara para recibir mensajes SMS.

Descomentar #define DEBUG proporcionará mucha información sobre los mensajes SMS que se reciben.

Eso es todo !

Recomendado: