Cara SMS dan Telepon dengan menggunakan Arduino


Setelah asyik bereksperimen dengan shield baru ini, saya ingin berbagi sketch sederhana yang pengaplikasiannya akan sangat berharga tergantung kreatifitas kalian. Untuk mencoba aplikasi ini, kalian setidaknya membutuhkan :

  1. Arduino UNO
  2. GPRS Shield
  3. Antenna

Percobaan pertama, saya akan menggunakan Arduino UNO sebagai gateway. Untuk itu, lepaskan chip ATmega328 dari board UNO kemudian tumpuk GPRS shield di atasnya. Hubungkan dua jumper koneksi di GPRS shield pada mode USB, dan jumper power select pada “BO” atau Board.

Pasang SIM-card dan antenna. Kemudian hubungkan board Arduino yang difungsikan sebagai gateway ini pada PC / laptop menggunakan kabel USB. Jalankan program hyperterminal (Windows) atau gtkterm (Linux), atau bisa juga dengan menggunakan program Arduino.
Aktifkan mode “serial monitor”. Kemudian tekan tombol power pada GPRS shield selama 2 detik. Kirim tulisan “AT” pada serial monitor. Jika serial monitor merespon dengan “OK”, selamat! berarti GPRS shield sudah aktif dan siap ke langkah selanjutnya. Jika tidak, maka coba pastikan kembali koneksi port USB nya. Pastikan pula di serial monitor secara otomatis mengirimkan CR (Carriege Return) dan LF (Line Feed).
Sekarang coba ketikkan “ATD*********” (dimana ********** diisi dengan nomor handphone seseorang). Perintah tersebut digunakan untuk menelepon nomor yang dituliskan. Untuk mengakhiri sambungan telepon, ketikkan perintah “ATH”
Sekarang berlanjut pada percobaan dimana kita akan mengirimkan SMS via Arduino yang kita program. Pasang kembali chip ATmega328 pada board UNO. Hubungkan pin header pada mode “Ard” atau “Arduino”. Sekarang tulis sketch berikut :
/*
   *  Mengirim SMS dengan GPRS Shield 
   *
   *  Author: cicink, Maret 2011
   */

   int led = 13;
   int onModulePin = 2;         // pin yg digunakan untuk menghidupkan shield tanpa menekan tombol

   int timesToSend = 1;        // Frekuensi sms akan dikirimkan
   int count = 0;

   void switchModule(){
   digitalWrite(onModulePin,HIGH);
   delay(2000);
   digitalWrite(onModulePin,LOW);
   }

   void setup(){

   pinMode(led, OUTPUT);
   pinMode(onModulePin, OUTPUT);

   Serial.begin(115200);

   switchModule();                    // aktifkan GPRS shield

   for (int i=0;i<2;i++){
      delay(5000);
   }

      Serial.println("AT+CMGF=1");         // set ke mode SMS
      delay(5000);
      Serial.print("AT+CSCS=");
      Serial.print(34,BYTE);
      Serial.print("IRA");
      Serial.println(34,BYTE);
   }

   void loop(){

   while (count < timesToSend){
      delay(5000);
      Serial.print("AT+CMGS=");          // tentukan nomor yang dituju
      Serial.print(34,BYTE);                 // kirim karakter tanda kutip (")
      Serial.print("08**********");       // lengkapi *** dengan nomor telepon yg dituju
      Serial.println(34,BYTE);               // kirim karakter tanda kutip (")
      delay(10000);
      Serial.print("Tes sms dari shield Arduino...");     // isi sms
      delay(10000);
      Serial.print(0x1A,BYTE);             // prosedur akhir perintah sms 1A (hex)
      delay(10000);
      count++;
   }

   if (count == timesToSend){
      Serial.println("AT*PSCPOF");             // de-aktifasi GRPS shield
      count++;
   }
   }

41 comments

    1. uwda tak pake presentasi proposal skripsi td pgi sob..dihujat pertanyaan dan kritikan..haha
      masih perlu dikembangkan lagi..
      siip lah..jangan ja sombong” kalo ditanya” ya :p
      satu lagi jgn pke format alamat address gtu sob..ke detect spam dy..mending pke format link klo mo share link

  1. mlm bro…mt knal…
    kl hbungkan pke hp ke arduino tanpa gprs shield tu carany gmna bro kira2??skema/alurny tu kyk apa bro??
    kbetulan sy bru mo bljar jg ni…

  2. iya met kenal jg masbro..
    setau saya ya, yg sering digunakan yaitu dengan mengakali di proses pengiriman’a..
    kalo temen” saya sering menggunakan pemrograman visual biar..jadi skema’a gni :
    hp –> vb –> arduino –> vb –> hp
    contoh’a mungkin kontrol alat elektronik. Jadi pada saat hp menerima perintah, maka akan dilanjutkan ke vb. dari vb akan menyampaikan’a ke arduino lewat jalur serial atau firmata jg boleh (terserah mas mo pke apa). kemudian dilanjutkan ke arduino dan menjalankan tugas sesuai kehendak program yg mas buat..
    tapi saya sekarang masih belajar jg mas..mau’a saya mengakali biar ngga pke pemrograman visual..mudah”an bisa..🙂

    1. ok masbro,,
      nah,,mksd sy itu yg g prlu pke vb gtu bro,,cuma hp n arduino aj lwat komunkasi serial..tp msh bngung2 jg ni cara mnghbungkn/mngkomuniksikan kdua alat trsbt..mgkn mas bro pny rngkaianny/skemany ato yg brkaitan ttg itu???

      1. saya masih mencoba nee..modem’a dibongkar untuk mencari vcc, ground, rx ma tx nya..masih sering konsultasi sama dosen saya..dy skarang lg ke luar negeri jd belum bisa secepatnya..nanti kalo sudah fix, pasti saya share kok. Untuk saat ini pke saja dulu yg lewat komputer kalo masih bingung pake VB pke ja software gammu.

  3. pak edy pembimbing mikrokontrol,di stikom punya masbro..tapi jelek tuh..salah pasang IC ATMEGA’a bisa rusak..temen sudah ada yg jd korban satu..
    mending dh yg pke modem atau hp tu..murah meriah juga kegunaan’a sama..hhe

  4. assalamualaikum, gan

    saya coba copas program diatas tapi pada perintah “Serial.print(34,BYTE);” tidak terdeteksi dan mohon penjelasannya please

    1. itu code aschi untuk “enter” mas..di punya saya jalan kok, normal. mungkin cek kembali penggunaan karakter “;” (titik koma) dan sebagainya..jangan dicopas mas😀

    2. Oh iya, sya jga pernah kejadian seperti itu, kl untuk penggunaan karakter tetap saja error pke aja arduino 0023. biasanya arduino 1.0 itu tdk bisa digunakan untuk perintah “Serial.print(34,BYTE)”.

      1. Untuk Arduino 1.0 ke atas, teman-teman bisa pke ini:
        Serial.write(34);
        atau kalian bisa pke ini :
        Serial.print((char)34);🙂

  5. Mas, berapa baudratenya untuk konfigurasikan arduino uno dengan gprs shieldnya, soalnya gagal terus mas, kalau bisa dijelaskan lebih jelas lagi yah kalau bisa plus gambar yah…? atau bisa kirim lewat email d41110270@gmail.com..
    makasih seblumnya mas..

    1. tergantung shieldnya gan.. tiap shield atau modem gprs nya beda” baudratenya.. solusinya mungkin mas bisa cari spesifikasi gprsshield nya

  6. Bos,saya mau tanya. gimana caranya gprs shield membalas sms dari random number? mohon pencerahannya🙂

  7. mksdnya reply ke si pengirim yg sms ke gprs shieldnya bos,apakah harus pake aplikasi dari vb juga? mhn pencerahanya trims

    1. ada 2 jalur sms yaitu dari “user ke gprs shield” dan dari “gprs shield ke user”
      kalau dari “gprs shield ke user” pke aja syntax diatas. Kalau sebaliknya saya belum bisa bantu. Tapi pernah mencoba pake bantuan vb bisa. cari aja di forum” arduino

  8. As of Arduino 1.0, the ‘BYTE’ keyword is no longer supported.
    Please use Serial.write() instead.

    mas kok saya pake syntax diatas di arduino saya ga bisa ada kesalahan pada “BYTE” maksudnya gmn ??
    saya pake arduino 1.0.5 dan gprs shield v2.0

    mohon bantuannya mas, buat tugas akhir ini .😦

    1. Beda gan.. kalo emng mau buat konsep demikian.. mending pke hp bekas aja yg murah..yg penting hidup.. cari sumber power vibration pada hp tersebut.. jd pas ditelfon kan getar tuh.. Jadiin power itu sebagai trigger untuk ke mikrokontrol.. begitulah kira” gambarannya

  9. permisi gan salam kenal saya sudah mengikutin kodingan di atas akan tetapi saya menglami kendala ketika di compile selalu erorr , mohon bantuan nyaa , terima kasih

    1. kalau pke shields ga bisa gan..saya saranin pke converter dan modem serial aja gan.. jadi antara modem dan arduino pke converter TTL-Serial

    1. diganti gan. pada dasarnya sih sama. cuman untuk shields itu semua sudah diatur dan dipermudah. jadi kalau pake modem, itu perintahnya seperti serial yg dikombinasikan. Mirip tapi ga sama. Ngerti gan? anggap saja ngerti ya. Pelajari dulu cara kerjanya. Ntar pasti ngerti. Intinya pelajari cara kerja arduino ke serial, kemudian dari serial ke modem. Membuat mereka berkomunikasi itu gampang-gampang susah gan. harus ada konverter dulu biar mereka mau berkomunikasi (kayak harus ada guide gitu kalo ada bule mau ngomong sama org lokal biar ngerti)

  10. gan kode yang ini kok gak bisa kebaca ya?
    if (count == timesToSend){
    harus diganti apa?

    trus gan kode di atas itu untuk pemberitahuan listrik padam bisa gak? terimakasih gan..
    sya msih belajar2 soalnya msih bingung..

    1. Tiap shield beda-beda codingnya gan. mungkin ga cocok dengan coding diatas kalau shieldnya beda dengan yg diatas.

      teknisnya seharusnya bisa kalau pakae sensor arus listrik, jadi dibuatkan dulu rangkaian sedemikian rupa sehingga ada arus yang besarnya tepat melalui sensor, jika sensor tidak mendeteksi arus lagi, maka sistem sms akan jalan. begitu kira-kira gan. Dan pastikan power untuk sistem menggunakan battery. sehingga ketika listrik pln mati, alat ga ikut mati.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s