Sommario:

Telecomando SMS affidabile, sicuro e personalizzabile (Arduino/pfodApp) - Nessuna codifica richiesta: 4 passaggi
Telecomando SMS affidabile, sicuro e personalizzabile (Arduino/pfodApp) - Nessuna codifica richiesta: 4 passaggi

Video: Telecomando SMS affidabile, sicuro e personalizzabile (Arduino/pfodApp) - Nessuna codifica richiesta: 4 passaggi

Video: Telecomando SMS affidabile, sicuro e personalizzabile (Arduino/pfodApp) - Nessuna codifica richiesta: 4 passaggi
Video: ALLARME SMART PLUG and PLAY e AFFIDABILE! Recensione AJAX 2024, Dicembre
Anonim
Telecomando SMS affidabile, sicuro e personalizzabile (Arduino/pfodApp) - Nessuna codifica richiesta
Telecomando SMS affidabile, sicuro e personalizzabile (Arduino/pfodApp) - Nessuna codifica richiesta

Aggiornamento 6 luglio 2018: una versione 3G/2G di questo progetto, che utilizza SIM5320, è disponibile qui

Aggiornamento: 19 maggio 2015: utilizzare la libreria pfodParser versione 2.5 o successiva. Risolve un problema segnalato di non consentire allo shield di connettersi alla rete dopo l'accensione

introduzione

In che modo il controllo remoto pfodSMS è diverso dalle altre implementazioni: -

  • È affidabile: i comandi ricevono sempre risposta e i messaggi persi vengono richiesti nuovamente
  • È sicuro: utilizza una protezione con password a 128 bit
  • Non richiede account di servizi Web di terze parti: necessita solo di una scheda SIM attiva (senza pin)
  • È personalizzabile: puoi usare pfodDesigner per creare il tuo menu personalizzato
  • È facile: pfodDesigner genera tutto il codice. Non è necessario eseguire alcuna codifica.
  • È flessibile: tutte le schermate pfod sono disponibili tramite SMS, come sottomenu, elenco di selezioni multiple e singole, immissione di testo, registrazione e stampa dei dati.

Vedere pfodSMS message design per come la connessione SMS è resa affidabile. Vedere Challenge and Response Security per pfodDevices connessi a Internet per i dettagli della sicurezza a 128 bit. Vedi pfodDesigner, i menu Android / Arduino resi semplici per i dettagli sulla progettazione del tuo menu personalizzato. Vedi pfodSpecification.pdf per i dettagli di tutti i messaggi e le schermate pfod che puoi aggiungere tu stesso.

Progetto di esempio – Controllo dell'acqua calda tramite SMS

Come progetto di esempio, questa istruzione descrive come accendere e spegnere lo scaldabagno tramite SMS e verificare se è acceso o spento. Avrai bisogno di un elettricista per installarlo.

Passaggio 1: Avvio rapido - Controllo remoto SMS

Avvio rapido - Controllo remoto via SMS
Avvio rapido - Controllo remoto via SMS
Avvio rapido - Controllo remoto via SMS
Avvio rapido - Controllo remoto via SMS

Ecco una guida rapida per creare il tuo controllo dell'acqua calda tramite SMS.

  1. Acquista le parti in questo elenco..
  2. Installa l'IDE Arduino versione 1.5.8 e scarica e installa la libreria pfodParser..
  3. Scarica il pfodDesigner gratuito.
  4. Progetta il tuo menu personalizzato per attivare e disattivare un input digitale da un dispositivo di scorrimento del menu sul tuo cellulare Android.
  5. Generare il codice, selezionando SeeedStudio SIM900 GPRS shield come connessione. (C'è anche un'opzione per lo scudo IteadStudio SIM900).
  6. Trasferisci il codice generato dal tuo cellulare all'IDE (vedi pfodAppForAndroidGettingStarted.pdf per i dettagli), aggiungi la tua password segreta, compila e scarica su Arduino Mega 2560.
  7. Installa la tua scheda SIM nello shield GPRS e collega lo shield al Mega 2560. Assicurati che i collegamenti seriali siano impostati su Hardware Serial come mostrato sopra.
  8. Collega l'uscita digitale al relè a stato solido, o normale, tra D3 e GND (o qualsiasi pin tu abbia scelto nel pfodDesigner). Vedi Come aggiungere relè ad Arduino per maggiori dettagli sui relè..
  9. Applicare l'alimentazione USB al Mega. Il codice della libreria potenzia lo scudo GPRS per te..
  10. Installa pfodApp sul tuo telefonino Android e configura una connessione SMS al telefono sim dello shield n. (vedi pfodAppForAndroidGettingStarted.pdf per i dettagli). Imposta la password per la connessione se ne hai aggiunta una..
  11. Collegati e visualizza il tuo menu personalizzato tramite SMS. Fare clic sul pulsante per attivare o disattivare il relè..
  12. Chiedi al tuo elettricista di installare il relè nel circuito dell'acqua calda e di collegare l'alimentatore USB per alimentare Mega e shield

Passaggio 2: maggiori dettagli

pfodDesigner

Il pfodDesigner genererà tutto il codice necessario per accendere e spegnere lo stato solido o qualche altro relè, ma la connessione SMS nella libreria pfodParser supporta tutte le schermate pfod, quindi una volta iniziato è possibile aggiungere sottomenu, cursori numerici, cursori multi-testo, schermate di immissione del testo, registrazione e stampa dei dati, tutto tramite SMS. Controlla il pfodSpecification.pdf per tutte le schermate e i messaggi supportati.

Il codice generato è qui. Non ha prompt e solo un singolo interruttore per mantenere il messaggio breve. I menu lunghi vengono inviati tramite più messaggi SMS che impiegano più tempo ad arrivare. Se hai un menu lungo, il codice di connessione sms nella libreria pfodParser gestisce tutto questo per te.

Per aggiungere una password alla tua connessione SMS modifica la linea

parser.connect(&pfodSMS); // collega il parser allo stream SMS a qualcosa come parser.connect(&pfodSMS, F("173057F7A706AF9BBE65D51122A14CEE"));

ma usa la tua password fino a 32 cifre esadecimali, 0..9 A.. F. Le password più corte di 32 cifre esadecimali sono riempite con 0. Vedi Un semplice pfodDevice Wifi/Internet con sicurezza a 128 bit (Arduino) per come generare una password casuale e inviarla a un codice QR per un facile input sul tuo Android. Vedi anche pfodAppForAndroidGettingStarted.pdf

Il pfodDesigner genererà anche il codice per le connessioni bluetooth e wifi via seriale ed Ethernet via SPI tutte con sicurezza opzionale a 128 bit

pfodApp

La prima cosa da capire è che gli SMS sono lenti e potrebbero non arrivare affatto o arrivare fuori servizio. Quindi quando ti connetti con pfodApp ci sarà un po' di ritardo prima che ci sia una risposta via SMS. Se il messaggio viene perso o ritardato, pfodApp lo reinvierà automaticamente dopo 3 minuti. Dopo 5 tentativi di questo tipo, pfodApp ti dirà che la connessione è persa. È possibile regolare il tempo di 3 minuti nella schermata di modifica della connessione di pfodApp.

Se aggiungi una password, ci sono sei messaggi SMS (tre a tratta) prima che il menu principale venga ricevuto dalla pfodApp. Questi messaggi extra si verificano solo durante la connessione iniziale, dopo la quale non ci sono messaggi extra quando si utilizza una password. Quindi inizia senza password per vedere che tutto funziona e poi aggiungi la password in un secondo momento.

Scudo SMS/GPRS

Possibili problemi sono le schede SIM protette da numeri pin o non autorizzate a connettersi alla rete. La libreria pfod attiva automaticamente lo scudo GPRS e cerca la risposta 'call ready'. Se quella risposta non arriva la libreria si spegne e riprova, quindi se vedi la spia di alimentazione sullo shield GPRS accendersi per 20 sec e poi spegnersi, c'è un problema di connessione alla rete. Estrai la SIM e provala su un normale telefono. Verifica che non ti venga richiesto un numero pin.

Se questo non è il problema, dovrai attivare il debug all'avvio, come descritto di seguito, per vedere cosa sta succedendo.

Alimentare lo scudo Mega / GPRS

Lo schermo assorbe fino a 2A pulsati e fino a 0,5A continui. Ipotizzando un'alimentazione a batteria da 12V, lo 0,5A supera la capacità dell'alimentatore di bordo Mega. Quindi questo shield NON deve essere alimentato dall'ingresso da 7V a 12V sul Mega. L'alternativa è alimentare il Mega e schermarlo tramite la connessione USB. Ho usato un alimentatore USB da 1A. Per i test ho utilizzato un hub alimentato da Belkin (F4U020) per evitare di assorbire una corrente eccessiva dalla porta USB del mio computer.

Per un'alimentazione a batteria da 12 V, suggerisco di utilizzare un caricabatterie USB da 5 V per autoveicoli di qualità, 1 A o superiore. Un'alimentazione USB 5V per auto di qualità dovrebbe essere progettata per gestire i picchi di sovratensione che si verificano nei sistemi elettrici delle auto e quindi dovrebbe essere adatta alla maggior parte dei sistemi di ricarica a 12V.

Relè a stato solido

Poiché questo progetto di esempio controlla uno scaldacqua (un carico resistivo), un relè a stato solido è l'ideale. Se vuoi accendere o spegnere i motori, avviare generatori, ecc., parla con il tuo elettricista di un relè adatto per il lavoro. Se hai bisogno di un relè ad alta potenza, puoi utilizzare un piccolo azionamento del relè dalla scheda arduino per accendere e spegnere il relè di potenza.

Sono disponibili molte versioni di relè a stato solido. Assicurati di acquistare in grado di gestire la corrente e la tensione del tuo riscaldatore e può essere controllato da 5 V cc e alcuni milliampere disponibili dal pin di uscita di Arduino. Quello usato qui, FOTEK SSR-40 DA, commuta fino a 380VAC a 40Amp ed è controllato da qualsiasi cosa più di 3V dc e richiede meno di 7mA.

È necessario utilizzare un dissipatore di calore e applicare uno strato SOTTILE di composto per dissipatore di calore o grasso termico sul retro del relè a stato solido prima di imbullonarlo al dissipatore di calore. L'idea è quella di ricoprire completamente la superficie con lo strato più sottile di composto head sink per riempire le microscopiche valli nella superficie del metallo. Quando è acceso, l'interruttore a stato solido scende di 1,6 V che genera 16 Watt di calore a 10 Ampere. Il dissipatore di calore è necessario per eliminare questo calore, quindi deve essere montato all'aria aperta, non all'interno di una scatola di plastica.

I ritardi sono un male

Lo scudo GPRS invia messaggi SMS tramite la connessione seriale in qualsiasi momento e il tuo loop principale() deve chiamare cmd = parser.parse(); spesso per elaborare i dati seriali prima che il buffer di 64 byte nel codice della libreria Arduino si riempia e i dati vengano persi.

Quindi devi mantenere il tuo ciclo principale () in esecuzione rapidamente. Non dovresti mai usare delay() e dovresti controllare che nessuna delle librerie che stai usando abbia ritardi in esse. Utilizzando il baud rate predefinito di 19200 del SIM900 tramite Hardware Serial, non ho ritenuto necessario aumentare la dimensione del buffer nel codice della libreria Arduino. Non uso Software Serial, solo connessioni Serial e Serial1, Hardware Serial e quasi tutti i messaggi che pfodApp invia sono molto piccoli, 10 o 12 byte. Tuttavia puoi aumentare la dimensione del buffer Arduino, se lo desideri, modificando la definizione in HardwareSerial.h da #define SERIAL_BUFFER_SIZE 64 a #define SERIAL_BUFFER_SIZE 128

Tuttavia quello che ho scoperto è che se abilitavo l'output di debug, come descritto di seguito, dovevo avere un baud rate molto veloce per la connessione del terminale, altrimenti il ritardo introdotto dall'invio di messaggi di debug al terminale causava la perdita di parti dei messaggi SMS.

Installazione

Ho aggiunto una schermatura terminale a vite in modo da avere qualcosa a cui collegare i fili del relè a stato solido. Non ho ancora fatto installare il controller dal mio elettricista. Deve essere inserito in una scatola isolata, ma con il dissipatore di calore che fuoriesce da una fessura e collegato al cavo di alimentazione dell'acqua calda.

Passaggio 3: suggerimenti per ulteriori miglioramenti: avvisi, registrazione dei dati e creazione di grafici

Il progetto di esempio sopra mostra solo come l'acqua è accesa o spenta e ti permette di accenderla. Ma la connessione SMS gestisce tutti i messaggi pfod (vedi pfodSpecification.pdf)

Se aggiungi il sensore di temperatura al tuo arduino, puoi anche inviare il monitor della temperatura e inviare le letture a intervalli regolari. Per restituire una lettura dei dati è lo stesso per bluetooth, wifi o SMS, basta aggiungere il codice come nell'esempio qui sotto. Vedere Registrazione e tracciamento dei dati per maggiori dettagli ed esempi di registrazione e tracciamento dei dati.

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

Quando la libreria pfodSMS vede la nuova riga da println(), invierà i dati grezzi come SMS. Sul tuo telefonino, lascia pfodApp in esecuzione in background e il tuo cellulare ti avviserà quando viene ricevuto un SMS. Apri di nuovo pfodApp per portarlo in primo piano, quindi apri la schermata Raw Data dal menu del cellulare per vedere i dati. Nota: i messaggi pfodSMS sono caratteri UTF-8 insieme ai numeri di connessione e di messaggio, codificati utilizzando una codifica Base64 in modo che non assomiglino al testo normale. Vedi pfodSMS message design per tutti i dettagli.

Puoi utilizzare lo stesso processo per inviare un avviso quando qualcosa cambia da remoto. cioè parser.println(F("Temperatura esterna inferiore a 0℃")); Nota: il carattere ℃ UTF-8 nella stringa. pfodSMS passa tutti i caratteri UTF-8 a pfodApp.

Passaggio 4: debug durante l'utilizzo della connessione SMS nella libreria PfodParser

Debug durante l'utilizzo della connessione SMS nella libreria PfodParser
Debug durante l'utilizzo della connessione SMS nella libreria PfodParser
Debug durante l'utilizzo della connessione SMS nella libreria PfodParser
Debug durante l'utilizzo della connessione SMS nella libreria PfodParser

Il pfodDesigner genera un codice che funziona, ma potresti voler eseguire il debug del tuo codice extra o guardare cosa sta succedendo mentre lo scudo GPRS si avvia o riceve messaggi SMS. Ci sono un paio di approcci che puoi adottare.

Debug del tuo codice

Se stai eseguendo il debug del tuo codice, potresti semplicemente commentare la linea pfodSMS e connettere il parser a Serial, quindi rimuovere lo scudo GPRS ed eseguire Mega dal terminale Arduino. cioè cambia il setup() in

//pfodSMS.init(&Serial, 9); // non avvia lo shield GPRS parser.connect(&Serial); // collega il parser a Serial invece che al flusso SMS

Quindi dal terminale Arduino puoi digitare {.} per far tornare il Mega al menu principale e quindi inviare di nuovo il comando che desideri eseguire, ad es. {A`1} per attivare il relè e {A`0} per disattivarlo. (La pfodApp di solito invia questi messaggi per te quando fai clic sul dispositivo di scorrimento.) Quindi aggiungi ulteriore debug parser.println() per monitorare il codice aggiuntivo che hai aggiunto.

Monitoraggio dello scudo GPRS

Se vuoi vedere cosa sta facendo lo scudo GPRS. Come si avvia, riceve messaggi SMS ecc. Quindi è necessario modificare il cablaggio dello schermo, collegarlo al Mega Serial1 (seriale) e liberare la connessione seriale (USB) per l'output di debug sul monitor Arduino IDE.

Per collegare lo schermo GPRS al Mega 2560 Serial1, rimuovere i collegamenti mostrati sopra e aggiungere i fili ai pin TX1 e RX1 del Mega.

Quindi cambia il codice setup() in

void setup() { Serial1.begin(19200); // cambia Serial in Serial 1 Serial.begin(57600); // NOTA la velocità di trasmissione veloce per la porta seriale USB // al monitor IDE Arduino. for (int i=3; i>0; i--) { // aspetta qualche secondo per vedere se stiamo programmando delay(1000); } pinMode(cmd_A_pin, OUTPUT); pfodSMS.setDebugStream(&Serial); // è necessario farlo prima di pfod_SMS.init // o qualsiasi altra chiamata al metodo pfod_SMS // inizializza l'SMS e collega il parser // cambia la riga successiva in Serial1 pfodSMS.init(&Serial1, 9); // collega Seeed GPRS shield V2 a Serial1 invece di Serial parser.setDebugStream(&Serial); // è necessario farlo prima di parser.connect // o di qualsiasi altro metodo parser chiamare parser.connect(&pfodSMS); // collega il parser al flusso SMS }

Ora puoi decommentare alcune delle impostazioni di debug nella libreria pfodParser al file pfodSMS_SIM900.cpp.

Ad esempio, decommentando #define DEBUG_SETUP stamperà (sul flusso di debug) ciò che sta accadendo mentre si accende lo scudo GPRS e lo si prepara a ricevere messaggi SMS.

Decommentare #define DEBUG darà molte informazioni sui messaggi SMS ricevuti.

Questo è tutto !

Consigliato: