Buongiorno a tutti,
come da oggetto, il problema che sto riscontrando è nella comunicazione tra il mio SIM900 (della SIMCOM) e Arduino 2009.
Da precedente post, sto utilizzando:
- lo shield GPRS SHILED:
https://www.ebay.it/itm/SIM900-GSM-GPRS-SIMCOM-Quad-band-Shield-Development-Board-for-Arduino-Iduino/281951621526?hash=item41a5a05196:g:vBQAAOSwqYBWoLvQ e alimentato esternamente da 5V 2A;
-Arduino 2009;
Mentre dall'immigine allegata, ho collegato i PIN di ricezione e trasmissione sulla porta 0 e 1 di arduino per la comunicazione Seriale in modalità software (ho provato anche in modalità hardware, impostando le porte di trasmissione sui pin 7-8, ma il risultato non cambia).
Ho usato la libreria GSM, presente all'interno della sezione "Manages" e il codice utilizzato è quello di esempio "Receive Voice Call", che di seguito riporto:
#include <GSM.h>
// PIN Number
#define PINNUMBER ""
// initialize the library instance
GSM gsmAccess;
GSMVoiceCall vcs;
// Array to hold the number for the incoming call
char numtel[20];
void setup()
{
// initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Receive Voice Call");
// connection state
boolean notConnected = true;
// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while (notConnected)
{
if (gsmAccess.begin(PINNUMBER) == GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
// This makes sure the modem correctly reports incoming events
vcs.hangCall();
Serial.println("Waiting for a call");
}
void loop()
{
// Check the status of the voice call
switch (vcs.getvoiceCallStatus())
{
case IDLE_CALL: // Nothing is happening
break;
case RECEIVINGCALL: // Yes! Someone is calling us
Serial.println("RECEIVING CALL");
// Retrieve the calling number
vcs.retrieveCallingNumber(numtel, 20);
// Print the calling number
Serial.print("Number:");
Serial.println(numtel);
// Answer the call, establish the call
vcs.answerCall();
break;
case TALKING: // In this case the call would be established
Serial.println("TALKING. Press enter to hang up.");
while (Serial.read() != '\n')
delay(100);
vcs.hangCall();
Serial.println("Hanging up and waiting for the next call.");
break;
}
delay(1000);
}
All'interno del monitor, Arduino si ferma al print della scritta : "Receive Voice Call", non restituendo nessun'altro dettaglio.
Durante i Test, la sim risulta essere funzionante. Il led Netlight lampeggia con intervalli di circa 3 secondi e nel caso riceva la chiamata, il led status si spegne restituendo lo squillo (interrompendosi al 4 squillo con l'inserimento della segreteria).
Ho verificato tramite questo LINK le varie impostazioni (come suggerite in un vecchio post), ma anche impostando le configurazioni indicate, non riesco a far comunicare le due schede.
Lo scopo del mio progetto è quello di integrare all'arrivo di una chiamata, l'esecuzione di un comando come può essere lo stimolo di un relè. Sicurmante per la mia poca esperienza mi sta sfuggendo qualcosa, ma non sto capendo dove sto sbagliando.
N.B. In conclusione ringrazio il sig. Guglielmo per la spiegazione e spero di aver eseguito alla lettera i suoi consigli.
