Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label software. Tampilkan semua postingan
Tampilkan postingan dengan label software. Tampilkan semua postingan

Minggu, 10 Maret 2013

Tutorial Aplikasi Memanfaatkan Accelerometer Pada Android berbasis Adobe Air



Accelerometer merupakan sensor kemiringan yang umum terdapat pada Hanheld berbasis Android. Sensor ini memiliki fungsi untuk menentukan posisi tilting dari Handheld terhadap koordinat X, Y atau kadangkala memiliki juga koordinat Z utamanya pada HandHeld kelas tinggi.

Adobe Air memiliki kemampuan untuk mendeteksi sensor accelerometer dimana class atau script yang digunakan adalah "Accelerometer", contoh inisialisasi nya seperti berikut:


var theAcc:Accelerometer = new Accelerometer();


Seperti biasa kita akan menggunakan software development adobe flash CS 5.5 dan buatlah project "AIR FOR ANDROID" dan buatlah tampilan dengan gambar geometry yang kali ini sebagai contohnya menggunakan sebuah kotak.

(klik pada gambar untuk memperjelas)



Jangan lupa untuk merubah kotak tadi menjadi movieclip sehingga dapat diberikan nama dan akan diolah selanjutnya. Lanjutkan dengan membuat 1 layer pada timeline dan pada layer ini akan ditempatkan action script.




Lanjutkan dengan menambahkan script seperti ini :


var theAcc:Accelerometer = new Accelerometer();

theAcc.setRequestedUpdateInterval( 50 );
if (Accelerometer.isSupported == true) {
theAcc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
}else {
// do something different for the entire app
}
function onAccUpdate( e:AccelerometerEvent ):void {
 
posisi.text =kotak.x.toString() + " , " + kotak.y.toString() ;
acel.text =e.accelerationX.toString() + " , " + e.accelerationY.toString() ;

kotak.x -= ( e.accelerationX * 50);
kotak.y += ( e.accelerationY * 50);
if ( kotak.x < 0 ) {
kotak.x = 0;
} else if (kotak.x > (stage.stageWidth - 30)  ) {
kotak.x = stage.stageWidth - 30 ;
}
if ( kotak.y < 0 ) {
kotak.y = 0;
} else if (kotak.y > (stage.stageHeight -30) ) {
kotak.y = stage.stageHeight -30 ;
}

}



Pada script diatas terlihat bahwa posisi dari movieclip bernama kotak akan dirubah-rubah sesuai dengan nilai dari kemiringan accelerometer X dan Y. Pada bawah dari aplikasi terdapat tracing yang berguna untuk melihat posisi kotak dan pembacaan dari accelerometer. Source Code (adobe flash CS5.5) dapat didownload disini.


SELAMAT MENCOBA 
Share:

Sabtu, 09 Maret 2013

Tutorial Aplikasi Touch Sensor Pada Android berbasis Adobe Air




Salah satu fasilitas yang sangat umum dijumpai pada smartphone berbasis android adalah touch sensor pada layar. Selain Touch ada juga fasilitas yang dinamakan gesture yaitu kombinasi penekanan beberapa jari untuk mendapatkan efek tertentu.  Kali ini kita akan bermain-main dengan fasilitash touch dan drag. Seperti pada pembahasan sebelumnya, adobe air besutan pengembang Adobe memiliki keunggulan pada kemudahan desain yang bisa dibilang 10x lebih mudah jika dibanding dengan SDK asli yang berbasis eclipse-java.


klik pada gambar untuk melihat lebih jelas


Sebelum memulai ada baiknya melihat pembahasan sebelumnya karena beberapa pembahasan yang serupa akan di lewati. Langkah awal yang kita buat adalah sebuah lingkaran atau bentuk geometri lain. Bentuk geometri ini nantinya akan digerak-gerakkan oleh jari-jemari. Pada contoh yang dibuat penulis, bentuk geometry berupa lingkaran dan memiliki animasi lingkaran luar yang mengembang-kempis. Jangan lupa untuk merubah bentuk geometri ini menjadi movieclip agar bisa dipanggil sebagai library class , seperti contoh pada gambar dibawah.




Cara penamaan class adalah dengan melakukan click kanan pada nama library lingkaran tadi kemudian pilih properties, atau bisa juga pada saat merubah kedalam movieclip. Beri nama class sesuai keinginan.




Pada gambar diatas adalah contoh membuat animasi lingkaran kembang-kempis dengan menggunakan tweening. Proses twieen akan secara otomatis membuat animasi sesuai perubahan antara key frame start dan key frame selanjutnya, tanpa harus merubah gambar pada semua frame.



Selanjutnya kita akan menuju ke scripting. Class yang paling penting dalam pemrograman touch sensor adalah :


Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; 



Selanjutnya experimen pertama adalah dengan menampilkan gambar lingkaran setiap kali layar ditekan. Script nya seperti dibawah ini:


Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; 

var bola:lingkaran;

stage.addEventListener(TouchEvent.TOUCH_BEGIN, mulai); 



function mulai(evt:TouchEvent):void{


bola=new lingkaran;
addChild(bola);

bola.x=evt.stageX;
bola.y=evt.stageY;

}








Jika ingin mempublish ke HandHeld Android kamu, sebaiknya baca dulu pembahasan sebelumnya disini

Hasil dari script pertama adalah munculnya gambar lingkaran setiap kali layar ditekan. Bagaimana jika kita ingin menghilangkan lingkaran saat jari diangkat dari layar ? ubah scriptnya seperti ini :



Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; 

var bola:lingkaran;

stage.addEventListener(TouchEvent.TOUCH_BEGIN, mulai); 
stage.addEventListener(TouchEvent.TOUCH_END, selesai);


function mulai(evt:TouchEvent):void{

if(bola == null){

bola=new lingkaran;
addChild(bola);

bola.x=evt.stageX;
bola.y=evt.stageY;
}


}


function selesai(evt:TouchEvent) {
 
 removeChild(bola);
 bola=null;
 
}




Well...kenapa tidak kita gerak-gerakkan saja lingkaran ini ? Hajar saja bos !!


Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; 

var bola:lingkaran;

stage.addEventListener(TouchEvent.TOUCH_BEGIN, mulai); 
stage.addEventListener(TouchEvent.TOUCH_END, selesai);
stage.addEventListener(TouchEvent.TOUCH_MOVE, gerak); 



function mulai(evt:TouchEvent):void{

if(bola == null){

bola=new lingkaran;
addChild(bola);

bola.x=evt.stageX;
bola.y=evt.stageY;
}


}

function gerak(evt:TouchEvent) {
 
bola.x=evt.stageX;
bola.y=evt.stageY;
 
}

function selesai(evt:TouchEvent) {
 
 removeChild(bola);
 bola=null;
 
}




MUDAH BUKAN ?   untuk file tutorial selengkapnya (adobe flash cs5.5) dapat didownload disini
Share:

Senin, 04 Maret 2013

Timer dan Counter Pada Microcontroller AVR


- COUNTER/TIMER , apaan sih ? 

Adalah fasilitas di microcontroller untuk melakukan counter/perhitungan tanpa perlu menambahkan code di looping main program ( auto), sehingga nilai dari counter ( BIASANYA register TCNT) dapat di olah/manfaatkan sewaktu2


- JENIS COUNTER APA AJA ?

Secara umum Counter /Timer terdiri dari:

- Timer Biasa (8 bit & 16 bit)
- Clear Timer on Compare (CTC)
- Overflow Timer
- Output Compare 
- PWM timer ( bahasan tersendiri)

Kita bahas yang paling sering digunakan timer biasa dan timer CTC.


- Counter 8 bit & 16 Bit

Jadi ingat, 8 bit itu maximum nilai yg didapat 0 - 255, sedangkan 16 bit = 0 - 65535 , jadi berbeda di range nilai Counternya.

Semisal kita pakai IC attiny2313 dengan clock default 1MHZ, jadi jika kita dapat ambil matematika sederhana :


resolusi = 1/input clock = 1/1Mhz = 1 micro second


Jika kita inisialisasi counter dengan Full Speed , clock = input frek oscillator (1 Mhz),  dan digunakan 16 bit / counter 1 TCCR1B|=(1<<CS10), maka jika kita ingin menghidupkan suatu led di PortD dalam selang 1 detik,  kita tunggu nilai Counter(TCNT1) = 1000000;

wah....kelebihan ! Ingat..nilai TCNT1 max= 65535, jadi kita perlu membagi counter dengan variabel yg lain, semisal kita pake variable a; Jadi ketika TCTN1 = 10000; Lalu reset TCTN1=0 ; a++; (ditambah), berulang seterusnya sampe nilai a= 100; maka LED di PORTD dihidupkan/toogle. Berikut scriptnya :

Code:
#include <avr/io.h> 

int main (void) 
{ 
   DDRD |= (1 << PD0); // Set LED di portD0 

   TCCR1B |= (1 << CS10); // Set up counter dengan full speed 

int a;  variable

a=0;  //nilai awal dari variable
  
 while (1) 
   { 

   if(TCNT1 == 10000) 
      { a++;
         TCNT1=0;
      }

   if(a == 100)
     { 
     PORTD ^= (1 << PD0); // Toggle the LED 
     a=0;
     }

   } 
}


- PRESCALER 

Jika di pembahasan sebelumnya, kita menggunakan variabel sebagai pembagi counter yg berlebih, AVR memberikan suatu solusi dengan melakukan pembagian clock menjadi faktor 1/8, 1/64, 1/256, dan 1/1024

Dengan Prescaler ada pembagian resolusi  ( timer penambahan counter) yang  akan menjadi berkurang :

1(full speed) = 1 micro second
1/8 = 8 micro second
1/64 = 64 us
1/256= 256 us
1/1024=1024us

Nah...kita sekarang bisa membagi clock sesuai keinginan, dan menyederhanakan perhitungan

Semisal kita ingin mendelay LED 1 detik, dengan clock 1Mhz  maka kita coba dengan  prescale 1/8,  untuk mencari 1 detik nilai TCNT1 = 125000, masih lewat, prescale 1/64 maka nilai TCNT1 = 15625 ...nahh nilainya ga lewat dari batas 16 bit (65535) ....ketemu dehh....jadi kita sederhanakan script sebelumnya menjadi :

Code:
#define F_CPU 1000000UL //clock dari avr
#include <avr/io.h> 




int main (void) 

{ 

   DDRD |= (1 << PD0); // Set LED di portD0 
   TCCR1B |= (1 << CS11); // Set up counter dengan prescale 64
   //Baca datasheet untuk mencari konfigurasi prescaler yg laen



 while (1) 

   { 



   if(TCNT1 == 15624) 
 // nilai max 1 detik, perhitungan mulai 0 maka nilai dikurangi 1 dari 15625

   {
      PORTD ^= (1 << PD0); // Toggle the LED 
     TCNT1=0;
    }



   } 

}


- CLEAR TIME ON COMPARE + INTERUPT

selanjutnya AVR memberikan failitas CTC, yaitu kita menentukan nilai maximum dari TCNT1 dan secara otomatis akan mengclear nilai TCNT1. Nilai max dari TCNT1 diberikan melalui register OCR1A

setiap kali TCNT1 = OCR1A akan terjadi trigger interupt CTC, sehingga dapat dimanfaatkan untuk mentriger suatu output. codenya akan menjadi seperti ini


Code:
#define F_CPU 1000000UL //clock dari avr
#include <avr/io.h> 
#include <avr/interrupt.h>

ISR(TIMER1_COMPA_vect) //vector interupt compare

{ 

     PORTD ^= (1 << PD0); // Toggle the LED 

}

int main (void) 

{ 

   DDRD |= (1 << PD0); // Set LED di portD0 
   
   TCCR1B |= (1 << CS11); // Set up counter dengan prescale 64
   //Baca datasheet untuk mencari konfigurasi prescaler yg laen
   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode       
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt
   OCR1A = 15624; // nilai atas dari TCNT1, untuk perhitungan 1 detik

sei();   //hidupkan interupt


 while (1) 

   { 

    }

}


...mudah bukan ? atau makin pusing ?

Untuk counter dengan nilai frekuensi clock / XTAL lainnya dapat menggunakan rumus matematika sederhana untuk menetukan OCR1A 


OCR1A = [(Frekuensi AVR / Prescale) / frekuensi yg diinginkan ] - 1

atau

OCR1A = [(Frekuensi AVR / Prescale) * Periode yg di inginkan ] - 1


*) catatan : nilai prescale = 1,8,64,256,1024  bukan 1/prescale , untuk mempermudah saja


SELAMAT MENCOBA
Share:

Jumat, 22 Februari 2013

Wayang Android Kreasi Aisi555 "SANGUT DROID"



Seminggu ini dihabiskan untuk mendalami pengetahuan di bidang applikasi adobe air di Android. Tergugah oleh sebuah game anak-anak buatan amrik di google play akhirnya penulis teringat akan masa kecilnya di Bali dimana pernah membuat mainan wayang menggunakan kardus bekas. Setelah dicek di google play dan internet belum ada aplikasi wayang yang dipakai pada hape Android.  Ingat bahwa Wayang merupakan produk kebudayaan di Nusantara yang harus dilestarikan, sehingga perlu dibawa ke media yang lebih modern seperti aplikasi ini

Pada mulanya dibuatlah karakter "sangut" yang dapat digerakkan tangan dan mulutnya. Tokoh Sangut merupakan tokoh punakawan yang jenaka dari cerita pewayangan Mahabarata versi Bali. Tingkahnya yang kocak mungkin dapat menarik anak-anak untuk memainkannya. Jangan lupa menambahkan ceirta-cerita lucu dibalik gerak tangan dan mulutnya.


APK untuk applikasi "Sangut Droid" dapat diunduh disini


Selanjutnya kreatifitas tidak berhenti disini. Teringat bahwa pasangan si sangut di setiap tampilan kocaknya adalah tokoh punakawan tambun "DELEM". Mereka sering berolok-olok melakonkan komedi yang kocak yang tidak jarang menimbulkan gelak tawa penonton wayang. Lalu penulis lanjutkan ide ini menuju layar timeline dan actionscript dari software adobe flash CS 5.5 yang kemudian di compile menjadi aplikasi adobe-air yang dapat dimainkan di HP android. Hasilnya menjadi seperti dibawah ini, dimana pemain dapat menggerakkan secara bebas kedua tokoh ini.



Tujuan dari dibuatnya applikasi ini adalah mengingatkan kembali pada kebudayaan asli Indonesia khususnya Bali yang mungkin sudah mulai tergeser oleh tokoh kartun dari jepang atau amerika. Mungkin aplikasi ini tidak sebagus game dan atau animasi kelas dunia, tapi seperti halnya dunia Pewayangan dimana terdapat "Dalang" yang memainkannya maka dengan kreatifitas dalang yang tidak terbatas, maka pesan-pesan moril dapat disampaikan ke anak-anak melalui percakapan antara dua orang punakawan jenaka ini.


Aplikasi untuk Android versi 2.2 keatas dapat diunduh disini


Jangan lupa untuk menginstall Adobe Air pada HandHeld Android anda sebelum dapat menikmati aplikasi wayang android ini.



Kreasi berlanjut, dan pada maret 2013 berhasil mengkreasikan wayang android versi jowo dengan touch sensor

APK dapat diunduh disini



SELAMAT MENCOBA





Share:

Senin, 18 Februari 2013

Applikasi Android "Waterpas Pak Tukang" karya Aisi555



" Kini Pak Tukang Kayu pun bisa membangun rumah dengan HI-TECH "


Diawali dengan melihat sebuah video youtube yang mendemonstrasikan cara merancang aplikasi Android berbasis Adobe-flash dan Adobe-Air , meluncurlah diriku ke sebuah pusat Handphone di surabaya dan hunting handphone android. Tentunya karena akan dioprek-oprek akhirnya berpikiran untuk membeli HP android murah made in china dan karena ada booming X-Factor di RCTI dengan sponsor HP CROSS, maka tujuan mengerucut ke deretan ponsel android merek CROSS yang sedang promo. 

Pilihan yang murah meriah tertuju ke model Cross Andromeda A10 yang berprocessor 1GHz...akan tetapi memiliki ROM dan RAM yang bujugbuneng super irit. Sedikit kecewa karena applikasi cepet hang dan tiba-tiba keluar ke layar utama. Dan tak berselang lama Hp ini pun aku root dan kemudian beberapa aplikasi yang tidak perlu di "WIPE OUT" saja.

Tak sabar ingin mencoba mengoprek aplikasi berbasis flash, dimana diriku selama ini cukup banyak berkecimpung dengan aplikasi flash dan akhirnya berhasil membuat applikasi "hello world" pertamaku diiringi doa semoga 2013 menjadi tahun pengembangan aplikasi berbasis android.

applikasi hello world Android pertama


Kegatalan tangan ini memuncak ketika hari sabtu dan minggu yang cukup senggang berujung pada kreasi membaca sensor GPS pada Hp cross A-10, dan response time nya pun tidak mengecewakan

applikasi android GPS pada cross A10


Nah ... berlanjut ke sensor selanjutnya yang ada pada hampir semua HP android yaitu acelerometer yang merupakan sensor gerak. Hasilnya seperti gambar berikut yang cukup menarik untuk bermain game.



applikasi menggunakan acelerometer


Uhuii...jalan terbuka lebar dan ide dari teman sekantor menuju ke sebuah alat yang umum dipakai bapak tukang yaitu "WATERPAS" atau alat pengukur kemiringan, biasanya digunakan dalam menentukan tingkat ke-rataan suatu bangunan / benda. Hasilnya maknyus seperti video dibawah ini :





Mau ?  download APK nya di  http://www.4shared.com/android/t24MJHMM/waterpas.html  dan jangan lupa untuk menginstall adobe air pada HP android kamu (otomatis akan di download dan di install).

SELAMAT MENCOBA
Share:

Jumat, 25 Januari 2013

Laundry yuk ! software admin + kasir untuk laundry kiloan



LAUNDRY YUK !!



Kini Versi 4 Lebih Keren Loooo






PERNAH MENGALAMI KEJADIAN SEPERTI INI ??

12036385.jpg (640×440)


KEUNTUNGAN MEMAKAI SOFTWARE INI


  •           Mempermudah transaksi  pada usaha laundry kiloan
  •           Mengurangi komplain karena kesalahan pegawai laundry dalam memasukkan data laundry
  •           Mempermudah pembukuan transaksi
  •         Mempercantik usaha laundry kiloan, dengan memanfaatkan screensaver sebagai media iklan saat tidak ada transaksi


KEBUTUHAN PERANGKAT

>>      PC / LAPTOP standar dengan kemampuan dual monitor/duplicate
Laptop yg dijual secara umum sudah memiliki dual monitor, jadi lebih baik menggunakan Laptop dikarenakan PC membutuhkan alat tambahan berupa monitor extender/splitter
>>       2 Buah layar monitor, 1 untuk pegawai/penjaga, 1 (diusahakan layar lebar) yg ditempatkan di etalase yg menuju pelanggan. Bisa juga untuk layar monitor sentuh atau menggunakan 1 buah display saja.
>>     Keyboard/numpad (USB) + Mouse(USB)  tambahan di untuk di etalase pelanggan. Jika kabel kurang panjang, dibutuhkan kabel extender USB




FASILITAS TERBARU VERSI 4 KEATAS :

- Login pengguna software yg bisa dibedakan berdasarkan kewenangannya
- Bisa untuk cucian kiloan, satuan, sistem deposit dan cuci express
- Sistem database sederhana tanpa perlu install mysql, dbase dll
- Print nota hanya menggunakan printer biasa (inkjet / deskjet) yang murah
- Ter-integrasi dengan pembukuan yg bisa diubah ke excel
- Fasilitas upload foto sebelum dan sesudah mencuci





KINI DENGAN REKAP BULANAN /HARIAN di EXCEL









SCREEN SHOOT

12036396.jpg (640×400)

12036397.jpg (640×400)

12036398.jpg (640×400)


PRINT OUT 





DEMO Ver. 4.0 DAPAT DOWNLOAD DISINI



HANYA 500rb SAJA !!



SELAMAT MENCOBA


Share:

Jumat, 11 Januari 2013

PAPAN SKOR BADMINTON LAYAR LEBAR, CONTROL via WI-FI

Setelah berjualan papan score "E-scoreboard" di link ini




dengan bangga mempersembahkan kepada negara tercinta ...




SOFTWARE PAPAN SKOR BADMINTON 


Cara Kerja bagaimana ?






1. Display scoreboard Layar Lebar dikontrol oleh PC yang dinamakan PC server
2. Kontrol penjurian menggunakan software remote, sebaiknya menggunakan tablet windows
3. Koneksi penjurian dari remote ke server menggunakan TCP/IP via LAN atau Wi-Fi


contoh seperti video berikut:





KABAR BAIK... DEMO DAPAT DIDOWNLOAD LHOO....




http://www.4shared.com/zip/HQ0t7Yz-/demo_scoreboard.html



MELAYANI JUGA UNTUK CABANG OLAH RAGA LAIN SESUAI KEINGINAN




berminat ?? silahkan PM atau hubungi via email : ahocool@gmail.com
ym : ahokleng
PIN BB:321477A8
HP: 085733889569 , 087882045949
Share:

Senin, 27 Agustus 2012

SMS via AT COMMAND - Long (concatenate) SMS



Bagaimana jika sms yang akan dikirim melebihi 160 karakter ? Ya kita pecah aja SMS nya...dikirimnya 3 bagian. Tapi ntar yg baca bingung mana yg no 1 2 3 dst ...tenang, para engineer GSM menciptakan system SMS long / concatenate / bersambung , dimana tiap sms tetap dikirim perbagian  dengan tambahan header "UDH" yang menyatakan sms yg dikirim ini merupakan bagian dari ke berapa dari SMS yg panjang tadi.

Hal yg paling pertama menandakan bahwa SMS ini long sms adalah pada octet ke -2, yang pada sms biasa bernilai "11" dan pada long sms memiliki type "41". Kemudian 2 octet setelah nomer tujuan terdapat octet UDL (userdata length) dilanjutkan octet UDHL (header length, nilai selalu "05") + UDH sebanyak 5 octet

UDL adalah jumlah karakter(septet) yg dikirim, tapi  karena ada 7 octet tambahan maka maksimum karakter adalah 153 ( 160 = 153septet karakter + 7 header)

UDH terdiri dari 5 octet sebagai berikut :

00IEI -  Information element identifier , nilainya selalu 00
03IEDL - Information element data length, nilainya selalu 03
ABReference number, dimana SMS yg dipotong memiliki nilai yg sama, akan tetapi tidak boleh sama dengan bagian LONG SMS yang lainnya, sehingga sebaiknya nilainya di random untuk sms lainnya
02Octet yang menyatakan jumlah pemotongan SMS . 02 berarti sms ini memiliki 2 bagian
01Octet yang menunjukkan bagian / nomer urutan dari SMS. 01 berarti sms ini merupakan sms ke-1

selanjutnya diikuti oleh OCTET user data / SMS

Karena terjadi nilai start septet user data yg tidak genap pada bit ke 49 / 56 akibat jumlah octet dari UDHL+UDH = 6 * 8bit = 48 bit , maka perlu dilakukan proses PADDING 1 BIT ....nah loo ribet lagi nehh...tenang .... POLA nya seragam juga kok ....

Masih ingat dengan "hellohello" diubah menjadi bentuk PDU : E8 32 9B FD 46 97 D9 EC 37
Kemudian kita padding 1 bit ....apaan sih padding ? pokoknya geser2 deh..liat yang berikut :


(klik biar jelas)


Jadi logikanya seperti ini :

1. Ambil nilai dari konversi septet  gsm 7-bit ke Octet
2. Pasangan Octet pertama diambil bit ke 6 - 0 dan turunkan kebawah, karena octet pertama maka tambahkan dengan "0" pada akhir octet
3. Bit ke 7 (MSB) pasangan pertama kemudian digunakan sebagai "EKOR" pada hasil "pergeseran" pasangan berikutnya ...begitu selanjutnya sampai selesai.
4. Jika sisa MSB pasangan terakhir  =1, maka tambahkan octet "01" diakhir deretan octet. Jika sisa MSB pasangan terakhir adalah  0 dan jumlah SEPTET / KARAKTER/HURUF habis dibagi 8 (kelipatan 8) maka rangkaian octet perlu ditutup dengan octet "00". Tujunnya untuk menggenapkan perhitungan septet-octet


Action scriptnya seperti berikut :

function konversi(textnya:String, tipe:Number):String
{
var textbaru:String = new String; // sms < 160 karakter
var textbaru2:String = new String; //long sms
var hasil:Number;
var hasil2:Number;
var char1:Number;
var char2:Number;
var septet:Number=1;
var sisa:Number=0; //sisa = MSB / bit ke 7 

for(b=0 ; b< textnya.length ; b++)
{
char1=textnya.charCodeAt(b+1);
char2=textnya.charCodeAt(b);

//rumus mencari PDU SMS biasa
hasil=( ((0x7F >> (7 - septet)) & char1 ) <<(8 - septet) ) + (char2 >> (septet - 1)) ;

if(hasil< 16 ) textbaru+="0";
textbaru+=hasil.toString(16).toUpperCase();

// rumus padding 1 bit untuk long SMS
hasil2=sisa + ( (hasil & 0x7F) << 1) ;
sisa= hasil >> 7;

if(hasil2< 16 ) textbaru2+="0";
textbaru2+=hasil2.toString(16).toUpperCase();
trace("sisa= "+ sisa + " b= " + b + "septetne :" + septet);

// rumus untuk sms biasa, di skip septet ke 8
if(septet == 7) { 
septet = 1;
b++;
}
else septet++;
}

//rumus penggenap sisa diakhir octet
                     if(sisa == 1) textbaru2+="01";
if(sisa == 0 && ( (textnya.length) % 8) == 0)textbaru2+="00";


//tipe 0= sms biasa, 1= LONG/CONCATENATE SMS
                      if(tipe == 0) return textbaru;
 else return textbaru2;

}

Jika ingin kirim SMS Proklamasi Indonesia 17 agustus ....

 Kami bangsa Indonesia dengan ini menjatakan kemerdekaan Indonesia.
Hal-hal jang mengenai pemindahan kekoeasaan d.l.l., diselenggarakan
dengan tjara seksama dan dalam tempo jang sesingkat-singkatnja.
Djakarta, hari 17 boelan 8 tahoen 05
Atas nama bangsa Indonesia.
Soekarno/Hatta 

bagian pertama:


AT+CMGS=153<enter> 
0041000B818051757367F60000A0050003BF020196E1761A240EBBCFF33028E926BFDDE5793A0C2297DDE7B01B9476A741EDB25B1DA687D76137685D6E97E5E4F23A1C7683926EF2DB5D9EA7C3AE0632CC6EA1C36C903AEC3E83DA65F7B9EC0EA741F0723BED2687D16137685D5EBFCBE17938EC06915D6C17DBC50291D3F332BBEC3E9FC3F2F03AEC6E90CBEE73D80DA2ABC3F230685E5ECFC3<ctrl+z> 

bagian kedua:


AT+CMGS=129<enter> 
0041010B818051757367F6000084050003BF0202DA611039EC0691C3EC701B442FB7E16F903AEC3E83E6E579DA7D5E87E9AD79DA7D5E87E96E75D8D520AAC3EBB09C1E6681D061791A14BB81C4EF323BEC06E140F430FA5D768360B546901E9E83DCE17618240EBBCFF33028E926BFDDE5793AEC6A4CDFE57558EE7EBF90613A3D0C<ctrl+z> 




Ingat...jika mencoba, harap nomer telpon tujuan diganti, dan nilai yg highlight warna merah harus sama di kedua bagian, tapi jika ingin mengirim sms yg sama ke nomer yg sama pula, maka nilainya harus berbeda.
Bagian UDL (userdata length) yang warna merah backgound biru merupakan jumlah  karakter yg dikirim + 7 header, sehingga jika karakter sms /spetet = 153 maka nilainya adalah 153+7 = 160 = 0xA0.

Untuk mempermudah proses belajar AT COMMAND - LONG SMS, saya telah buatkan konverter yg dapat diunduh di :

http://www.4shared.com/document/pl1jcZJw/pdu.html

SELAMAT MENCOBA
Share:

SMS via AT COMMAND - PDU mode



Nah...bagaimana jika modem/HP ga support teks mode ?


AT+CMGF=1<enter>
ERROR


AT+CMGF=0<enter>
OK



Maka kita perlu merubah modenya menjadi Mode PDU. Mode ini merupakan cara pengiriman sms "Irit bit" , dimana ketika diciptakan mungkin saja resource dari system GSM masih sedikit. Mungkin jika diciptakan jaman 2000an hal ini akan tidak dilakukan. Mari kita bahas secara pelan-pelan.

Pertama kita perlu mengenal istilah "OCTET" dan "SEPTET" . Octet merupakan mode 8 bit, sedangkan Septet merupakan mode data 7bit. Data yg dikirimkan semuanya memakai mode OCTET, sedangkan SEPTET merupakan system penghematan karakter ASCII yg 8 bit menjadi 7 bit. Pola karakter 7-bit GSM hampir mirip ASCII tetapi diadakan beberapa penyesuaian untuk symbol khusus (baca lebih lanjut disini).

sebaiknya kita bahas dulu perubahan karakter 7-bit  (SEPTET) menjadi OCTET. Kita ambil contoh sebuah kalimat "hellohello"


courtesy of www.dreamfabric.com

hellohello
104101108108111104101108108111
1101000110010111011001101100110111111010001100101110110011011001101111
1101000
1100101
1101100
1101100
1101111
1101000
1100101
1101100
1101100
1101111

kalimat "hellohello" terdiri dari 10 SEPTET , dan sesuai tabel (perhatikan highlight berwarna kuning), kita ambil secara bertahap bit terakhir (warna kuning) dan kemudian ditaruh di awal dari SEPTET sebelumnya sehingga membentuk OCTET seperti berikut :

11101000
00110010
10011011
11111101
01000110
10010111
11011001
11101100
110111
E8329BFD4697D9
EC37


Njlimet ? ndak juga ....kalo dibuat dalam actionscript seperti ini codingnya :

function konversi(textnya:String):String
{
var textbaru:String = new String;
var hasil:Number;
var char1:Number;
var char2:Number;

for(b=0 ; b< textnya.length ; b++)
{
char1=textnya.charCodeAt(b+1);
char2=textnya.charCodeAt(b);

hasil=( ((0x7F >> (7 - septet)) & char1 ) <<(8 - septet) ) +(char2 >> (septet - 1)) ;

if(hasil< 16 ) textbaru+="0";
textbaru+=hasil.toString(16).toUpperCase();


}
return textbaru;

}

 Selanjutnya kita akan menambahkan beberapa header sebagai pelengkap pengirim sms seperti berikut:

Octet Penjelasan
00Panjang dari SMSC operator, kita gunakan "00" jika menggunakan SMSC default yg ada pada modem
11Artinya SMS SUBMIT / kirim sms
00Nomer referensi dari SMS yg dikirim, biarkan nilainya "00" agar ditentukan oleh operator
0BPanjang nomer tujuan 
81Format nomer tujuan, untuk mode sms local indonesia gunakan nilai 81
8051757367F6Nomer telepon yg ditulis sebagai semioctet, dimana jika jumlah nomer ganjil maka tambahkan karakter F dibelakang. Semioctet yg dimaksud adalah pola membalik 2 pasang angka, jika nomer 08 15 57 37 76 6F akan menjadi  80 51 75 73 67 F6
00TP-PID. Protocol identifier , biarkan nilainya "00"
00TP-DCS. Data coding scheme. Untuk kirim sms biasa gunakan 00
AATP-Validity-Period. "AA" berarti sms berlaku maksimal 4 hari
0APanjang septet atau panjang karakter, jadi karena panjang "hellohello" 10 septet, jadi nilainya 0A
E8329BFD4697D9EC37TP-User-Data. Octet berikut adalah hasil konversi septet yg dibahas diatas.

kemudian octet ini disusun dan dihitung panjangnya ( 1 octet = 2 karakter = panjang total/2) dikurangi 1 (octet "00" awal tidak dihitung), sehingga pada terminal kita inputkan seperti berikut :



AT+CMGS=23<enter> 
0011000B818051757367F60000AA0AE8329BFD4697D9EC37<ctrl+z> 



Mbulet ? Bingung ? ga juga ....semuanya ada pola yg pasti kok...lalu gimana jika ingin kirim long SMS (>160 char) ? kita akan bahas pada bagian berikutnya LONG SMS-PDU


SELAMAT MENCOBA
Share:

SMS via AT COMMAND - teks mode

Jika anda memiliki Modem/HP GSM yg bisa dijadikan Modem bisa mencoba beberapa percoban yang mengasyikkan untuk belajar proses pengiriman SMS. Wahh...pasti susah ya? sebenernya yg susah itu di proses RF / Radio nya, tapi ga usah lah sampe kesana karena kita akan bahas cara software HP mengirim SMS melalui AT COMMAND.

AT COMMAND adalah perintah console terminal yang umum dipakai pada modem telephoni. Untuk mengecek apakah modemmu support maka masuklah melalui hyperterminal/ putty/ securecrt  dan koneksikan menuju port com dari modem, dengan kecepatan bitrate umumnya adalah 9600 bps. Maka ketika koneksinya sudah benar, inputkan melalui keyboard perintah berikut:



AT <enter>
OK 


Ada 2 mode dalam bermain SMS melalui AT COMMAND , yaitu mode teks dan mode PDU (protocol description unit)

Untuk memilih mode SMS teks, maka lakukan perintah berikut:



AT+CMGF=1<enter>
OK 


Jika modem tidak support  maka modem akan mengeluarkan respon ERROR, dan berarti hanya support mode PDU.

Selanjutnya untuk mengirim SMS mode teks (maximum 160 karakter saja) caranya gampang saja, cukup mengikuti perintah berikut ini :


AT+CMGS="nomer tujuan" <enter>
>masukkan pesan <ctrl+z>
OK


Beberapa modem memerlukan tanda " (petik) diantara nomer telepon. Contoh nya seperti berikut:


AT+CMGS="08155737799"<enter>
>test sms via at command <ctrl+z>
OK


Mudah bukan? Lalu untuk membaca sms masuk bagaimana caranya ? Ikuti perintah berikut :


AT+CMGL=?<enter>
+CMGL: ("REC UNREAD", "REC READ", "STO UNSENT", "STO SENT", "ALL")

OK


REC UNREAD  = pesan masuk yg belum dibaca
REC READ       = pesan masuk yg sudah dibaca
STO UNSENT  = pesan keluar yg belum terkirim (draft)
STO SENT        = pesan keluar yang terkirim
ALL                   = semua pesan sms in dan out


Jadi jika ingin melihat semua SMS maka contohnya seperti berikut :


AT+CMGL="ALL"<enter>

+CMGL: 155,"REC READ","628185999xx",,"2012/08/16 12:39:04+28"
Hehe..aq yg bl td,sorry lupa

+CMGL: 156,"STO SENT","628185999xx",,
makan dulu sana...

+CMGL: 157,"REC READ","628185999xx",,"2012/08/16 16:30:18+28"
08888001065,10rb

+CMGL: 158,"STO SENT","628185999xx",,
ga isok...gagal.

+CMGL: 159,"REC READ","62878888333xx",,"2012/08/16 20:19:35+28"
47616E2073656C616D6174206D616C616D2C206D61752074616E7961206974752070616B6574206D6963726F636F6E74726F6C6C65726E796120756461682070616B6520696E70757420706F7274207573623F7468616E6B73

OK



wah...message paling bawah kok kode-kode aneh gitu? Tenang...kita akan bahas di pembahasan berikutnya SMS PDU


SELAMAT MENCOBA

Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (7) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (24) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika