Go Down

Topic: Dringend hulp nodig (Read 1 time) previous topic - next topic

splintertje

beste,

ik zit met een probleem voor mijn arduino project. Ik ben nog niet zo lang bezig met arduino maar ik heb toch al heel wat ideeën. Tot nu toe heb ik mij bezig gehouden met eenvoudige projectjes maar ik heb onlangs een GSM-shield (sim900) aangekocht om een simpele (dacht ik toch) voorgeprogrammeerde sms te versturen met mijn arduino.

Ik heb al veel codes geprobeerd maar ik raak er maar niet wijs uit.
Ik slaag er maar niet in om een sms te versturen. De code die ik om dit moment probeer zit in bijlage.
Met deze code krijg ik op mijn seriële monitor om de 1.2s AT en niet anders.

Hopelijk kan iemand mij hierbij helpen of helpen met een andere code die wel werkt.

Alvast bedankt voor jullie hulp!
mvg Sander

MAS3

Code: [Select]

    void setup()
    {
    Serial.begin(9600);
    }
    void loop()
    {
    delay(1200);
    Serial.print("AT");
    delay(1200);
    bool bOK = false;
    while (Serial.available() > 0)
    {
    char inChar = (char)Serial.read();
    bOK = true;
    }
 
    if(bOK)
    {
   
    Serial.println();
    Serial.println("AT+CMGF=1"); // sets the SMS mode to text
    delay(100);
    delay(1200);
    bool bOK = false;
    while (Serial.available() > 0) {
    //Serial.write(Serial.read());
    char inChar = (char)Serial.read();
    bOK = true;
    }
    if(bOK)
    {
    Serial.println();
    Serial.print("AT+CMGS="); // send the SMS number
    Serial.print("+300000000"); // cellphone number
    Serial.println("");
    delay(1000);
    Serial.print("A new post is created by Zain."); // SMS body
 
    delay(500);
 
    Serial.write(0x1A);
    Serial.write(0x0D);
    Serial.write(0x0A);
 
    }
    }
    }


Als je om de 1.2 seconden (1200 milliseconden) iets ziet gebeuren, dan doet de 1e delay in de loop dus nog mee.
Daarna niet meer.
Ik kan daar 2 oorzaken voor bedenken:

Om 1 of andere reden krijg je na die delay een reset, bijvoorbeeld omdat er teveel stroom word getrokken uit je Arduino.

Of er word niet aan de voorwaarde van de while voldaan, waardoor automatisch ook niet aan de voorwaarde van de if... statement zal worden voldaan.

Als je er serieus mee aan de slag wil, kun je jezelf helpen.
Zet op wat strategische plekken in je code een extra stukje code die je via de seriële monitor vertelt dat je bij dat stukje bent aangekomen.
Dan kun je dus zien wat er wel gebeurt, maar ook wat er word overgeslagen.

Verder stuur je dus commando's voor je GSM shield over de seriële poort.
Maar schijnbaar zit je met je PC ook te verbinden met diezelfde poort.
Zou dat dan wellicht een conflict veroorzaken ?
Ik weet het niet, want ik heb nul ervaring met zulke GSM shields, en heb ook geen ontembare behoefte daar aan te beginnen.
Maar kijk anders eens naar softserial, en of je op een of andere manier je PC of die shield daarmee kunt verbinden.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

shooter

Op welke pinnen zit inderdaad de GSM. en zoek een library die bijnde shield hoort, dat is handig.

paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Go Up