Tabla de contenido:
- Paso 1: Inicio rápido - Control remoto por SMS
- Paso 2: más detalles
- Paso 3: Sugerencias para mejoras adicionales: alertas, registro de datos y trazado
- Paso 4: Depurar mientras se usa la conexión SMS en la biblioteca PfodParser
Video: Control remoto por SMS confiable, seguro y personalizable (Arduino / pfodApp) - No se requiere codificación: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
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
Aquí hay una guía de inicio rápido para crear su propio control de agua caliente por SMS.
- Compre las piezas de esta lista.
- Instale Arduino IDE versión 1.5.8 y descargue e instale la biblioteca pfodParser.
- Descargue el pfodDesigner gratuito.
- Diseñe su menú personalizado para activar y desactivar una entrada digital desde un control deslizante de menú en su móvil Android.
- Genere el código, seleccionando SeeedStudio SIM900 GPRS shield como conexión. (También hay una opción para el escudo IteadStudio SIM900).
- 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.
- 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.
- 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.
- Aplique energía USB al Mega. El código de la biblioteca enciende el escudo GPRS por usted.
- 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.
- 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é.
- 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
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:
Controles personalizados Redbear BLE Nano V2 con PfodApp - No se requiere codificación: 6 pasos
Controles personalizados Redbear BLE Nano V2 con PfodApp - No se requiere codificación: Actualización: 15 de septiembre de 2017 - Este instructivo se ha actualizado para usar la última versión de RedBear BLE Nano, V2. La versión anterior de este instructable, dirigida a RedBear BLE Nano V1.5, está disponible aquí. Actualización 15 de noviembre - 2017 Entonces
Arduino / Android para principiantes, no se requiere codificación - Datos y control: 15 pasos
Arduino / Android para principiantes, no se requiere codificación - Datos y control: Actualización 23 de abril de 2019 - Para gráficos de fecha / hora usando solo Arduino millis (), consulte Arduino Fecha / Hora Ploteo / Registro usando Millis () y PfodApp El último pfodDesigner V3 gratuito .0.3610+ generaron bocetos completos de Arduino para trazar datos contra la fecha / hora u
Controles personalizados Adafruit Feather NRF52, no se requiere codificación: 8 pasos (con imágenes)
Controles personalizados Adafruit Feather NRF52, no se requiere codificación: actualización del 23 de abril de 2019 - Para gráficos de fecha / hora usando solo Arduino millis (), consulte Arduino Fecha / Hora Ploteo / Registro usando Millis () y PfodApp El último pfodDesigner gratuito V3.0.3610 + generado complete los bocetos de Arduino para trazar los datos contra la fecha / hora u
Robot Gong: la idea definitiva del proyecto Hackaton para expertos en ventas y productos (no se requiere codificación): 17 pasos (con imágenes)
Robot Gong: la idea definitiva del proyecto Hackaton para expertos en ventas y productos (no se requiere codificación): construyamos un gong musical robótico activado por correo electrónico. Esto le permite configurar alertas automáticas por correo electrónico para activar el gong … (a través de SalesForce, Trello, Basecamp …) Su equipo nunca más se olvidará de " GONGGG " cuando se publica un nuevo código, un dea
Controle sus electrodomésticos con su control remoto de TV (control remoto por infrarrojos) con pantalla de temperatura y humedad: 9 pasos
Controle sus electrodomésticos con su control remoto de TV (control remoto por infrarrojos) con pantalla de temperatura y humedad: hola, soy Abhay y es mi primer blog sobre Instructables y hoy le mostraré cómo controlar sus electrodomésticos con el control remoto de su televisor construyendo esto. proyecto simple. gracias al laboratorio atl por el apoyo y el suministro de material