Wednesday, November 19, 2014

Ngiklan pakai SMS

Wah apalagi ini Mas?
Masih Seputar Kirim SMS. Kadang kita dapat iklan melalui SMS bunyinya;

From:
081231223XXXX
Kredit lunak Tanpa Angsuran hingga 2M.
Hubungi 081211111567

Lho kok mereka tau nomor kita ya?
Mereka sebenarnya tidak tau nomor kita. Yang mereka tau cuma ngarang kepalanya nomornya saja, lalu sebuah counter digunakan untuk menentukan nomor buntut nomer yang akan mereka kirimi SMS . Pusing? wah, maaf saya ngak bisa menerangkan dengan bahasa yang bagus he... Langsung ke contoh saja ya :)
Misal mereka mengarang kira-kira nomer-nomer yang ingin dijadikan sasaran iklan adalah; 08123456XXXX. Nomor tersebut mempunyai kepala 08123456 dan buntut XXXX. Nomer yang dapat dijadikan target adalah;
dari 081234560000 hingga 081234569999

Menentukan panjang kepala sama buntutnya gimana Mas? Kalo kepala tinggal kira-kira nomer yang hidup mana, kalo buntutnya ya tinggal dari 0000 sampai maksimal 9999, atau tergantung banyaknya pulsa yang ada. Pada contoh buntut yang digunakan empat digit berarti ada 10000 nomer yang akan di SMS. Kalo kuat isi pulsa hanya untuk 100 nomer ya panjang buntutnya dua digit saja, misalnya, 0812345678XX, yang akan terdapat 100 nomer sasaran, dari 081234567800 hingga 081234567899.

Alat dan bahan yang digunakan seperti biasanya, GSMduino, Adaptor 2A dan SIMCARD GSM

Lho Mas, kok beda GSMduinonya sama yang kemarin-kemarin. Ini yang massprod, yang merah kemarin versi uji coba.
Langsung saja ke programnya ya.
Nah kalo setiap kali kirim, buntut xxxx kita naikan 1 hingga maksimal maka semua nomer dari 081234560000 hingga 081234569999 akan dikirimi SMS promosi tersebut.
Variabel yang digunakan sebagai tempat menyimpan nomer GSM yang akan dikirimi SMS adalah  'remoteNum'. Variabel ini berbentuk array char.  Kepala menempati 8 digit pertama, sedangkan buntut menempati 4 digit terakhir. Karena kepala nomer tetap maka dapat langsung di berikan pada variabel di awal deklarasi

  char remoteNum[20]="08123456";

Nah ini yang agak susah buatnya. Buntutnya bisa jadi "0000", "0001" hingga "9999". Untuk membuat nomor tersebut kita memerlukan counter. Counter pada awal dapat diberi nilai 0 dan maksimal 9999. Counter memiliki bentuk 'int', yang harus di ubah menjadi string;
     int         string
       0 ---> "0000"
       1----> "0001"
        :
        :
9999 ---->"9999"

Sipil Mas pakai saja "String(Counter,DEC);"
Ya anda 90% benar!,
Kok bisa? salah saya apa Mas?

Begindang... Begindang.... Misal;
counter= 9999;

String(Counter,DEC); // akan menghasilkan "9999"


jika
counter= 1000;

String(Counter,DEC); // akan menghasilkan "1000"


Bagaimana jika nilainya kurang dari 1000? Misal;
counter= 99;

String(Counter,DEC); // akan menghasilkan "99"

Lho?! seharusnyakan "0099".
Makanya saya katakan 90% benar. Karena akan benar jika nilai counter dari 1000 hingga 9999. Sedangkan jika nilai counter kurang dari 1000, maka akan error, atau mengirim SMS bukan kenomor yang kita tuju.

Lalu Bagaimana Mas?
Kembali kejaman SD. Untuk mencari ribuan dari satu nomor bagaimana anak-anak? Ya Budi. Dibagi 1000 Bu Guru. Ya kamu benar Budi. Untuk cari ratusan, puluhan ya sama. bagi dengan ratusan dan puluhan. Misalkan;

counter= 99;
counter/1000 ---> HasilRibuan =0, sisa masukan counter
counter/100   ---> HasilRatusan =0, sisa masukan counter
counter/10   ---> HasilPuluhan =9 , sisa adalah satuan = 9

Untuk mengubah integer 0 menjadi character '0' maka tambahkan 0x30.
Hasil ribuan, ratusan, puluhan dan satuan tinggal masukan ke array remoteNum dibelakang kepala. Karena panjang array kepala 8digit (08123456) maka ribuan disimpan pada digit ke-8, ratusan pada digit ke-7, dan seterusnya. Mari kita rancang programnya;

1. Dibutuhkan counter. sediakan variabel global counter
int Counter=0;

2. Inisialisasi variabel remoteNum dengan kepala nomer
  char remoteNum[20]="08123456";

3. Isi variabel txtMsg dengan isi SMS yang dikirim
  char txtMsg[200]="Kredit lunak Tanpa Angsuran hingga 2M.\r\nHubungi 081211111567"; // Kalimat SMS 

4. Lakukan proses pembagian dengan 1000, 100, 10, dan masukan ke Array 'remoteNum' dibelakang kepala. Jika Kepala menempati remoteNum[0] hingga remoteNum[7], maka ribuan masukan ke remoteNum[8], ratusan ke remoteNum[9], puluhan ke remoteNum[10] dan satuan remoteNum[11].
Tambahkan juga 0 di akhir array sebagai tanda akhir array.
Dan yang juga penting  increment Counter.

  buff_Counter = Counter++;        // increment Counter

  remoteNum[8]=(buff_Counter/1000)+0x30; // Ribuan +0x30

  buff_Counter=(buff_Counter%1000);      // sisa disimpan buat ngitung yang lainnya

  

  remoteNum[9]=(buff_Counter/100)+0x30;   //Ratusan +0x30

  buff_Counter=(buff_Counter%100);         // sisa disimpan buat ngitung yang lainnya

  
  remoteNum[10]=(buff_Counter/10)+0x30;     //Puluhan +0x30

  remoteNum[11]=(buff_Counter%10)+0x30;     // sisa merupakan Satuan +0x30

  remoteNum[12]=0; // tanda akhir arrat char
5. Setelah selesai lalu dikirim   

 // send the message  

  sms.beginSMS(remoteNum);  
  sms.print(txtMsg);  
  sms.endSMS();   
  Serial.print(remoteNum);  
 Serial.println(txtMsg);  
 delay(3000);  

6. Jangan lupa beri pembatas Counter, agar satu nomer tidak dikirimi dua kali jika Counternya overflow.

 if ( Counter < 10000){

:

:

}

Program Lengkapnya adalah

/* 
 SMS sender 
 
 This sketch, for the Arduino GSM shield,sends an SMS message  
 you enter in the serial monitor. Connect your Arduino with the  
 GSM shield and SIM card, open the serial monitor, and wait for  
 the "READY" message to appear in the monitor. Next, type a  
 message to send and press "return". Make sure the serial  
 monitor is set to send a newline when you press return. 
 
 Circuit: 
 * GSM shield  
 * SIM card that can send SMS 
 
 created 25 Feb 2012 
 by Tom Igoe 
 
 This example is in the public domain. 
 
 http://arduino.cc/en/Tutorial/GSMExamplesSendSMS 
 
 */

// Include the GSM library  
#include <GSM.h>  

#define PINNUMBER ""  

// initialize the library instance  
GSM gsmAccess;  
GSM_SMS sms;  
int Counter=0;
void setup()  
{  
  // initialize serial communications and wait for port to open:  
  Serial.begin(9600);  
  while (!Serial) {  
    ; // wait for serial port to connect. Needed for Leonardo only  
  }  

  Serial.println("SMS Messages Sender");  

  // connection state  
  boolean notConnected = true;  

  //==================================================================  
  bool resp;  
  char auxLocate1 [4];  

  theGSM3ShieldV1ModemCore.gss.begin(9600);  
  gsmAccess.prepareAuxLocate(PSTR("OK"), auxLocate1);  
  theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT"));  
  delay(400);   
  theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1);  
  if(resp) {  
    gsmAccess.ModemConfiguration(PINNUMBER);      
    notConnected = false;  
  }  
  //==================================================================  

  // Start GSM shield  
  // If your SIM has PIN, pass it as a parameter of begin() in quotes  
  while(notConnected)  
  {  
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)  
      notConnected = false;  
    else  
    {  
      Serial.println("Not connected");  
      delay(1000);  
    }  
  }  

  Serial.println("GSM initialized");  
  theGSM3ShieldV1ModemCore.setStatus(GSM_READY);
}  

void loop()  
{ 
  if ( Counter < 10000){
    char remoteNum[20]="08123456"; //Ganti dengan kepala Nomor HP
    char txtMsg[200]="Kredit lunak Tanpa Angsuran hingga 2M.\r\nHubungi 081211111567"; // Kalimat SMS  
    int buff_Counter;

    buff_Counter = Counter++;        // increment Counter
    remoteNum[8]=(buff_Counter/1000)+0x30; // Ribuan +0x30
    buff_Counter=(buff_Counter%1000);      // sisa disimpan buat ngitung yang lainnya

    remoteNum[9]=(buff_Counter/100)+0x30;   //Ratusan +0x30
    buff_Counter=(buff_Counter%100);         // sisa disimpan buat ngitung yang lainnya

    remoteNum[10]=(buff_Counter/10)+0x30;     //Puluhan +0x30
    remoteNum[11]=(buff_Counter%10)+0x30;     // sisa merupakan Satuan +0x30
    remoteNum[12]=0; // tanda akhir arrat char


    // send the message  
    sms.beginSMS(remoteNum);  
    sms.print(txtMsg);  
    sms.endSMS();   

    Serial.print(remoteNum);  
    Serial.println(txtMsg);  
    delay(3000);  
  }
}  

Kalo kuat saya cuma 100 SMS gimana programnya Mas? Ya sama saja. Oke deh saya buatkan he...



/* 
 SMS sender 
 
 This sketch, for the Arduino GSM shield,sends an SMS message  
 you enter in the serial monitor. Connect your Arduino with the  
 GSM shield and SIM card, open the serial monitor, and wait for  
 the "READY" message to appear in the monitor. Next, type a  
 message to send and press "return". Make sure the serial  
 monitor is set to send a newline when you press return. 
 
 Circuit: 
 * GSM shield  
 * SIM card that can send SMS 
 
 created 25 Feb 2012 
 by Tom Igoe 
 
 This example is in the public domain. 
 
 http://arduino.cc/en/Tutorial/GSMExamplesSendSMS 
 
 */

// Include the GSM library  
#include <GSM.h>  

#define PINNUMBER ""  

// initialize the library instance  
GSM gsmAccess;  
GSM_SMS sms;  
int Counter=0;
void setup()  
{  
  // initialize serial communications and wait for port to open:  
  Serial.begin(9600);  
  while (!Serial) {  
    ; // wait for serial port to connect. Needed for Leonardo only  
  }  

  Serial.println("SMS Messages Sender");  

  // connection state  
  boolean notConnected = true;  

  //==================================================================  
  bool resp;  
  char auxLocate1 [4];  

  theGSM3ShieldV1ModemCore.gss.begin(9600);  
  gsmAccess.prepareAuxLocate(PSTR("OK"), auxLocate1);  
  theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT"));  
  delay(400);   
  theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1);  
  if(resp) {  
    gsmAccess.ModemConfiguration(PINNUMBER);      
    notConnected = false;  
  }  
  //==================================================================  

  // Start GSM shield  
  // If your SIM has PIN, pass it as a parameter of begin() in quotes  
  while(notConnected)  
  {  
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)  
      notConnected = false;  
    else  
    {  
      Serial.println("Not connected");  
      delay(1000);  
    }  
  }  

  Serial.println("GSM initialized");  
  theGSM3ShieldV1ModemCore.setStatus(GSM_READY);
}  

void loop()  
{ 
  if ( Counter < 100){
    char remoteNum[20]="0812345678"; //Ganti dengan Kepala Nomor HP
    char txtMsg[200]="Kredit lunak Tanpa Angsuran hingga 2M.\r\nHubungi 081211111567"; // Kalimat SMS  
    int buff_Counter;

    buff_Counter = Counter++;        // increment Counter
    remoteNum[10]=(buff_Counter/10)+0x30;     //Puluhan +0x30
    remoteNum[11]=(buff_Counter%10)+0x30;     // sisa merupakan Satuan +0x30
    remoteNum[12]=0; // tanda akhir arrat char


    // send the message  
    sms.beginSMS(remoteNum);  
    sms.print(txtMsg);  
    sms.endSMS();   

    Serial.print(remoteNum);  
    Serial.println(txtMsg);  
    delay(3000);  
  }
}  

Lebih mudah bukan?

Semoga Bermanfaat.










Baca SelengkapnyaNgiklan pakai SMS

Thursday, November 13, 2014

Boom SMS

Teknologi bisa digunakan untuk kebaikan dan bisa digunakan untuk kejahatan. Ditangan Seniman, pisau bisa digunakan untuk membuat kursi pahat, sedangkan ditangan Penjahat, pisa bisa digunakan untuk menodong.
 Berikut ini salah satu contoh penggunaan teknologi. Saya mempostingnya bukan bermaksud mengajari berbuat salah, tapi supaya teman-teman tau, mengerti ilmunya, atau buat sedikit lucu-lucuan boleh he.... :P.
Buat ngebom "mama minta pulsa" juga boleh. hehe....
Ilmu membunuh itu wajib dipelajari (bagi yg sampai makomnya), tapi membunuh itu jangan pernah anda lakukan. Buat apa? Dokter forensik pasti belajar ilmu membunuh agar dapat mengetahui sebab, cara, waktu dan tempat korban terbunuh (kebanyakan lihat NCIS sih.... hehe.....) Ilmu mencuri, sebagian besar polisi tau dan mempelajari, agar dapat menangkap pencuri.

Ceritanya sudah dulu ya. kita langsung ke pokok masalah. Eh udah mupeng ya? Mau ngusilin pacarnya.... Hayo kamu ketahuan :) :P

Bahan apa saja yang diperlukan?
  1. GSMduino atau Shield GSM beserta ARDUINOnya. Buat Hardware sendiri juga boleh he...
  2. Power Suplay 12V/2A 

  1. SIMCARD yang ada pulsanya. Harusnya sih pulsanya buannnyak.... Kan mau buat ngeboom..
     Hehe... ngiklan ya saya. Kartu apa saja bisa dipakai kok. Yang penting pulsanya banyak.
  2. PC dengan aplikasi ARDUINO. Kalo belum punya aplikasinya silahkan download di sini dulu.
  3. Program Boom yang akan kita bahas.
Secanggih apapun HP yang anda punya punya pasti tidak dapat memblokir SMS. Ada program blokir SMS di Android atawa Iphone, tapi sifatnya terima dulu, baru dilihat dari siapa. Kalo dari nomor yang ditandai maka akan dimasukkan ke trash. Kalo terus menerus kita kirimkan lama-lama folder trash-nya penuh he... bisa juga bikin hang tuh.

Wokeh langsung saja. Berdasarkan ngelmu yang kita dapat posting-posting terdahulu, yaitu sendSMS, jika nomer SMS dan kalimat SMS kita tetapkan, dan di dalam loop tidak terdapat permintaan masukan maka akan jadi looping kirim SMS kenomer yang sama berulang-ulang hingga;
  1. pulsa habis. Tergantung anda ngisi pulsanya berapa he...
  2. diblokir operator. kejadian diblokir oleh operator juka sudah ratusan SMS terkirim atau ada laporan dari yang punya nomor yang kena boom.
Mari kita lihat program sendSMS yang akan kita modif jadi BOO SMS.

/*
 SMS sender
 
 This sketch, for the Arduino GSM shield,sends an SMS message 
 you enter in the serial monitor. Connect your Arduino with the 
 GSM shield and SIM card, open the serial monitor, and wait for 
 the "READY" message to appear in the monitor. Next, type a 
 message to send and press "return". Make sure the serial 
 monitor is set to send a newline when you press return.
 
 Circuit:
 * GSM shield 
 * SIM card that can send SMS
 
 created 25 Feb 2012
 by Tom Igoe
 
 This example is in the public domain.
 
 http://arduino.cc/en/Tutorial/GSMExamplesSendSMS
 
 */

// Include the GSM library
#include <GSM.h>;

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup()
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  
  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

//==================================================================
  bool resp;
  char auxLocate1 [4];
 
  theGSM3ShieldV1ModemCore.gss.begin(9600);
  gsmAccess.prepareAuxLocate(PSTR("OK"), auxLocate1);
  theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT"));
  delay(400); 
  theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1);
  if(resp) {
    gsmAccess.ModemConfiguration(PINNUMBER);    
    notConnected = false;
  }
//==================================================================
 
  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  
  Serial.println("GSM initialized");
  theGSM3ShieldV1ModemCore.setStatus(GSM_READY);}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);
    
  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);
 

  
  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }
}

Pada baris;
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);
    
  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);
  

Kita hilangkan dan kita ganti;

  char remoteNum[20]="08123456xxxx";  // Ganti dengan Nomor HP yang mau di BOOM

  char txtMsg[200]="ini Boom SMS";      // Kalimat SMS

       delay(3000);


Program Lengkapnya adalah sebagai berikut;

/*
 SMS sender
 
 This sketch, for the Arduino GSM shield,sends an SMS message 
 you enter in the serial monitor. Connect your Arduino with the 
 GSM shield and SIM card, open the serial monitor, and wait for 
 the "READY" message to appear in the monitor. Next, type a 
 message to send and press "return". Make sure the serial 
 monitor is set to send a newline when you press return.
 
 Circuit:
 * GSM shield 
 * SIM card that can send SMS
 
 created 25 Feb 2012
 by Tom Igoe
 
 This example is in the public domain.
 
 http://arduino.cc/en/Tutorial/GSMExamplesSendSMS
 
 */

// Include the GSM library
#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup()
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  
  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

//==================================================================
  bool resp;
  char auxLocate1 [4];
 
  theGSM3ShieldV1ModemCore.gss.begin(9600);
  gsmAccess.prepareAuxLocate(PSTR("OK"), auxLocate1);
  theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT"));
  delay(400); 
  theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1);
  if(resp) {
    gsmAccess.ModemConfiguration(PINNUMBER);    
    notConnected = false;
  }
//==================================================================
 
  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  
  Serial.println("GSM initialized");
  theGSM3ShieldV1ModemCore.setStatus(GSM_READY);
}

void loop()
{
/*
  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);
    
  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);
 
*/
  char remoteNum[20]="08123456xxxx"; //Ganti dengan Nomor HP yang mau di BOOM
  char txtMsg[200]="ini Boom SMS"; // Kalimat SMS
       delay(3000);
 
  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");

}
Kalo tidak bisa di compile, mungkin anda lupa sedikit modifikasi di sendSMS II. Coba dibaca dan lakukan modif dikit di 'ModemConfiguration'

Teknologi di tangan saya jadi blog, bagaimana teknologi di tangan anda?
 Pesan saya JANGAN DISALAH GUNAKAN YA. :)

Baca SelengkapnyaBoom SMS

Wednesday, November 12, 2014

Send SMS jilid II

Mari kita lanjutkan ke jilid II, coz masih banyak PR dari jilid I :)
Ingat-ingat, apaya PRnya?

Error-nya harus pencat-pencet tombol RESET Mas. Kalo ngak dikasih tau ngak jadi jatuh cinta sama GSMduino Mas ADP. he...

Mari kita inventaris apa sajakah yang dilakuka pada saat proyek mengirim SMS kemarin? Mari kita buat daftarnya,yaitu;
  1. Buka program sendSMS.ino
  2. Hubungkan GSMduino dengan PC
  3. Upload program ke Hardware
  4. Buka 'Serial Monitor'
  5. kalo LED NET mati tekan RESET.
Buat bekal kita mencari error yang terjadi, beberapa informasi dasar dan flowchart-flowchart proses yang terjadi kita bahas dahulu.

Yang pertama, mari kita bahas proses menyalakan modul GSM. Untuk menyalakan modul GSM, setelah diberi catudaya 3.4-4.5V dan SIMCARD terpasang pada tempatnya, Pin PWRKEY harus diberi logika 0 atawa dihubungkan ke GND lebih dari 2detik. Masalah catudaya pada GSMduino sudah ada yang ngurus, anda tidak perlu pusing menentukan tegangan. Yang penting sumber catudaya 9-12V/2A terhubung dengan GSMduino. Masalah SIMCARD, harus dipastikan SIM-nya masih hidup dan ada pulsanya. Mengenai Pin PWRKEY dari datasheet M10 (modul GSM yang kita pakai);

Selain menghidupkan dengan PWRKEY, modul GSM juga dapat dihidupkan lewat RTC. Menghidupkan modul GSM lewat RTC kayaknya masih berat dibahas di sini. Dari pada nanti malah tidak fokus lebih baik tidak dibahas dulu ya :). (padahal yg nulis juga belum ngeh he....).

Yang ke dua, kita bahas bagaimana mematikan modul GSM. Dari datasheet M10, untuk mematikan modul GSM sama dengan menghidupkannya, yaitu memberi logika 0 pada Pin PWRKEY. Dari datasheet M10;


Yang ke dua kita buat flowchartnya. Flowchart program yang kita buat adalah seperti gambar di bawah ini:


 Kalo dilihat dari flowchart, sepertinya sudah benar. Tidak terdapat hal-hal yang aneh, atawa membikin error.


Sekarang kita bahas proses Upload perogram ARDUINO ke hardware. Saat tombol Upload pada sketch ditekan, proses yang dilakukan adalah Compiling program dan kemudian Upload program ke mikrokontroler.

 
Flowchart di atas adalah proses Upload program yang dilakukan sketch (PC) ke mikrokontroler. Lalu bagaimana proses yang terjadi pada mikrokontroler? Berikut ini flowchartnya;


Ternyata pada saat 'Serial Monitor' dibuka juga melakukan proses RESET. Apa saja yang terjadi? berikut ini flowchartnya;


Lalu......?! pusing? sama. hehe.......
Mari kita urutkan kembali.
Langkah 1 (buka program) dan langkah 2 (hubungkan GSMduino dengan PC) kayaknya biasa saja, normatif.
Langkah 3 (Upload program ke hardware) setelah selasai terjadi 1xRESET
Langkah 4 (Buka 'Serial Monitor') terjadi lagi 1xRESET
Mari kita teliti lagi.
  1. setiap RESET, prosedur 'setup' dipanggil.
  2. Isi prosedur 'setup' salah satunya adalah menghidupkan/menyalakan  modulGSM
  3. Setiap menghidupkan modulGSM terjadi Pin PWRKEY aktif LOW.
  4. Pin PWRKEY aktif LOW digunakan untuk menghidupkan dan mematikan modul GSM.

Dari urut-urutan di atas sudah ketemu belum yg menyebabkan ERROR?
Ya Anda Benar! terjadi 2xRESET yaitu pada Langkah 3 dan Langkah 4. RESET pertama akan menghidupkan modul GSM, sedangkan RESET yang kedua malah akan mematikan modul GSM.

Wah.... kok jelek gini rancangan!
sek Mas sabar.... sabar... itu cuma salah satu kelemahan program yg dibuat oleh bule, diantara segambreng kemudahan yang bisa di dapatkan. Tugas kita adalah membuat bubur menjadi enak, caranya ya dikasih bumbu. he...

Cara yang saya usulkan adalah sebelum melakukan RESET, tanyakan dulu apakah modul GSM dalam keadaan hidup atau mati. Jika mati lakukan RESET, jika hidup lompati saja proses RESET.
Setuju Mas, tapi bijimana caranya?
Biasanya jika seseorang masih hidup, maka jika diajukan pertanyaan padanya akan dia jawab. Kalo orang mati ya ngak bisa jawab lagi. Setuju?
Sama dengan modul GSM, jika masih hidup maka jika ditanya akan di jawab, tapi jika mati, ditanya maka akan diam seribu bahasa.
Nanyanya gimana Mas?
Kalo anda mungkin ditanya dengan bahasa Indonesia akan jawab, karena anda bisa bahasa Indonesia. Kalo modul GSM ya nanyanya pakai AT command. Ya betul tanya dengan pertanyaan 'AT/r', kalo hidup maka akan dijawab 'OK', kalo mati ngak akan di jawab.

Mari kita bedah 'setup' tempat RESET terjadi. Isi prosedur 'setup' adalah sebagai berikut;

// initialize serial communications and wait for port to open:

  Serial.begin(9600);
  while (!Serial) {

    ; // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.println("SMS Messages Sender");

// connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)

  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)

      notConnected = false;
    else

    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  Serial.println("GSM initialized");

Mana to yang menyebabkan RESET? Ya perintah;

gsmAccess.begin(PINNUMBER)

Perintah ini dieksekusi jika 'notConnected' bernilai 'true'. Padahal variabel ini di atas dideklarasikan dan diberi nilai 'true'

  // connection state
  boolean notConnected = true;

Heladalah, belum-belum sudah yakin 'true' he... (bule yg buat :) )

Modul GSM Conected atawa tidak kan kita ngak tau. sebelum RESET ternyata modul GSM sudah hidup kan harusnya berarti 'notConnected = false'.

Nah kita cari tau dulu status modul GSM baru kita tentukan 'true' atau 'false'. Caranya adalah dengan menambah perintah sebagai berikut;

//==================================================================
  bool resp;
  char auxLocate1 [4];

  theGSM3ShieldV1ModemCore.gss.begin(9600);
  gsmAccess.prepareAuxLocate(PSTR("OK"), auxLocate1);
  theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT"));
  delay(400); 
  theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1);
  if(resp) {
    gsmAccess.ModemConfiguration(PINNUMBER);    
    notConnected = false;
  }
//==================================================================

Selipkan program di atas di bawah deklarasi 'notConected'. Sehingga program keseluruhan adalah;

/* 
     SMS sender 
     
     This sketch, for the Arduino GSM shield,sends an SMS message  
     you enter in the serial monitor. Connect your Arduino with the  
     GSM shield and SIM card, open the serial monitor, and wait for  
     the "READY" message to appear in the monitor. Next, type a  
     message to send and press "return". Make sure the serial  
     monitor is set to send a newline when you press return. 
     
     Circuit: 
     * GSM shield  
     * SIM card that can send SMS 
     
     created 25 Feb 2012 
     by Tom Igoe 
     
     This example is in the public domain. 
     
     http://arduino.cc/en/Tutorial/GSMExamplesSendSMS 
     
     */ 
      
    // Include the GSM library
    #include <GSM.h>  
      
    #define PINNUMBER ""  
      
    // initialize the library instance  
    GSM gsmAccess;  
    GSM_SMS sms;  
      
    void setup()  
    {  
    // initialize serial communications and wait for port to open:
      Serial.begin(9600);  
      while (!Serial) {  
        ; // wait for serial port to connect. Needed for Leonardo only  
      }  
        
      Serial.println("SMS Messages Sender");  
      
    // connection state 
      boolean notConnected = true;  
      
    //==================================================================
      bool resp;  
      char auxLocate1 [4];  
      
      theGSM3ShieldV1ModemCore.gss.begin(9600);  
      gsmAccess.prepareAuxLocate(PSTR("OK"), auxLocate1);  
      theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT"));  
      delay(400);   
      theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1);  
      if(resp) {  
        gsmAccess.ModemConfiguration(PINNUMBER);      
        notConnected = false;  
      }  
      
    //==================================================================  
      // Start GSM shield  
      // If your SIM has PIN, pass it as a parameter of begin() in quotes 
      while(notConnected)  
      {  
        if(gsmAccess.begin(PINNUMBER)==GSM_READY)  
          notConnected = false;  
        else  
        {  
          Serial.println("Not connected");  
          delay(1000);  
        }  
      }  
        
      Serial.println("GSM initialized");  
  theGSM3ShieldV1ModemCore.setStatus(GSM_READY);
 }  
      
    void loop()  
    {  
      
      Serial.print("Enter a mobile number: ");  
      char remoteNum[20];  // telephone number to send sms
      readSerial(remoteNum);  
      Serial.println(remoteNum);  
         
      // sms text  
      Serial.print("Now, enter SMS content: ");  
      char txtMsg[200];  
      readSerial(txtMsg);  
      Serial.println("SENDING");  
      Serial.println();  
      Serial.println("Message:");  
      Serial.println(txtMsg);  
        
      // send the message 
      sms.beginSMS(remoteNum);  
      sms.print(txtMsg);  
      sms.endSMS();   
      Serial.println("\nCOMPLETE!\n");  
    }  
      
    /* 
      Read input serial 
     */  
    int readSerial(char result[])  
    {  
      int i = 0;  
      while(1)  
      {  
        while (Serial.available() > 0)  
        {  
          char inChar = Serial.read();  
          if (inChar == '\n')  
          {  
            result[i] = '\0';  
            Serial.flush();  
            return 0;  
          }  
          if(inChar!='\r')  
          {  
            result[i] = inChar;  
            i++;  
          }  
        }  
      }  
    } 

 Untuk ganti gsmAccess.begin(PINNUMBER) kita harus memanggil perintah gsmAccess.ModemConfiguration(PINNUMBER).  

Sayangnya perintah ini dalam class GSM berada dalam akses 'privat'. Agak bersusah-susah dikit, tapi jangan takut. Cari file;

......arduino-1.0.5-r2\libraries\GSM\GSM3ShieldV1AccessProvider.h


Letaknya di \libraries\GSM\ pada folder ARDUINO anda.
Anda bisa membukanya dengan Syn editor, VisualC++, Ultra Edit, VB, Delphi, AVRStudio atau editor apapun, tapi jangan notepad, karena nanti acak-acakan tampilannya (kalo terpaksa ngak apa2 he...).
Ini saya buka dengan Delphi.


 Hasilnya

 Jangan lupa di Save.

Guna proses di atas adalah; supaya 'gsmAccess.ModemConfiguration' dapat kita akses untuk menggantikan 'gsmAccess.begin' yang ingin kita hindari karena ada proses LOW Pin PWRKEY.
Ayo kita bahas penambahan perintah yang kita buat. Pertama adalah deklarasi variabel yang kita butuhkan.

  bool resp;
  char auxLocate1 [4];

 Yang kedua adalah perintah mendeklarasikan serial emulator bagi modul GSM. Sebetulnya di dalam perintah 'gsmAccess.begin(PINNUMBER)', perintah ini akan dipanggil, tapi di dalamnya juga akan ada perintah PWRKEY aktif LOW yang kita hindari terlebih dahulu.

  theGSM3ShieldV1ModemCore.gss.begin(9600);

Perintah ke tiga adalah menentukan string yang akan di bandingkan dengan jawaban modul GSM. Jawaban yang diharapkan adalah 'OK'. Perintahnya adalah;

gsmAccess.prepareAuxLocate(PSTR("OK"), auxLocate1);

Perintah ke empat adalah perintah tanya ke modul GSM, yaitu perintah 'AT/r'.

theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT"));
Perintah ke lima tunda 400mS, untuk memberi waktu modul GSM menjawab.

 delay(400); 

Perintah ke enam adalah perintah membandingkan. Jika dijawab 'OK' maka variabel 'notConnected' kita rubah menjadi 'false' agar perintah 'gsmAccess.begin(PINNUMBER)',tidak di eksekusi.

  theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1);
  if(resp) {
    gsmAccess.ModemConfiguration(PINNUMBER);    
    notConnected = false;
  }

Dan jangan lupa kasih status GSM_READY supaya GSM bisa buat SMSan :). Pemberian status ini dapat dilakukan di akhir prosedur setup.

 theGSM3ShieldV1ModemCore.setStatus(GSM_READY);

Kalo status anda apa? Kawain atau Tidak Kawin hehe....
Sudah sehat sekarang program kita :)

Jangan jemu ya menunggu posting berikutnya. Pasti tambah SERU!
Semoga Bermanfaat.

Baca SelengkapnyaSend SMS jilid II

Send SMS jilid I

Proyek pertama yang menggunakan fungsi GSM adalah mengirim SMS. Karena akan menggunakan fungsi GSM, maka pindahkan jumper dari 'Ardu' ke 'GSM'. Sedangkan Serial Select menggunakan serial emulator VRx dan VTx. VRx adalah pin D2 dan VTx adalah pin D3 seperti yang digunakan oleh Official GSM SHIELD Arduino. Hardware serial Rx dan Tx digunakan sebagai download program dan debug.


Persiapan hardwarenya belum cukup. Lho kok?
Modul GSM kadang memerlukan arus hingga 2A berupa burst. Malah pusing saya Mas, burst itu apa?
Burst itu berupa pulsa-pulsa yang rapat dan hanya singkat. Tambah ngak ngerti saya Mas. Wislah pokok intinya tidak dapat hanya mengandalkan sumber daya dari USB. Harus ada sumber yang lain, yaitu dari battray atau catu daya. Lebih bagus lagi ada kedua-duanya. Catu daya disarankan 2A, kalo terpaksa 1A cukuplah, tapi ada kemungkinan bisa mati tuh GSM karena kurang daya.


 Satu lagi yang sangat plenting, eh PENTING. Jangan lupa pasang SIMCARD pada soketnya. Bahasa kerennya SIMCAR DHOLDER. Pakai SIM yang masih hidupya, dan di isi dulu pulsanya. jangan cuma 2000 hehe... Nanti alatnya ngak jalan anda ngoceh bau di telinga saya panjang lebar, ternyata SIMnya ngak ada isi. Lak yo capedeh saya. Mana obat kuping mahal lagi he....



Program kirim SMS menggunakan program yang ada dalam 'libraries GSM' Oficial Arduino. Buka sample 'SendSMS.ino'. Dari folder tempat menyimpan Arduino, pilih libraries, GSM, examples, SendSMS lalu SendSMS.ino.
Kalo di Komputer saya ada di folder berikut;




 Ini dia penampakannya;

Mas yg mana sih? Wis buka Arduino-mu, terus copy/paste program di bawah ini ke Sketch-nya


/*

 SMS sender



 This sketch, for the Arduino GSM shield,sends an SMS message 

 you enter in the serial monitor. Connect your Arduino with the 

 GSM shield and SIM card, open the serial monitor, and wait for 

 the "READY" message to appear in the monitor. Next, type a 

 message to send and press "return". Make sure the serial 

 monitor is set to send a newline when you press return.



 Circuit:

 * GSM shield 

 * SIM card that can send SMS



 created 25 Feb 2012

 by Tom Igoe



 This example is in the public domain.



 http://arduino.cc/en/Tutorial/GSMExamplesSendSMS



 */



// Include the GSM library

#include <GSM.h>



#define PINNUMBER ""



// initialize the library instance

GSM gsmAccess;

GSM_SMS sms;



void setup()

{

  // initialize serial communications and wait for port to open:

  Serial.begin(9600);

  while (!Serial) {

    ; // wait for serial port to connect. Needed for Leonardo only

  }

  

  Serial.println("SMS Messages Sender");



  // connection state

  boolean notConnected = true;



  // Start GSM shield

  // If your SIM has PIN, pass it as a parameter of begin() in quotes

  while(notConnected)

  {

    if(gsmAccess.begin(PINNUMBER)==GSM_READY)

      notConnected = false;

    else

    {

      Serial.println("Not connected");

      delay(1000);

    }

  }

  

  Serial.println("GSM initialized");

}



void loop()

{



  Serial.print("Enter a mobile number: ");

  char remoteNum[20];  // telephone number to send sms

  readSerial(remoteNum);

  Serial.println(remoteNum);

    

  // sms text

  Serial.print("Now, enter SMS content: ");

  char txtMsg[200];

  readSerial(txtMsg);

  Serial.println("SENDING");

  Serial.println();

  Serial.println("Message:");

  Serial.println(txtMsg);

  

  // send the message

  sms.beginSMS(remoteNum);

  sms.print(txtMsg);

  sms.endSMS(); 

  Serial.println("\nCOMPLETE!\n");

}



/*

  Read input serial

 */

int readSerial(char result[])

{

  int i = 0;

  while(1)

  {

    while (Serial.available() > 0)

    {

      char inChar = Serial.read();

      if (inChar == '\n')

      {

        result[i] = '\0';

        Serial.flush();

        return 0;

      }

      if(inChar!='\r')

      {

        result[i] = inChar;

        i++;

      }

    }

  }

}

Upload program ke GSMduino, setelah 'Done Uploding' buka 'Serial Monitor', shortcart-nya tekan  Ctrl+Shift+M


 Led NET juga akan berkedip.

 Sekarang kerjaan kita menunggu. Lho kok menunggu? Sama seperti menghidupkan HP, HP harus melakukan inisialisasi, mencari jaringan, mendaftar kejaringan dan lain sebagainya. Tugas kita adalah selalu lihat Led NET apakah mati. Jika mati ada dua kemungkinan:
  1. Power suplay tidak sanggup memberikan arus hingga 2A, sehingga tegangan droup ke 3.2V. Oh iya belum kasih tau ya. Kalo tegangan droup sampai 3.2V atau dibawahnya, modul GSM akan mati dengan sendirinya.
  2.  Terjadi RESET mikro 2 kali.
Kasus yang pertama solusinya ya ganti adaptor sebagai power suplay yang lebih besar amper-nya.
Kasus yang ke dua solusinya tekan tombol RESET sekali lagi, dan tunggu hingga Led NET menyala.






Lho kok ngak praktis!! Harus campur tangan manusia. Gimana ini, mau di pasang di atas Gunung Merapi buat log data!

Sik-sik Mas Bro. Sampai di sini ngelmu kita masih seperti bayi, harus disuapi, harus digendong hehe.... entar kita bahas mengapa begitu, mengapa begini. Entar juga Anda lebih Jago dari saya, saya JAMIN!* (syarat dan ketentuan berlaku)
Syaratnya mau belajar, ketentuannya buat modulnya, ehe..m.. kalo malas buat, boleh beli dari saya hehe.... modus.


Wokeh kita tangguhkan dahulu masalah di atas, nanti kita bahas. Sekarang kita lanjutkan.

Serial monitor tadi jangan di tutup ya. Tunggu hingga Serial monitor menampilkan pesan seperti ini;


Nah kalo sudah ada kata-kata 'Enter a mobile number:', silahkan ketik nomor HP anda. Nomor tersebut yang akan dikirimi SMS.


Contoh di atas adalah dengan nomor saya (ganti dengan nomor HP anda). Jangan dikirim macem-macem ya nomor saya. Atau dibom SMS hehe...
Lalu tekan 'Send'


 Ketikan isi SMS yang ingin dikirim, lalu tekan 'Send'



 Wala.... SMS diterima di HP anda, Syaratnya SIMCARD ada pulsanya hehe...

Karena satu loop program telah terlewati, maka loop program akan berulang dari atas. Sekarang anda dapat mengirim SMS yang lain.
Bagai mana belajarnya? Asik bukan? Masih kuat? Atau semakin semangat. Kalo semakin semangat syukurlah.

 Mari kita bahas jalannya Program di atas. Sebelumnya, karena program ini menggunakan program official Arduino, maka anda dapat melihat referensi class-class yang digunakan  pada halaman web berikut.

Awal program GSM.h di include. Pada file GSM.h itulah semua kelas yang menangani GSM berada. PINNUMBER berisi string kosong, karena SIMCARD-nya tidak memakai PIN. Dua class yang dipakai pada program ini di inisialisasi di awal. class itu adalah class GSM dan class GSM_SMS, seperti berikut;

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

Dibuat object baru dari class 'GSM' dengan nama 'gsmAccess' dan object 'sms' dari class 'GSM_SMS'.'gsmAccess' bertugas mengurusi, menghidupkan, mematikan modul GSM. Sedangkan object 'sms' bertugas mengurusi segala sesuatu tentang SMS.

Seperti biasanya Arduino memiliki 2 prosedur utama yaitu 'setup' dan 'loop'. Pada prosedur 'setup' berisi inisialisasi-inisialisasi program dan pada prosedur 'loop' berisi looping utama program. Hal pertama yang dilakukan dalam prosedur 'setup' adalah inisialisasi hardware serial sebagai debug.

 
// initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
}


Berikutnya adalah menjalankan 'gsmAccess' yang merupakan class GSM.

  

// Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);

    }
  }

Pada procedur 'gsmAccess.begin(PINNUMBER)', dilakukan :
  1. Proses inisialisasi serial emulator untuk GSM. Serial ini akan digunakan untuk mengirim dan menerima perintah-perintah AT Command dari mikro ke modul GSM. Serial emulator ini menggunakan Pin digital 2&3. Pin ini tetap, tidak dapat diubah. Bautrate yang digunakan 9600bps, dan tidak dapat diubah juga.
  2. Proses menghidupkan modul GSM. Proses ini dilakukan dengan memberi logika rendah selama minimal 2detik ke Pin PWRKEY pada modul GSM. Karena Pin PWRKEY di kendalikan dengan sebuah transistor, maka logika dari mikro adalah HIGH untuk minimal 2detik. Oh iya. selain dengan program, proses menghidupkan modul GSM juga dapat dilakukan dengan menekan tombol 'START'.
  3. Proses menunggu hingga modul GSM masuk ke jaringan. Pertama dengan mengirim perintah "AT/r", dan harus dijawab "OK". ditunggu hingga di jawab. Setelah itu akan mengirim perintah "AT+CREG?/r", yang akan dijawab apakah hubung ke jaringan atau belum. Jika belum hubung maka perintah AT+CREG?/r" akan dikirim lagi. "AT+CREG?/r" adalah perintah AT Command untuk menanyakan keadaan hubungan modul GSM dengan jaringan GSM.
Nah setelah prosedur 'setup' selesai, maka program akan beranjak pada prosedur 'loop'. Pada prosedur loop hal yang pertama dilakukan adalah meminta input data nomor GSM yang akan dikirimi SMS. Input yang diminta melalui serial hardware, yaitu serial port yang digunakan sebagai debug.

 
Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);

   

Karena serial yang digunakan untuk debug terhubung  dengan  'Serial Monitor', jadi proses memasukan nomor dilakukan melalui 'Serial Monitor'.
Proses selanjutnya adalah meminta kalimat yang akan dikirim lewat SMS. kalimat ini juga diminta lewat serial debug, maka kalimat tersebut juga dimasukan melalui 'Serial Monitor'.

  
// sms text
Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);

 

Setelah proses menerima kalimat yang akan dikirim selesai, proses selanjutnya adalah mengirim SMS.

  
// send the message
sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");


Komplit sudah prosesnya. Program akan kembali ke atas loop, yaitu meminta nomer GSM yang akan di kirimi SMS.

 Karena sudah capek, masalah pencat-pencet RESET di atas kita bahas pada posting berikutnya ya. Anda yang baca semoga puas dan minta lagi hehe... kasihan dunk saya yang membahas. capekkkk....
Ngak lama lagi kita lanjutkan bahasan kita kok :)


Benarkan, program contoh official Arduino bisa jalan pada GSMduino :).

Baca SelengkapnyaSend SMS jilid I

Tuesday, November 11, 2014

Konektor pada GSMduino

Kalo anda merasa, "yah..... kok belum ke GSMnya sih....", maaf.
Memang sebaiknya hal-hal tentang hardware dibahas di awal, agar nantinya tinggal bahas sopwer yang asik-asik :)

selain female konektor standar ARDUINO, GSMduino juga menyertakan konektor male disamping pin analog dan pin digital. Pin male tersebut terdiri dari Pin GND, Analog, +5V


 dan Pin +5V, Digital, GND

 Penambahan Pin ini dimaksudkan untuk mempermudah dalam melakukan percobaan. Misalkan ingin menghubungkan sensor suhu LM35.

  Dengan 3 ruas kabel female-female dapat langsung kita hubungkan LM35 dengan GSMduino.











Baca SelengkapnyaKonektor pada GSMduino

GSMduino sebagai Arduino

GSMduino juga dapat digunakan sebagai arduino biasa. Artinya fungsi GSM/GPRSnya kita istirahatkan. eh terlalu keren ya bahasanya hehe... yg lebih gampang GSM/GPRSnya tidak kita pake. Ya GSMduino kita gunakan kayak menggunakan Arduino biasa. Caranya adalah sebagai berikut;



Cabut jumper serial select 'Rx' dan 'Tx', pindahkan jamper 'GSM' ke 'Ardu', seperti gambar di atas.

Waktunya untuk mencoba, apakah GSMduino dapat menjalankan program Arduino. Hubungkan GSMduino dengan PC melalui kabel USB.


 Nah kelihatan LED ON sudah menyala :). Eh sebelumnya PL2303HX revD harus sudah terinstal. Kalo belum terinstal, tolong download driver ini, terus buka file PDF petunjuknya. Pasti anda bisa deh kalo mau baca PDF-nya.

Buka contoh Arduino




pilih 'Blink.ino'


nah setelah itu pastikan Board yang dipilih adalah 'Arduino Duem w/ ATmega328'




Pilih juga serial port untuk PL2303HX revD yang kita instal tadi. Untuk PC saya serial portnya ada pada 'COM9'.


Mas saya kesulitan menentukan serial tersebut. di COM berapa ya? Kalo ada pertanyaan seperti ini coba buka 'Device Manager', klik 'Port (COM&LPT)'. Nah kelihatan mana yang punya 'Prolific'

Setelah itu kapal siap diberangkatkan he....
Pada Sketch Arduino tekan tombol 'Upload'.


Dan Hasilnya adalah;


wah..... masih kurang seruuu......... Kapan GSM-nya beraksi!
Wokeh deh kalo masih kurang seru ikuti terus posting-posting berikutnya (Y)





Baca SelengkapnyaGSMduino sebagai Arduino

Monday, November 10, 2014

Perkenalan GSMduino

Apa itu GSMduino?
GSMduino adalah minimum sistem berbasis Arduino yg sudah dilengkapi dengan Shield GSM/GPRS M10, 2 x Relay, 2 x Input Opto yang dapat menerima tegangan masukan dari 3-24V DC, charger battray, dan battray LiOn sebagai cadangan.
Seperti gambar berikut ini;

GSMduino menggunakan Prolific PL2303HX revD yang dapat di instal hingga window 8. Berikut ini driver PL2303HX revD.
Kelengkapan GSMduino dapat dilihat pada Gambar berikut ini;

GSMduino dilengkapi soket female Arduino yang dapat dipergunakan untuk shield-shield lain yang mungkin diperlukan, tentu kompaibel dengan shield-shield Arduino yang ada. Karena jamannya "Small is beautiful" (kata orang), maka port USB yang digunakan adalah mini USB. Kok ngak pakai microUSB? ah 11- 12, sama kecilnya :).

Tombol 'Reset' dapat digunakan seperti tombol 'Reset' pada Arduino, yaitu untuk me-Reset mikro ATmega328P, yang jadi jantung GSMduino. Tombol 'Start' digunakan untuk menghidupkan dan mematikan modul M10 GSM/GPRS. Selain dapat dihidupkan/dimatikan secara manual dengan menekan tombol 'Start', juga dapat dihidup/matikan melalui software. Nanti kita bahas pada bab-bab berikutnya :).

GSMduino dirancang untuk selalu hidup, walaupun sumber daya DC 9-12V sementara padam. Untuk itu GSMduino dilengkapi dengan battray cadangan. Battray yg digunakan adalah battray HP berjenis Litium ion (LiOn) 3.6V. Lho yg digunakan battray HP SOKIA kayaknya? Lha kan sama saja, sama-sama battray LiOn. Jangan takut, GSMduino dirancang oleh Seorang yang berpengalaman dengan GPS Tracker hampir 7Tahun :). Jika sumber DC 9-12V ada, maka selain mencatu GSMduino minimum, GSM/GPRS juga akan mengisi battray hingga penuh. Jika sudah penuh isi battray maka proses mengisi battray akan putus dengan sendirinya. Proses ini akan dilakukan otomatis oleh IC charger battray.

Jack 3.5mm disediakan untuk speaker dan mic, jika ingin bermain-main dengan telephone. Dua buah relay menyediakan Normally Open (NO) dan Normally Close (NC) yang siap digunakan untuk mengendalikan apa yang diinginkan. Dua buah input dapat digunakan untuk memasukakan logika ke mikro. Input ini terisolasi dengan Optocoupler. Selain itu input ini dilengkapi pembatas arus hingga dapat mengakomodasi tegangan input dari 3-24V DC.

Jika diperlukan penjadwalan, maka RTC yang berada didalam modul GSM/GPRS dapat dihidupkan, karena telah disediakan Super Elco 0,22F sebagai sumber RTC. Soket SIMCARD diletakan di depan agar mudah jika ingin mengganti SIMCARD. Kalo dibelakang susah harus balik2 untuk ganti 'Kartu' saja.

Antenna sebenarnya sudah disediakan berupa On Board Antenna. Disebagian besar wilayah Jawa baik desa maipun kota kiranya cukup menggunakan antenna ini. signal yang didapat sudah OK. Tower GSM seperti jamur dimusim penghujan, ada dimana2, he...
On Board Antenna dibuat pada PCB, berupa jalur PCB yang telah dihitung memenuhi kaidah 1/4 panjang gelombang dan kaidah perancangan antenna yang benar.

Nah kalo memang diperlukan, umpamanya di daerah terpencil, dapat ditambahkan antenna lagi. Yang dibutuhkan adalah konector SMA;

dan antenna;
Jika antenna A, mungkin tidak akan signifikan memeperbesar daya signal GSM dibanding On Board Antenna (sudah saya coba). dianjurkan menggunakan antenna jenis B yang lebih besar atenuasinya.

GSMduino dirancang menggunakan modul M10, modul yang sama digunakan oleh Official Arduino GSM Shield. Apa konsekwensinya? Konsekwensinya semua libraries, class dan contoh tentang GSM yang ada pada Official Arduino dapat berjalan pada GSMduino. Silahkan anda coba jika tidak percaya he....:)

Anda ngak perlu download dari yg lain, cukup download Arduino, disitu sudah terdapat libraris yang dapat anda gunakan untuk GSMduino, dan tentu saja dari blog ini sebagai pelengkap :P


Oh iya, kini jaman keterbuakaan ya. harus di open he... ini gambar rangkaiannya.
Sepertinya perkenalannya cukup, dilanjutkan ke posting-posting berikutnya ya. pasti seru :).


Baca SelengkapnyaPerkenalan GSMduino