Domanda:
SerialGSM per scudo GSM senza SoftwareSerial
user1584421
2014-06-23 14:40:03 UTC
view on stackexchange narkive permalink

SerialGSM è una libreria per semplificare gli scudi GSM.

Questo è un codice di esempio per l'invio di SMS:

  #include <SerialGSM.h> # include <SoftwareSerial.h>SerialGSM (2 , 3); void setup () {Serial.begin (9600); cell.begin (9600); cell.Verbose (vero); cell.Boot (); cell.FwdSMS2Serial (); cell.Rcpt ("+ 972123456789"); cell.Message ("ciao mondo"); cell.SendSMS ();} void loop () {if (cell.ReceiveSMS ()) {Serial.println (cell.Message ()); cell.DeleteAllSMS (); }}  

Come puoi vedere, usa il software seriale.

Ho intenzione di usarlo per la mia tesi di laurea, ma sto usando uno scudo, quindi ho vinto sto usando Software Serial.

Ciò che mi dà fastidio è questa riga

  SerialGSM cell (2,3);  

In il mio caso, lo dichiaro così ?:

  SerialGSM cell (0,1); 

O ci saranno conflitti con seriale?

EDIT: In altre parole, come dichiaro l'oggetto SeralGSM utilizzando seriale hardware e non seriale software?

Due risposte:
#1
+5
Peter Bloomfield
2014-06-23 20:41:07 UTC
view on stackexchange narkive permalink

SerialGSM è progettato per funzionare con il software seriale, come puoi vedere dalla dichiarazione della classe nell'intestazione SerialGSM.h :

  class SerialGSM: public SoftwareSerial {...};  

Sfortunatamente, cambiarlo per usare l'hardware seriale è più complicato di quanto sembri. Ci sono due potenziali modi per farlo:

  1. Deriva da HardwareSerial invece di SoftwareSerial . Questo ti darebbe flessibilità, ma dovresti occuparti di passare tutti i dati giusti al costruttore HardwareSerial , il che è piuttosto complicato.

  2. Non derivare da niente. Usa l'oggetto globale Serial e sostituisci manualmente tutte le chiamate di funzioni seriali con i loro equivalenti Serial.xxx () . Questo è probabilmente più facile, ma ti limita a una porta seriale specifica.

Entrambi gli approcci richiedono un bel po 'di codifica, quindi non sono compiti banali. È anche importante notare che SerialGSM attualmente utilizza l'oggetto globale Serial per fornire informazioni di debug. Dovresti rimuoverlo o modificarlo prima di convertirlo in seriale hardware, altrimenti potrebbe interferire.

Molte grazie! Ok, se è così, posso usarlo in modalità seriale software. Ora, ho anche un'unità GPS che voglio usare. Ciò significa, collegare lo scudo e utilizzare la libreria SerailGSM, e anche collegare il gps alle porte 0 (e 1 se voglio che il GPS riceva dati), e utilizzare Serial.begin (4800); avviare la roba di ricezione seriale?
Questo dovrebbe funzionare, anche se tieni presente che "SerialGSM" invia le informazioni di debug alla seriale hardware. Ciò significa che se colleghi il TX hardware al tuo GPS, probabilmente andrà storto.
OK, un altro approccio sarebbe quindi quello di utilizzare l'esempio di invio di sms pronto per arduino. il fatto è che ho questo scudo https://www.sparkfun.com/products/9607, con il chipset SM5100B. Sai se l'esempio di invio di SMS di Arduinos funzionerà con questo shield?
Non ho mai usato quello scudo, quindi temo di non saperlo. Sembra che SparkFun abbia il proprio codice di esempio per questo: https://github.com/sparkfun/SM5100B_Cellular_Shield/blob/master/Firmware/Cellular_Shield_Passthrough_b/Cellular_Shield_Passthrough/Cellular_Shield_Passthrough.pde
#2
+2
user1584421
2014-06-24 20:41:16 UTC
view on stackexchange narkive permalink

Non importa, sono andato con l'esempio SMS GSM da arduino 1.0.5 (non conosco la versione dell'IDE di arduino che lo includeva) e funziona bene.

Se stai pensando di utilizzare SerialGSM libreria non ce n'è bisogno!

ATTENZIONE: Nella libreria di Arduino, quando dichiari il numero di telefono, devi utilizzare il formato internazionale

(Grazie bloomfield per le informazioni che hai fornito in la risposta precedente)



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...