Icomsat 1.1 GSM Module

Hallo,

Ik ben reeds enkele dagen aan het zoeken om mijn Icomsat 1.1 GSM Module aan de praat te krijgen samen met mijn Arduino Mega, helaas lukt het mij niet.

Ondertussen al bijna alle voorbeelden op google geprobeerd maar niks levert resultaat.

Heeft er iemand een idee hoe deze aan de praat te krijgen zijn?

Bart

Bart
Kun je aangeven wat je al gedaan hebt? welk(e) programma(s)? waar gaat het fout?
Nu ga je naar de garage met de opmerking "mijn auto doet het niet".... Je vertelt niet het merk, wat je al gedaan hebt, wat hij niet doet..... etc.

Is het dat Itead ding ?

De documentatie daarvan is nogal verwarrend.
Je ziet namelijk een plaatje waar ie als shield op vermoedelijk een Uno zit.
Maar op pagina 3 staat bij de beschrijving van de aansluitingen een *sterretje bij de eerste en de laatste GPIO pin, VDD.
Onderaan dat tabelletje staat dat sterretje weer, en dat VDD = 3.0 volt.
En er staat een note, die weergeeft dat de poort 3 volt level is.
Maar waar die note op slaat staat er niet bij, er zijn 4 ports beschreven.

Verder staat beschreven dat de seriële poort van de module met een jumper ingesteld kan worden (pagina 4).
Eigenlijk zou daar moeten staan dat je dit MOET instellen, en de vraag is of er een standaard instelling is, of dat ie standaard niet is ingesteld (doordat het jumpertje twee bovenste en twee onderste pinnetjes verbindt, en nooit met de middelste rij).

Op deze pagina vind je een aantal links naar allerlei zaken die je zouden moeten kunnen helpen met deze module aan de slag te gaan (aangenomen dat het inderdaad die module betreft).

Hoi,

Het betreft inderdaad een ITEAD Studio shield.

Ik heb reeds veel geprobeerd maar zonder resultaat.

Onderstaande code geprobeerd met aantal jumpersettings maar niks...

unsigned char buffer[64];  // buffer array for data receive over serial port
int count=0;               // counter for buffer array

void setup()
{
  Serial1.begin(19200);
  Serial.begin(19200);
}

void loop()
{
  if (Serial1.available())
  {
    while(Serial1.available())
    {
      buffer[count++]=Serial1.read();
      if(count == 64)break;
    }
    Serial.write(buffer,count);
    clearBufferArray();
    count = 0;
  }
  if (Serial.available())
    Serial1.write(Serial.read());
}

void clearBufferArray()
{
  for (int i=0; i<count;i++)
  {
    buffer[i]=NULL;
  }
}

Bijkomend geprobeerd om TX te verbinden met poort 18 en RX met poort 19 maar niks...

Beschreven in http://www.simpasture.com/36023.html en aanbevolen bij de auteur.

Bart

Hoi.

De pagina waar je naar linkt, bevat HTML fouten.
Er staat steevast een backslash voor de naam van het plaatje, waar dat voor HTML een forward slash moet zijn (voor windows zou de backslash wel kloppen).
Hierdoor zijn bij mijn browser (en ik denk bij alle browsers) de foto's niet te zien.
Bij mijn browser, firefox, kan ik op een plaatje klikken en de bijbehorende link openen in een nieuw tabblad, natuurlijk met een fout resultaat.
Maar vervolgens kan de link worden aangepast, waardoor de afbeelding wel verschijnt.
De maker van de pagina kan het beste op deze fout gewezen worden, ik heb dat nu niet gedaan.

Het helpen word moeilijker voor degenen die dat willen proberen als er geen terugkoppeling is.
Ik bedoel daarmee dat je zegt van alles geprobeerd te hebben, maar niks.
Niks is extreem weinig, minder nog dan een verkeerd resultaat.
Daarom is het een goed idee om te kijken of je beter kunt zien wat er gebeurt.

Het zou bijvoorbeeld zomaar kunnen zijn dat er een probleem is waardoor de seriële poort (serial1) niet goed werkt.
Daarom zou ik je willen aanraden om die serial1 port eens te testen.
En wel met gebruik van zoveel mogelijk elementen uit de sketch voor die Itead shield, om ervoor te zorgen dat je eventueel conflicterende zaken ook meepakt in je test.
Wanneer je een andere Arduino hebt, kun je die via diens seriële poort verbinden met serial1 van je Mega.
Vervolgens kun je met de IDE en serial monitor kijken wat er allemaal voorbij komt, áls er al iets komt.

De Mega ga je met de shield verbinden door de jumpers helemaal te verwijderen en in plaats daarvan jumperwires te gebruiken.
Dit is het plaatje dat daarbij hoort:

Is dit ook wat jij gedaan hebt ?

Als je dit allemaal al wist en gedaan hebt, dan zou het handig zijn als je ons meer kunt vertellen dan "niets".
Dus vertellen wat je verwacht te zien, en wat je in plaats daarvan krijgt te zien.

Hoi,

Alvast bedankt voor de feedback.

Ik heb reeds geprobeerd met jumpwires de TX en RX te verbinden met men Arduino Mega enkel weet ik dan niet goed op welke van de pins deze moeten geplaatst worden op de shield.

Maakt dit uberhaupt uit?

Bart

Ik heb ook ooit een module gehad van itead (doe ik nooit meer) en als ik me goed herinner moet je het juiste commando sturen voor die iets terugstuurd.

Met vriendelijke groet
Jantje

PS zoals Mas stelde: de links werken bij mij allemaal niet dus veel zinnings kan ik niet zeggen.

BartBernaerts:
Ik heb reeds geprobeerd met jumpwires de TX en RX te verbinden met men Arduino Mega enkel weet ik dan niet goed op welke van de pins deze moeten geplaatst worden op de shield.

Maakt dit uberhaupt uit?

Jazeker maakt dat uit.
In mijn verhaal hierboven vertelde ik dat je de bovenste en de onderste rij van 3 waar je met jumpers de RX en TX poort instelt, de jumper wires zou moeten plaatsen.
Ik heb nog steeds het sterke vermoeden dat dat ook zou werken, maar weet het niet zeker.
Want het plaatje wat ik er ook bij heb gezet, toont dat de jumper wires zijn verbonden met de shield connectoren.
in dat geval moet je het jumpertje ook op de daarbij behorende plaats zetten.

Ik zou het graag met je uitzoeken hoe dat echt moet gaan (omdat ik dat leuk vind om uit te zoeken).
Maar ik ben extreem druk met werk, ongeveer 16 uur per dag de komende 4 werkdagen.
Dan blijft er erg weinig tijd over om te eten en ook nog lekker te ontspannen (door hier op de site aanwezig te zijn), naast het slapen (gedurende 4, hooguit 5 uurtjes ongeveer).

Met andere woorden, geen tijd, sorry.

BartBernaerts:
Bijkomend geprobeerd om TX te verbinden met poort 18 en RX met poort 19 maar niks...

TX moet verbonden worden met 19 en RX met 18
De T van Tx staat voor transmit (dat is verstuur) en de r van rx staat voor receive (dat is ontvang)
Wat de een verzend (TX) moet de andere ontvangen (rx)

Jantje

Hoi Allemaal,

Ondertussen weer paar dagen verder en nogmaal poging ondernemen om de shield aan de praat te krijgen.

Momenteel registreert de shield zich op het netwerk, Net ledje knippert om de +/- 5sec (bij opstart sneller). Alle jumpers van TX / RX zijn verwijderd en aangesloten dmv. jumpwires met poort 18 (TX) en 19 (RX).

Desalniettemin is mijn sms niet verstuurd als ik onderstaande code gebruik.

unsigned char buffer[64];  // buffer array for data receive over serial port
int count=0;               // counter for buffer array 

void setup()
{
  // set up the digital pins to control
  Serial.begin(9600);
  Serial.println("Hello Computer");
  
  String outMessage = "Hello world!";
  String destinationNumber = "+xxxxxxxxxxx"; // in te vullen....

  // wake up the GSM shield
  Serial1.begin(19200);
  delay(20000); // give time to log on to network.
  if (Serial1.available())
  {
    Serial.println("Serial 1 available");
  }
  else
  {
    Serial.println("Serial 1 NOT available");
  }
  
   while(Serial1.available())
    {
      buffer[count++]=Serial1.read();
      if(count == 64)break;
    }
     Serial.write(buffer,count);
  
  
  Serial1.print("AT+CMGF=1\r"); // set SMS mode to text
  delay(100);
  Serial1.print("AT+CNMI=2,2,0,0,0\r");
  // blurt out contents of new SMS upon receipt to the GSM shield's serial out
  delay(100);
  
  Serial1.print("AT+CMGF=1\r");
  delay(100);
  Serial1.println("AT + CMGS = \"" + destinationNumber +"\"");
  delay(100);
  Serial1.println(outMessage);
  delay(100);
  Serial1.println((char)26);//ctrl+z
  delay(100);
  Serial.println("The End!");
}

void loop()
{
 
}

Via de seriële monitor krijg ik volgende te zien:

Hello Computer
Serial 1 NOT available
The End!

In bijlage enkel foto's van mijn opstelling.

Iemand suggesties?

Bart

Ik vermoed dat je iets van :
~~ Serial1.begin(9600);~~
in de setup moet opnemen.
Daarna kan het programma deze poort pas vinden.

Dat staat er dus ook.

Je kunt nog proberen de wachttijd in deze regel:

delay(20000); // give time to log on to network.

tijdelijk nog groter dan 20000 te maken, mogelijk helpt dat.

Weet je zeker dat je simkaart geactiveert is en niet met een wachtwoord beschermd is ?

Hi Cartoonist,

simkaart is geactiveerd en zit geen pin meer op.

heb ook net geprobeetd met Serial1.begin(9600); maar geen vooruitgang

Bart

 if (Serial1.available())
  {
    Serial.println("Serial 1 available");
  }
  else
  {
    Serial.println("Serial 1 NOT available");
  }

Je hebt een communicatie probleem op Serial1, hoewel die geinitialiseerd wordt is die niet 'beschikbaar' (NOT available).
Kan verschillende oorzaken hebben lijkt me.
Bijvoorbeeld:
De baudsnelheid is onjuist. Het zal wel in de documentatie staan wat de juiste baudrate is en of daar nog een bepaalde jumperinstelling op het shield bij hoort. (is niet goed te zien op de foto's)

Tx en Rx verwisseld (kun je gewoon uitproberen)

Ik ken dit shield niet en heb ook de documentatie niet bekeken. Ik kan alleen wat veel voorkomende oorzaken bedenken.

de serial1 is inderdaad niet beschikbaar maar hoe maak ik deze beschikbaar....

Als alles goed is ingesteld/aangesloten dan geeft het commando IfSerial iets terug wat je programma dan als 'TRUE' interpreteerd. Je Serial1 geeft geen respons vandaar de foutmelding.

Hey Cartoonist,

Bedankt voor het idee.

Ik ben er nu achter dat de serial open is maar de serial1.available blijft negatief....

Hieronder wat ik aflees in mijn seriële monitor:

Hello Computer
Serial 1 is open
Serial 1 NOT available
The End!

Ik krijg een beetje het idee dat je niet begrijpt wat available() betekent......
Serial.available() betekent niet dat de Serial beschikbaar is, maar dat er tekens zijn ontvangen en in de ontvangstbuffer klaar staan. M.a.w. er komt niets binnen van de GSM shield. Ik weet niet of dat je eerst er iets heen moet sturen voordat je een antwoord krijgt van die module?

Dus: stuur eens ATI naar het ding.
Dan zou ie moeten vertellen wie ie is.