conflitto Ethernet Shield con GSM Shield

salve a tutti,

recentemente ho acquistato la GSM Shield ufficiale e vorrei farla funzionare in concomitanza con l'Ethernet Shield per realizzare un gateway sms pilotabile da web.

di seguito il codice che utilizzo:

#include <avr/wdt.h>
#include <GSM.h>
#include <Ethernet.h>
#include <SPI.h>

#define PINNUMBER "7587"

GSM gsmAccess;
GSM_SMS sms;


String temp;
String inString;

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xEB, 0x64 };
byte ip[] = { 192, 168, 1, 135 };

EthernetServer server(84);

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

    while(Ethernet.begin(mac) == 0){
      Serial.println("Errore Configurazione, ritento tra 1 minuto");
      delay(6000);
    }

   Serial.println("Connessione Configurata.");
   Serial.println(Ethernet.localIP());

   server.begin();
  
   wdt_enable(WDTO_8S);
  
}

void loop() {
  
  EthernetClient client = server.available();
  
  if(client){
    
    boolean current_line_is_blank = true;
    
    while (client.connected()) {
     
      if(client.available()) {
      
        char c = client.read();
    
        inString.concat(c);
              
        if (c == '\n' && current_line_is_blank) {
                    
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/plain");
          client.println();

          Serial.println(inString);
       

            
                                         
            if(inString.indexOf("[number]")>0){
              
              temp = inString.substring(inString.indexOf("[number]") + 8, inString.indexOf("[/number]"));          
        
              client.println(temp);
                
               }
               
               
                
                
            if(inString.indexOf("[text]")>0){
              
              temp = inString.substring(inString.indexOf("[text]") + 6, inString.indexOf("[/text]"));          
        
                
              client.println(temp);
                
               }
                
                
           

          break;
        }
        
        if (c == '\n') {
          
          current_line_is_blank = true;
          
        } else if (c != '\r') {
          
          current_line_is_blank = false;
          
        }
        
      }
      
    }
    
    delay(1);
    
    inString = "";
    
    client.stop();
    
  }
  
  wdt_reset();
}

il codice al momento non fa altro che ricevere la variabile "number" dall'url solo che quando inserisco la libreria GSM.h non la vede più.

cosa può essere? grazie

up =(

Forse perché tutti due i shiel usano pin 10 come CS della SPI. Devi modificare una delle due schede e usare un altro pin.

Ciao Uwe

ciao, grazie per la risposta :slight_smile:

ma è una modifica hw o sw? io sto utilizzando una Arduino Uno, Ethernet shield e GSM Shield.
ho visto che per la Arduino Leonardo/Mega c'è da fare questo settaggio:

è qualcosa di simile? non ho idea di come si faccia...

grazie

Se è come dire uwe la modifica è hardware...

Nè dalla descrizione nè dallo schema (http://arduino.cc/en/uploads/Main/arduino-gsm-shield-schematic.pdf) risulta che sulla UNO la GsmShield usi lo SPI e tantomeno il pin 10.
Deve essere un problema a livello di librerie.

C'è un avviso qui--> http://arduino.cc/en/Reference/GSM

Ethernet library compatibility

The library tries to be as compatible as possible with the current Ethernet library. Porting a program from an Arduino Ethernet or WiFi library to an Arduino with the GSM Shield should be fairly easy. While it is not possible to simply run Ethernet-compatible code on the GSM shield as-is, some minor, library specific, modifications will be necessary, like including the GSM and GPRS specific libraries and getting network configuration settings from your cellular network provider.

ciao ragazzi, intanto grazie delle risposte.

questo è il file principale della libreria gsm. al suo interno vi sono tante inclusioni di altri file.

#include <GSM3CircularBuffer.h>
#include <GSM3MobileCellManagement.h>
#include <GSM3MobileClientService.h>
#include <GSM3MobileNetworkRegistry.h>
#include <GSM3MobileServerService.h>
#include <GSM3ShieldV1AccessProvider.h>
#include <GSM3ShieldV1BandManagement.h>
#include <GSM3ShieldV1ClientProvider.h>
#include <GSM3ShieldV1DataNetworkProvider.h>
#include <GSM3ShieldV1ModemVerification.h>
#include <GSM3ShieldV1PinManagement.h>
#include <GSM3ShieldV1ScanNetworks.h>
#include <GSM3SMSService.h>
#include <GSM3VoiceCallService.h>

sto utilizzando la ethernet shild in modalità server e la gsm shild in modalità invio sms.

ora bisogna capire in quale inclusione c'è conflitto. da dove incominciamo? :slight_smile:

Ciao Youdomi... mi trovo nella stessa situazione...
hai risolto il problema di conflitto tra Ethern Shield e GSM Shield (ufficiale arduino.cc).
Io sto provando piegando i PIN 10,11,12,13 del GSM ma non ho grandi risultati...
tra la'ltro io avrei bisogno di usare anche l'SD iniseme al GSM e alla Ethernet...

che mi dite?

Grazie