Arduino Uno + Geetech GSM/GPRS-shield

Niin,

On Arduino Uno ja siihen päälle isketty Geetchin GSM/GPRS-shield. Noita brändejähän on iso tukku, mutta suunnilleen kaikissa taitaa olla SIM900 -piiri hoitelemassa itse yhteyksiä.

No, Arduino ja shieldi saavat sähköä ja tuolla: http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield ohjeella olen edennyt. Siellä on myös koodinpätkä, joka on käytössä.

Yhteys pc<->arduino toimii sekä arduino<->gsm toimii. AT-komennot menevät läpi ja vastaus näkyy sarjaliikennemonitorissa. So far so good.

Ongelma on siinä, kun tuo mokkula ei kirjaa itseään GSM-verkkoon. Shieldin ledi vilkkuu juuri siten, kuten ei-verkkotilassa sen pitäisikin. Kun ohjeen mukaan etenee, niin monitorissa näkyy juuri samat tarinat kuin esimerkissä, eli alussa esim. näin:

+CFUN: 1

+CPIN: READY

Call Ready

Kaikki esimerkin AT-komennot menevät läpi ja kuittaus tulee ruudulle. SMS:n lähetys tyssää sitten siihen viestin lopetusmerkkiin, kun kapine ei ole verkossa. Tulee ERROR kuittauksen sijasta.

Olen kokeillut korttia ihan puhelimessa, toimii siinä, ei ole pin-koodin kysely käytössä. Lisäksi kokeiltu on toisella puhelimessa taatusti toimivalla (=työliittymälläni) kortilla ja sama juttu. Puuttuukohan alustuksesta nyt sitten kuitenkin jotakin vai joko tuo shieldi tuomitaa risaksi jo alkajaisiksi? Käytössä oleva koodi on alla, löytyy myös tuolta em. nettisivulta.

#include <SoftwareSerial.h>
SoftwareSerial GPRS(7, 8);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0; // counter for buffer array
void setup()
{
GPRS.begin(19200); // the GPRS baud rate
Serial.begin(19200); // the Serial port of Arduino baud rate.
}
void loop()
{
if (GPRS.available()) // if date is comming from softwareserial port ==> data is comming from gprs shield
{
while(GPRS.available()) // reading data into char array
{
buffer[count++]=GPRS.read(); // writing data into array
if(count == 64)break;
}
Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port
clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array
count = 0; // set counter of while loop to zero
}
if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
GPRS.write(Serial.read()); // write it to the GPRS shield
}
void clearBufferArray() // function to clear buffer array
{
for (int i=0; i<count;i++)
{ buffer[i]=NULL;} // clear all index of array with command NULL
}

Ja kun nyt vielä kerran kokeilin, ennen tämän lähettämistä, niin se maailmanlopun vehje ottikin ja toimi…!!! Meni verkkoon, soitto siihen näkyy monitorissa jne. Perin outoa, toissapäivänä ei sitten millään. Lieneekö Kemissä (olen työmatkalla siellä) parempi DNA kuin Lappeenrannassa :wink: Tietysti syy moiseen kiinnostaisi, mutta pääasia että skulaa.

Sorry tavallaan turha viesti, mutta tähän on hyvä jatkaa jos asian tiimoilla tulee kysymyksiä ym.

Nojoo, nyt on takana useita erilaisia yrityksiä lukea SMS:iä tosta vehkeestä. Ihan ei ole onnistunut ja koodikin on varmaan yhtä hirvitystä… Ennen kuin käydään koodin kimppuun, niin onko kenelläkään toimivaa koodia, jolla voi lukea SMS:iä ja tehdä sitten niiden sisällön perusteella jotain?

Hieman arvailua…vähän puskasta kun ei ole tuosta shieldistä kokemusta.

Ensinnäkin, ei kait tuo antamasi esimerkkikoodi ole sms:n lähetystä ? :slight_smile:

Tähän liittyen tuli mieleen (kun ei näe koodia) oletko asettanut viestikeskuksen numeron AT+CSCA=“viestikeskuksennumero” komennolla. Tulee AT+CMGF ja AT + CMGS väliin.

98% veikkaus: yrität DNA:n simmillä. Ei toimi. Kokeile Saunalahtea. Näin minulla.

GSM-spesifisiin AT koodeihinkin kannattaisi perehtyä niin saat selville missä vika voi olla. AT+CSQ näyttää radion tilan, AT+COPS? verkot. Googlaa noilla.