Aktualnie sytuacja wygląda tak.Komunikacja jest ok.W monitorze wyrzuca OK na komendy AT które są w kodzie (CMGF,CMNI).Lecz po wysłaniu sms dalej cisza.Zmieniłem także ten string.Aktualnie kod wygąda tak:
Może źle ustawił komende "CNMI".Nie mogłem znaleść jak powinno wyglądać ustawienie formatu wiadomości i ustawiłem sugerowaną w instrukcji M590.
Kod:
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SoftwareSerial.h>
String textForSMS;
float currentTemp;
char inchar;
SoftwareSerial cellSerial(2,3); // numery pinów tx rx chyba?
#define ONEWIRE_PIN 5 /// numer pinu czujnika temp.
byte address[8] = {0x28, 0xFF, 0xFC, 0xDA, 0x84, 0x16, 0x5, 0x50}; /// adres czujnika temp.
OneWire onewire(ONEWIRE_PIN);
DallasTemperature sensors(&onewire);
void setup()
{
Serial.begin(9600); /// boud rate modułu GSM
cellSerial.begin(57600); /// rate sensora temp.
Serial.println("stabilizacja modemu...");
delay(10000);
Serial.println("modem test");
delay(300);
cellSerial.println("AT\r");
delay(300);
getcellSerial();
cellSerial.println("AT\r");
delay(200);
getcellSerial();
cellSerial.println("AT+CMGF=1\r");
delay(200);
getcellSerial();
cellSerial.println("AT+CNMI=2,1,0,0,0\r");
delay(200);
getcellSerial();
sensors.begin();
}
void getcellSerial()
{
while (cellSerial.available() > 0)
Serial.write(cellSerial.read()); // przekazanie danych na UART
}
void SendTextMessage(String message) ///funkcja do wysyłania wiadomości SMS
{
cellSerial.print("AT+CMGF=1\r"); // przełączenie modułu na text mode
delay(300);
cellSerial.println("AT+CSCS=\"GSM\"\r"); /// ustawianie znaków GSM
delay(300);
cellSerial.println("AT+CNMI=2,1,0,0,0\r");
delay(300);
cellSerial.println("AT+CMGW=\"+48697516999\"\r"); // numer telefonu do którego ma wysłać
delay(300);
cellSerial.println(message); // zawartość wiadomości SMS
cellSerial.println((char)26); // kod26 to zakończenie "CTRL+Z"
delay(2000);
cellSerial.println();
}
void loop()
{
String komenda = cellSerial.readString();
if (cellSerial.available() > 0)
{
inchar = cellSerial.read();
if (komenda=="#tmp"){
{
Serial.println ("rozpoczecie odczytu temperatury");
currentTemp = sensors.getTempCByIndex(0);
delay(200);
textForSMS = "Temperatura:";
textForSMS = (textForSMS, currentTemp);
delay(200);
Serial.println("wiadomosc:");
Serial.println(textForSMS);
delay(200);
SendTextMessage (textForSMS);
delay(30000);
Serial.println("zakonczono czas oczekiwania");
}
}
cellSerial.println("AT+CMGD=3"); // usuwanie smsów
}
}