Egy Sim800 és egy Arduino a project alapja.
Egy fóliasátor öntöző vezérlés lenne a feladat.
Smsben elküldi a gazda hogy mikor meddig legyenek a szelepek bekapcsolva.
Rendszer minden nap 1x lekérdezi van e új beállítás és a következő nap aszerint cselekzik.
A probléma az sms adatok letárolásával van.
Az alábbi kóddal szeretném az 1 helyen lévő smst beolvasni és letárolni egy stringbe.
Kód: Egész kijelölése
void setup()
{
mySerial.begin(9600);
Serial.begin(9600); /
clock.begin();
delay(500);
pinMode(11,INPUT);
pinMode(10,INPUT);
pinMode(modem, OUTPUT);
pinMode(led, OUTPUT);
pinMode(bled, OUTPUT);
digitalWrite(modem,LOW);
delay(200);
digitalWrite(modem,HIGH);
mySerial.println("Modul bekapcsolva");
delay(15000);
//CheckNet();
mySerial.println("Sms fogadasra kesz...");
Serial.println(F("AT+CMGF=1\r"));
delay(100);
Serial.println(F("AT+CNMI=2,1,0,0,0\r"));
delay(100);
bufTorles(),
delay(300);
delay(500);
}
void bufTorles()
{
while(Serial.available() > 0)
{
Serial.read();
}
}
void loop()
{
read_sms();
while(1);
}
String read_sms()
{
int x=0; //
String sms = "";
unsigned long int prv_millis = millis();
Serial.println(F("AT+CMGR=1\r"));
delay(300);
while(1)
{
if(Serial.available() >0)
{
char incoming_sms=Serial.read();
sms += incoming_sms;
prv_millis = millis();
x++;
}
unsigned long int new_millis = millis();
if((x>0)&&((new_millis - prv_millis)>300))
break;
}
mySerial.print("Fogadott adatok =");
mySerial.println(sms);
}
Kód: Egész kijelölése
+CMGR: "REC READ","+XXXXXXXXXXXX",,"20/02/05,12
Kód: Egész kijelölése
+CMGR: "REC READ","+XXXXXXXXXXXX",,"20/02/05,12:36:09+04
12345678901234567890
Mintha nem tudná a soros porti adatokat mindet letárolni a stringbe.
Köszönöm a segítséget.