Vuoi connettere il tuo progetto con arduino a internet? Usa la GPRS shield. Per connettere il tuo progetto alla grande rete hai già letto come utilizzare la WiFi shield o Ethernet Shield
quando non hai la possibilità di collegarti ad una rete già esistente puoi utilizzare la GPRS shield
Questa shield ti permette di eseguire sia comunicazioni GSM sia connessioni GPRS grazie al modulo SIM900 vero cuore della shield e modem di connessione.
In questo articolo ti mostro come effettuare la connessione GPRS ad un sito Web e scrivere sul monitor seriale la risposta del server.
Montare e configurare la GPRS shield
La GPRS shield è già montata, quindi niente saldature o complessi piani di assemblaggio, l’unica cosa che devi collegare è l’antenna, per farlo la GPRS shield dispone di un connettore SMA ed uno MMCX saldati sulla scheda e a cui puoi collegare l’antenna in dotazione.
Io ho scelto di collegare il cavetto MMCX e l’antenna volante pensando ad un progetto in cui il connettore dell’antenna possa non coincidere con il foro di uscita del case che lo ospita:
per la configurazione ci sono dei pin su cui inserire i jumper come da schema:
avrai notato che i pin TX ed RX sono configurati rispettivamente come 2 e 3, inoltre devi controllare che il microswitch, evidenziato in giallo, sia posizionato su UART.
Libreria GPRS shield e comandi AT
Il modulo SIM900 è un modem seriale, ossia comunica con arduino attraverso due pin ( 2 e 3 ) in modalità Tx/Rx e si alimenta con i +5v e Gnd direttamente da Arduino.
Come tutti i modem seriali puoi utilizzare i comandi AT, da wikipedia:
La maggior parte dei modem fonici utilizza i comandi AT Hayes, uno specifico insieme di comandi originalmente sviluppato per il modem Hayes Smartmodem da 300 baud. Lastringa di inizializzazione consiste di una serie di comandi che prepara il modem per la comunicazione, impostando caratteristiche come il tipo di connessione, i tempi di attesa, la rilevazione del segnale di occupato eccetera. Nei modelli di modem più recenti l’inizializzazione viene gestita da programmi con una qualche interfaccia grafica, in modo che l’utente non debba digitare questi comandi e neanche conoscerne l’esistenza.
comandi con cui puoi puoi dialogare con il modem impostando modalità di connessione, velocità ecc.. e puoi trovare un utile manuale in questo link.
I comandi AT non sono di certo semplici sopratutto se non conosci i protocolli e non hai chiaro come si esegue una connessione o cosa sia impostare i baud di una connessione GSM/GPRS.
Ti viene in aiuto una libreria davvero ben scritta: GSM GPRS GPS Shield, SIM908 & SIM900, IDE 1.00, Version 3.04 scritta da Marco Martines e Boris Landoni.
Lo sketch di connessione a Google dalla GPRS shield
Tra gli esempi disponibili con la libreria che hai scaricato puoi provare quello denominato “GSM_GPRSLibrary_Client_example” che ti riporto:
#include "SIM900.h" #include <SoftwareSerial.h> #include "inetGSM.h" //#include "sms.h" //#include "call.h" //To change pins for Software Serial, use the two lines in GSM.cpp. //GSM Shield for Arduino //www.open-electronics.org //this code is based on the example of Arduino Labs. //Simple sketch to start a connection as client. InetGSM inet; //CallGSM call; //SMSGSM sms; char msg[50]; int numdata; char inSerial[50]; int i=0; boolean started=false; void setup() { //Serial connection. Serial.begin(9600); Serial.println("GSM Shield testing."); //Start configuration of shield with baudrate. //For http uses is raccomanded to use 4800 or slower. if (gsm.begin(2400)){ Serial.println("\nstatus=READY"); started=true; } else Serial.println("\nstatus=IDLE"); if(started){ //GPRS attach, put in order APN, username and password. //If no needed auth let them blank. if (inet.attachGPRS("wap.tim.it", "", "")) Serial.println("status=ATTACHED"); else Serial.println("status=ERROR"); delay(1000); //Read IP address. gsm.SimpleWriteln("AT+CIFSR"); delay(5000); //Read until serial buffer is empty. gsm.WhileSimpleRead(); //TCP Client GET, send a GET request to the server and //save the reply. numdata=inet.httpGET("www.google.com", 80, "/", msg, 50); //Print the results. Serial.println("\nNumber of data received:"); Serial.println(numdata); Serial.println("\nData received:"); Serial.println(msg); } }; void loop() { //Read for new byte on serial hardware, //and write them on NewSoftSerial. serialhwread(); //Read for new byte on NewSoftSerial. serialswread(); }; void serialhwread(){ i=0; if (Serial.available() > 0){ while (Serial.available() > 0) { inSerial[i]=(Serial.read()); delay(10); i++; } inSerial[i]='\0'; if(!strcmp(inSerial,"/END")){ Serial.println("_"); inSerial[0]=0x1a; inSerial[1]='\0'; gsm.SimpleWriteln(inSerial); } //Send a saved AT command using serial port. if(!strcmp(inSerial,"TEST")){ Serial.println("SIGNAL QUALITY"); gsm.SimpleWriteln("AT+CSQ"); } //Read last message saved. if(!strcmp(inSerial,"MSG")){ Serial.println(msg); } else{ Serial.println(inSerial); gsm.SimpleWriteln(inSerial); } inSerial[0]='\0'; } } void serialswread(){ gsm.SimpleRead(); }
la compilazione del codice con l’IDE 1.0 di Arduino è avvenuta senza difficoltà e dopo aver caricato lo sketch su Arduino puoi aprire il monitor seriale e vedrai qualcosa di simile a questo:
lo sketch non presenta complessi comandi da impostare a quelli pensa la GPRSLibrary, i punti principali sono:
linee 01-05: includi tutte le librerie che occorrono allo aketch di funzionare con la GPRS shield;
linea 32: definisci una connessione a 2400 baud con il modem SIM900;
linea 34: se la comunicazione con il modem avviene correttamente imposta la variabile started a true;
linea 41: imposta l’APN fornito dalla compagnia telefonica, io ho utilizzato l’APN di TIM: “wap.tim.it” avendo inserito una scheda TIM nella GPRS shield, senza username e password;
linea 48: invii al modem uno di quei comandi AT di cui ti parlavo sopra “AT+CIFSR” che richiede al modem l’indirizzo IP ottenuto dal provider, è un ulteriore controllo che la connessione sia avvenuta;
linea 51: leggi il buffer trasmesso dal modem contenente la risposta, in questo caso l’IP richiesto alla linea 48;
linea 55: utilizza il metodo httpGET della libreria GPRS shield per connetterti ad una pagina web, nel caso indicato ti connetti all’indirizzo www.google.com sulla porta 80 ( default HTTP Port ) e la risposta la scrivi nella variabile msg;
linee 57-60: scrivi sul monitor seriale sia il risultato della chiamata eseguita alla linea 55 sia il messaggio, ossia la risposta, ottenuta.
linee 64-71: la funzione loop() in questo esempio continua ad eseguire due funzioni esterne: serialhwread() e serialswread();
linea 73: definisci la funzione serialhwread() la cui funzione è leggere dal monitor seriale l’input che gli invii e interpretarlo per inviare dei comandi AT al modem, in particolare è interessante la parte di TEST che analizzo nel dettaglio:
linea 90: se nella stringa inviata dal monitor seriale compare il testo TEST esegue le linee successive;
linea 91: scrive sul monitor seriale la stringa “SEGNAL QUALITY”;
linea 92: invia al modem il comando AT usando la stringa “AT+CSQ”;
a questo punto la funzione serialhwread() conclude il suo scopo e lo sketch continua sul loop() che invoca la serialswread():
linea 106: definisci la funzione serialswread() richiamata dalla loop() la cui funzione è scrivere sul monitor seriale il valore letto dal modem della GPRS shield;
linea 107: recupera la risposta dal modem SIM900 e la scrivi sul monitor seriale dell’IDE Arduino.
Buon divertimento !!!
183 commenti
Vai al modulo dei commenti
Piccolo consiglio, alla pagina dove vengono elencati i tutorial sostituisci “2. GPRS Shield” con “3. GPRS Shield”.
Probabilmente ti è sfuggito di vista 🙂
Colgo l’occasione per chiederti se in futuro farai una guida su come utilizzare il sonar.
Complimenti per il blog,
Matteo.
Autore
Grazie Matteo,
a quale tipo di sonar ti riferisci?
Mauro
Scusa per la risposta in ritardo…
Ho acquistato questo sonar http://goo.gl/R74Wn ma non sono riuscito a trovare tutorial su internet.
Inoltre ti chiedo se possiedi i moduli wifi xbee, che anche in quello sono un disastro in quanto non riesco nemmeno a configurarli 🙂
Complimeti per il Blog,
Matteo
Autore
Ciao Matteo,
il sonar che mi hai postato è un SRF04, io ti consiglio di acquistare un SRF05 più performante e di cui ho scritto un tutorial.
Il sonar SRF04 si collega come l’SRF05, i pin Vcc,Gnd,Trigger ed Eco.
Ciao
Mauro
Ciao,
Vorrei sapere se ci sono dei tutorials su come salvare dei dati su una pagina HTML su internet grazie alla connessione GPRS.
Autore
Ciao Mohamed,
una pagina HTML, che io sappia, non può salvare dati, al massimo puoi visualizzarli, io userei comunque un linguaggio dinamico tipo Php per farlo.
A quale progetto stai lavorando?
Mauro
Sto lavorando ad un rilevatore gps con il modulo sim908.
In pratica mandando un sms alla sim nel modulo, si ricevono in risposta le coordinate e il link di google maps del luogo in cui si trova arduino.
C’è anche una micro sd dove viene creata una pagina htm in cui c’è una tabella dove vengono salvati(per salvati intendo che vengono scritti i valori numerici) i dati.
Vololevo fare la stessa cosa, ma creando la pagina, o modificandone una già esistente, su internet.
Stavo pensando di utilizzare questo servizio http://pastehtml.com/
Autore
Progetto interessante,
che tipo di sms devi inviare alla SIM?
Vorrei provarlo con il SIM900 che possiedo.
Mauro
Si possono fare molte richieste
-“dove sei?” Si riceve la posizione attuale e il link di gmaps
-“coordinate continue” il modulo ti risponde chiedendoti ogni quanti minuti vuoi che te li mandi
-“se log” il modulo ti chiede ogni quanti minuti vuoi che salvi i dati sulla microSD
-“circoscrivi” il modulo ti chiede centro e raggio e ti avverte quando si allontana troppo
– -“allontana” il modulo ti chiede centro e raggio e ti avverte quando si avvicina troppo
E poi ci sono altre funzioni attivabili con dei pulsanti su Arduino.
il mio unico problema è quello di salvare i dati online.
Autore
Ciao Mohamed,
per il salvataggio dei dati on-line è necessario che tu esegua una connessione html ad una pagina dinamica (php,asp,java) o ad un servizio on-line che possa registrare i tuoi dati.
Mi invii la documentazione su come interrogare il sim900 per ricevere le informazioni di cui mi parli?
Grazie
Mauro
Io uso il sim908, il sim900 non ha la connessione gps da quello che so.
Qui c’è la documentazione: http://www.open-electronics.org/gsm-gps-shield-for-arduino/
Per il savataggio online, è possibile usare google docs (drive) ? ho trovato questo tutorial che spiega come farlo http://www.open-electronics.org/how-send-data-from-arduino-to-google-docs-spreadsheet/
Il problema è che non so come farlo con la connessione gps.
Autore
Ok, come non detto, io ho solo un sim900.
Per la connessione non devi farla via gps o gsm ma GPRS, la libreria che ho utilizzato nel tutorial possiede anche questi metodi, devi provarli.
In merito a Google so che puoi utilizzarlo, non so come funziona, io uso mio server ed uso pagine create da me quando voglio memorizzare dati.
Probabilmente farò un tutorial sulle connessioni GPRS con il SIM900 ma non a breve.
Mauro
Ok ma i comandi Ethernet.begin e client.print hanno un comando equivalente nella libreria gprs?
Autore
Ciao Mohamed,
se leggi bene questo articolo troverai come fare una chiamata in GET con la libreria GSM e SIM900.
Mauro
Salve,
Complimenti, veramente molto interessante questo portale, ci sono ottime recensioni, guide e informazioni utilissime e ben spiegate!
Una domanda, la GSM Shield si deve collegare ad Arduino Uno? In che modo?
Dovrei realizzare una macchina comandata dal cellulare, avrei pensato di utilizzare Aeduino Uno per la gestione del software e di vari sensori che sono a bordo della piccola vettura, e di collegarla alla GSM Shield per comandare i movimenti tramite un applicazioni sul telefono.
Sai indirizzarmi meglio sulla risoluzione del caso?
Grazie infinite.
Autore
Ciao Luca,
la GSM/GPRS Shield ha già i pin per essere inserita su Arduino Uno come tutte le shield.
Sull’uso della shield per controllare una macchina non sono convinto che sia la strada migliore.
Io ti consiglio il WiFi in quanto più rapido nella connessione e senza costo, con il GSM devi
pagare connessione a Internet ogni volta che usi la macchina e i tempi di reazione sono quelli di una rete cellulare.
Mauro
Buona sera Mauro,
ti ringrazio moltissimo per la spiegazione e per avermi indirizzato verso la WiFi Shield, attraverso delle ricerche più approfondite sono riuscito a verificare che effettivamente i tempi di risposta della GSM/GRPS sono decisamente più lenti (velocità sms, chiamate e internet e occore una sim con abbonamento dati), mentre la WiFI Shield è molto più fluida e performante e sfrutta la connessione ADSL gratuita.
Ora mi sono sorti due dubbi.. Nel caso utilizzassi la WiFI Shield in un luogo senza router, adsl o ripetitori, sarebbe possibile utilizzare la condivisione internet di un cellulare con abbonamento mensile per la navigazione? Riuscirebbe a trovarla e collegarsi?
Successivamente dovrei scrivere un applicazione per comandare tramite cellulare la macchinina.. Sarebbe possibile scrivere un applicazione web piuttosto che un applicazione per ogni sistema operativo mobile piu diffuso? Tramite pagine php e con database e mysql potrei elaborare alcuni dati, ma credo non sia fattibile comandare una macchinina.. Vorrei avere le idee più chiare.
Grazie ancora per la disponibilità e per la chiarezza con cui riesci a spiegare ogni cosa =)
Luca.
Autore
Ciao Luca,
io per realizzare un progetto simile ho utilizzato il WiRC, puoi leggere gli articoli sul Blog.
Il WiRC crea già una connessione detta ad-hoc che puoi usare quando non é disponibile una connessione WiFi.
Inoltre ha già una app per i maggiori smartphone 🙂
Mauro
Olá Mauro,
Estou fazendo um projeto que usa o shield IcomSat v1.1 SIM900., arduino Duemilanove, IDE 1.5.2.
Gostaria de saber como posso fazer para obter a data/hora do módulo?
Via comando AT consiguo visualizar no serial monitor.
Autore
Olá Lúcio,
perdóname, pero soy italiano y yo no puedo escribir en su propio idioma.
Nunca traté de obtener la fecha y hora de SIM900 puede leer su ficha de comandos AT
Mauro
Io invece ho appena acquistato Arduino UNO REV 3 e Adafruit GPS logger shield kit, oggi farò qualche prova. Mi stavo chiedendo se era possibile aggiungere anche questa shield per poter inviare le posizioni su un server.
Autore
Ciao Saro,
secondo me puoi farlo.
Purtroppo non possiedo la GSM Shield per fare dei test.
Mauro
Una volta completato questo allora farò qualche prova e ti farò sapere.
Autore
Ottimo !!!
Ciao Mauro, complimenti per il bel lavoro!
Volevo chiederti se nel frattempo hai fatto degli espermenti anche con la SIM908 ovvero SIM900 + GPS.
Vorrei realizzare un sistemino GPS che memorizzi le letture su una SD da scaricare sul PC, in seconda battuta sarebbe bello riuscire a mandare una mail con le letture delle ultime 24 ore.
Hai qualche consiglio da darmi?
Grazie
Andrea
Autore
WOW Andrea che bel progetto, mi piacerebbe pubblicarlo una volta concluso se ti va.
Purtroppo non possiedo un SIM908 per fare dei test ma se trovi delle librerie con cui leggere i valori del GPS puoi seguire il mio articolo sul DataLogger Arduino che spiega come scrivere dei valori a cadenza oraria su SD.
Mauro
ciao mauro,
trovo davvero interessanti i tuoi articoli ed in particolare quelli riguardanti le connessioni tra arduino ed il web senza utilizzo di cavi
sto progettando un sensore che misurerà alcune variabili fisiche e dovrà essere lasciato in posto fisso dove non ho possibilità ne di connetterlo alla rete ne di alimentarlo
lo scopo è quello di leggere i valori che per ora visualizza su display lcd e trasferirli su un sito web da me creato ad hoc in modo tale da poter essere visualizzati in remoto da qualunque postazione pc che abbia connessione internet e smarthphone
innanzitutto ti volevo chiedere se il modulo gprs arduino shield http://www.blogcdn.com/es.engadget.com/media/2012/08/arduino.jpg è adatto allo scopo
ovvero tramite questo gprs shield ho la possibilità di trasmettere i dati su una web page? in che modo? ci sono dei listati di esempio che puoi propormi? io ho visto solo l apertura della pagina google…ma a me serve che vada su una pagina php ed in apposite caselle mi scriva i dati tempo varianti di alcune variabili da lui misurate ogni clock da me deciso (ad esempio ogni 10 minuti) e che differenza c’è tra quello postato nella mia immagine ed i sim900 e sim908?
Inoltre per l alimentazione mi consigli pannellino solare o batterie? che autonomia hanno?
grazie davvero
se hai una mail privata dove poterti illustrare meglio il progetto se non ti è chiaro in alcuni punti e puoi lasciarmela ne sarei contento
ciao
Ivan
Autore
Ciao Ivan,
senza dubbio il tuo progetto è interssante ed una volta che lo avrai ultimato mi piacerebbe poter pubblicare, a tuo nome, il risultato.
Purtroppo non ho mai provato la shield che mi invvi ma solo quelle che vedi nei miei articoli, ti consiglio di utilizzare una GPRS shield basata sul sim900 perchè ci sono molte librerie GPRS già pronte e trovi anche un esempio su come inviare dati ad una pagina php sul blog.
Per l’alimentazione ci sono molte shield interessanti per il solare, tuttavia considera che i moduli GPRS solitamente hanno bisogno di molta corrente per funzionare e per restare connesi per cui è probabile che dovrai procurarti un pannello abbastanza grande ed una batteria tampone con circuito regolatore di carica adatti a sostenere il carico del tuo progetto.
Potrai misurare quanto assorbe con un tester o un alimentatore da banco dotato di amperometro a progetto ultimato e dimensionare il pannello in modo adeguato.
Mauro
ottimo mauro grazie per la pronta risposta mi procurerò un sim900 e ti tengo aggiornato
hai qualche link in proposito agli esempi su come inviare dati ad una pagina php sul blog da suggerirmi?
grazie sempre
Ivan
Autore
Ciao Ivan,
certo nel blog ci sono degli esempi, mi sembra di averne pubblicati in merito alla centralina di irrigazione od un progetto simile.
Mauro
lunedi mi arriva il sim908 avevano solo quello disponibile…nnagg
le librerie da utilizzare sono le stesse giusto?
pensi che avrò problemi ad applicare gli esempi del sim900?
dovrebbe essere il contrario
Autore
Ciao Ivan,
purtroppo non ho mai provato il Sim908 ma immagino che il produttore ti abbia dato un link alle librerie da utilizzare, dovrai solo controllare che i metodi delle classi utilizzate dalla libreria per il SIM908 ed il SIM900 siano gli stesi e se ci sono differenze adattarli chiedendo al produttore degli esempi.
Mauro
ho preso sim908 , lo shied universale http://www.robot-domestici.it/joomla/component/virtuemart/gsmgprs-a-gps-shield-v2-per-arduino per metterci la sim908 saldata su e l antenna seguente http://www.made-in-china.com/showroom/aricohk/product-detailMqQmLzyCHYWu/China-GPS-GSM-Antenna-AR-GPS-GSM-002-.html
su quest’ultima ho forti dubbi che non mi faccia lavorare con scambi gprs per il progetto di cui ti dicevo sopra
Autore
Ciao Ivan,
purtroppo a senzazione é impossibile dire se un oggetto funzionerà o meno, il fatto che l’antenna non riporti la sigla GPRS indica poche info.
Quando arriverà potrai testarla ed avrai le tue conferme o smentite.
Mauro
sto provando lo shield gprs ma ho sempre questo errore nel far girare lo script da te postato hai qualche idea?
GSM Shield testing.
Trying to force the baud-rate to 9600
ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
status=IDLE
Autore
Ciao Ivan,
l’errore che ricevi segnala un errato collegamento del modem GSM.
Controlla di aver collegato correttamente i pin del componente e di arduino.
Mauro
Ciao Mauro,
ho iniziato da poco a lavorare con ARDUINO e stavo facendo un piccolo progettino a scopo didattico ma … ho trovato un ostacolo che non riesco a superare…
Ho creato il CLIENT , vado ad interrogare una pagina chiamata test.php che contiene semplicemente
lancio e sul monitor vedo la scritta
Number of data received:
50
Data received:
HTTP/1.1 200 OK
Date: Sat, 28 Sep 2013 08:15:19 GMT
Server: Apache
X-Powered-By: PleskLin
Connection: close
Content-Type: text/html
10
CLOSED
ora , come posso trasformare il numero “10” in una variabile da associare a un led ? in pratica :
se leggi
10 -> LED1 = ON , LED2 = OFF
11 -> LED1 = ON , LED2 = ON
00 -> LED1 = OFF , LED2 = OFF
01 -> LED1 = OFF , LED2 = ON
Grazie 10000 in anticipo
Ciao
Massimo
Autore
Ciao Massimo,
non ti occorre una variabile.
Ti basta un if che verifichi il valore di Serial.read() e lo contronti con 10,11,00,01 …
Per esperienza è meglio utilizzare valori in byte per cui io userei A,B,C,D
Mauro
ciao mauro il modulo gprs
mi da a volte
STATUS ATTACHED MA DATI RECEIVED 0
E A VOLTE STATUS ERROR
SE PROVO GLI SCRIPT DI ESEMPIO contenuti nella libreria beta 1.04 e 1.05 mi funziona solo l invio di sms
non riesco a far funzionare ne i comandi at
ogni volta che li digito mi da error
e nemmeno chiamate e client e server
io avrei bisogno di utilizzare questo shield come ti dissi per inviare i miei dati del senoread una pagina web tramite connessione web quindi http tcp ip ma non so come risolvere la questione
hai qualche suggerimento? grazie
Autore
Ciao Ivan,
che tipo di integrato o modulo di trasmissione utilizza la shield, potrebbe essere una incompatibilità tra la shield e la libreria.
Considera che la comunicazione GPRS, simile al cellulare, è soggetta alla presenza di rete da parte del gestore.
Mauro
CIAO MAURO
allora utilizzo la stessa libreria tua la beta 1.04 ma ho provato anche la beta 1.05 ed il modulo è il sim908
le pochissime volte che mi va bene succede questo (anche se una tatum…perchè la maggior parte delle volte mi da data received 0 e si blocca)
Altra cosa ma i comandi AT li invii semplicemente digitando nel serial monitor in alto?
TEST MODULO GSM.
status=PRONTO
status=AGGANCIATO
Lettura indirizzo IP:
Comandi AT:
Qualità del segnale:
10.175.17.64
OK
+CSQ: 18,0
OK
Number of data received:
50
Data received:
HTTP/1.0 302 Found
Location: http://www.google.it/?gws_rd=cr&ei=JC6bUsqHEYmXyQPu3oCwDw
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=5dd70f88912bf777:FF=0:TM=1385901604:LM=1385901604:S=HCqC49zqXxwKzI_q; expires=Tue, 01-Dec-2015 12:40:04 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=At47fZaFVNq2U2-LpRPwoQLQI48D3huUi3G3g060zlpMR97iQPt1wi7WjQ-tvzVp7kp-z-C9oYY7mpi-FeTv0tB-swOEVxKw2id3IQcVgx-J08gKXaeedKB8mr2X-TVi; expires=Mon, 02-Jun-2014 12:40:04 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP=”This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info.”
Date: Sun, 01 Dec 2013 12:40:04 GMT
Server: gws
Content-Length: 258
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
302 Moved
302 Moved
The document has moved
here.
AT
ERROR
ATD3398410197;
ERROR
ATD
ERROR
AT+CIFSR
ERROR
“AT+CIFSR”
ERROR
“ATD3398410197;”
ERROR
CLOSED
AT+CSQ
ERROR
“AT+CSQ”
ERROR
A
AT
ERROR
ATD
ERROR
Autore
Ciao Ivan,
purtroppo non riesco a interpretare quello che accade nella tua shield da quello che mi incolli.
Devo chiederti di fare da solo il debug del tuo sketch.
A mio avviso uno dei problemi potrebbe essere che la libreria che utilizzo io è scritta per un SIM900 e non il SIM908 che potrebbe differire per tempi di attesa comandi o risposta nella comunicazione seriale.
Mauro
tutto risolto mauro… sono riuscito a farla comunicare… io utilizzo anche un sistema android per la comunicazione…ad ogni modo mi daresti qualche dritta sulla questione principale?
ovvero ora che la shield funziona e comunica ho bisogno di costruire quanto segue: trasmettere i dati raccolti dal sensore tramite lo shield gprs TDGGSM_908, per poi trasferirle ad uno spazio web dedicato, ottenendo così dei valori in Real Time, consultabili appunto da web… so che in giro c’e’ qualcosa ma non trovo piu nulla in merito….sicuramente dovrà essere una pagina php con un sql… ma ho visto un po di cose con la ethernet shield con il gprs niente…. attendo tue
grazie sempre per le tue pronte risposte
buon lavoro
ivan
Autore
Ciao Ivan,
si ho scritto un articolo dedicato al salvataggio di dati via GPRS, puoi leggere quello.
Mauro
mauro purtroppo con la funzione cerca non riesco a trovare l articolo che dici
ti sarei grato se potessi linkarmelo
cmq io intendevo anzitutto trasmissione dati da gprs a web non per forza salvataggio
Autore
Ciao Ivan,
scrivendo “gprs” nel cerca ottieni questo link 🙂
https://www.mauroalfieri.it/elettronica/gprs-shield-arduino.html
Mauro
OK MAURO
questo lo avevo capito
ma la discussione che esce è questa
e non vedo nessun riferimento a come inviare i dati di un sensore da modulo gprs ad una pagina web ospitante
Autore
Ciao Ivan,
quando sai fare una chiamata ad un web server via GPRS devi solo chiamare la pagina o l’url per il salvataggio dei dati in un DB.
Ogni progetto fa uso di un proprio sistema di archiviazione dei dati inventato dall’autore.
Ti consiglio di leggere anche gli articoli su “dataino” che punta a offrirti un sistema di raccolta dati on-line realizzato da un appassionato.
Mauro
ho letto dataino molto interessante ma fa uso della ethernet shield io ho bisogno di inviare i dati da arduino ad una pagina web tramite gprs shield 🙁 sono depresso
Autore
Ciao Ivan,
non deprimerti 🙂 fai distinzione tra il metodo di archiviazione dati on-line e come invii i dati.
Datano ti offre un servizio di raccolta dati con un sistema ben fatto e gratuito offerto da un appassionato, o puoi realizzarti tutto tu sul web.
Il modo in cui gli invii i dati é indipendente da Ethernet o GPRS o WiFi; l’importante é che tu esegua una chiamata alla pagina web di raccolta dei dati, il metodo sceglilo tu.
Tutto già pronto non esiste per quello che vuoi fare tu, e non sarebbe possibile probabilmente trovare sempre tutto già fatto, devi metterci del tuo.
In compenso sia gli sketch per inviare dati sul web via GPRS che ti ho consigliato sia il progetto datano sono incredibilmente flessibili per adattarsi al tuo progetto.
Mauro
Ciao Mauro,
Volevo spiegare le mie difficoltà con l’inet.POST, non so se tu l’hai mai provato.
Sul numero 177 di Elettronica IN c’è un articolo per poter utilizzare il GET e il POST e mentre con il get non c’è nessun problema, con il POST non ricevo nulla.
Avendo creato un file php che inserisce i dati in un DB del mio server, con il metodo GET riesco a fare tutto ma con i POST non mi aggiorna mai la DB quindi ho deciso di seguire alla lettera l’esempio di Elettronica IN utilizzando il loro php di test, presumendo che sul mio ci potessero essere degli errori:
numdata=inet.httpPOST(“www.evildeejay.it”, 80, “/test/test.php”,”name=Mimmo&age=40 “, msg, 50);
tenendo collegato arduino alla seriale dovrebbe rispondere con un messaggio di benvenuto utilizzando il nome e l’età inseriti nel POST, ma a me restituisce solo quello che vedi :
GSM Shield testing.
status=READY
TEST
status=ATTACHED
10.221.15.65
Number of data received:
0
Data received:
HTTP/1.1 413 Request Entity Too Large
Date: Sat, 14 Dec 2013 1
Avevo letto che il metodo inet.POST non funzionava con le vecchie versioni ma con l’ultima GSMShield 3.0.5 doveva funzionare correttamente.
Grazie in anticipo.
Autore
Ciao Domenico,
ho sperimentato, tempo addietro, sia il metodo GET sia il metodo POST con buoni risultati.
Chiaramente la pagina .php sarà differente per l’uno o l’altro metodo.
L’esempio che citi di futura non lo conosco, tuttavia penso tu possa scrivere loro per avere aiuto in modo specifico su quell’esempio, so che sono molto disponibili.
Da ciò che mi hai inviato leggo che la comunicazione avviene correttamente ed il server ti risponde con un messaggio chiaro il cui codice di errore é 413, prova a cercare tra i codici di errore del protocollo httpp cosa indica questo errore restituito dal server.
Mauro
Posso chederti quale shield gsm hai usato?Avrei bisogno di realizzare un controllo da remoto ma non ho ancora capito quale shield mi conviene comprare. Vorrei risparmiare non prentendo l’ufficiale.
Pino
Autore
Ciao Pino,
io consiglio di usare la shield ufficiale perchè è senza dubbio testata e non penso costi tanto di più di quelle compatibili, con tutti i problemi di incompatibilità che shield differenti possono causare.
Quella che vedi mi è stata regalata da un utente del blog e non saprei dirti dove è stata acquistata.
Penso che l’importante sia il componete GPRS con cui sono fatte, questa usa il SIM900.
Mauro
Buongiorno,
volevo chiedere se con il GPRS shield è possibile inviare email.
Grazie
Andrea
Autore
Ciao Andrea,
non ho mai provato tuttavia essendo molto versatile arduino dovresti poterlo fare.
Dovresti scriverti tutta la libreria per gestire la comunicazione con il protocolo SMTP.
Mauro
ciao mauro,sono francesco.ho aquistato questa shield gsm sim900,ma non riesco a farla funzionare,caricando questo sketch ,da serial monitor,appare: ready,ok ,e l’invio del messaggio.ma in realta non ricevo nulla…puoi aiutarmi?grazie.
Autore
Ciao Francesco,
come hai letto non puoi aggiungere sketch nei commenti perché vengono rimossi in automatico ed in ogni caso non posso correggere gli sketch che mi postate.
Da quello che scrivi sembra che la comunicazione funzioni correttamente “ready,ok ,e l’invio del messaggio” dov’è che non ricevi nulla?
Ciao,ho acquistato la shield sim900,funziona tutto perfettamente vorrei solo riuscire a mandare un sms di risposta al numero che invia il messaggio di comando.Qualcuno mi sa aiutare?
Autore
Ciao Xean,
nella libreria di gestione del SIM900 dovresti trovare tutte le specifiche per fare quello che desideri.
Grazie 1000 Mauro !!!!!! Funzione Perfettamente 🙂 Complimenti.
Ciao Mauro,
sto usando un GPS Module per tracciare la posizione della macchina..mi risponde con Latitudine e longitudine:) ma adesso voglio sapere anche la velocità attuale della macchina sempre usando GPS module. Mi puoi aiutare per favore ?
Autore
Ciao Zihadul,
mi piacerebbe pubblicare il tuo progetto se ti va.
Mandami foto, schemi, info, sketch e descrizione del tuo progetto ed io provvedo a pubblicarlo.
Intento che preparo l’articolo cerco di capire anche come realizzare l’informazione sulla velocità che desideri.
Autore
Grazie Zihadul, sono contento.
Ciao Mauro!!
Complimenti per i numerosi tutorial fatti, veramente molto interessanti.
Come posso far comunicare la shiedl Icomsat1.1 con arduino mega 2560?
Non riesco a farli comunicare.
Grazie mille
Nicolò
Risolto! Ho dovuto modificare la libreria..Grazie a questo video tutorial:
https://www.youtube.com/watch?v=GxgXmOPdPW8
Appena finisco il progettino di allarme se le interessa glielo mando.
Grazie mille
Nicolò
Autore
Ottimo Nicolò,
sei stato bravissimo.
Se ti va di condividere il tuo progetto io sono solo felice di poterti offrire dello spazio per farlo.
Inviami, quando lo vorrai, foto,sketch,video e descrizione del progetto al mio indirizzo di posta elettronica.
Ciao Mauro,
da qualche tempo ho comprato una shield gprs per arduino della elecrow
http://www.elecrow.com/wiki/index.php?title=GPRS/GSM_Shield_v1.0
e ho tentato di utilizzarla con il mio arduino mega 2560.
Seguendo la wiki e un tutorial della scheda
http://tronixstuff.com/2014/01/08/tutorial-arduino-and-sim900-gsm-modules/
ho inviato un sms semplicemnte impilando la scheda sull’arduino e copiando il codice dell’esempio.
Fino a qui tutto bene.
I problemi nascono quando tento di ricevere (ad esempio un sms)… Sapendo che la scheda comunica via seriale con arduino (e quindi utitlizza la libreria SoftwareSerial) navigando in internet ho letto sul sito di arduino che nella versione mega non tutti i pin possono fungere da RX e quindi ricevere dati.
A questo punto prima seguendo l’istinto e poi le istruzioni sul sito ufficiale ho provato a collegare l’RX della scheda ai pin RX di arduino (0, 15, 17, 19) e poi al pin 10 (che secondo loro funziona
http://arduino.cc/en/Reference/softwareSerial )
Nulla da fare. Hai idea di quale possa essere il problema?
Grazie mille
Cosimo
Autore
Ciao Cosimo,
se sei riuscito ad inviare un sms lo avrai di certo fatto con i collegamenti Tx ed Rx per cui io non li cambierei rispetto all’invio per la ricezione.
Non conosco questa scheda e fare dei test, se proprio non riesci ti consiglio di acquistare il medesimo modello che ho provato io.
Se usi la SoftSerial non è necessario usare i pin Rx di Arduino, tale libreria serve proprio ad emulare la comunicazione Seriale su pin di tipo differente dal Serial.
Sulla Mega disponi di 4 porte Serial native, io userei la Serial1 per la GPRS.
Ciao Mauro
ho da poco comprato un modulo gsm per inviare dei sms utilizzando il mio ARDUINO MEGA.
trovo molte difficoltà in quanto non trovo un tutorial completo per realizzare il mio progetto.
io sono in possesso di questi componenti:
-arduino mega
-http://www.g……h.com/wiki/index.php/Arduino_GPRS_Shield
ho scaricato questa libreria GSM_GPRS_IDE100_v309.zip
mi puoi dare una mano?
grazie mille
simone
Autore
Ciao Simone,
purtroppo non ho mai utilizzato la shield che tu possiedi ed il GSM, per esperienza, varia molto da modello a modello.
Ti consiglio di contattare il fornitore della scheda per chiedere info sulla libreria da utilizzare.
Ciao,
complimenti per l’assistenza che dai a tutti! E’ un po’ di tempo che sto sbattendo la testa sullo stesso problema senza venirne a capo. Ho acquistato una GSM Shield per Arduino, quella dotata di modem M10. Non riesco a farla funzionare bene. Ho provato con varie SIM, l’ultima è della TIM. Quando la uso nel mio cellulare funziona benissimo sia come GSM che come collegamento a internet. Quando la inserisco nello Shield (usando la libreria GSM.h di Arduino) e il server tim ibox.tim.it il collegamento alla rete GSM diventa molto difficile, nel senso che qualche volta va e qualche volta no. Ho paura che la SIM deve essere predisposta in qualche modo, oppure devo mandare qualche comando al modem che non è compreso negli esempi della libreria.
grazie
Paolo
Autore
Ciao Paolo,
purtroppo non conosco la shield di cui mi parli, l’unica GPRS che ho provato è quella che ho descritto nei miei articoli.
Da come lo descrivi sembra un problema di campo, è possibile che tu debba potenziare l’antenna per permetterle di ricevere meglio il segnale?
Il campo è buono. Infatti quando lancio il programma di test mi dà un valore 19 su una scala da 0 a 31.
Nelle prove che hai fatto, hai usato SIM particolari o con attivazioni particolari?
Paolo
Autore
Ciao Paolo,
no, nessuna impostazione particolare e dello stesso gestore che stai utilizzando tu.
Ciao Mauro, ti seguo da molto tempo, in questi giorni sto testando la shield icomsat 1.1 come la tua in foto, ho seguito alla lettera il tu codice pubblicato, ma non vedo i risultati da te postati nell’immagine del serial monitor. Quello che mi esce è il seguente:
GSM Shield testing.
status=READY
TEST
status=ERROR
Cosa posso fare?
Grazie
Autore
Ciao Enzo,
la shield che ho usato io è una iteadstudio con SIM900, quella che mi scrivi tu sembra differente.
Potrebbero essere differenti i collegamenti ed anche il codice da usare.
Grazie Mauro, il problema è che leggendo in rete quasi tutti i cip SIM900 sono compatibili con l’ultima libreria che hai postato tu. Ho eseguito alcuni test dei comandi AT via monitor seriale e il tutto funziona correttamente. Ho aggiornato anche il firmware correttamente e impostato la velocità in 9800 baud. Ma niente di fatto, non invio sms e ne collegamento http.. Ho notato una cosa ho una nano sim wind con abbonamento dati.. e fin’ora non vedo alcun led blu lampeggiare sulla schield gsm/gprs che attesta l’aggancio della rete wind.. Puo essere questo?
Grazie
Autore
Ciao Enzo,
se riesci a comunicare con il modulo e non invii dati potrebbe essere un problema di campo.
Se non ricordo male la libreria possiede dei metodi per farti restituire il livello di segnale, prova a leggere la documentazione della libreria.
Ciao,
ho letto il tuo articolo e sorvolo sui complimenti per la chiarezza dell’esposizione.
Ho poca dimestischezza con arduino (più sul lato web di un progetto di questo tipo che sto facendo con un amico che si occupa di hardware arduino ma entrambi ne sappiamo poco dello scambio tra arduino->web), volevo farti una domanda:
– l’indirizzo di richiesta httpGET (riga 55) che lunghezza può avere? Mi spiego, posso chiamare un indirizzo lungo tipo /post/2a088be538bd8cc9034b28c5540dc3132a088be538bd8cc9034b28c5540dc3132a088be538bd8cc9034b28c5540dc313/201502222051 oppure c’è un limite massimo?
Grazie,
Antonello
Autore
Ciao Antonello,
da quanto ne so io i limiti sono dettati dalla lunghezza delle variabili impostate per accettare l’indirizzo nella libreria che usi.
Buongirono, se posso rispondere io: il limite di una stringa GET è 255 caratteri, così come definito da standard HTML.
Autore
Grazie Marco
Quando si collega a google la connessione funziona bene, ma quando voglio accedere un’altra pagina non può, ad esempio,(http://www.google.com.mx/imgres?imgurl=https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F323237600%2Ftve1_400x400.png&imgrefurl=https%3A%2F%2Ftwitter.com%2Fla1_tve&docid=Ly_Ghvyq0W3FbM&tbnid=3nUGcu7RrBGbxM&w=400&h=400&ei=KIk2VY7XHsaYsAWu6oD4Cg&ved=0CAMQxiAwAQ&iact=c) .
Quando uso una paguina ha “/” funziona correttamente, ma quando uso un paguina aver “/” carta non recive i dati.
Autore
Ciao Pablo,
se non scrivi quello che fai è complesso.
In ogni caso per chiamare un link oltre la / e per di più parametrico devi usare una chiamata GET.
Mauro
Buongiorno Mauro!
inizio con il ringraziarla per tutte le guide che crea, mi sono sempre utilissime e sono sempre ben spiegate!
Ho una shield SIM900, avrei una domanda per lei: uso lo sketch riportato nella guida, ma dopo la prima scritta di testing, aspetta un po e mi dice che la scheda non risponde e dà errore. non so cosa fare! la scheda funziona perchè se provo i comandi AT manualmente vanno ma comunque mi si bloccano alla richiesta del GET.
Ha qualche dritta da darmi? è importante!
la ringrazio in anticipo
Davide
Autore
Ciao Davide,
la scheda è la stessa che uso in questo tutorial ?
A volte potrebbe solo essere un problema di pin Tx ed Rx differenti, verifica eventuali differenze tra lo sketch che utilizzi per l’invio dei comandi AT e lo sketch che desideri utilizzare per la connessione GPRS.
Inoltre verifica con i comandi AT che la sim venga riconosciuta e che vi sia segnale sufficente.
Buonasera Mauro,
Grazie per avermi risposto! la scheda è simile, è sempre una SIM900 s2 1040s ma cambia la versione finale. i suoi pin sono 2 e 3, mentre i miei sono 7 e 8. così ho provveduto a cambiarli nella libreria GSM.cpp ma comunque non cambia nulla! con i comandi AT funziona quasi tutto, si ferma quando dopo aver specificato il dominio per il GET e va in timeout.
il Segnale si è sufficiente ho verificato con AT+CSQ
Ho bisogno di aiuto la prego, non so più dove appoggiarmi.
La ringrazio
Davide
ok, ho risolto questo pezzo modificando ancora il file GSM.cpp con i pin tx e rx.
Ora, lei sa perchè inserendo nel GET il dominio di Google funziona, mentre inserendo il mio personale con base su altervista dà errore? dà un Connect Fail.
Grazie
Autore
Ciao Davide,
le motivazioni potrebbero essere diverse io controllerei prima di tutto la raggiungibilità del tuo dominio dalla rete in cui hai connesso l’arduino mediante un Pc e ne verificherei i tempi di risposta e gli header trasferiti.
Se questo passaggio funziona possiamo fare delle ipotesi successive.
Autore
Ciao Davide,
se le connessioni con i pin non sono identiche controlla di aver selezionato correttamente Tx ed Rx rispetto alla GSM.cpp
Buongiorno nuovamente Mauro,
il collegamento tra la shield e la pagina php ora è corretto, però ho ancora un problemino.. come posso inviare delle mie variabili nell’URL del metodo GET? i valori devono essere dati da queste variabili e non scritti da me manualmente.
sa aiutarmi?
la ringrazio
Davide
Autore
Ciao Davide,
il metodo GET prevede che l’invio delle variabili avvenga secondo la notazione variabile=valore&variabile1=valore1 ecc..
Puoi concatenare la stringa prima di passarla in GET ed al posto di scrivere valore, valore1, ecc.. sostituisci i valori da inviare prelevandoli dalle variabili dello sketch.
Ciao Mauro,
grazie per i lavori interessanti che pubblichi, sono belli e utili, grazie…
Sono un altro disperato (da quel che sto capendo, siamo in diversi in italia) che stanno sbattendo la testa con questi moduli per la connessione ad internet di Arduino: io ne ho ben 4 e un altro mi deve ancora arrivare, di vario tipo, alcuni shield e altri minimali da connettere in seriale, tutti con i chip della SimCom o 900 o 900A (solo dual band ma si trovano tutorial per flashare firmware del 900 che lo trasformano in quadband).
In breve, ne ho provate di tutte, varie sim di vari operatori, tutte senza pin, il tutto alimentato bene con corrente sufficiente, etc… ma non riesco a connettermi in nessun modo! 🙁
Per questo ti chiedo, hai avuto modo ultimamente di riprovare la tua shield? Non vorrei che, da non molto oppure con le ultime SIM, avessero cambiato qualcosa sulle reti GSM/GPRS italiane e questo tipo di schedine non funzionino più (a me, nella maggior parte dei casi, non agganciano la rete e se chiamo io il numero della sim inserita nel modulo, l’operatore mi dice che il numero è irraggiungibile).
Se puoi fare questo piccolo favore e riprovare se ad oggi ti funziona ancora tutto, te ne sarei grato…
Grazie ancora…
Autore
Ciao Big Bedo,
da non molto ho riprovato un modulo simile al mio per un progetto che presenterò alla prossima Maker Faire a Roma in collaborazione con altri appassionati.
Non saprei dirti se il problema sia nella SIM troppo moderna xche io ho sempre utilizzato la solita sim ed anche le altre che ho testato sono sim datate 🙂
Ho letto in qualche forum che devono essere sim a 6 contatti per essere compatibili con il SIM900 tuttavia non saprei come riconoscerle.
Buongiorno Mauro, ho un problema con la mia SIMCOM SIM900 di Geeetech, collegata ad Arduino Mega. Quando ricevo un sms, il corpo del messaggio non mi arriva mai completo. Il codice è molto semplice: non faccio altro che prendere i char in arrivo sulla serial1 e stamparli sul terminale. La prima stringa che ricevo che contiene il numero di telefono e la data viene ricevuta correttamente. Il corpo del messaggio invece viene troncato. Hai mai avuto problemi di questo tipo o sai quale potrebbe essere il problema?
Il messaggio che invio è di questo tipo:
ADD,Mario,Rossi,Mario,1344456,0678959111,S,01102016,01102017;
Quello che mi ritrovo in uscita dalla serial1 è:
+CMT: “+39320XXXXXXX”,””,”15/10/10,22:45:27+08″
ADD,Mario,Rossi,Ma56 (ma potrebbe essere diverso).
Grazie
Autore
Ciao Filippo,
così senza avere la shield non saprei dirti a volo il motivo dell’errore, mi viene in mente che possa trattarsi di un buffer troppo esiguo.
Controlla la capacità delle variabili.
No, il buffer è più che sufficiente. Piuttosto mi sembra un problema di seriale. A volte la stringa contiene anche gli ultimi caratteri inviati, tipo ADD,Mario,Rossi,Ma,11,S,01102016,01102017;
La cosa è molto strana. Sembra perdersi qualcosa in mezzo.
Autore
Ciao Filippo,
verifica la corretta velocità di comunicazione ( baudrate ).
anche quella è corretta, settata a 19600bps sia sulla shield che sul Mega. Ho provato ad abbassarla a 9600, ma non è cambiato nulla.
Autore
Ciao Filippo,
mi ero orientato su questi problemi perché mi ha detto ( nel tuo primo commento ) che il corpo del messaggio non era “mai” completo.
Se l’errore è intermittente potrebbe dipendere dalla libreria che usi, prova a verificare con il produttore se ha una libreria adatta e testata per la sua scheda.
Non uso una libreria, ma solo lettura / scrittura su seriale serial1. Il produttore Geeetech non ha previsto una libreria specifica. Inoltre ho verificato con l’applet AT Command Tester che i messaggi vengono ricevuti e gestiti correttamente dalla shield GSM. Ho usato due Arduino Mega, il comportamento è lo stesso con entrambi. Ho provato ad inserire una sleep(2) nel ciclo di lettura dei dati da seriale, così come consigliato da alcuni sui forum, ma nulla è cambiato. Dove sbatto???
Autore
Ciao Filippo,
quindi usi comadi AT ?
Ciao Mauro
Mi chiedevo se esistesse una shield, simile a quella col modulo sim900, che supportasse la connessione dati (UMTS/3G/4G) anziché il vecchio GPRS.
Autore
Ciao Vincenzo,
non mi sono mai informato sulla possibilità del supporto UMTS da SIM900.
Hai già consultato il datasheet del SIM900 per verificare se sia adatto al tipo di connessione che desideri?
Ciao Mauro
io ho Arduino mega e una scheda una scheda di questo link “http://www.g…….h.com/wiki/index.php/Arduino_GPRS_Shield”
Ho fatto molti tentativi ma senza ottenere risultati.
tu mi puoi aiutare?
simone
Autore
Ciao Simone,
ti ho già risposto al medesimo quesito ieri.
Prova a seguire quanto suggerito prima di inserire nuovamente il commento.
Ti chiedo scusa non avevo visto la tua risposta.
simone
Buongiorno Mauro,
prima cosa compliemtni per quanto pubblicato che è veramente interessante eben fatto. Io sto utilizzado la libreria sopra per effettuare due tipi di operazioni: invio dati ad un web service tramite un httpPOST che funzona correttamente e ricezione dei dati da un webservice che però non riesco a leggere.
Partendo dall’esempio sopra, vorrei scrivere una fuzione a parte che venga richamata dalla loop ogni 10 minuti che legga i dati e poi ne esegua il parsing. Il parsing ce l’ho, ma non riesco a leggere il msg di risposta, che vorrei stampare su seriale (per il debug). Come posso spostare serialswread e serialhwread dentro un ciclo nella fuzione, toglendolo dalla loop ?
Grazie x l’aiuto e compliemtni di nuovo!
Marco
Autore
Ciao Marco,
dovrebbe esserti sufficiente definire la funzione che desideri e spostare le chiamate alla serialswread ed alla serialhwread all’inetrno della funzione che crei.
Tuttavia non penso ti aiuti a raggiungere il tuo scopo: “fuzione a parte che venga richamata dalla loop ogni 10 minuti” puoi definire il conteggio dei minuti nella loop() senza far proliferare funzioni.
Grazie per la risposta, Mauro.
Per la precisione, quello che non so fare, è come far eseguire serialswread e serialhwread in un ciclo per fare sì che scrivano i dati. Nel senso: dentro la mia funzione, dovrei mettere
While(…){
serialswread();
serialswread ();
}
altrimenti non scrive nulla.
Come definisco il while x eseguire le due funzioni ed uscire quando finisce il buffer ?
Grazie di nuovo
Autore
Ciao Marco,
il ciclo while si scrive come hai fatto tu a patto che la condizione (…) sia vera.
La seconda parte non l’ho capita.
Ti chiedevo quale fosse la condizione da utilizzare per ciclare le due funzione ed ottenere la scrittura del buffer
Autore
Ciao Marco,
per eseguire cicli annidati puoi usare sia il for sia il while o altri algoritmi, non so se è quello che vuoi fare tu.
In ogni caso ti consiglio la lettura del reference arduino.cc ed eventualmente la valutazione sul tipo di strada che stai intraprendendo che potrebbe non essere quella migliore per lo scopo.
Grazie dell’aiuto, Mauro.
Ciao Mauro,
innanzitutto complimenti per il sito e per il tutorial.
Senti io ho scaricato la libreria ma non funziona, cioè proprio all’inizio non si collega alla scheda. Non riesco a capire il motivo anche perché ho copiato il codice per le richieste HTTP di questo sito (https://www………..com/documentation/tutorials/gprs-gsm-quadband-module-arduino-raspberry-pi-tutorial-sim-900/) e funziona…non vorrei che fosse un problema di pin TX e RX perché non ho capito se i pin che intende lui (cioè quelli dichiarati nelle define di GSM.cpp, cioè 2 e 3) siano quelli utilizzati da Software Serial o dalla scheda SIM900 (che è quella che ho io). Spero di essermi spiegato bene, grazie mille.
Nicolò
Autore
Ciao Nicolò,
non so cosa tu stia facendo, tuttavia penso tu sia confuso su cosa sia il SIM900 e cosa sia la SoftwareSerial.
Il primo è un modem GSP/GPRS, la seconda una componente software.
nono io ho capito la differenza ma ho paura che l’impostazione dei pin della libreria da te citata sia sbagliata per il modulo che ho comprato io (su aliexpress). Infatti dal sito che ti ho detto nel post iniziale ho preso un codice che funziona ma che invia i dati troppo lentamente non essendo sempre affidabile. Appena avvio il programma di test della libreria consigliata da te ho il messaggio DB: NO RESPONSE. Tu hai qualche idea di come possa risolvere il problema?
Autore
Ciao Nicolò,
se pensi sia solo un problema di pin puoi modificarli nella libreria che desideri utilizzare prendendo i riferimenti dalla libreria originale.
Tuttavia potrebbe non essere così semplice se le due librerie si comportano in modo molto differente rischi di dover riscrivere intere parti della stessa per adattarla.
buona sera io vorrei realizzare un localizzatore gps io possiedo un arduino uno e un gps so che devo comprare un altra scheda e ho visto questa qui SIM800H GPRS Shield volevo chiedere se va bene per fare la connessione ad internet, (o mi serve per forza la modulo SIM900) e così la geo localizzazione perchè io volevo visualizzare la geo localizzazione tramite cellulare. grazie
Autore
Ciao Francesco,
non ho compreso tu cosa vuoi realizzare.
Io vorrei realizzare un localizzatore gps con arduino uno, che tramite la mappa di google del cellulare posso vedere dove si trova il dispositivo in tempo reale. io gia possiedo un arduino uno e un gps ed ho capito che per far comunicare arduino e il cellulare mi serve un altra scheda ed ho visto che la scheda è la SIM900 come in questo progetto però volevo chiedere se la SIM800H GPRS Shield QUESTO E’ IL SITO DOVE HO VISTO LA SCHEDA (http://www.robotics-3d.com/component/virtuemart/Arduino/arduino-shield/communication-shield/3892-sim800h-gprs-shield) andava comunque bene per il mio progetto. Cioè io sul cellulare vorrei vedere il puntino del gps di arduino spero di essere stato chiaro grazie ancora.
Autore
Ciao Francesco,
non ho mai provato questa scheda per cui le informazioni che possiedo sono le medesime che avrai già letto sulla scheda.
Direi che dalle caratteristiche che leggo sembra adatta anche se non comprendo il motivo per cui hai deciso di usare questa shield invece di un classico SIM900 già testato da molteplici siti.
mi piacerebbe usare la SIM900 ma ho visto i costi che si aggirano sui 65 € e il mio budget non me lo consente, il progetto che sto realizzando è per l’esame di stato delle superiori grazie delle risposte. 🙂
Autore
Ciao Francesco,
comprendo, prova allora con la scheda che hai individuato, verifica prima che abbia le caratteristiche che ti servono.
mi piacerebbe usare la SIM900 ma ho visto i costi che si aggirano sui 65 € e il mio budget non me lo consente, il progetto che sto realizzando è per l’esame di stato delle superiori grazie delle risposte. 🙂
buona sera mauro alfieri grazie delle tue risposte, ho trovato questa sim900 è la stessa che tu hai usato per il tuo progetto grazie
[link rimosso perché di sito non conforme]
Autore
Ciao Francesco,
io ho provato solo la scheda che vedi le altre potrebbero essere tutte valide ma devi controllare che l produttore sia in grado di fornirti assistenza e documentazione adeguata a completare il progetto se dovessi riscontrare errori.
Se non lo fa io eviterei l’acquisto e mi rivolgerei ad un rivenditore che possiede tali caratteristiche.
Non saresti il primo a cercare di risparmiare e trovarsi con una scheda non utilizzabile dovendone acquistare poi una seconda dotata di documentazione.
ok grazie quindi il sito che ti ho fatto vedere nel ultimo post non è la stessa scheda che hai usato tu? grazie
Autore
Ciao Francesco,
non lo so perché i link non idonei sono eliminati da una regola del blog.
Io di certo non ho acquistato da quel sito, acquisto tutto da robotics-3d.com in italia ed anche in questo caso verifico sempre la documentazione prima di acquistare.
ok grazie se quando hai tempo anche sulla pagina di facebook ti avevo inviato sul messaggio privato quel link grazie delle tue risposte 🙂
Autore
Ciao Francsco,
spero di essere chiaro definitivamente: se non ho provato la scheda non posso darti altro consiglio che non sia quello di verificare la documentazione che rilascia il produttore prima di acquistare.
ok grazie di tutto 😀 😀
Salve a tutti, scusate, ma ho un problema con questo shield GPRS della SimCom , non riesco a connetterlo ad arduino yun. Ho provato varie configurazione, ho anche seguito l’articolo su come configurare uno shield GSM con arduino yun, lenardo ecc ecc, ho provato a disabilitare il bridge, a usare pin diversi dal 2,3 ma niente, non riesco a instaurare la comunicazione seriale, sapreste indicarmi cosa sbaglio ?
Grazie per l’aiuto
Ema
Autore
Ciao Emanuele,
la shield mostrata in questo articolo non è della SimCom a meno che tu non ti riferisca solo al SIM900 il modem.
Ogni shield, da mia esperienza, è differente e l’unica cosa saggia è utilizzare le librerie e gli esempi che rilascia il produttore per farla funzionare bene.
Ciao Mauro,
innanzi tutto grazie per la pronta risposta, si scusa mi riferivo al solo modem sim900, la scheda è identica alla tua, mi ci sono intestardito e alla fine sono riuscito a instaurare una comunicazione seriale tra arduino e shield gsm.
In pratica ho dovuto utilizare pin differenti per lo yun, nel mio caso ho usato 10 e 11 su yun e fatto un ponticello verso 2 e 3 sullo shield, una volta settati i rispettivi valori nella libreria sono riuscito a comunicare correttamente.
Grazie di tutto, e complimenti per il bel lavoro che stai facedo , io sono alle prime armi ma è grazie a siti come questo che si impara 🙂
Ciao
Autore
Bravissimo Emanuele,
indagherò su come sia possibile che i pin 2 e 3 non riescano, nella Yun/Leonardo, a lavorare con la SoftwareSerial per comunicare con la GPSR/GSM shield.
ciao mauro!
grazie ai tuoi consigli, sono riuscito a leggere dei sensori per una stazione meteo e visualizzarli su un lcd.
ora sto studiando i tuoi tutorial per la scrittura su sd e la trasmissione gsm. la data loger shield è arrivata oggi ed ho già ordinato la shield sim900 di questo tutorial, per la trasmissione dati… ormai mi hai trasmesso il virus dell’arduinite!
volevo chiederti un parere, per capire se sto andando nella direzione giusta e per capire come impostare lo sketch. la mia idea sarebbe quella di registrare una stringa di testo con i valori registrati ed ovviamente l’ora di registrazione, ogni tot minuti (1, 2, 5… da decidere) e ogni tot ore (meglio ogni ora, ma devo vedere i consumi di corrente, dato che sarà alimentata a batteria, con pannello solare per la ricarica) trasmettere il file di testo ad un database mysql (devo ancora capire come fare!), per la visualizzazione dei dati e la creazione dei grafici da una qualsiasi postazione internet.
vorrei capire se questo approccio è corretto, ovvero se è fattibile scrivere su un file una riga ogni tot minuti e poi ad un certo punto “chiudere” il file e spedirlo via gsm ad un database.
inoltre mi farebbe comodo avere dei riferimenti da cui studiare!
grazie in anticipo e ciao,
ale
Autore
Ciao Alessandro,
bravo .. ci stai davvero mettendo molto impegno e questo ti darà buoni risultati.
La strada è una delle possibili e in linea generale mi sembra corretta, le difficoltà che potresti incontrare riguardano l’eventuale buffer del file che ogni ora ha 60 linee, non so di che dimensione, e la memoria di arduino non è infinita per cui ti consiglio di processarle linea per linea.
Come riferimento cerca nel blog gli articoli dedicati ai datalogger e alle scritture su SD.
Buon giorno io mi sono scaricato le librerie GSM GPRS GPS Shield, SIM908 & SIM900, IDE 1.00, Version 3.04, però ho visto che presentato degli errori che non riesco a risolvere adesso mi da un errore sul file HWSerial.cpp con questo testo: error: ‘prog_char’ does not name a type const prog_char *p = (const prog_char *)ifsh; non so come risolverlo grazie
Autore
Ciao Francesco,
stai usando la bersione 1.0 dell’IDE? Prova ad aggiornarla siamo alla 1.6.7
ciao poi ci sono riuscito a risolvere cambiando in char e adesso funziona il programma l’ho inserito in arduino ma escono scritte strane per curiosità dove si dovrebbe aggiornare la versione? grazie
Autore
Ciao Francesco,
intendi quella dell’IDE ? a volte mi è difficile capire cosa scrivete senza maggiori dettagli.
Se la risposta è “SI” allora scarica dal sito ufficiale arduino.cc la versione corrente dell’IDE.
ok grazie sulle IDE il programma non mi da più errori quando l’ho compilato, quando lo si carica su arduino cosa dovrebbe accadere di preciso? grazie
Autore
Ciao Francesco,
quello che è scritto nell’articolo e nel codice, se non sai cosa accade leggi bene le spiegazioni dello sketch.
si ho letto e visto l’immagine ma non mi compare nulla di simile mi crea scritte senza un senso e non capisco il perchè grazie
Autore
Ciao Francesco,
verifica nel codice per capire se ci sono differenze tra la tua versione di scheda e quella riportata nell’articolo.
sera dove si vede il codice ?
Autore
Ciao Francesco,
quale codice?
buona sera tu dici il codice arduino giusto? io ho fatto il copia incolla
Autore
Ciao Francesco,
prdonami ma è il caso di fermarci un attimo.
Tu hai chiesto: “dove si vede il codice? ” ed io ti ho solo chiesto quale codice.
Se vuoi che ti aiuti devi essere più esplicito e chiaro nelle richieste.
Ciao Mauro,
che tipo di piano tariffario hai attivato per le connessioni GPRS? Con vodafone riesco a connettermi ma avendo l’offerta giga start mi fanno pagare questo tipo di traffico 6 euro al giorno..(con APN wap.omnitel.it). … con la wind non riesco invece a connettermi (APN internet.wind).. Qualche consiglio??
Grazie
Autore
Ciao Giovanni,
quando ho eseguito i miei test ho usato una sim già in mio possesso con un piano tariffario in abbonamento mensile con altro operatore.
Ti chiedo la cortesia di evitare nei commenti nomi di società a cui non vogliamo far pubblicità occulta 🙂
Ciao Mauro, seguo molte delle tue guide e ti faccio innanzitutto i complimenti per l’aiuto che fornisci.
Vorrei chiederti aiuto per una questione spinosa da cui non riesco a districarmi:
Usando un arduino UNO ed una shield sim900 sono riuscito a inviare una mail usando i comandi AT riportati in questo manuale: http://simcom.ee/documents/SIM900/SIM900_Email_AT%20Command%20Manual_V1.04.pdf
Tuttavia non riesco ad allegare un file txt stipato su di una SD a questa email nonostante i comandi AT vi siano, fondamentalmente perché non c’è modo di definire il percorso da cui prendere il file.
Mi potresti dare una mano spiegandomi come usare tali comandi?
(parliamo di AT+SMTPFILE, AT+SMTPFT ecc ecc)
Grazie 🙂
Autore
Ciao Giuseppe,
non ho mai provato l’invio di email mediante GPRS e comandi AT.
Hai già verificato se esiste una libreria adatta a fare quello che ti occorre?
Purtroppo non sono riuscito a trovare una libreria già fatta che gestisca email con allegati.
E per l’applicazione che devo realizzare è l’unica opzione che ho.
Per caso conosci tu qualche altra soluzione?
In ogni caso la problematica è che non riesco a passare in memoria della shield sim900 il file che ho sulla SD della shield ethernet ed usare quindi il relativo comando AT del SIM900 come da esempio nel file che ti ho linkato prima (c’è proprio un esempio di sequenza di comandi AT da dare per inviare una mail con allegato)
Autore
Ciao Giuseppe,
dovrei mettermi a studiare una soluzione non conoscendola già.
Se riesco nei prossimi mesi cerco di raccogliere un po di info in merito e scrivere un articolo, non prometto nulla.
Ciao Mauro, complimenti per il tuo lavoro.
Ho visto che è possibile collegare l’arduino Yun ad un modem 3g tramite USB.
Mi chiedevo se è possibile creare una connessione internet(nell’interfaccia network)che riconoscesse il modulo SIM800L??
GRAZIE
Autore
Ciao Daniele,
non ho compreso cosa vuoi realizzare.
Puoi provare a spiegarmelo meglio?
ciao Mauro, complimenti e grazie per i tuoi articoli.
ho incontrato qualche intoppo, mi spiego:
io possiedo un modulo SIM800L, non è uno shield da innestare sopra arduino ma una board a parte.
ho inizialmente tentato la compilazione ma ho riscontrato diversi errori.
l’ide di arduino è la ver 1.6.9 e le lib le ultime disponibili ai link in articolo.
di seguito ciò che risulta :
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In constructor ‘HWSerial::HWSerial()’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:4:4: error: ‘Serial1’ was not declared in this scope
Serial1.begin(9600);
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘void HWSerial::end()’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:12:3: error: ‘Serial1’ was not declared in this scope
Serial1.end();
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual void HWSerial::begin(long int)’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:24:3: error: ‘Serial1’ was not declared in this scope
Serial1.begin(baud_rate);
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘int HWSerial::peek()’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:28:10: error: ‘Serial1’ was not declared in this scope
return Serial1.peek();
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual size_t HWSerial::write(uint8_t)’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:32:10: error: ‘Serial1’ was not declared in this scope
return Serial1.write(byte);
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual int HWSerial::read()’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:36:10: error: ‘Serial1’ was not declared in this scope
return Serial1.read();
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual int HWSerial::available()’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:40:10: error: ‘Serial1’ was not declared in this scope
return Serial1.available();
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual void HWSerial::flush()’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:44:3: error: ‘Serial1’ was not declared in this scope
Serial1.flush();
^
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘size_t HWSerial::print(const __FlashStringHelper*)’:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:54:9: error: ‘prog_char’ does not name a type
const prog_char *p = (const prog_char *)ifsh;
^
In file included from /home/giovanni/.arduino15/packages/arduino/hardware/avr/1.6.14/cores/arduino/Arduino.h:28:0,
from /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.h:6,
from /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:1:
/home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:57:37: error: ‘p’ was not declared in this scope
unsigned char c = pgm_read_byte(p++);
^
Più di una libreria trovata per “SIM900.h”
Usata: /home/pippo/test/arduino/libraries/GSMSHIELD_TDG
Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.
cosa sto sbagliando ?
Autore
Ciao Giovanni,
premesso che questa libreria funziona per un SIM900 e non un SIM800 dovrai probabilmente usare una libreria adatta.
L’errore che leggo riguarda un “Serial1” ( vedi prime linee ) che su arduino uno non esistono. Sei certo di aver selezionato la scheda corretta?
ciao mauro, grazie per i tuoi tutorial!
vorrei chiederti se puoi consigliarmi uno sketch da provare, per salvare i valori registrati da un sensore in un database, visualizzabili tramite pagina web.
inoltre, mi piacerebbe inviare da arduino, tramite la shield sim900, un sms ogni tot tempo, oppure al raggiungimento di un valore specifico. una specie di “allarme”, insomma.
non sono molto pratico di protocolli di trasmissione web, ma l’esempio di questo tutorial mi sembra che non faccia quello che serve a me.
grazie!
Autore
Ciao Alessandro,
ti consiglio di leggere un po di articoli dedicati a questo argomento sul blog per comprendere meglio come trasmettere i dati, siccome non lo specifichi non saprei come hai pensato di farlo o come ti occorre farlo.
In merito al SIM900 questo articolo non parla di invio SMS, mi sembra di aver trattato l’argomento in qualche altro articolo.
ciao Mauro, seguo i tuoi tutorial da un po’, fantastici, mi sono stati utili innumerevoli volte.
ho un problema con un gprs shield sim900 che potresti aiutarmi a capire:
quando premo il pulsante del power per accenderlo il led status si accende, quello netlight inizia a lampeggiare, ma poi all’improvviso si spengono entrambi.
sembra che vada in blocco appena aggancia la rete gsm, se stacco l’antenna continua a cercare la rete senza spegnersi.
spero che la tua esperienza mi sia di nuovo d’aiuto
grazie
Autore
Ciao Filip,
so che con alcune SIM moderne ci sono dei problemi con questi tipi di modem.
Dovresti provare con altre SIM o verificare se riesci ad accedere in debug al modem per ricavare più info durante la fase di check della rete.
Buongiorno . Sono curioso di sapere come è possibile realizzare un circuito tramite arduino che mi permette di comandare la luce sia manualmente(con un pulsante), che tramite controllo remoto utilizzando una sim. Vorrei inoltre, sapere quale è lo stato della luce quando io non sono a casa e poi di poterla comandare sia quando io sono a casa e sia quando io non ci sono, e se è possibile applicando questo sistema a più luci.
Grazie mille 🙂
Autore
Ciao Manuel,
puoi trovare molte delle risposte in questo blog leggendo ed imparando da tutti gli sketch che ho pubblicato come fare.
Esistono molti modi per farlo e tantissime tecniche e schemi.
Ad esempio potrei consigliarti le schede Lemontech.cc ( http://www.lemontech.cc/lemontech-bluerelay-shield-per-arduino.html ) che ti permettono facilmente di gestire due luci da App via Bluetooth a cui puoi aggiungere una shield GPRS per comandare le luci quando sei fuori dalla portata bluetooth.
Salve Mauro,
espongo rapidamente il mio problema. Dove utilizzerò Arduino con la shield sim900 non è dove ci sarà il computer che deve ricevere i dati. Dovrei inviare una stringa seriale al pc che crederà di avere Arduino collegata grazie ad un software che crea delle VSP (Virtual Serial Port). E’ possibile? Dovrebbe essere una connessione TCP/IP se non ho capito male.
Grazie
Autore
Ciao Federico,
esistono tanti modi di risolvere il problema ed ognuno ha dei pro e dei contro.
Prova a vedificare tecnologie come XBee o Bluetooth giusto per citare le prime due che non richiedono troppo impegno.
Ciao Massimo puoi aiutarmi ?
sto collaudando la sim900 ed in generale funziona bene ma ho problemi con l’invio dei dati ad una pagina php con la funzione inet htpGET , non riesco a fargli passare dei valori che poi verranno caricati sul database, la pagina php funziona perfettamente e se digito sulla barra degli indirizzi tramite i il metodo get (pincopallino.altervista.org/arduino.php?nome=mario&Localita=parigi)’ tutto ok.
ma sostituendo la riga
numdata=inet.httpGET(“www.google.com”, 80, “/”, msg, 50);
che funziona perfettamente
con
numdata=inet.httpGET(“www.pincopallino.altervista.org”, 80, /arduino.php?nome=mario&Localita=parigi”, msg, 50);
non funziona….
Autore
Ciao Antonello,
premesso che la riga che hai incollato nei commenti presenta due errori, penso di battitura, manca un ” prima della parte in GET ed hai aggiunto un www. prima dell’URL rispetto a quello che usi sul browser, puoi controllare lato server cosa arriva nei log per capire se la chiamata arriva a buon fine e se ci siano errori di codifica o similia.
ok Mauro grazie dell ‘interessamento
inet.httpGET(“www.pincopallino.altervista.org”, 80, “/arduino.php?Valore=2000&Localita=parigi”, msg, 50);
questa la risposta :
GSM Shield testing.
status=READY
TEST
status=ATTACHED
10.223.144.150
Number of data received:
0
Data received:
HTTP/1.1 400 Bad Request
Date: Thu, 22 Mar 2018 16:35:07 GMT
Server: Apache
Content-Length: 268
Connection: close
Content-Type: text/html; charset=iso-8859-1
Bad requestAnomalia nella richiesta al sito, se il problema persiste cancella i cookie, maggiori informazioni
CLOSED
se digito dalla barra degli indirizzi :
http://www.pincopallino.altervista.org/arduino.php?nome=mario&Localita=parigi
tutto ok
Autore
Ciao Antonello, devi verificare lato server cosa accade in quel momento.
Dal messaggio che hai postato leggi chiaramente: “Number of data received: 0” vuol dire che non ti ha risposto nulla.
Grazie Mauro…ma siccome non ne venivo a capo…alla fine ho risolto l ‘invio dei dati tramite un altro listato che usa il metodo ” sendGSM( “AT+HTTPPARA…link.php……..)i dati vengono inviati a cadenza regolare sul database.. il modulo sim900 dpo averlo testato su scheda arduino è stato interfacciato con plc “controllino”..
Autore
Ottimo Antonello
Ciao Mauro Alfieri,
forse quello che ti chiedo è poco pertinente perché tu tratti Arduino e le sue librerie mentre io uso sempre schede arduino ma le programmo in basic con un vecchio compilatore che non è più usato da nessuno.
So che tu conosci bene il Sim 800l e per questo ti chiedo se conosci qualche link o trattato o pagina di riviste o qualcosa in cui possa trovare esempi in cui, per inviare EMAIL si usino solo i comandi AT perché per me è l’unico modo per riuscire a controllare il modulo (come ho già fatto per la ricezione e invio degli Sms). Tu mi dirai di studiare il C lo so, ma ho cambiato così tante volte (67 anni) che le salite mi stancano ancor prima della prima pedalata . Ti ringrazio per qualche buono spunto che ho già preso dai tuoi articoli e per quello che riuscirai a fare circa questa mia richiesta.
Adriano
Autore
Ciao Adriano,
l’invio email da un modulo SIM800 non l’ho mai fatto neppure con Arduino.
Se la libreria che uso per arduino avesse questa possibilità potrebbe essere una buona base di partenza.
Forse azzardo, hai provato a leggere come funziona il protocollo smtp da telnet, ci sono molti articoli su linux, e con i comandi AT non hai da far altro che usare i medesimi comandi .. non dico sia semplice ma forse è la strada migliore se non trovi librerie scritte in BASIC.
salve
ho arduino uno e vorrei fare andare home automation
[[ link rimosso in automatico ]]
1 uso sim800l che mi sempra non dovrebbe dare dei problemi
2 carico il skech senza a connettere sim 800l pin su 0 e1 rx e tx su arduino
stacco la usb da arduino rimetto i pin gps su arduino 0 e1 ma non funziona
Ho provato mettere anche un nuovo chip atmega328p ma niente.
se controllo le due uscite tx e rx con oscilloscopio al momento al invio di un sms vede che il segnale ce’
Mi daresti una mano per capire cosa deve fare oppure cambiare.
Spero tanto che mi rispondi
grazie tante
Autore
Ciao Andreas,
ti chiedo la cortesia, come scritto nei miei articoli, di leggere e rispettare il regolamento non inserendo link o parti vietate nei commenti.
Purtroppo non conosco home automation come progetto e posso solo ipotizzare si tratti di una inversione dei collegamenti tra Tx ed RX come la hai descritta.
Potresti fare debug usando una seriale virtuale su arduino a cui connettere il SIM800, trovi dei tutorial sia sul blog sia online.
In ultima analisi puoi chiedere supporto al sito del progetto che avrà certamente più chiaro come aiutarti.
Ciao Mauro
In primo luogo voglio farti i complimenti per il lavoro che hai svolto e che svolgi sul tuo blog; in secondo luogo vorrei porti una domanda sul modulo GPRS Sim900; ne ho uno anche io che utilizzo con un Arduino uno Rev3.
La mia domanda è questa, è possibile utilizzare la shield come web server e farle pubblicare una semplicissima pagina in HTML, come si fa con la Ethernet shield?
Ti dico che:
1) mi sono fatto dare dal mio operatore telefonico un IP pubblico
2) riesco tramite il browser a connettermi all’indirizzo IP
3) sul serial monitor leggo :
STATE: SERVER LISTENING
ATT: CONNECT OK
SERVER OK
4) mi collego con il mio browser all’indirizzo IP ottenuto, e sul serial monitor leggo:
ATT: CONNECT OK
15:52:34.731 -> RIC:
15:52:34.731 -> REMOTE IP: 2.236.137.25
15:52:34.731 -> GET / HTTP/1.1
15:52:34.766 -> Host: 2.192.195.52
5) ma sulla pagina web, che vorrei creare non leggo nulla
6) per inviare il codice HTML uso il metodo della classe Sim900 ,gsm.SimpleWriteln(F(“HTTP/1.1 200 OK”));
Sperando in una tua delucidazione in merito , ti ringrazio anticipatamente.
Saluti
Gianluca
Autore
Ciao Gianluca,
non ricordo se sia possibile, probabilmente dovrai verificare nella documentazione della libreria o nei suoi esempi se esiste qualcosa che ti permetta di farlo.
In alternativa ti consiglio di cercare qualche libreria che faccia al caso tuo e ti offra questa possibilità
Ciao Mauro,
Ti ringrazio per i continui aggiornamenti sul mondo di arduino.
Io sto utiluzzando arduino nano con il modulo gsm SIM800L e ho reaizzato una bilancia che su mio comando tramite sms mi invia peso, temperatura e umidità.
Alimento tutto tramite una batteria tampone al litio e relativo piccolo pannello fotivoltaico.
Avrei bisogno che quando la batteria scende sotto una determinata tensione, il modulo gsm venga spento per poi riaccendersi una volta ricaricata.
Ecco la mia domanda è : esiste un comando che faccia spegnere il modulo, lasciando ovviamente operativo arduino, in modo tale che possa poi possa riaccenderlo una volta che rileva la giusta tensione…?
Grazie mille.
Autore
Ciao Cristian,
in modo specifico non so se esista un comando che consenta lo spegnimento del modulo o anche solo della componente GSM.
Potrei suggerirti di controllare direttamente l’alimentazione del modulo da un pin Arduino, magari con un circuito adatto, potendo quindi spegnere e accendere il modulo solo quando ti serve.