sulla scheda Arduino UNO ho montato lo shield universale per moduli GSM/GPRS/GPS a cui ho collegato il modulo SIM908.
Tale shield e la board comunicano utilizzando la libreria "SoftwareSerial.h" ed i pin 2 e 3 (pin della board).
Vorrei visualizzare i dati tramite "Serial monitor", ma quando collego l'hardware assemblato alla porta USB del pc, quest'ultimo non riconosce la board, infatti se provo ad aprire Serial monitor, compare l'errore "porta com non trovata".
So che la board Arduino UNO usa i pin 0 ed 1 per la comunicazione seriale con il pc e credo che il problema sia proprio questo, ovvero si crea un conflitto perchè sto cercando di usare porta seriale software sui pin 2 e 3 e porta seriale hardware su 0 e 1.
Forse concettualmente è anche sbagliato pensare di usare contemporaneamente seriale software e seriale hardware?
Esiste un modo per poter visualizzare i dati dello shield sul serial monitor dell'IDE?
Ciao,
prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI e di leggere con attenzione il REGOLAMENTO ...
... poi ... non ho ben capito il problema.
Intanto metti il link alla scheda GSM che stai utilizzando così vediamo di cosa si tratta, poi dicci su che Arduino la stai montando ed infine dicci se, lo stesso Arduino, collegato da solo, senza la scheda aggiuntiva, viene visto dal tuo PC o meno.
Scusate! Presentazione fatta.
Sto usando Arduino UNO rev.3 che collegata singolarmente al pc viene riconosciuta senza problemi riuscendo a visualizzare i dati su serial monitor.
Lo shield che vi ho montato sopra è:
con il modulo FT971.
Ho scaricato la relativa libreria.
Ho caricato lo sketch che mi consente, tramite una chiamata da cellulare, di conoscere lo stato di un ingresso: funziona benissimo.
Ma se collego il tutto al pc tramite la relativa porta USB e tento di aprire il serial monitor, l'IDE dà l'errore "porta com non trovata".
E' un problema di porte seriali software e hardware?
Uso un alimentatore 12V 2A collegato alla scheda Arduino UNO che a sua volta, tramite i pin "power" alimenta lo shield.
Per la comunicazione tra le due schede, nello shield ho posizionato i jumper in modo tale da impostare "comunicazione seriale software". Inoltre, come da mauale, ho riportato la configurazione di tali jumper anche nel file "GSM.cpp" come segue:
//De-comment this two lines below if you have the
//second version og GSM GPRS Shield
#define _GSM_TXPIN_ 2
#define _GSM_RXPIN_ 3
Ovvio che da monitor seriale NON ti connetti mica alla SoftwareSerial ... tu ti connetti SEMPRE alla Serial, poi devi avere un programma su Arduino che legge da una e trasmette all'altra e viceversa ...
Banalmente :
#include <SoftwareSerial.h>
#define BT_RX 10 // PIN to receive from bluetooth
#define BT_TX 11 // PIN TO transmit to bluetooth
SoftwareSerial btSerial(BT_RX, BT_TX);
void setup()
{
delay (500);
//
Serial.begin(9600); // Initialize USB Serial port
//
btSerial.begin(9600); // Initialize Bluetooth SoftwareSerial port for selected data speed
//
Serial.println("--- Ports ready ---");
Serial.println("");
//
}
void loop()
{
if (btSerial.available() > 0) Serial.write(btSerial.read());
if (Serial.available() > 0) btSerial.write(Serial.read());
}
... è il codice con cui provo di solito i moduli BT del tipo HC-05 che collego ai pin 10 e 11 (... come vedi dalle #define iniziali).
Il monitor seriale NON ha alcuna visibilità delle porte virtuali che crei ...
Nella pagina del prodotto che hai linkato c'è la configurazione della shield tramite alcuni jumper per settare pin diversi in base alla scheda Arduino a cui è collegata. Verifica che tu non stia usando la configurazione che collega la scheda hai pin 0 e 1.
Ho letto solo ora che avevi già fatto queste verifiche.
stamattina, non so come, ma ricollegando il tutto, la porta come è stata riconosciuta dal pc ed ho potuto visualizzare i dati su serial monitor.
Non è stato necessario fare le modifiche suggerite da gbp01.
dleanza:
Non è stato necessario fare le modifiche suggerite da gbp01.
.... perché probabilmente il programma che hai caricato, fa esattamente quello che ti ho messo io nell'esempio
Ribadisco per tutti i lettori, così evitiamo dubbi e poca chiarezza, che il serial monitor, di per se, NON ha alcuna visibilità delle SoftwareSerial che il programma può creare. Se vuole comunicare con dette porte, è compito del programma fare da ponte tra la vera seriale e le seriali "virtuali".
#include "SIM900.h"
#include <SoftwareSerial.h>
//We don't need the http functions. So we can disable the next line.
//#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 check if an incoming call is from an authorized
//number and in this case, send to this number an SMS with the value
//of a digital input.
//We have to create the classes for SMSs and calls.
CallGSM call;
SMSGSM sms;
char number[20];
byte stat=0;
int value=0;
int pin=4;
char value_str[5];
void setup()
{
pinMode(pin,INPUT);
//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");
else Serial.println("\nstatus=IDLE");
};
void loop()
{
//Chekcs status of call
stat=call.CallStatusWithAuth(number,1,3);
//If the incoming call is from an authorized number
//saved on SIM in the positions range from 1 to 3.
if(stat==CALL_INCOM_VOICE_AUTH){
//Hang up the call.
call.HangUp();
delay(2000);
//Check the value of the input.
value=digitalRead(4);
//Convert the int to a string.
itoa(value,value_str,10);
//Send an SMS to the previous number with
//the value read previously.
sms.SendSMS(number,value_str);
}
delay(1000);
};
e non mi sembra che ci siano qualche linea di codice simile a quelle da te suggerite.
@ dleanza : Hai esaminato anche il conenuto di ogni singola libreria e di ogni funzione che richiami ? ]
Poche storie ... ripeto e ribadisco che il serial monitor NON e ripeto NON ha alcuna visibilità delle seriali virtuali create con la SoftwareSerial e ... se ci ragioni, capisci anche perché. ]
Non voglio assolutamente fare storie o essere presuntuoso. Vorrei solo imparare bene il funzionamento.
Non ho controllato le altre librerie, ma lo farò.