Send AT commands to Iridium 9600


hello,

i've started arduino programming today. want send @ commands arduino mega iridium 9600 (satellite modem).

if connect iridium directly computer, can send him @ commands via serial port (software hterm) , works! iridium sends emails. wrote programm arduino , connected iridium arduino. i'm sending same commands, modem doesn't send message via.

can me? i'm new arduino, modems, electronic, this. :d

my programm:

code: [select]
string inputstring;

void setup() {
  serial.begin(9600);     // usb
  serial1.begin(19200);   // iridium 9600

  inputstring.reserve(200);

  while (!serial) {
    ; // wait serial port connect. needed native usb
  }

  while (!serial1) {
    serial.println("serial1 not ready!");
  }
}

void loop() {
 
  if (serial.available() > 0) {
    inputstring = serial.readstring();
    inputstring.trim();

    serial.println("input: " + inputstring);
    serial.println("--- @ commands ---");
    
    serial.print("at+sbdwb=");
    serial.println(getlengthofstring(inputstring));
    
    serial1.print("at+sbdwb=");
    serial1.println(getlengthofstring(inputstring));

    delay(2000);

    string data = getdata(inputstring);
    data.touppercase();

    serial.println(data);

    serial1.println(data);

    delay(4000);

    serial.println("at+sbdix");

    serial1.println("at+sbdix");

    delay(4000);

    serial.println("at+sbdd0");
    
    serial1.println("at+sbdd0");

    serial.println("--- end ---");

  }

  // response of iridium
  if (serial1.available() > 0) {
    string response = serial1.readstring();
    serial.println(response);
  }
}


/**
   converts ascii hex 2-byte-checksum
*/
string getdata(string ascii) {
  int summe = 0;
  string hexstring;

  for (int = 0; < ascii.length(); i++) {
    int decvalue = ascii[i] + 0;
    summe += decvalue;
    string hexvalue = string(decvalue, hex);
    hexstring = hexstring + hexvalue;
  }

  string sumhexvalue = string(summe, hex);
  string checksumhex = gethexofint(summe, 2);

  return hexstring + checksumhex;
}

string gethexofint(int num, int precision) {
  char tmp[16];
  char format[128];

  sprintf(format, "0%%.%dx", precision);

  sprintf(tmp, format, num);
  // serial.print(tmp);
  return tmp;
}

/**
   it's necessary for
      at+sbdwb=<message length>
*/
int getlengthofstring(string s) {
  return s.length();
}

i connected arduino rx232 module: http://www.chinalctech.com/index.php?_m=mod_product&_a=view&p_id=808

the iridium satellite modem connected com port.

may me?


my code produces output:


Arduino Forum > Using Arduino > Networking, Protocols, and Devices (Moderator: fabioc84) > Send AT commands to Iridium 9600


arduino

Comments

Popular posts from this blog

Help with codes to add 1 more shift register and add more to matrix LED

tcp client

Can't read sms using Thinker A7 communicate with Arduino