Sommario:

Tutorial Arduino Cellular Shield: 9 passaggi (con immagini)
Tutorial Arduino Cellular Shield: 9 passaggi (con immagini)

Video: Tutorial Arduino Cellular Shield: 9 passaggi (con immagini)

Video: Tutorial Arduino Cellular Shield: 9 passaggi (con immagini)
Video: Amazing arduino project 2024, Luglio
Anonim
Tutorial Arduino Cellular Shield
Tutorial Arduino Cellular Shield

L'Arduino Cellular Shield consente di effettuare chiamate telefoniche cellulari e inviare messaggi di testo. Il cervello di questo scudo è l'SM5100B che è un robusto modulo cellulare in grado di svolgere molti dei compiti della maggior parte dei telefoni cellulari standard. Questo scudo richiede l'uso di una scheda SIM per connettersi a una rete cellulare. Il tutorial che segue è un tutorial essenziale per l'inizializzazione dello scudo e per inviare e ricevere messaggi di testo e telefonate. Per saperne di più sulla funzionalità del modulo, assicurati di controllare le schede tecniche sulla pagina del prodotto di Sparkfun.

Passaggio 1: vai a prendere le cose

Vai a prendere le cose
Vai a prendere le cose

Avrai bisogno:

(x1) Cellular shield (x1) Header Arduino impilabili (x1) Antenna quad band (x1) Arduino Uno

(Nota che alcuni dei link in questa pagina sono link di affiliazione. Questo non cambia il costo dell'articolo per te. Reinvesto qualunque ricavato ricevo nella realizzazione di nuovi progetti. Se desideri suggerimenti per fornitori alternativi, per favore fammi sapere.)

Passaggio 2: intestazioni a saldare

Intestazioni a saldare
Intestazioni a saldare
Intestazioni a saldare
Intestazioni a saldare
Intestazioni a saldare
Intestazioni a saldare

Inserire le intestazioni nello scudo e saldarle in posizione.

Passaggio 3: inserire

Inserire
Inserire
Inserire
Inserire

Inserisci i pin dell'intestazione nelle prese sull'Arduino.

Passaggio 4: Risaldare

Rivenditore
Rivenditore

La connessione del cavo dell'antenna al modulo SM5100B di solito non è molto buona. Risaldare ciascuna delle connessioni del cavo al modulo per garantire la connettività.

Passaggio 5: collegare l'antenna

Collegare l'antenna
Collegare l'antenna
Collegare l'antenna
Collegare l'antenna

Infilare l'antenna nel cavo dell'antenna.

Passaggio 6: inserire la carta SIM

Inserire la carta SIM
Inserire la carta SIM
Inserire la carta SIM
Inserire la carta SIM
Inserire la carta SIM
Inserire la carta SIM
Inserire la carta SIM
Inserire la carta SIM

Inserire saldamente la carta SIM nella presa della carta SIM.

Passaggio 7: inizializzazione

Inizializzare
Inizializzare

Esegui il seguente codice su Arduino:

/*

SparkFun Cellular Shield - Schizzo di esempio pass-through SparkFun Electronics Scritto da Ryan Owens 3/Descrizione: Questo schizzo è scritto per interfacciare un Arduino Duemillanove a uno scudo cellulare di SparkFun Electronics. Lo scudo cellulare può essere acquistato qui: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 In questo sketch i comandi seriali vengono passati da un programma terminale al modulo cellulare SM5100B; e le risposte dal modulo cellulare sono pubblicate nel terminale. Maggiori informazioni sono disponibili nei commenti dello schizzo. Per utilizzare il dispositivo è necessario inserire una carta SIM attivata nel supporto della carta SIM sulla scheda! Questo sketch utilizza la libreria NewSoftSerial scritta da Mikal Hart di Arduiniana. La libreria può essere scaricata a questo URL: https://arduiniana.org/libraries/NewSoftSerial/ Questo codice è fornito sotto la Creative Commons Attribution License. Maggiori informazioni possono essere trovate qui: https://creativecommons.org/licenses/by/3.0/ (Usa il nostro codice liberamente! Ricordati solo di darci credito dove è dovuto. Grazie!) */ #include //Include the NewSoftSerial libreria per inviare comandi seriali al modulo cellulare. #include //Utilizzato per manipolazioni di stringhe char incoming_char=0; //Conterrà il carattere in arrivo dalla porta seriale. SoftwareCella seriale(2, 3); //Crea una porta seriale "falsa". Il pin 2 è il pin Rx, il pin 3 è il pin Tx. void setup() { //Inizializza le porte seriali per la comunicazione. Serial.begin(9600); cell.begin(9600); //Iniziamo! Serial.println("Avvio comunicazione SM5100B…"); } void loop() { //Se un carattere arriva dal modulo cellulare… if(cell.available() >0) { incoming_char=cell.read(); //Ottieni il carattere dalla porta seriale del cellulare. Serial.print(incoming_char); //Stampa il carattere in arrivo sul terminale. } //Se un carattere sta arrivando dal terminale ad Arduino… if(Serial.available() > 0) { incoming_char = Serial.read(); // Ottieni il carattere proveniente dal terminale if(incoming_char == '~') // Se è una tilde… incoming_char = 0x0D; // …converti in un ritorno a capo else if(incoming_char == '^') // Se è un up caret… incoming_char = 0x1A; // …converti in ctrl-Z cell.print(incoming_char); // Invia il carattere al modulo cellulare. Serial.print(incoming_char); // Echo di nuovo al terminale } } /* Riferimento rapido SM5100B per il set di comandi AT *Se non diversamente specificato, i comandi AT vengono terminati premendo il tasto 'invio'. 1.) Assicurati che sia stata selezionata la banda GSM corretta per il tuo paese. Per gli USA la banda deve essere impostata a 7. Per impostare la banda utilizzare questo comando: AT+SBAND=7 2.) Dopo aver acceso Arduino con lo shield installato, verificare che il modulo legga e riconosca la SIM card. Con una finestra terminale aperta e impostata su porta Arduino e 9600 buad, accendi Arduino. La sequenza di avvio dovrebbe essere simile a questa: Avvio della comunicazione SM5100B… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 La comunicazione con il modulo inizia dopo la visualizzazione della prima riga. La seconda linea di comunicazione, +SIND: 10, ci dice se il modulo può vedere una scheda SIM. Se viene rilevata la carta SIM ogni altro campo è un 1; se la carta SIM non viene rilevata ogni altro campo è 0. 3.) Attendere una connessione di rete prima di iniziare a inviare comandi. Dopo la risposta +SIND: 10 il modulo inizierà automaticamente a provare a connettersi a una rete. Attendi finché non ricevi le seguenti risposte: +SIND: 11 +SIND: 3 +SIND: 4 La risposta +SIND dal modulo cellulare indica lo stato dei moduli. Ecco un rapido riepilogo dei significati delle risposte: 0 Scheda SIM rimossa 1 Scheda SIM inserita 2 Suoneria 3 Il modulo AT è parzialmente pronto 4 Il modulo AT è completamente pronto 5 ID delle chiamate rilasciate 6 Chiamata rilasciata il cui ID= 7 Il servizio di rete è disponibile per una chiamata di emergenza 8 La rete è persa 9 Audio ON 10 Mostra lo stato di ogni rubrica dopo la frase iniziale 11 Registrato alla rete Dopo la registrazione alla rete è possibile iniziare l'interazione. Ecco alcuni comandi semplici e utili per iniziare: Per effettuare una chiamata: Comando AT - ATDxxxyyyzzzz Numero di telefono con il formato: (xxx)yyy-zzz try ---- cell.print("ATDxxxyyyzzzz"); Se effettui una telefonata assicurati di fare riferimento alla scheda tecnica dei dispositivi per collegare un microfono e un altoparlante allo scudo. Per inviare un messaggio di testo: Comando AT - AT+CMGF=1 Questo comando imposta la modalità del messaggio di testo su "testo". Comando AT = AT+CMGS="xxxyyyzzzz"(ritorno a capo)'Testo da inviare'(CTRL+Z) Questo comando è un po' confuso da descrivere. Il numero di telefono, nel formato (xxx)yyy-zzzz va tra virgolette. Premere 'invio' dopo aver chiuso le quotazioni. Successivamente inserisci il testo da inviare. Termina il comando AT inviando CTRL+Z. Questo carattere non può essere inviato dal terminale di Arduino. Usa un programma terminale alternativo come Hyperterminal, Tera Term, Bray Terminal o X-CTU. Il modulo SM5100B può fare molto di più! Consulta le schede tecniche sulla pagina del prodotto per saperne di più sul modulo.*/Apri la porta seriale nel terminale. Su un Mac questo si ottiene digitando: screen /dev/tty.usbmodemfa131 9600 (sostituisci tty.usbmodemfa131 con l'indirizzo seriale del tuo Arduino) Attendi di vedere la seguente sequenza restituita: Avvio della comunicazione SM5100B… +SIND: 3 +SIND: 4 +SIND: 11 (Se questa sequenza non viene restituita, controllare i codici di errore elencati in fondo al codice sopra ed eseguire il debug in modo appropriato. Potrebbe essere necessario impostare il modulo per l'utilizzo in Nord America - vedere sotto - prima che si registri alla rete (ad es. +SIND 11))Invia i seguenti comandi alla porta seriale: Invia questo per l'utilizzo in Nord America: AT+SBAND=7 Imposta l'ora corrente - aa/mm/gg: AT+CCLK="13/05/15, 11: 02:00" Invia chiamata di prova: ATD4155551212

Passaggio 8: messaggi di testo

Messaggi di testo
Messaggi di testo

Scarica e installa SerialGSM nella tua libreria Arduino.

Per inviare un messaggio di testo visita il tutorial del modulo cellulare Tronixstuff e usa il codice di esempio 26.3:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Se desideri eseguire il codice di esempio per ricevere un testo, collega un LED al pin 8 e mettilo in serie con una resistenza da 220 ohm a terra.

Per inviare un SMS visita il tutorial del modulo cellulare Tronixstuff e usa il codice di esempio 26.5:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Invia uno dei seguenti comandi al tuo modulo cellulare:

//accende il LED #a1

//spegne il LED #a0

Passaggio 9: voce

Voce
Voce
Voce
Voce
Voce
Voce

Collegare un microfono e un altoparlante alla schermatura utilizzando un cavo audio con messa a terra. Il cavo del segnale centrale dovrebbe andare ai terminali audio plus e la schermatura dovrebbe andare ai rispettivi terminali negativi sullo schermo. Questi cavi devono essere collegati in modo simile sul lato microfono e altoparlante.

Per inizializzare una chiamata vocale caricare il seguente codice:

//**********************************************************************************

// EFFETTUA UNA CHIAMATA // // CODICE BUFFERING BASATO SU: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }

To receive a voice call upload the following code

//**********************************************************************************

// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // //********************************************* ************************************ #include #define BUFFSIZ 90 //Imposta l'array di buffer char at_buffer [BUFFSIZ]; char buffidx; //Variabili di stato della rete int network_registered; int network_AT_ready; //Variabili di stato del codice int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; intero x; //Conterrà il carattere in arrivo dalla porta seriale. char incoming_char=0; //Crea una porta seriale "falsa". Il pin 2 è il pin Rx, il pin 3 è il pin Tx. SoftwareCella seriale(2, 3); void setup() { //Inizializza la porta seriale di Arduino per il debug. Serial.begin(9600); //Inizializza la porta seriale virtuale per parlare con il telefono. cell.begin(9600); //Ciao mondo. Serial.println("Avvio comunicazione SM5100B…"); ritardo(1000); //Imposta lo stato iniziale della rete network_registered = 0; network_AT_ready = 0; } //Legge le stringhe AT dallo scudo cellulare void readATString(void) { char c; buffidx= 0; // inizia all'inizio for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; Restituzione; } if (c == '\n') { continua; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; Restituzione; } at_buffer[buffidx++]= c; } } } //Elabora le stringhe AT void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("Rete di rete non disponibile"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("rete registrata"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("rete AT pronta"); } } void loop() { /* Se chiamato per la prima volta, esegue un ciclo finché network e AT sono pronti */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } if(firstTimeInOtherLoop == 1){ //Cerca la chiamata in arrivo if(strstr(at_buffer, "+CPAS: 3") != 0) { //Rispondi al telefono cell.println("ATA"); firstTimeInOtherLoop = 0; } } }

Immagine
Immagine

Hai trovato questo utile, divertente o divertente? Segui @madeineuphoria per vedere i miei ultimi progetti.

Consigliato: