gsm module

Arduino shields
Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: gsm module

Berichtdoor ercmrj » 05 Apr 2015, 09:32

Ik heb het geprobeerd maar geen resultaat.

Dit "AT+CMGD" zou het commando moeten zijn om de sms uit het geheugen te wissen, maar ik heb al van alles geprobeerd met dat commando, maar niets werkt.

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm module

Berichtdoor nicoverduin » 05 Apr 2015, 09:35

Je moet de variabelen resetten in je programma niet in je shield.....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: gsm module

Berichtdoor ercmrj » 05 Apr 2015, 09:50

Code: Alles selecteren
   char RcvdMsg[200] = "";
    int RcvdCheck = 0;
    int RcvdConf = 0;
    int index = 0;
    int RcvdEnd = 0;
    char MsgMob[15];
    char MsgTxt[50];
    int MsgLength = 0;


Dit rijtje bedoel je toch, dat heb ik in de loop voor RecSMS(); gezet maar dat had geen resultaat. Toen ben ik verder gaan zoeken of ik met het commando "AT+CMGD" iets kon bereiken en die zet de variabele van het shield maar daar kon ik ook niets mee.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm module

Berichtdoor nicoverduin » 05 Apr 2015, 10:07

Je loop is nog steeds leeg. Je doet de setup() en daar roep je config aan . Die roept vervolgens rcvMsg aan en daarna wordt ie nooit meer aangeroepen.

De structuur van je programma moet zijn:
in de setup() alles doen om zaken te initialiseren.
in de loop() alles doen wat continu uitgevoerd moet worden.
Nu haal je maar 1x iets op en tutti
#edit: laat maar ... zit verkeerd te lezen. Zet voortaan ff je code tussen de code2=cpp en /code2 (tussen de vierkante haken) dat leest ff beter.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm module

Berichtdoor nicoverduin » 05 Apr 2015, 10:11

cpp code
char RcvdMsg[200] = "";
int RcvdCheck = 0;
int RcvdConf = 0;
int index = 0;
int RcvdEnd = 0;
char MsgMob[15];
char MsgTxt[50];
int MsgLength = 0;
void (*resetFunc)(void) = 0; // Dit zorgt ervoor dat je het programma kan resetten
boolean messageReceived = false;

void setup() {
Serial.begin(9600);
Config();
}

void loop() {

RecSMS();
if (messageReceived) {
Serial.println("reset");
delay(2000);
resetFunc(); //call reset
}
}

void Config() // This function is configuring our SIM900 module i.e. sending the initial AT commands
{
delay(1000);
Serial.print("ATE0\r");
Response();
Serial.print("AT\r");
Response();
Serial.print("AT+CMGF=1\r");
Response();
Serial.print("AT+CNMI=1,2,0,0,0\r");
Response();
}

void Response() // Get the Response of each AT Command
{
int count = 0;
Serial.println();
while (1) {
if (Serial.available()) {
char data = Serial.read();
if (data == 'K') {
Serial.println("OK");
break;
}
if (data == 'R') {
Serial.println("GSM Not Working");
break;
}
}
count++;
delay(10);
if (count == 1000) {
Serial.println("GSM not Found");
break;
}

}
}

void RecSMS() // Receiving the SMS and extracting the Sender Mobile number & Message Text
{
if (Serial.available()) {
char data = Serial.read();
if (data == '+') {
RcvdCheck = 1;
}
if ((data == 'C') && (RcvdCheck == 1)) {
RcvdCheck = 2;
}
if ((data == 'M') && (RcvdCheck == 2)) {
RcvdCheck = 3;
}
if ((data == 'T') && (RcvdCheck == 3)) {
RcvdCheck = 4;
}
if (RcvdCheck == 4) {
index = 0;
RcvdConf = 1;
RcvdCheck = 0;
}

if (RcvdConf == 1) {
if (data == '\n') {
RcvdEnd++;
}
if (RcvdEnd == 3) {
RcvdEnd = 0;
}
RcvdMsg[index] = data;

index++;
if (RcvdEnd == 2) {
RcvdConf = 0;
MsgLength = index - 2;
}
if (RcvdConf == 0) {
Serial.print("Mobile Number is: ");
for (int x = 4; x < 17; x++) {
MsgMob[x - 4] = RcvdMsg[x];
Serial.print(MsgMob[x - 4]);
}
Serial.println();
Serial.print("Message Text: ");
//Serial.print("rcvdmsg");Serial.println(RcvdMsg);
for (int x = 46; x < MsgLength; x++) {
MsgTxt[x - 46] = RcvdMsg[x];
Serial.print(MsgTxt[x - 46]);
}
Serial.println();
messageReceived = true;
}
}
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm module

Berichtdoor nicoverduin » 05 Apr 2015, 10:13

Weet je al wat elke commando betekent in de config()? en zo ja zet het als commentaar erbij wat je daar doet. Zo nee, zoek het uit en doe het alsnog :) Mogelijk zit daar een opdracht tussen om de message te halen....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: gsm module

Berichtdoor ercmrj » 05 Apr 2015, 18:25

Hier wel iets gevonden http://www.zeeman.de/wp-content/uploads ... nd-set.pdf

Maar ik kan er niet veel wijs uit
Wat ik gevonden heb heb ik zo goed mogelijk proberen er bij te schrijven maar de uitleg in de handleiding is veel langer.

cpp code
void Config() // This function is configuring our SIM900 module i.e. sending the initial AT commands
{
delay(1000);
Serial.print("ATE0\r"); //Echoing commands can confuse the console, so turn off command echoing.
Response(); // Betekend volgens mij dat hij geen teksten terug stuurt naar de terminal. de \r is return commando
Serial.print("AT\r");
Response();
Serial.print("AT+CMGF=1\r"); // = modem als sms apparaat instellen, =1 betekend tekstmode
Response();
Serial.print("AT+CNMI=1,2,0,0,0\r"); // New Message Indications to TE
Response(); // 1= <mode> discard indication and reject new received message unsolicited result
//codes when modem-DTE link is reserved (e.g. in on-line data mode).
//Otherwise forward them directly to the DTE
//2=<Mt> SMS-DELIVERs (except class 2 messages and messages in the message
//waiting indication group (store message)) are routed directly to the DTE
//using unsolicited result code +CMT:
//0=<bm> no CBM indications are routed to the DTE
//0=<ds> no CBM indications are routed to the DTE
//0-<bfr> modem buffer of unsolicited result codes defined within this command is
//flushed to the DTE when <mode> 1 - 3 is entered (OK response shall be
//given before flushing the codes)

}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm module

Berichtdoor nicoverduin » 06 Apr 2015, 10:27

Je moet dit maar eens lezen: http://www.developershome.com/sms/readS ... mmands.asp

Daar zie je hoe je individuele berichten en alle ongelezen berichten kan binnenhalen. Je hebt nog wel kans dat het fout gaat als je teveel berichten binnenleest, maar dat komt omdat je beter om moet gaan met het indiceren van je buffers. Dat is nu de reden dat wij wel eens aangeven om eerst een blok/flowchart schema te maken. Dan krijg je een betere perceptie van wat er moet gebeuren en ga je het zelf ook begrijpen. Dus eerst denken en dan doen. Het voorbeeld dat je gebruikt hebt is om de eerste SMS binnen te halen. Als je er meerdere wil binnen halen moet dat in de loop gebeuren.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: gsm module

Berichtdoor ercmrj » 06 Apr 2015, 21:07

Ik heb wel even gekeken en wat geprobeerd, maar dit is te moeilijk voor mij. Ik kan wel van bestaande sketchjes die werken wijzigingen aanbrengen, maar om uit een handleiding met commando's zonder voorbeelden een sketch te maken gaat boven mijn pet.

Ik heb trouwens weer een ander probleem wat voor mij een heel vreemd raadsel is, want nu print hij wel de teksten die van mijn gsm gestuurd zijn, maar van de tracker laat hij helemaal niets meer zien, ik krijg wel een paar commando's te zien maar de string RcvdMsg is helemaal leeg. De eerste sketch die ik poste krijg ik ook niet meer aan de praat, dat was die sketch met hex codes.

Maar bedankt voor alle moeite Nico, dit project gaat voorlopig maar weer terug in de kast

Vorige

Terug naar Shields

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten