Un cordiale saluto a tutti, sono giorni che tento di far funzionare correttamente un programma per irrigazione. Andava tutto bene con la vecchia SIM, da quando ho cambiato SIM, non riesco più a comandare i quattro relè, ne funziona solo uno col comando (#a1 accende #a0 spegne) gli altri comandi (#b1-#c1- #d1) li visualizzo tutti come comando ricevuto sul monitor seriale, ma non si eccitano i relè. Considerando che i comandi vengono trasmessi da Arduino al monitor seriale, penso che lo sketch sia corretto. I collegamenti sono: alimentazione separata tra Arduino(5 V) e la SIM900(5 V- 2A)
I collegamenti della SIM900 sono collegati bene, ed anche su Arduino.
TX con RX Pin 7/8
Pin 9 col 9 della SIM900
Pin, 10-11-12-13, di Ardiuno con i relè.
Allego lo sketch, se volete dare un’occhiata, ha funzionato sempre bene.
GND con GND della SIM900. Grazie anticipatamente.
#include <Arduino.h>
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7,8);
char incoming_char=0;
int salir = 0;
int led1 = 10;
int led2 = 11;
int led3 = 12;
int led4 = 13;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
Serial.println("a\n");
SIM900.begin(19200);
delay(25000);
Serial.begin(19200);
Serial.println("OK");
pinMode(9, OUTPUT);
digitalWrite(9, LOW);
delay(1000);
digitalWrite(9, HIGH);
delay(2000);
pinMode(9, INPUT);
}
void llamar()
{
SIM900.println("ATD+39392xxxxx285;");
delay(100);
SIM900.println();
delay(30000);
SIM900.println("ATH");
delay(1000);
}
void mensaje_sms()
{
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT+CMGS=\"+3934xxxxxxx\"");
delay(100);
SIM900.println("Saluti da LUCA");
delay(100);
//SIM900.println("AT+CSCS="GSM");
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
Serial.println("SMS sent successfully");
}
void espera_mensaje()
{
salir = 1;
while(salir==1)
{
if(SIM900.available()>0)
{
incoming_char=SIM900.read();
Serial.print(incoming_char);
salir = 0;
}
}
}
void modo_recibe_mensaje()
{
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(1000);
}
void loop()
{
llamar();
mensaje_sms();
modo_recibe_mensaje();
for(;;)
{
if(SIM900.available()>0)
{
incoming_char=SIM900.read();
Serial.print(incoming_char);
if (incoming_char=='#')
{
delay(10);
incoming_char=SIM900.read();
if (incoming_char=='a')
{
delay(10);
incoming_char=SIM900.read();
if (incoming_char=='0')
{
digitalWrite(led1, LOW);
}
else if (incoming_char=='1')
{
digitalWrite(led1, HIGH);
}
incoming_char=SIM900.read();
Serial.print(incoming_char);.
if (incoming_char=='#')
{
delay(10);
incoming_char=SIM900.read();
if (incoming_char=='b')
{
incoming_char=SIM900.read();
if (incoming_char=='0')
{
digitalWrite(led2, LOW);
}
else if (incoming_char=='1')
{
digitalWrite(led2, HIGH);
}
{
delay(10);
incoming_char=SIM900.read();
if (incoming_char=='c')
{
incoming_char=SIM900.read();
if (incoming_char=='0')
{
digitalWrite(led3, LOW);
}
else if (incoming_char=='1')
{
digitalWrite(led3, HIGH);
}
{
delay(10);
incoming_char=SIM900.read();
if (incoming_char=='d')
{
}
delay(10);
incoming_char=SIM900.read();
if (incoming_char=='0')
{
digitalWrite(led4, LOW);
}
else if (incoming_char=='1')
{
digitalWrite(led4, HIGH);
}
}
}
delay(10);
}
}
SIM900.println("AT+CMGD=1,4");
}
}
}
}
}
}