SIM900

Un saluto a tutti gli appassionati di arduino.
Sono nuovo di questo mondo e pertanto il mio problema potrà essere banale per molti ma per me è grosso ostacolo.
Ho comprato un modulo sim900A per fare un progettino di monitoraggio con sensori e invio dati via GSM.
Dopo aver aggiornato il firmware (quello originale non funzionava in italia) e configurato il modulo attraverso cavetto USB-TO-232 ho fatto le prime prove di chiamata e invio sms mediante il modulo. Tutto funziona a meraviglia
Ho allora provato a connettere il modulo ad arduino UNO, collegare TX-RX (via TTL) caricare uno scketch vuoto e ho provato ad inviare alcuni comandi AT.
Quando accendo il modulo sul monitor seriale compare:
RDY
+CFUN: 1
+CPIN: READY
e fin qui tutto OK.
Quando provo ad inviare qualsiasi comando AT il modulo non risponde.
Ho provato a settare altre porte seriali su arduino, caricare sketch di ogni tipo, alimentare il modulo via USB, pregare in mandarino ma niente. Riesco anche a chiamare il modulo via telefono (che suona) ma non riesco in alcune maniera ad inviare qualsiasi comando AT
Avete qualche suggerimento.
Ciao e grazie

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Facci verere lo sketch.

Come prima prova ho caricato uno sketch vuoto, collegato tx del modulo sim 900A con Rx di arduino (pin 1) e RX del modulo con Tx di arduino (pin 0). Se ho ben capito così facendo dovrei poter eseguire comandi AT direttamente dal monitor seriale di Arduino.
lo sketch è il seguente:

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Ho provato un infinità di altri sketch del tipo che segue (ovviamente cambiando i collegamenti sui pin 7 e 8 di arduino):

#include <SoftwareSerial.h>
  SoftwareSerial mySerial(7, 8);
void setup()
    {
    Serial.begin(9600);
    mySerial.begin(9600);
    }
    void loop()
    {
     //SIM900.println((char)26); 
    delay(1200);
    Serial.print("AT");
    delay(1200);
    bool bOK = false;
    while (Serial.available() > 0)
    {
    char inChar = (char)Serial.read();
    bOK = true;
    }

Ma niente da fare. Ho provato anche a settare diversi baudrate (collegando il modulo con la scheda USB-TO-232).
Grazie

Se vuoi usare Arduino come convertitore seriale, in modo da usare direttamente il modulo GSM da monitor seriale, non puoi fare come hai fatto tu.

  1. Rx di Arduino va' collegato con Rx del modulo. Idem per il Tx di Arduino che và al Tx del modulo
  2. Devi togliere l'Atmega328 dallo zoccolo, perche' anche far girare uno sketch vuoto non basta

oppure usi la Software Serial, ma non come nello sketch che hai inserito, quello è completamente sballato

#include <SoftwareSerial.h>
SoftwareSerial SerialGSM (10, 11); // RX, TX

void setup()  
{
  Serial.begin(9600);
  SerialGSM.begin(9600);
 }

void loop()
{
 if (SerialGSM.available() > 0) Serial.write(SerialGSM.read());
 if (Serial.available() > 0) SerialGSM.write(Serial.read());
}

in questo caso colleghi l'Rx del modulo al pin 10 (Rx) e il Tx de lmodulo al pin 11 (Tx)
i pin 7 e 8 che hai usato, se hai una Mega non vanno bene link

Ho collegato come dici, compilato e caricato lo sketch ma niente da fare. Il modulo si connette alla rete (posso chiamarlo) ma non risponde a nessun comando AT.

Non so più dove sbattere la testa

Domanda banale ... ha programmato il monitor seriale per inviare il CR/LF alla fine della stringa ?

Guglielmo

Ho selezionato nel menu a tendina in basso a dx "NL&CR".
E' sufficiente o bisogna programmare altro per programmare l' "A capo" e "ritorno carrello"?
Quando avvio il modulo sul monitor seriale di arduino compare:
RDY

+CFUN: 1

+CPIN: READY

Call Ready

quindi credo che la trasmissione dal modulo alla scheda funzioni. Non credo che funzioni altrettanto la trasmissione dal pc al modulo. Ho un dubbio sui driver. Avendo una scheda UNO un po' vecchia e windows 10 potrebbero esserci problemi di driver? Ho provato anche a disabilitare la verifica della firma dei driver ma nulla. Ora provo a installare una virtual machine Linux e cercare di circoscrivere il problema.
grazie

Prova nel menu a tendina a scegliere solo CR ... poi scrivi solo AT ed invia, vedi se ti risponde OK.

Se ricevi regolarmente dubito che sia un problema di collegamento con il PC ... l'interfaccia USB sta funzionando ... ::slight_smile:

Guglielmo

Provato ma nulla da fare
in rete avevo trovato questo (fonte Sparkfun):
"...Windows 8 comes with a nice little security ‘feature’ that ‘protects’ you from unsigned driver installation. Some older versions of Arduino Uno come with unsigned drivers, so in order to use your Uno, you’ll have to tell Windows to disable driver signing. This issue has been addressed in newer releases of the Arduino IDE, but if you run into issues, you can try this fix first."

E' per questo che pensavo a problemi di driver

... mah ... credo che se ci fosse un problema con il driver NON vedresti la seriale e non riceveresti nulla ::slight_smile:

Guglielmo

Ho installato arduino su UBUNTU e ottengo lo sesso comportamento. Il modulo funzione da convertitore USB -232 ma non da arduino UNO.
Credo che a questo punto il malfunzionamento non dipenda da Driver o Sist. operativo (come suggeriva Guglielmo) ma possa essere circoscritto all'hardware (cavo USB e scheda Arduino UNO) o ad errori di cablaggio.

Risolto! Effettivamente erano errori di cablaggio. Collegavo erroneamente le uscite TTL a 5 V del modulo sim 900A mentre vanno collegate quelle a 3V
Grazie a tutti dei buoni consigli.
Silvano