system
March 15, 2013, 5:45pm
1
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
uwefed
March 17, 2013, 8:47pm
3
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
system
March 17, 2013, 9:48pm
4
ciao, grazie per la risposta
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
system
March 18, 2013, 12:24pm
5
Se è come dire uwe la modifica è hardware...
PaoloP
March 18, 2013, 1:45pm
6
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.
system
March 19, 2013, 7:35pm
7
ciao ragazzi, intanto grazie delle risposte.
/*
This file is part of the GSM3 communications library for Arduino
-- Multi-transport communications platform
-- Fully asynchronous
-- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1
-- Voice calls
-- SMS
-- TCP/IP connections
-- HTTP basic clients
This library has been developed by Telef�nica Digital - PDI -
- Physical Internet Lab, as part as its collaboration with
Arduino and the Open Hardware Community.
September-December 2012
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This file has been truncated. show original
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?
system
September 12, 2013, 9:38am
8
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