Problema utilizzo modulo GSM

25 views
Skip to first unread message

Enrico Iori

unread,
Oct 11, 2017, 2:35:38 PM10/11/17
to Treviso Arduino User Group
Ciao a tutti!

Sto cercando di aiutare un mio amico a sviluppare un'applicazione molto standard che prevede l'utilizzo di un Arduino Uno insieme ad una shield sim 900. Dopo aver seguito qualche tutorial e smanettato un po' riusciamo a inviare messaggi e a riceverli stampandone il testo tramite "Serial.Print()". Poiché la lettura del messaggio avviene carattere per carattere volevo tradurre il messaggio in una stringa per poi inserirla in uno "if then else" ed eseguire comandi diversi a seconda del testo. Il primo 'problema' è stato quello di distinguire il testo del messaggio vero e proprio dalle meta-informazioni tipo numero del mittente, ora etc. Per farlo ho effettuato un banale "substring", trimmando la parte di stringa non interessata. Già questa mi sembra una soluzione poco elegante perché se la lunghezza della stringa dovesse cambiare sarei fregato. Il vero problema però è che, una volta estrapolata la stringa di testo del messaggio, quando la confronto con il valore aspettato la comparazione da' false. In pratica se tramite messaggio invio il testo "antani" vedo che la stringa ricevuta quando stampata su monitor seriale recita "antani" ma se poi la confronto con il valore stringa "antani" il risultato è negativo. Ho pensato che potesse essere il return carriage o qualcosa di simile e ho effettuato il confronto con il valore stringa "antani\n" o con "antani\r" ma niente da fare. Qualcuno sa perché il codice non si comporta come mi aspetterei? Avete suggerimenti su come migliorare il codice? Trovate lo sketch in allegato..grazie mill!

Enrico
prova_ricezione.txt

Mirco Piccin

unread,
Oct 11, 2017, 3:47:19 PM10/11/17
to Treviso Arduino User Group
Ciao,
per comparare stringhe vedi :
https://www.arduino.cc/en/Tutorial/StringComparisonOperators

Comunque prova a stampare a seriale il valore di casting racchiuso tra
qualche altro carattere, per essere certo non ci siano spazi o altri
caratteri strani.
Infine, per lavorare su uno stream (anche quello seriale) per estrarne
parti dai un'occhiata alla classe stream:
https://www.arduino.cc/en/Reference/Stream

Ciaoo
M

Enrico Iori

unread,
Oct 11, 2017, 4:26:24 PM10/11/17
to Treviso Arduino User Group
Grazie mille della prontissima risposta! Appena torno a lavorare con questo mio amico proverò senz'altro! Grazie infinite!

Enrico

Mirco Piccin

unread,
Oct 11, 2017, 4:29:14 PM10/11/17
to Treviso Arduino User Group
Facci sapere,
magari passa a mostrarci il tuo progetto alla prossima riunione!
Lunedì 22 ottobre alla Casa del Vontoltariato, a Montebelluna :)

A presto
Mirco
> --
> --
> ----
> Per mandare un messaggio al gruppo "Treviso Arduino User Group", invialo a:
> treviso_ardui...@googlegroups.com
> Per annullare l'iscrizione a questo gruppo, invia un'email a:
> treviso_arduino_use...@googlegroups.com
> Per altre informazioni, visita la url:
> http://groups.google.com/group/treviso_arduino_user_group
>
> ---
> You received this message because you are subscribed to the Google Groups
> "Treviso Arduino User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to treviso_arduino_use...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Enrico Iori

unread,
Oct 11, 2017, 4:30:01 PM10/11/17
to Treviso Arduino User Group
Un ultima cosa: voi sapete dirmi se gli sms letti hanno un particolare carattere di terminazione?

Mirco Piccin

unread,
Oct 11, 2017, 4:46:16 PM10/11/17
to Treviso Arduino User Group
Ciao,

> Un ultima cosa: voi sapete dirmi se gli sms letti hanno un particolare
> carattere di terminazione?

questo forse dipende dalla libreria.
Credo sia plausibile, ma potresti controllare verificando appunto
l'ultimo carattere che ti arriva stampandolo non come char ma come int
e verificando poi in una tabella ascii
http://www.asciitable.com/

Ciao
M

Enrico Iori

unread,
Oct 12, 2017, 2:07:59 AM10/12/17
to Treviso Arduino User Group
Grazie infinite! Appena ho qualche aggiornamento vi renderò partecipi..grazie! :)

Enrico Iori

unread,
Nov 9, 2017, 6:40:47 AM11/9/17
to Treviso Arduino User Group
Finalmente stasera mi accingo a riprendere in mano la questione e cercherò di risolvere il problema suddetto..spero di riuscirci e in tal caso vi aggiorno!
Nel frattempo sempre legato a questo progetto c'è un'altra cosa che non mi torna: il mio amico uso dei relè che però sembra abbiano la logica invertita:
quando alzo l'uscita spengono il dispositivo e viceversa..dipende da come li ha collegati? Il tipo è questo:

https://www.amazon.it/gp/product/B01NBW0Z5J/ref=oh_aui_detailpage_o02_s01?ie=UTF8&psc=1

grazie!

Mirco Piccin

unread,
Nov 9, 2017, 6:50:38 AM11/9/17
to Treviso Arduino User Group
Ciao

> Finalmente stasera mi accingo a riprendere in mano la questione e cercherò
> di risolvere il problema suddetto..spero di riuscirci e in tal caso vi
> aggiorno!

bene!

> Nel frattempo sempre legato a questo progetto c'è un'altra cosa che non mi
> torna: il mio amico uso dei relè che però sembra abbiano la logica
> invertita:
> quando alzo l'uscita spengono il dispositivo e viceversa..dipende da come li
> ha collegati? Il tipo è questo:

il relà lato alta tensione ha 3 morsetti: il normalmente aperto (NO),
il comune (che è l'ingresso) e il normalmente chiuso (NC).
Se tu usi il NC, la tensione passa fintanto che non attivi il relè.
Se tu usi il NO, la tensione NON passa fintanto che non attivi il relè.
Claro ? :D

ciao
M

Mauro De Vecchi

unread,
Nov 9, 2017, 9:41:00 AM11/9/17
to treviso_ardui...@googlegroups.com, Enrico Iori

Per quanto riguarda il modulo relè, la terza immagine riporta sul PCB la dicitura "Low level trigger". Significa che la bobina del relè si accende quando l'ingresso del modulo viene collegato a massa. Se il modulo è connesso all'uscita di un micro devi scrivere 0 (False) nell'uscita per attivarlo. Molto probabilmente va utilizzata anche una resistenza di pullup (oppure puoi usare quella integrata nell'uscita del micro, se disponibile).

Mauro

--

Enrico Iori

unread,
Nov 11, 2017, 9:28:03 AM11/11/17
to Treviso Arduino User Group
Cao,

Finalmente ho risolto i problemi indicati  e siamo riusciti a far avanzare il progetto.
Il confronto della stringa è stato fatto tramite la funzione "indexOf", non so dire quale fosse il carattere che faceva fallire
la comparazione 'diretta'..ad ogni modo così facendo ora siamo in grado di compiere azioni in conseguenza del messaggio!
Il discorso dei relè è come dite voi: collegato a massa si attiva mentre a Vcc si spegne..non abbiamo fatto altro che alzare l'uscita
immediatamente dopo la sua inizializzazione! Grazie mille a tutti e buon lavoro!

Per altre informazioni, visita la url:
http://groups.google.com/group/treviso_arduino_user_group

---
You received this message because you are subscribed to the Google Groups "Treviso Arduino User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to treviso_arduino_user_group+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages