Buongiorno a tutti. La SIM900 lancia SMS un po' come gli pare. Ho 2 Arduino che li chiamerò ARDU1 e ARDU2. ARDU1 ha configurato 5 pin di output. Gli stessi pin sono configurati su ARDU2 come pin di input. Quando si scatena un evento su ARDU1 il pin, o i pin, vanno alti. ARDU2 riceve lo stato logico e comuninica tramite seriale alla SIM900. Su seriale gli ingressi di ARDU2 (SIM900) sono perfetti. Scrive 0 se 0, scrive 1 se è 1. Lo sketch l'ho riscritto un po' di volte dichiarando dei semplici input, poi degli input pullup (molto stabile). Il trattamento delle variabili come ultima spiaggia le ho dichiarate bool. Il problema è che la SIM900 invia SMS un po' come gli pare.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);//TX RX
int umial = 4;
int tempal = 5;
int temp1al = 6;
int temp2al = 7;
int temp3al = 8;
int voltal = 9;
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
Serial.println("Inizializzazione");
delay(5000);
mySerial.println("AT+CSQ"); //segale rete da 0 a 31
Serial.println("AT+CSQ");
mySerial.println("AT+CCID"); //informazioni SIM
Serial.println("AT+CCID");
mySerial.println("AT+CREG?"); //SIM registata in rete
Serial.println("AT+CREG?");
delay(1000);
mySerial.println("AT+CMGF=1");
Serial.println("AT+CMGF=1");
mySerial.println("AT+CMGS=\"+39xxxxx\"");
Serial.println("AT+CMGS=\"+39xxxxx\"");
mySerial.print("Test invio SMS");
Serial.println("Test invio SMS");
mySerial.write(26);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
delay (20000);
}
void loop()
{
bool umial = digitalRead(4);
Serial.print("UR ");
Serial.println (umial);
if (umial = 1)
{
mySerial.println("AT+CMGS=\"+39xxxxxx\"");
mySerial.print("ALLARM UR");
mySerial.write(26);
delay (20000);
}
etc ripetizione per le altre variabili
Qualche idea? Grazie!