Arduino Leonardo, SIM908 GSM kommunikációs probléma

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Sziasztok, Arduino Leonardo és egy sim908 gsm/gprs modul között nem sikerül megvalósítanom a kommunikációt.
Ezzel a libraryvel próbáltam testelni https://code.google.com/p/gsm-shield-arduino/
Sorosan ezt azüzenetet kaptam:
DB:NO RESP
ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp
status=IDLE

Valószínűleg a szoftveres soros kommunikációval van a probléma, átírtam a GSM.cc ben a Rx,Tx pineket 0,1 mivel Leonardon itt talalható.
DE nem működik.
Maga a shield és a gsm modul is működik, LED visszajelzés alapján fel is jelentkezik a hálózatra.
Kérlek segítsetek ha tudtok! Közsi!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: Robert »

A könyvtár a szoftveres sorosportot használja. Ez a 2....19 arduino digital lábakon lehet. D0 és D1-en nem!
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

És hogyan tudnék 0,1 lábakon hardware serialon keresztül kommunikálni a modullal.
értelemszerűen a jumpereket felraktam a modulon, de a programkódban mit kell átírnom?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: Robert »

Ahogy elnézem ezt a függvénykönytárat - sehogy :(
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Köszönöm, lehetséges, hogy azért nem tudok kommunikálni a modullal, mivel csak usb-ről kap áramot a mikrokontroller?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: Robert »

A kapcsolási rajzot nézd meg. Lehet hogy a kialakítás olyan, hogy csak a VIn-ről vesz tápot, az 5V-ról nem.
Esetleg 5V-> GSM rendszertáp-bemenet átkötése?

Most készítem a GSM rendszeremet és szűk keresztmetszet az 5V/USB. Ebből próbálom meglesni, hogy mások hogyan oldották meg....
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Hála az oszcilloszkópnak sikerült rájönnöm mi a probléma.
A libraryt hiábs definiálom máshogy mindenképp 2,3 lábon kommunikál, viszont a leonardo 2 lábon nem tud Rx-et csak is 8-12-ig.
szoftveresen 2,3 pn enged, hardver pedig csak 8-12 ig Rxet pin 2 helyett.
Igazából tanácstalan vagyok, hogy miképp lehetne működőképesre bírni.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: Robert »

Leonardo helyett másikat?

Illetve az elsődleges sorosport a Leonardoi esetén mintha az USB-re lenne...

Mi van, akkor, ha kézzel írod meg és nem egy olyan-amilyen (ismeretlen eredetű) libraryra bízod a kommunikációt?
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Hát még kezdőnek érzem magam ahhoz hogy libraryt írjak. Ijesztően sok fájlból áll. :D
Leonardo helyett gondoltam Uno-ra, mert ott a 2,3 lábakon lehet softverSerial-lal kommunikálni.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: Robert »

Akár az UNO akár itt a shopban az UNO vagy a Diecimila R/3 is jó.

Libryrírást nem is kell.
1, NewSoftSerial-lal bármely lábon ki/visszaírhatsz
2, Print/read utasításokkal simán elbeszélgetsz a modullal...
3, Leonardora felrakni egy soros átjárót, így Hyperterminal alól megszólíthatod a modult....
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Meg fogom próbálni, a newsoftserial az ugye mar integralva van a softserialba 1.5 ota?
A celom majd az lesz, hogy egy webszerverre kuldjek adatokat az analog bemenetrol, illetve egy bizonyos szint ala csokkenve kuld smst, tulajonkeppen egy tavfelugxeleti, es montoring rendszer lesz.
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Ha jol ertem akkor library nelkul tudom hasznalni, ha megnyitom a softserial portot a megfelelo labon es utana AT parancsokkal iranyitom?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: Robert »

Igen. Ugyanis a SIM900 egyszerű AT parancsokkal idomítható....

A softserial volta régebbi, a newsoftserial az újabb....
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Kezd összeállni a kép:

Kód: Egész kijelölése

int8_t answer;
int onModulePin= 8;
char aux_string[30];
char phone_number[]="+36305869058";

void setup(){

    pinMode(onModulePin, OUTPUT);
    Serial.begin(115200);    
        
    Serial.println("Starting...");
    power_on();
    
    delay(3000);
    
    // sets the PIN code
    sendATcommand("AT+CPIN=", "OK", 2000);
    
    delay(3000);
    
    Serial.println("Connecting to the network...");
        
    while( (sendATcommand("AT+CREG?", "+CREG: 0,1", 500) || 
            sendATcommand("AT+CREG?", "+CREG: 0,5", 500)) == 0 );

    Serial.print("Setting SMS mode...");
    sendATcommand("AT+CMGF=1", "OK", 1000);    // sets the SMS mode to text
    Serial.println("Sending SMS");
    
    sprintf(aux_string,"AT+CMGS=\"%s\"", phone_number);
    answer = sendATcommand(aux_string, ">", 2000);    // send the SMS number
    if (answer == 1)
    {
        Serial.println("Test-Arduino-Hello World");
        Serial.write(0x1A);
        answer = sendATcommand("", "OK", 20000);
        if (answer == 1)
        {
            Serial.print("Sent ");    
        }
        else
        {
            Serial.print("error ");
        }
    }
    else
    {
        Serial.print("error ");
        Serial.println(answer, DEC);
    }

}


void loop(){

}

void power_on(){

    uint8_t answer=0;
    
    // checks if the module is started
    answer = sendATcommand("AT", "OK", 2000);
    if (answer == 0)
    {
        // power on pulse
        digitalWrite(onModulePin,HIGH);
        delay(3000);
        digitalWrite(onModulePin,LOW);
    
        // waits for an answer from the module
        while(answer == 0){     // Send AT every two seconds and wait for the answer
            answer = sendATcommand("AT", "OK", 2000);    
        }
    }
    
}

int8_t sendATcommand(char* ATcommand, char* expected_answer, unsigned int timeout){

    uint8_t x=0,  answer=0;
    char response[100];
    unsigned long previous;

    memset(response, '\0', 100);    // Initialice the string
    
    delay(100);
    
    while( Serial.available() > 0) Serial.read();    // Clean the input buffer
    
    Serial.println(ATcommand);    // Send the AT command 


    x = 0;
    previous = millis();

    // this loop waits for the answer
    do{
        // if there are data in the UART input buffer, reads it and checks for the asnwer
        if(Serial.available() != 0){    
            response[x] = Serial.read();
            x++;
            // check if the desired answer is in the response of the module
            if (strstr(response, expected_answer) != NULL)    
            {
                answer = 1;
            }
        }
    // Waits for the asnwer with time out
    }while((answer == 0) && ((millis() - previous) < timeout));    

    return answer;
}
De elakad a while cilkusnál:

Kód: Egész kijelölése

while( (sendATcommand("AT+CREG?", "+CREG: 0,1", 500) || 
            sendATcommand("AT+CREG?", "+CREG: 0,5", 500)) == 0 );
végtelenítve küldi az "AT+CREG?, de nincs válasz.
Illetve a modulon se villog a led, hogy felregisztrált volna a hálózatra.
Olyan mintha kikapcsolna, vagy nem tudom.

Most kezdtem végigolvasni a teljes AT listáját a SIM908-nak, remélem okosabb leszek tőle.
Valami ötlet hogy mi lehet a baj?
papp.zoli
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2013. július 24. szerda, 18:53

Re: Arduino Leonardo, SIM908 GSM kommunikációs probléma

Hozzászólás Szerző: papp.zoli »

Megvan a probléma máris! :D
a modult 3v3-ról működtettem, most átraktam Vin-re.
Láss csodát rögtön kaptam az sms-t.
Tehát mindennél fontosabb az áramellátás.

Most már végre kezdődhet a tényleges alkotás, kezdek izgulni.
Válasz küldése