Taula de continguts:

Control remot SMS fiable, segur i personalitzable (Arduino / pfodApp): no cal codificació: 4 passos
Control remot SMS fiable, segur i personalitzable (Arduino / pfodApp): no cal codificació: 4 passos

Vídeo: Control remot SMS fiable, segur i personalitzable (Arduino / pfodApp): no cal codificació: 4 passos

Vídeo: Control remot SMS fiable, segur i personalitzable (Arduino / pfodApp): no cal codificació: 4 passos
Vídeo: Woman safety android app with emergency sms when you shake mobile-PROJECTS 2018 2024, De novembre
Anonim
Control remot SMS fiable, segur i personalitzable (Arduino / pfodApp): no cal codificar
Control remot SMS fiable, segur i personalitzable (Arduino / pfodApp): no cal codificar

Actualització del 6 de juliol de 2018: hi ha disponible una versió 3G / 2G d’aquest projecte, mitjançant SIM5320

Actualització: 19 de maig de 2015: utilitzeu la biblioteca pfodParser versió 2.5 o superior. Es corregeix un problema que es notificava en no permetre el temps suficient perquè l’escut es connectés a la xarxa després de l’encesa

Introducció

En què es diferencia el control remot de pfodSMS d'altres implementacions: -

  • És fiable: sempre es respon a les ordres i es tornen a sol·licitar els missatges perduts
  • És segur: utilitza protecció amb contrasenya de 128 bits
  • No requereix cap compte de servei web de tercers: només necessita targeta SIM activa (sense pin)
  • Es pot personalitzar: podeu utilitzar pfodDesigner per crear el vostre propi menú personalitzat
  • És fàcil: el pfodDesigner genera tot el codi. No cal que feu cap codificació.
  • És flexible: totes les pantalles pfod estan disponibles mitjançant SMS, com ara submenús, llista de selecció múltiple i única, entrada de text, registre de dades i traçat.

Consulteu el disseny de missatges de pfodSMS per saber com es confia la connexió SMS. Vegeu Security and Response Security per a pfodDevices connectats a Internet per obtenir informació detallada sobre la seguretat de 128 bits. Consulteu els menús pfodDesigner, Android / Arduino, senzills per obtenir informació sobre el disseny del vostre propi menú personalitzat. Consulteu pfodSpecification.pdf per obtenir informació detallada sobre tots els missatges i pantalles de pfod que podeu afegir vosaltres mateixos.

Exemple de projecte: control d'aigua calenta per SMS

Com a projecte d'exemple, aquest instructiu descriu com encendre i apagar l'escalfador d'aigua calenta mitjançant SMS i comprovar si està encès o apagat. Necessitareu un electricista per instal·lar-lo.

Pas 1: Inici ràpid: control remot per SMS

Inici ràpid: control remot per SMS
Inici ràpid: control remot per SMS
Inici ràpid: control remot per SMS
Inici ràpid: control remot per SMS

Aquí teniu una guia d’inici ràpid per construir el vostre propi control d’aigua calenta per SMS.

  1. Compreu les peces d'aquesta llista.
  2. Instal·leu l'Arduino IDE versió 1.5.8 i descarregueu i instal·leu la biblioteca pfodParser..
  3. Descarregueu el pfodDesigner gratuït.
  4. Dissenyeu el vostre menú personalitzat per activar i desactivar una entrada digital des d'un control lliscant de menú al vostre mòbil Android.
  5. Generar el codi, seleccionant SeeedStudio SIM900 GPRS shield com a connexió. (També hi ha una opció per a l'escut IteadStudio SIM900).
  6. Transferiu el codi generat des del vostre mòbil a l’IDE (consulteu pfodAppForAndroidGettingStarted.pdf per obtenir més informació), afegiu la vostra contrasenya secreta, compileu-la i descarregueu-la a l’Arduino Mega 2560.
  7. Instal·leu la targeta SIM a la pantalla GPRS i connecteu la pantalla a la Mega 2560. Assegureu-vos que els enllaços sèrie estiguin configurats a la sèrie de maquinari, tal com es mostra més amunt.
  8. Connecteu la sortida digital al relé d'estat sòlid, o normal, entre D3 i GND (o el pin que heu triat al pfodDesigner). Consulteu Com afegir relés a Arduino per obtenir més informació sobre els relés.
  9. Apliqueu l'alimentació USB al Mega. El codi de la biblioteca us encén l'escut GPRS..
  10. Instal·leu pfodApp al vostre mòbil Android i configureu una connexió SMS al telèfon SIM de l'escut núm. (consulteu pfodAppForAndroidGettingStarted.pdf per obtenir més informació). Definiu la contrasenya de la connexió si n'heu afegit una..
  11. Connecteu-vos i visualitzeu el menú personalitzat mitjançant SMS. Feu clic al botó per activar o desactivar el relé..
  12. Feu que el vostre electricista instal·li el relé al circuit d’aigua calenta i connecteu la font d’alimentació USB per alimentar el Mega i el blindatge

Pas 2: Més detalls

pfodDesigner

El pfodDesigner generarà tot el codi que necessiteu per activar i desactivar l'estat sòlid o algun altre relé, però la connexió SMS de la biblioteca pfodParser admet totes les pantalles de pfod, de manera que un cop hàgiu començat podeu afegir submenús, barres de desplaçament numèriques, control lliscant de text múltiple, pantalles d’entrada de text, registre de dades i representació gràfica tot mitjançant SMS. Consulteu pfodSpecification.pdf per a totes les pantalles i missatges compatibles.

El codi generat és aquí. No té cap sol·licitud i només un commutador per mantenir el missatge curt. Els menús llargs s’envien mitjançant diversos missatges SMS que triguen a arribar. Si teniu un menú llarg, el codi de connexió sms de la biblioteca pfodParser us gestionarà tot això.

Per afegir una contrasenya a la vostra connexió SMS, modifiqueu la línia

parser.connect (& pfodSMS); // connecteu l'analitzador al flux d'SMS a alguna cosa com parser.connect (& pfodSMS, F ("173057F7A706AF9BBE65D51122A14CEE"));

però utilitzeu la vostra pròpia contrasenya de fins a 32 dígits hexadecimals, 0..9 A.. F. Les contrasenyes més curtes de 32 dígits hexadecimals s’omplen amb 0. Consulteu Un dispositiu pfodWifi / Internet senzill amb seguretat de 128 bits (Arduino) per saber com generar una contrasenya aleatòria i enviar-la a un codi QR per facilitar l’entrada al vostre Android. Vegeu també pfodAppForAndroidGettingStarted.pdf

El pfodDesigner també generarà codi per a connexions bluetooth i wifi a través de sèrie i Ethernet mitjançant SPI, tot amb seguretat opcional de 128 bits

pfodApp

El primer que cal adonar-se és que els SMS són escassos i potser no hi arriben ni arriben fora de servei. Així, quan us connecteu amb pfodApp, hi haurà un cert retard abans que hi hagi una resposta per SMS. Si el missatge es perd o es retarda, pfodApp el reenviarà automàticament al cap de 3 minuts. Després de cinc intents d'aquest tipus, pfodApp us indicarà que s'ha perdut la connexió. Podeu ajustar el temps de 3 minuts a la pantalla d'edició de connexió de pfodApp.

Si afegiu una contrasenya, hi haurà sis missatges SMS (tres en cada sentit) abans que pfodApp rebi el menú principal. Aquests missatges addicionals només es produeixen a la connexió inicial i després no hi ha cap missatge addicional quan s'utilitza una contrasenya. Comenceu, doncs, sense una contrasenya per veure que tot funciona i, a continuació, afegiu-la més tard.

Escut SMS / GPRS

Els problemes possibles són les targetes SIM protegides per números PIN o no autoritzades a connectar-se a la xarxa. La biblioteca pfod activa automàticament l'escut GPRS i busca la resposta "preparada per a la trucada". Si aquesta resposta no arriba, la biblioteca s'apaga i torna a intentar-ho, de manera que si veieu que el llum d'alimentació de l'escut GPRS s'encén durant 20 segons i després s'apaga, hi ha un problema de connexió a la xarxa. Traieu la SIM i proveu-la amb un telèfon normal. Comproveu que no se us demani cap número de PIN.

Si aquest no és el problema, haureu d'activar la depuració inicial, tal com es descriu a continuació, per veure què passa.

Alimentació de l'escut Mega / GPRS

L'escut atrapa fins a 2A polsats i fins a 0,5A contínuament. Suposant un subministrament de bateria de 12V, el 0,5A supera la capacitat de la font d'alimentació Mega a bord. Per tant, aquest escut NO s’ha d’alimentar des de l’entrada de 7V a 12V del Mega. L’alternativa és alimentar el Mega i el blindatge mitjançant la connexió USB. He utilitzat un subministrament USB 1A. Per provar, he utilitzat un concentrador alimentat per Belkin (F4U020) per evitar l'extracció de corrent excessiu del port USB del meu ordinador.

Per a un subministrament de bateria de 12V, us recomano utilitzar un carregador USB 5V de qualitat, 1A o superior. S'ha de dissenyar un subministrament USB 5V per a automoció de qualitat per manejar els pics de sobre tensió que es produeixen en els sistemes elèctrics del cotxe i, per tant, ha de ser adequat per a la majoria de sistemes de càrrega de 12V.

Relé d'estat sòlid

Atès que aquest projecte d'exemple controla un escalfador d'aigua calenta (una càrrega resistiva), és ideal un relé d'estat sòlid. Si voleu encendre o apagar motors, engegar generadors, etc., parleu amb el vostre electricista sobre un relé adequat per al treball. Si necessiteu un relé d’alta potència, podeu utilitzar una petita unitat de relé de la placa arduino per encendre i apagar el relé d’alimentació.

Hi ha moltes versions de relés d'estat sòlid disponibles. Assegureu-vos de comprar un dispositiu que pugui manejar el corrent i el voltatge de l’escalfador i que es pugui controlar amb 5 V CC i uns quants miliamperis disponibles des del pin de sortida Arduino. El que s’utilitza aquí, FOTEK SSR-40 DA, canvia fins a 380VAC a 40Amps i està controlat per qualsevol cosa superior als 3V dc i triga menys de 7mA.

Heu d’utilitzar un dissipador de calor i haureu d’aplicar un frot THIN de compost de dissipador de calor o greix tèrmic a la part posterior del relé d’estat sòlid abans de fixar-lo al dissipador de calor. La idea és cobrir completament la superfície amb la capa més fina de compost de lavabo per omplir les valls microscòpiques de la superfície del metall. En activar-lo, l'interruptor d'estat sòlid cau 1,6 V, el que genera 16 W de calor a 10 amp. El dissipador de calor és necessari per eliminar aquesta calor, de manera que s’ha de muntar a l’aire lliure no dins d’una caixa de plàstic.

Els retards són malvats

L’escut GPRS envia missatges SMS a través de la connexió sèrie en qualsevol moment i el bucle principal () ha de trucar a cmd = parser.parse (); sovint per processar les dades de sèrie abans que s’ompli el buffer de 64 bytes del codi de la biblioteca Arduino i es perdin les dades.

Per tant, heu de mantenir el bucle principal () funcionant ràpidament. No heu d’utilitzar mai delay () i comproveu que cap de les biblioteques que utilitzeu tingui retards. Utilitzant la velocitat de transmissió per defecte de 19200 del SIM900 mitjançant Hardware Serial, no he trobat que sigui necessari augmentar la mida del buffer al codi de la biblioteca Arduino. No faig servir Software Serial, només Serial i Serial1, les connexions sèrie de maquinari i gairebé tots els missatges que envia pfodApp són molt petits, de 10 o 12 bytes. Tanmateix, podeu augmentar la mida del buffer Arduino, si ho desitgeu, modificant la definició de HardwareSerial.h de #define SERIAL_BUFFER_SIZE 64 a #define SERIAL_BUFFER_SIZE 128

Tanmateix, el que sí que vaig trobar va ser que si he habilitat la sortida de depuració, tal com es descriu a continuació, hagués de tenir una velocitat de transmissió molt ràpida per a la connexió del terminal, en cas contrari, el retard introduït en enviar missatges de depuració al terminal provocaria que es perdessin parts dels missatges SMS..

Instal·lació

Vaig afegir un blindatge de terminal de cargol perquè tingués alguna cosa per connectar els cables del relé d’estat sòlid. Encara no he fet que el meu electricista instal·li el controlador. Cal col·locar-lo en una caixa aïllada, però amb un dissipador de calor que surt per una ranura i es connecta al cable d'alimentació d'aigua calenta.

Pas 3: suggeriments per a altres millores: alertes, registre de dades i traçat

L'exemple de projecte que es mostra a continuació és com s'activa o s'apaga l'aigua i us permet canviar-la. Però la connexió SMS gestiona tots els missatges pfod (vegeu pfodSpecification.pdf)

Si afegiu un sensor de temperatura al vostre arduino, també podeu enviar un control de la temperatura i tornar-los a llegir a intervals regulars. Per tornar una lectura de dades és el mateix per a bluetooth, wifi o SMS, només cal afegir el codi com el següent. Consulteu Registre i traçat de dades per obtenir més detalls i exemples de registre i traçat de dades.

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

Quan la biblioteca pfodSMS veu la nova línia des de println (), enviarà les dades en brut com a SMS. Al mòbil, només cal que deixeu pfodApp funcionant en segon pla i el mòbil us notificarà quan es rebi un SMS. Torneu a obrir pfodApp per portar-lo al davant i, a continuació, obriu la pantalla de dades brutes des del menú del mòbil per veure les dades. Nota: Els missatges pfodSMS són caràcters UTF-8 juntament amb els números de connexió i missatges, codificant-se mitjançant una codificació Base64 de manera que no semblin text normal. Consulteu el disseny de missatges pfodSMS per obtenir més informació.

Podeu utilitzar el mateix procés per enviar una alerta quan alguna cosa canviï remotament. és a dir, parser.println (F ("Temperatura exterior inferior a 0 ℃")); Nota: el caràcter ℃ UTF-8 de la cadena. pfodSMS passa tots els caràcters UTF-8 a la pfodApp.

Pas 4: depuració mentre s'utilitza la connexió SMS a la biblioteca PfodParser

Depuració mentre s'utilitza la connexió SMS a la biblioteca PfodParser
Depuració mentre s'utilitza la connexió SMS a la biblioteca PfodParser
Depuració mentre s'utilitza la connexió SMS a la biblioteca PfodParser
Depuració mentre s'utilitza la connexió SMS a la biblioteca PfodParser

El pfodDesigner genera un codi que funciona, però és possible que vulgueu depurar el vostre propi codi addicional o mirar què passa mentre s’inicia l’escut GPRS o rep missatges SMS. Hi ha un parell d’enfocaments que podeu adoptar.

Depuració del vostre propi codi

Si esteu depurant el vostre propi codi, podeu comentar la línia pfodSMS i connectar l’analitzador a Serial i, a continuació, traieu l’escut GPRS i executeu el Mega des del terminal Arduino. és a dir, canvieu la configuració () a

//pfodSMS.init(&Serial, 9); // no engegueu l'escut GPRS parser.connect (& Serial); // connecteu l'analitzador a Sèrie en lloc d'un flux d'SMS

A continuació, des del terminal Arduino podeu escriure {.} Perquè el Mega torni el menú principal i, a continuació, enviar l’ordre que vulgueu executar, per exemple. {A`1} per activar el relé i {A`0} per apagar-lo. (La pfodApp sol enviar-vos aquests missatges quan feu clic al control lliscant.) A continuació, afegiu una depuració addicional parser.println () per supervisar el codi addicional que heu afegit.

Supervisió de l'escut GPRS

Si voleu veure què fa l'escut GPRS. Com s'inicia, rep missatges SMS, etc. Després, heu de canviar el cablejat del blindatge, connecteu-lo al Mega Serial1 (sèrie) i allibereu la connexió Serial (USB) per a la sortida de depuració al monitor IDE Arduino.

Per connectar el blindatge GPRS al Mega 2560 Serial1, elimineu els enllaços que es mostren més amunt i afegiu els cables als pins TX1 i RX1 del Mega.

A continuació, canvieu el codi setup () a

configuració nul·la () {Serial1.begin (19200); // canvieu la sèrie a la sèrie 1 Serial.begin (57600); // NOTA la velocitat de transmissió ràpida del port sèrie USB // al monitor Arduino IDE. for (int i = 3; i> 0; i--) {// espereu uns segons per veure si s'està programant un retard (1000); } pinMode (cmd_A_pin, OUTPUT); pfodSMS.setDebugStream (& sèrie); // heu de fer-ho abans que pfod_SMS.init // o qualsevol altra trucada al mètode pfod_SMS // inicialitzeu l’SMS i connecteu l’analitzador // canvieu la següent línia a Serial1 pfodSMS.init (& Serial1, 9); // connecteu Seeed GPRS shield V2 a Serial1 en lloc de Serial parser.setDebugStream (& Serial); // cal fer-ho abans que parser.connect // o qualsevol altre mètode d'analitzador truqui a parser.connect (& pfodSMS); // connectar l'analitzador al flux d'SMS}

Ara podeu descomentar alguns paràmetres de depuració a la biblioteca pfodParser, a la part superior del fitxer pfodSMS_SIM900.cpp.

Per exemple, si no es comenta #define DEBUG_SETUP, s'imprimirà (al flux de depuració) el que passa mentre s'encén l'escut GPRS i es prepara per rebre missatges SMS.

Si no es comenta #define DEBUG, es proporcionarà molta informació sobre els missatges SMS que es reben.

Això és !

Recomanat: