Interfacing SIM900A Dengan Arduino UNO

Spread the love

Apa Itu SIM900A ?

SIM900A adalah GSM/GPRS module u/ uC / Arduino / Raspberry Pi. Dapat digunakan u/ mengirim sms, calling, transfer data melalui GPRS & fungsi DTMF. Module GSM – GPRS dengan chip Sim900A dari simcomm yg sudah dilengkapi dengan antenna.

  • Power supply : 5V
  • Tx/Rx level : support 3,3V / 5V / RS232, jadi kompatibel dgn Raspberry pi, Arduino, uC, PC.
  • Ukuran : 4,9cm x 4,7cm
  • Control: via AT commands

Berikut ini gambar dari module SIM900A :

sim900a1_anotation
sim900a2
sim900a3

Berikut penjelasan masing-masing pin header sesuai angka :

1. Konektor untuk power supply 5V, rekomendasi 2A. Hati-hati jangan sampai kebalik 5V dan GND

2. Pin header untuk koneksi serial 3,3V dan TTL 5V seperti penjelasan pada gambar dibawah :

pin2

  1. VCC MCU (VBATT) : power supply pada IC SIM900A, biarkan tidak terkoneksi
  2. GND
  3. 5V Tx      : pin Tx untuk TTL 5V
  4. 5V Rx      : pin Rx untuk TTL 5V
  5. 3,3V Tx   : pin Tx untuk level 3,3V
  6. 3,3V Rx   : pin Rx untuk level 3,3V

3. Pin header untuk koneksi serial RS232 level, seperti penjelasan pada gambar dibawah :

pin3

   

  1. GND
  2. DB9-3 : Tx RS232 level
  3. DB9-2 : Rx RS232 level

Langkah-langkahnya adalah sebagai berikut :

  1. Pasang Simcard dan antenna pada module SIM900A, simcard harus dalam kondisi sudah diregistrasi / diaktifkan ke jaringan GSM / operator.
  2. Koneksikan antara module SIM900A dengan Arduino UNO, sesuai pin berikut :
    • GND  <—->  GND
    • 5V Tx  <—->  D10
    • 5V Rx  <—->  D11
  3. Pasang power supply 5V ke konektor power supply SIM900A, tunggu beberapa saat ( 2 – 5 detik ). Jika tidak punya eksternal power supply 5V.
  4. Amati module SIM900A, jika nyala lampu LED berkedip pelan berarti SIM900A sudah ready, jika berkedip cepat berarti masih ada masalah.
  5. Upload Sketch untuk tes kirim sms berikut :
    #include <SoftwareSerial.h>

     SoftwareSerial sim900(10,11);  // 10=RX, 11=TX;

    String response,st;
    String phone_no=”081335667160″;
    String sms_msg=”Tes SMS : Arduino”;
    //String sms_msg;
    char msg_end[1];
    unsigned char Is_sim900_Ready=0;
    int delayInit_sim900=10000;

    void setup() {
    // put your setup code here, to run once:
    msg_end[0]=0x1a;
    Serial.begin(9600);
    Serial.println(“Goodnight moon!”);
    sim900.begin(9600);
    //delay(delayInit_sim900);
    if (sim900_init()==1){
    Serial.println(“Initialitation : OK”);
    }else{
    Serial.println(“Initialitation : ERROR”);
    }

    if (sim900_initNetwork()==1){
    Is_sim900_Ready=1;
    Serial.println(“Registering to Network : OK”);
    delay(2000);
    SendSMS(phone_no,sms_msg);
    }else{
    Serial.println(“Registering to Network : ERROR”);
    }
    }

    void loop() {
    // put your main code here, to run repeatedly:
    if (sim900.available()){
    Serial.write(sim900.read());
    }
    }

    void sim900_flush(){
    while(sim900.available() > 0) sim900.read();    // Clean the input buffer
    }

    int sim900_sendATCmd(String ATcommand, String expected_answer1, String expected_answer2, unsigned int timeout){
    unsigned long prevtime;
    int answer=0;

    sim900_flush();
    for (int i=0;i<ATcommand.length();i++){
    sim900.write(ATcommand[i]);
    }
    sim900.write(“\r”);
    response=” “;
    prevtime=millis();
    do{
    if (sim900.available()){
    st=sim900.readString();
    response +=st;
    Serial.print(st);
    // check if the desired answer 1 is in the response
    if (response.indexOf(expected_answer1) > 0){
    answer = 1;
    }
    // check if the desired answer 2 is in the response
    else if (response.indexOf(expected_answer2) > 0){
    answer = 2;
    }
    }
    }while((answer==0) && ((millis()-prevtime)<timeout));
    //Serial.println(“Respon : “+response);
    return answer;
    }

    int sim900_init(){
    int cresp=0;
    if (sim900_sendATCmd(“ATE0\r”, “OK”, “ERROR”, 3000)==1){
    cresp=sim900_sendATCmd(“AT+CMGF=1\r”, “OK”, “ERROR”, 3000);
    }
    return cresp;
    }

    int sim900_initNetwork(){
    return sim900_sendATCmd(“AT+CREG?”, “+CREG: 0,1”, “+CREG: 0,5”, 3000);
    }

    int SendSMS(String no, String msg)
    {
    sim900_flush();
    Serial.print(“AT+CMGS=\””+no+”\”\r”);
    sim900_sendATCmd(“AT+CMGS=\””+no+”\”\r”, “>”, “ERROR”, 500);
    Serial.print(msg+msg_end[0]);
    return sim900_sendATCmd(msg+msg_end[0], “OK”, “ERROR”, 500);
    }

  6. Ganti phone_no=”0813xxxxxxxx” sesuai no hp yang ingin dikirim sms.
  7. Ganti sms_msg=”Tes SMS : Arduino” dengan pesan sms yang ingin dikirimkan.
  8. Jika semua lancar, beberapa saat setelah sketch sukses diupload & program dijalankan, Arduino UNO akan mengirim sms dengan modul SIM900A ke no hp yang disetting pada variabel phone_no dengan isi pesan sesuai variabel sms_msg.

Demikian langkah-langkah untuk interfacing atau testing module SIM900A dengan Arduino UNO.

+++ Semoga Bermanfaat +++

2 Komentar

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*