Translate

Mengakses Sensor Jarak HC-SRF 04 Dengan Bascom AVR

Mengakses Sensor Jarak HC-SRF 04 Dengan Bascom AVR


            Pada kesempatan kali ini akan dibahas mengenai bagaimana cara mengakses sensor jarak yang sangat umum sekali di pakai oleh para hobby mikrokontroller terutama untuk robot wall avoider atau wall follower, karena sensor ini sangat murah sekitar 40 ribu dibanding aslinya yang sampai 300 ribu, maka dari itu untuk keperluan mendeteksi jarak pakailah sensor ini lebih baik, range yang akan dibuat pada tutorial kali ini yaitu dengan jarak 1 meter, berikut skema dan programnya.


1. Skematik Minimum System



2. Program Bascom AVR

$regfile = "m16def.dat"
$baud = 9600
$crystal = 12000000

Config Timer0 = Timer , Prescale = 256

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Config Portd.6 = Output
Config Pind.7 = Input

Declare Sub Cek_jarak

Dim Data_jarak As Word
Dim Data_jarak_olah As Word
Dim Data_jarak_fix As Word



Triger1 Alias Portd.6
Pecho1 Alias Pind.7

Mulai:
Cls
Cursor Off

Do
Call Cek_jarak
  Data_jarak = Data_jarak
  Data_jarak_olah = Data_jarak * 100
  Data_jarak_fix = Data_jarak_olah / 256


Upperline
Lcd "Jarak Benda="

Lowerline
Lcd Data_jarak_fix ; " cm "

Waitms 100


Loop

Sub Cek_jarak:
Reset Triger1
Waitus 10
Set Triger1
Waitus 20
Reset Triger1

Tcnt0 = 0
Bitwait Pecho1 , Set
Start Timer0

Do
If Pecho1 = 0 Then
Data_jarak = Tcnt0
Stop Timer0
Exit Do
End If

If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub







Buku Cara Mendapatkan Wanita Idaman dan Cara Membahagiakan Wanita Setelah Menikah

Buku Cara Mendapatkan Wanita Idaman dan Cara Membahagiakan Wanita Setelah Menikah

Buku dalam bentuk .pdf
Tebal halaman 107 Halaman
Harga Buku = Rp. 50.000

Mau ?, Hubungi kami di Email = Yanuarm@hotmail.com
atau sms 085726496643 (Yanuar)




         Buku ini sangat cocok sekali untuk kawula muda dalam mencari cinta dan pasangan hatinya, karena pasangan muda-mudi sangatlah rentan untuk terjerumus ke arah cinta yang negatif misalnya cinta palsu untuk memanfaatkan sesuatu dari pasangan, seperti kekayaan, tahta dan lainnya, namun jika yang dituju tidak dimiliki, maka cinta tersebut akan hilang, ini benar-benar sangat kejam sekali dan harus hati-hati jika berhadapan dengan pasangan yang bertipe demikian, buku ini juga akan membahas mengenai kiat-kiat dalam berumah tangga agar didapat rasa bahagia dan nyaman di setiap langkah kehidupannya.  
           Buku ini dibuat dengan latar belakang semakin maraknya pemuda-pemudi yang menginginkan kesempurnaan dalam hidupnya terutama  dalam  masalah  pasangan  hidup,  baik  itu pria atau wanita
semua menginginkan memiliki pasangan hidup yang seperti diharapkan misalnya seorang pria yang mendambakan seorang wanita sholehah, rendah hati dan penyayang, namun ketika nasib menimpanya, ternyata wanita yang ia kenal dan ia nikahi tidaklah seperti yang diharapkan, ini benar-benar perihal yang serius, biarpun terlihat sepele dan biasa tidak terungkap oleh kebanyakan pasangan karena malu untuk menceritakan apa yang telah ia alami, sebenarnya perkara ini dapat diobati dengan cara merubah paradigma atau pola pikir yang telah tersetting sebelumnya tentang pasangan hati dambaannya, jangan pernah berfikir untuk merubah kebiasaaan yang telah ia lakukan kalau itu memang keturunan dan positif, misalnya cerewet, pendiam dan lainnya namun manfaatkan lah sifat pasangan kita menjadi kelebihan, namun berbeda halnya jika pasangan kita memiliki sifat keturunan negatif misalnya suka memaki, suka mencuri dan kasar, itu benar-benar harus dirubah karena akan berdampak negatif bagi dirinya dan lingkungan sekitarnya, melalui buku ini akan dijelaskan bagaimana cara mengubah paradigma kita akan pasangan yang dimiliki dan juga merubah kebiasaan negatif pasangan kita.
          Tujuan utama dari pembuatan buku ini tidak lain adalah untuk memberikan pengetahuan mengenai mensyukuri dan  menghargai apa  yang   telah dimiliki   setiap  insan   khususnya terhadap pasangan hidup kita, agar keduanya tidak saling melihat pada sisi buruknya dan mendapatkan kebahagiaan dalam rumah tangga dengan beberapa resep yang mujarab.  
          Selain itu buku ini juga memberikan pengetahuan tentang bagaimana cara mendapatkan wanita yang disukai, seperti umumnya anak muda yang memendam rasa cinta namun tidak berani mengungkap kannya, melalui buku ini akan dijelaskan bagaimana sebaiknya cara mendapatkan cinta yang kita inginkan dari wanita yang disukai.








 


ARDUINO MONITORING TILT LEVEL VIA ETHERNET WEBSERVER

ARDUINO MONITORING TILT LEVEL VIA ETHERNET WEBSERVER


           Pada kesempatan special sekali akan dibahas mengenai bagaimana cara mengakses ARDUINO untuk memonitoring level kemiringan via ethernet webserver, dan juga bisa di aplikasikan untuk kendali ruangan seperti yang ditampilkan pada video diatas, karena menggunakan ARDUINO maka device yang diperlukan untuk pembuatan kali ini yaitu ARDUINO UNO R3, Modul ETHERNET WEBSERVER, dan sensor accelerometer, jadi prinsip kerjanya yaitu sensor accelerometer akan memberikan data ke arduino kemudian arduino akan menampilkannya ke  komputer melalui ethernet webserver, sehingga jika menggunakan ethernet haruslah memiliki IP address, maka dari itu usahakan IP address komputer tidak sama dengan IPaddress ethernet modul. berikut program dan skemanya.


a. ARDUINO UNO R3

 

b. ETHERNET WEBSERVER MODUL




c. Accelerometer Sensor ADXL335


d. Program ARDUINO 

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,99);

EthernetServer server(80);

const int ledpin7 = 7;
const int ledpin8 = 8;
const int ledpin9 = 9;
const int ledpin2 = 2;
String readString;
void setup() {

   pinMode(ledpin7, OUTPUT);
   pinMode(ledpin8, OUTPUT);
   pinMode(ledpin9, OUTPUT);
   pinMode(ledpin2, OUTPUT);
  
  Serial.begin(9600);
   while (!Serial) {
  }

  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  int sumbux = analogRead(0);
  int sumbuy = analogRead(1);
  int sumbuz = analogRead(2);

  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
     if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" ");
          client.println("<title> Monitor Kemiringan </title> ");     
          client.println("<body bgcolor = #000000>");     
          client.println("<center>");
            client.println("<font color = yellow><center><h1>MONITOR KEMIRINGAN DATARAN<br>BY YANUAR MUKHAMMAD</h1></center><br></font>");
            client.println("<font color = #FFFFFF>");
            client.println("<h2>");
            client.println("Sumbu X = ");
            client.print(sumbux);
            client.println("<br />");
            client.println("Sumbu Y = ");
            client.print(sumbuy);
            client.println("<br />");
            client.println("Sumbu Z = ");
            client.print(sumbuz);
            client.println("</h2>");      
          client.println("</font>");
           client.println("<a href = \"/?lighton\"\"><input type = 'button' value = 'ON' ></a>");
          client.println("<a href = \"/?lightoff\"\"><input type = 'button' value = 'OFF' ></a> ");
          client.println("</center>");
          client.println("</body>");
          client.println("</html>");
            
          break;       
        }    
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
  }
          if(readString.indexOf("?lighton") >0)
          {
 
            digitalWrite(ledpin7, HIGH);    
          }
          else{
          if(readString.indexOf("?lightoff") >0)
          {

                digitalWrite(ledpin7, LOW); 
          }
          }
         readString="";
 if (sumbux > 400){
 digitalWrite(ledpin8, HIGH);
 digitalWrite(ledpin9, LOW);
 digitalWrite(ledpin2, LOW);
 } else if (sumbux < 300){
 digitalWrite(ledpin8, LOW);
 digitalWrite(ledpin9, HIGH);
 digitalWrite(ledpin2, LOW);
 }else {
 digitalWrite(ledpin8, LOW);
 digitalWrite(ledpin9, LOW);
 digitalWrite(ledpin2, HIGH);
}
}





VIDEO HASILNYA









Komunikasi Serial Mikrokontroller Dengan Bascom AVR

Komunikasi Serial Mikrokontroller Dengan Bascom AVR


            Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai basic komunikasi serial (UART) yang mana komunikasi ini sangat sering sekali diperlukan untuk mengakses berbagai macam device seperti komputer, modul wireless, kamera, komunikasi antar mikrokontroller, sms gateway dan lainnya, karena komunikasi ini sangatlah mudah dan sederhana sekali, maka komunikasi ini jadi sering digunakan oleh para engineer dalam menyelesaikan masalah yang berkaitan dengan komunikasi ke device lain. Pada contoh ini saya akan memberikan cara bagaimana caranya untuk mengirikan data berupa karakter ke komputer dan juga data berupa nilai integer, device yang diperlukan untuk komunikasi ini yaitu RS232 yang mana terdapat IC MAX232, fungsi dari device ini yaitu untuk menyamakan level tegangan antara device mikrokontroller dengan device yang dituju, misal komputer, jika level tegangan sudah sama yaitu TTL maka komunikasi bisa dilakukan dengan lancar, berikut gambar skema dan programnya.


a. Minimum System ATMega16



b. Rangkaian Serial RS232





c. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Cursor Off
Cls

Dim A As Integer

A = 0

Do

Incr A

Locate 1 , 1
Lcd "count up"
Locate 2 , 1
Lcd A

print "data serial"
print A

wait 1

Loop


d. Cara Penggunaan Alat

          Cara menggunakan alat ini yaitu pertama aktifkan mikrokontroller kemudian pasang rangkaian RS232 ke mikrokontroller, setelah terpasang, hubungkan ke port serial komputer jika menggunakan PC atau jika ingin menggunakan USB dapat menggunakan konverter Serial to USB, setelah itu install driver kabel Serial to USB tersebut, jika sudah selesai, buka software "Hyperterminal" kemudian buka port com yang digunakan, setelah itu pilih baudrate 9600, klik konek maka device komputer dengan mikrokontroller akan terhubung.  















Cara Mengakses LCD 16x2 Dengan Bascom AVR

Cara Mengakses LCD 16x2 Dengan Bascom AVR

             

                    Pada pembahasan kali akan di bahas mengenai bagaimana cara mengakses LCD 16 x 2 dengan bahasa basic atau software compiler BASCOM AVR, sebenernya program basic jauh lebih sederhana dibanding bahasa yang lainnya menurutku, karena tidaklah memerlukan delarasi variabel yang bermacam-macam, memang bahasa basic adalah salah satu cara untuk mengakses mikrokontroller tanpa harus berfikir rumit tentang bahasa assemby-nya, berikut adalah skematik dan contoh programnya.
    
             
a. Minimum System ATMega16



b. Program Bascom "HELLO WORLD"

$regfile = "m16def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Cursor Off
Cls

Do
Locate 1 , 1
Lcd "HELLO WORLD"
Locate 2 , 1
lcd "I'AM YANUAR"

Loop



c Program Bascom Counter-Up

$regfile = "m16def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Cursor Off
Cls

Dim A As Integer

A = 0

Do

Incr A

Locate 1 , 1
Lcd "count up"
Locate 2 , 1
Lcd A

waitms 200

Loop


Cara Membuat Robot Kendali Komputer Dengan Wireless APC220


Cara Membuat Robot Kendali Komputer Dengan Wireless APC220



                 Pada kesempatan ini saya akan menjelaskan mengenai bagaimana cara membuat robot yang dikendalikan dengan komputer, sebenarnya kendali bisa menggunakan joystik atau thumb stik tanpa harus menggunakan komputer seperti video diatas menggunakan thumb stick sebagai kendalinya, kalau menggunakan komputer harus disetting dahulu menggunakan port serial dengan menggunakan program VB 6, agar modul wireless bisa mengirimkan data dari komputer ke robot atau mikrokontroller slave. robot ini menggunakan modul wireless APC220 yang mana modul ini buatan DFROBOT yang dapat menjangkau jarak 1 km, serta sangat murah dan mudah penggunaannya yaitu langsung sambungkan ke pin RX dan TX mikrokontroller. robot ini akan menerima perntah berupa angka dari komputer, angka yang dikirimkan yaitu "1", "2", "3" dan "4", masing-masing angka akan mengeksekusi perintah yang berbeda, misal angka "1" untuk robot berjalan lurus dan angka "2" untuk robot berjalan mundur, begitu pula untuk "3" dan "4" untuk robot belok kanan atau kiri. berikut penjelasan skema dan programnya.


a. Modul Wireless APC220   



b. Minimum System ATMega16



c. Motor Driver L293




d. Program VB 6



Dim arrdata()
Dim TotalBaca As Integer
Dim BMI As Single
Dim Keterangan As String
Const MAKSBACA = 10
'-----------------------------
Private Sub atas_Click()
MSComm2.Output = "1" + Chr(13)  'mengirimkan angka 1 ke serial
End Sub
'-----------------------------
Private Sub bawah_Click()
MSComm2.Output = "2" + Chr(13)  'mengirimkan angka 2 ke serial
End Sub
'-----------------------------
Private Sub berhenti_Click()
  start.Enabled = True
    berhenti.Enabled = False
    TimerBaca.Enabled = False
End Sub
'-----------------------------

Private Sub BUZZ_Click()
MSComm2.Output = "5" + Chr(13)
End Sub

Private Sub Command1_Click()
MSComm2.Output = "7" + Chr(13)
End Sub

'-----------------------------
Private Sub Command2_Click()
Unload Me
End Sub


Private Sub Down_Click()

End Sub

'-----------------------------
Private Sub Form_Load()
Dim i As Byte
For i = 1 To 16
    ComboCOM.AddItem (i)
Next i
End Sub

Private Sub kanan_Click()
MSComm2.Output = "4" + Chr(13)
End Sub

Private Sub kiri_Click()
MSComm2.Output = "3" + Chr(13)
End Sub

'----------------------------
Private Sub start_Click()
Dim u As Integer
    On Error GoTo ada_eror
    MSComm2.CommPort = ComboCOM.Text
    MSComm2.Settings = "9600,N,8,1"
    MSComm2.RThreshold = 15
    MSComm2.InputLen = 15
    MSComm2.InputMode = comInputModeText
    MSComm2.PortOpen = True
    ReDim arrdata(1 To MAKSBACA + 1)
    For u = 1 To MAKSBACA
        arrdata(u) = 0
    Next
    TotalBaca = 0
    start.Enabled = False
    berhenti.Enabled = True
    TimerBaca.Enabled = True
ada_eror:
 If ComboCOM.ListIndex < 1 Then
    MsgBox "COM berada di Nomor : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "ERROR"
    start.Enabled = True
    berhenti.Enabled = True
    ComboCOM.Text = "Pilih COM"
End If
End Sub
'-----------------------------------
Private Sub TimerBaca_Timer()
Dim strInput As String
Dim strPotong As String
Dim singleInput As Single
Dim u As Integer
    strInput = MSComm2.Input
        strPotong = strInput
        'Text1.Text = Text1.Text + strPotong + vbCrLf
        singleInput = Val(strPotong)
        If TotalBaca >= MAKSBACA Then
            TimerBaca.Enabled = False
            If MSComm2.PortOpen = True Then MSComm2.PortOpen = False
            Call berhenti_Click
        End If
End Sub



e. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600

Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Enable Interrupts

Dim Perintah As String * 1

Ddra = &B11111111
Ddrb = &B11111111

Portb.0 = 1

Dirkiri1 Alias Porta.0
Dirkiri2 Alias Porta.1
Dirkanan1 Alias Porta.2
Dirkanan2 Alias Porta.3

Config Porta.0 = Output
Config Porta.1 = Output
Config Porta.2 = Output
Config Porta.3 = Output


Do
Perintah = Waitkey()

Select Case Perintah

Case "1" :
  'maju
   Dirkiri1 = 1                  'motor kiri
   Dirkiri2 = 0
   Dirkanan1 = 0                 'motor kanan
   Dirkanan2 = 1
   Pwm1a = 50
   Pwm1b = 50

Case "2" :
  'mundur
   Dirkiri1 = 0                  'motor kiri
   Dirkiri2 = 1
   Dirkanan1 = 1                'motor kanan
   Dirkanan2 = 0
   Pwm1a = 80
   Pwm1b = 80

Case "3" :
  'kanan
   Dirkiri1 = 1                  'motor kiri
   Dirkiri2 = 0
   Dirkanan1 = 1                 'motor kanan
   Dirkanan2 = 1
   Pwm1a = 80
   Pwm1b = 80

Case "4" :
  'kiri
   Dirkiri1 = 1                  'motor kiri
   Dirkiri2 = 1
   Dirkanan1 = 0                 'motor kanan
   Dirkanan2 = 1
   Pwm1a = 80
   Pwm1b = 80

Case "5" :
   Portb.0 = 0
   Wait 1
   Portb.0 = 1

Case "6" :
   Portb.1 = 1
   Portb.2 = 1
   Portb.3 = 1

Case "7" :
   Portb.1 = 1
   Portb.2 = 1
   Portb.3 = 1

   Dirkiri1 = 1                   'motor kiri
   Dirkiri2 = 1
   Dirkanan1 = 1                  'motor kanan
   Dirkanan2 = 1
   Pwm1a = 255
   Pwm1b = 255


End Select

Loop






Membuat Robot WALL AVOIDER

Membuat Robot WALL AVOIDER
   

             Pada kesempatan yang berbahagia ini saya akan share mengenai bagaimana cara membuat robot wall avoider atau robot penghindar tembok, robot ini seperti namanya penghindar tembok, robot ini akan menghindari halangan yang ada di bagian depannya, jadi jika terdapat halangan tembok didepannya robot ini akan berbelok, entah itu ke arah kanan atau ke kiri tergantung lintasannya, robot ini menggunakan 3 buah sensor jarak HC-SRF04 yang mana ditempatkan di bagian depan, samping kanan dan kiri, fungsi sensor dibagian depan yaitu untuk mendeteksi apakah ada halangan atau tidak, kemudian fungsi sensor kanan dan kiri untuk menentukan apakah robot harus berbelok ke arah kanan atau ke arah kiri, jika sensor depan mendeteksi halangan maka mikrokontroller akan mengecek sensor kanan dan kiri, apakah ada jalan di bagian kanan atau kiri, jika ada jalan di bagian kanan maka robot akan berbelok ke arah kanan begitu pula dengan kiri, hanya menggunakan komparasi antara jarak kanan dan kiri. begitulah prinsip kerjanya, berikut adalah skema dan programnya.


Gambar ilustrasi gerak robot






a. Minimum System ATMega16



b. Motor Driver L293




 c. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000

Config Timer0 = Timer , Prescale = 256

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Ddrb = &B11111111

Config Portd.6 = Output                                     'depan
Config Pind.7 = Input
Config Portd.2 = Output                                     'kanan
Config Pind.3 = Input
Config Portd.0 = Output                                     'kiri
Config Pind.1 = Input

Dirkiri1 Alias Portb.0
Dirkiri2 Alias Portb.1
Dirkanan1 Alias Portb.2
Dirkanan2 Alias Portb.3

Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output

Declare Sub Cek_jarak1
Declare Sub Cek_jarak2
Declare Sub Cek_jarak3

Dim Data_jarak3 As Word
Dim Data_jarak_olah3 As Word
Dim Data_jarak_fix3 As Word

Dim Data_jarak1 As Word
Dim Data_jarak_olah1 As Word
Dim Data_jarak_fix1 As Word

Dim Data_jarak2 As Word
Dim Data_jarak_olah2 As Word
Dim Data_jarak_fix2 As Word

Triger3 Alias Portd.6                                       'depan
Pecho3 Alias Pind.7
Triger2 Alias Portd.2                                       'kanan
Pecho2 Alias Pind.3
Triger1 Alias Portd.0                                       'kiri
Pecho1 Alias Pind.1

Mulai:
Cls
Cursor Off
Locate 1 , 4
Lcd "Pendeteksi"
Locate 2 , 2
Lcd "Jarak Benda"
Wait 3

Do

Call Cek_jarak3                                             'depan
  Data_jarak3 = Data_jarak3
  Data_jarak_olah3 = Data_jarak3 * 100
  Data_jarak_fix3 = Data_jarak_olah3 / 256

Call Cek_jarak1                                             'kanan
  Data_jarak1 = Data_jarak1
  Data_jarak_olah1 = Data_jarak1 * 100
  Data_jarak_fix1 = Data_jarak_olah1 / 256

Call Cek_jarak2                                             'kiri
  Data_jarak2 = Data_jarak2
  Data_jarak_olah2 = Data_jarak2 * 100
  Data_jarak_fix2 = Data_jarak_olah2 / 256


Cls
Cursor Off
Upperline
Lcd "Jarak Benda="
Locate 2 , 1
Lcd Data_jarak_fix3                                         'depan
Locate 2 , 4
Lcd Data_jarak_fix1                                         'kiri
Locate 2 , 7
Lcd Data_jarak_fix2                                         'kanan
Waitms 1

'maju
If Data_jarak_fix3 > 15 And Data_jarak_fix2 > 7 And Data_jarak_fix1 > 7 Then

   Dirkiri1 = 0
   Dirkiri2 = 1
   Dirkanan1 = 0
   Dirkanan2 = 1
   Pwm1a = 70
   Pwm1b = 70

'mundur
Elseif Data_jarak_fix3 < 15 And Data_jarak_fix2 > 7 And Data_jarak_fix1 > 7 Then
   Dirkiri1 = 1
   Dirkiri2 = 0
   Dirkanan1 = 1
   Dirkanan2 = 0
   Pwm1a = 100
   Pwm1b = 100

'belok kiri
Elseif Data_jarak_fix3 > 0 And Data_jarak_fix3 < 20 And Data_jarak_fix2 < 30 And Data_jarak_fix1 > 10 Then

   Dirkiri1 = 1
   Dirkiri2 = 1
   Dirkanan1 = 0
   Dirkanan2 = 1
   Pwm1a = 0
   Pwm1b = 255
   Waitms 250

'belok kanan
Elseif Data_jarak_fix3 > 0 And Data_jarak_fix3 < 20 And Data_jarak_fix2 > 10 And Data_jarak_fix1 < 30 Then
   Dirkiri1 = 0
   Dirkiri2 = 1
   Dirkanan1 = 1
   Dirkanan2 = 1
   Pwm1a = 255
   Pwm1b = 0
   Waitms 250

End If

Loop


'depan
Sub Cek_jarak3:
Reset Triger3
Waitus 10
Set Triger3
Waitus 20
Reset Triger3
Tcnt0 = 0
Bitwait Pecho3 , Set
Start Timer0
Do
If Pecho3 = 0 Then
Data_jarak3 = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak3 = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub


'kiri
Sub Cek_jarak1:
Reset Triger1
Waitus 10
Set Triger1
Waitus 20
Reset Triger1
Tcnt0 = 0
Bitwait Pecho1 , Set
Start Timer0
Do
If Pecho1 = 0 Then
Data_jarak1 = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak1 = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub


'kanan
Sub Cek_jarak2:
Reset Triger2
Waitus 10
Set Triger2
Waitus 20
Reset Triger2
Tcnt0 = 0
Bitwait Pecho2 , Set
Start Timer0
Do
If Pecho2 = 0 Then
Data_jarak2 = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak2 = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub







 

Membuat Alat Detektor Telur Busuk

Membuat Alat Detektor Telur Busuk


         Alat detektor telur busuk ini benar2 ide yang sangat kreatif, memang jika dilihat dari prinsip kerja dan komponen yang dibutuhkan, alat ini tergolong sederhana namun bisa bermanfaat bagi orang banyak, seperti kasus di pasar atau di toko2 yang menjual telur, kita sebagai pembeli tidak tahu apakah telur yang dijual tersebut masih baru, sudah matang, atau sudah busuk, cara konvensional yang dipakai oleh ibu2 rumah tangga dalam memilih telur yaitu dengan menerawang ke langit, ya itu memang cara lain namun bagaimana jika itu dimalam hari yang gelap ?, nah teknologi yang simple namun berefek besar inilah yang bisa menjawabnya.  
          Prinsip kerja dari detektor telur busuk yaitu terdapat sebuah led putih atau kuning yang bisa memancarkan cahaya hingga tembus ke permukaan telur, biasanya LED yang dipakai yaitu super bright dan jumlahnya ada dua atau tiga buah agar didapat pancara sinar yang menyeluruh ke telur. kemudian sensor untuk mengkap cahayanya dipakai sensor photodioda, sensor ini sangat efektif sekali untuk urusan menerima cahaya pantul atau mendeteksi cahaya, sensor ini dipakai karena fokus deteksi photodioda tertuju pada satu arah atau satu titik yaitu titik tengah, jika telur yang dideteksi adalah telur normal atau telur baru maka cahaya dari LED akan bisa tembus ke permukaan telur dibelakangnya, sehingga photodioda dapat mendeteksi adanya cahaya pada kulit telur, namun jika telur tersebut busuk maka cahaya tidak dapat tembus ke permukaan telur karena adanya penghalang dibagian tengah telur, entah itu karena busuk atau karena matang. berikut ilustrasi dan skemanya.

 Ilustrasi jika telur masih bagus




 Ilustrasi jika telur sudah busuk



a. Minimum System ATMega16


 b. Skematik Rangkaian Phodioda dan Led




 c. Program bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Cahaya As Word

Cls
Cursor Off

Start Adc

Do
Cahaya = Getadc(0)

If Cahaya > 1000 Then
Upperline
Lcd "TELUR BUSUK"
Else
Upperline
Lcd "TELUR BAGUS"
End If

Loop










 

Membuat Alat Pengendali Led dengan Handphone J2ME


Membuat Alat Pengendali Led dengan Handphone J2ME
                 
           Pada kesempatan kali ini akan membahas bagaimana cara membuat pengenali led yang berjumlah dua buah yang dikendalikan nyala-mati atau ON-OFF menggunakan sebuah handphone dengan operating system J2ME, jadi menggunakan media Bluetooth, pada handphone terdapat fitur Bluetooth yang diposisikan sebagai master (pengirim) dan pada mikrokontroller terdapat bluetooth device JY-MCU ver 1.03 yang diposisikan sebagai slave (penerima), sehingga kedua device dapat saling berkomunikasi satu sama lainnya. Gambar 6.28 adalah tampilan alat yang akan dibuat.

 
            Alat ini menggunakan mikrokontroller ATMega32 sebagai penerjemah dari data yang dikirimkan oleh handphone, sehingga data diterima oleh Bluetooth JY-MCU ver 1.03 dapat diterjemahkan oleh mikrokontroller dengan baik dan akan menghasilkan output yang sesuai.

 Prinsip Kerja Alat
            Prinsip kerja alat ini sangatlah sederhana yaitu hanphone mengirimkan data berupa angka “1”, “2”, “3”, dan “4” melalui bluetooh, kemudian data tersebut diterima oleh Bluetooth JY-MCU ver 1.03 sebagai slave (penerima), kemudian data tersebut kirim lagi ke mikrokontroller, di mikrokontroller data yang diterima oleh Bluetooth JY-MCU diolah dan dibaca, setelah menemukan data yang dikirim maka mikrokontroller akan mengeluarkan output yang sesuai dengan program yang dimasukkan. Untuk lebih jelasnya perhatikan bagan berikut.



          Output dari mikrokontroller pada alat ini adalah tampilan karakter pada LCD display dan dua buah led yaitu led 5mm merah dan kuning, sebenarnya output led hanyalah contoh saja, untuk aplikasi yang lebih bagus bisa diganti dengan output berupa motor DC, motor servo, buzzer, dotmatrik, dan lain-lain.


Rangkaian Hardware
                  Rangkaian hardware yang dibutuhkan untuk membuat alat ini adalah rangkaian minimum system ATMega32 ditambah LCD, Bluetooth (slave) JY-MCU, rangkaian led, Handphone J2ME (tidak touchscreen).

a. Bluetooth JY-MCU
             Sebagai slave atau receiver dari USB bluetooth dongle, maka lebih tepat menggunakan modul slave yang bernama JY-MCU v1.03, untuk versi bisa apa saja, namun yang dipakai pada pembahasan kali ini yaitu JY-MCU yang versi 1.03. berikut adalah bentuk dari modulnya.   


          Pemasangan dari modul ini ke mikrokontroler hanya memasangkan pin RX  JY-MCU ke TX pin mikrokontroler, begitula dengan Tx masuk ke pin Rx mikrokontroller, VCC dan GND. yang digunakan hanyalah 4 buah jalur yaitu RX, TX, GND dan VCC. Berikut bagan dan konfigurasi koneksinya

 
b. Handphone J2ME
                  Maksud dari  Handphone J2ME disini yaitu handphone yang menggunakan operating system J2ME bukan Android, atau yang lain. Handphone yang menggunakan operatis system J2ME banyak sekali namun biasanya dipakai oleh handphone Sony Ericsson contoh Sony Ericsson K310i, Sony Ericsson K530i dan lainnya.
                  Handphone yang dipakai untuk pembuatan alat ini yaitu handphone Sony Ericsson K530i yang mana bentuknya seperti pada Gambar 6.28c, handphone ini memiliki operating system JAVA J2ME, dan menggunakan tombol keypad, sehingga memudahkan dalam penggunaannya.



 c. Minimum System ATMega


d. Rangkaian Led
                  Dua buah Led yang digunakan pada alat ini adalah led merah 5mm super bright dan led kuning 5mm super bright, led ini hanyalah untuk contoh output, untuk pengembangan lebih lanjut bisa diganti dengan output lain seperti relay, motor, servo dan lain-lain



 
Program Bascom AVR
'==========================================================================
'Programmer: Yanuar Mukhammad
'E-mail    : Yanuarm@hotmail.com
'==========================================================================
$regfile = "m32def.dat"
$crystal = 12000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Config Portb.0 = Output
Config Portb.1 = Output

Enable Interrupts

Dim Perintah As String * 1
Upperline
Lcd "Bluetooth"
Lowerline
Lcd "Connect"
Wait 5

Cls
Cursor Off
Do
Perintah = Waitkey()
Select Case Perintah
Case "1" :
Cls
      Portb.0 = 1
      Upperline
      Lcd "led 1 ON"
Case "2" :
Cls
      Portb.0 = 0
      Upperline
      Lcd "led 1 OFF"
Case "3" :
Cls
      Portb.1 = 1
      Lowerline
      Lcd "led 2 ON"
Case "4" :
Cls
      Portb.1 = 0
      Lowerline
      Lcd "led 2 OFF"
End Select
Loop




Pembuatan Aplikasi Handphone
                  Pada Pembuatan software / aplikasi pada handphone J2ME ini memerlukan sebuah software bernama Netbeans, kenapa pakai Netbeans ? karena Netbeans merupakan software yang dapat menampung dan menangani file-file yang berformat “.java” sehingga jika telah jadi akan menghasilkan file berbentuk “.jar” atau “.jad” untuk Java ME.
                  Aplikasi yang akan dibuat pada alat ini tampilannya akan tampak seperti Gambar 6.28f, yang mana terdapat empat buah menu kendali yaitu Led 1 On, Led 1 Off, Led 2 On dan Led 2 Off.
 


PROGRAM JAVA J2ME


1.      Isikan program pada MIDlet “bluetoothj2me” dengan program berikut.


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.io.*;

public class bluetoothj2me extends MIDlet implements CommandListener {

    private Display display;
    Menu menu;
    private Command cmdExit;
    private Command cmdfresh;
    public String btConnectionURL;
    public OutputStream out;
    public InputStream is;
    public OutputStreamWriter ow;
    public InputStreamReader ir;

    public bluetoothj2me() {
        display = Display.getDisplay(this);
        menu = new Menu();
        cmdExit = new Command("Exit", Command.EXIT, 0);
        menu.setCommandListener(this);
        menu.addCommand(cmdExit);
    }

    public void startApp() {
        display.setCurrent(menu);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {
        if (c == cmdExit) {
            destroyApp(true);
            notifyDestroyed();
        }
    }
}



2.      Kemudian isikan program pada Java Class “Menu” dengan program berikut. Ubah code “001203287048” dengan nama Bluetooth yang akan digunakan

            import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.io.*;

public class Menu extends Canvas implements CommandListener {

    int lebar;
    int panjang;
    int selectedMenu = 1;
    String[] menu = {"Daftar Menu:", "Led 1 On", "Led 1 Off", "Led 2 On", "Led 2 Off"};
    Font plainMenu, boldMenu;
    private Display display;
    public String btConnectionURL;
    public OutputStream out;
    public InputStream is;
    public OutputStreamWriter ow;
    public InputStreamReader ir;

    public Menu() {
        lebar = getWidth();
        panjang = getHeight();
        plainMenu = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL);
        boldMenu = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
    }

    public void drawMenu(Graphics g) {
        g.setColor(100, 100, 100);
        g.setFont(plainMenu);
        g.drawString(menu[0], 20, 20, Graphics.BASELINE | Graphics.LEFT);

        for (int i = 1; i < menu.length; i++) {
            if (i == selectedMenu) {
                g.setColor(100, 80, 150);
                g.setFont(boldMenu);
            } else {
                g.setColor(50, 80, 100);
                g.setFont(plainMenu);
            }
            g.drawString(menu[i], 25, 20 + i * plainMenu.getHeight(), Graphics.BASELINE | Graphics.LEFT);
        }
    }

    protected void paint(Graphics g) {
        g.setColor(250, 250, 250);
        g.fillRect(0, 0, getWidth(), getHeight());

        drawMenu(g);
    }

    public void keyPressed(int keyCode) {
        switch (getGameAction(keyCode)) {
            case Canvas.DOWN:
                selectedMenu++;
                if (selectedMenu > menu.length - 1) {
                    selectedMenu = 1;
                }
                break;
            case Canvas.UP:
                selectedMenu--;
                if (selectedMenu <= 0) {
                    selectedMenu = menu.length - 1;
                }
                break;
            case Canvas.FIRE:
                if (selectedMenu == 1) {
                    try {
                        btConnectionURL = "btspp://" + "001203287048" + ":1;authenticate=true;encrypt=false;master=false";
                        StreamConnection connection = (StreamConnection) Connector.open(btConnectionURL);
                        out = connection.openOutputStream();
                        is = connection.openInputStream();
                        OutputStreamWriter ow = new OutputStreamWriter(out, "US-ASCII");
                        InputStreamReader ir = new InputStreamReader(is, "US-ASCII");
                        ow.write("1");
                        connection.close();
                        connection = null;
                        is.close();
                        ow.close();
                    } catch (IOException ioe) {
                    }
                } else if (selectedMenu == 2) {
                    try {
                        btConnectionURL = "btspp://" + "001203287048" + ":1;authenticate=true;encrypt=false;master=false";
                        StreamConnection connection = (StreamConnection) Connector.open(btConnectionURL);
                        out = connection.openOutputStream();
                        is = connection.openInputStream();
                        OutputStreamWriter ow = new OutputStreamWriter(out, "US-ASCII");
                        InputStreamReader ir = new InputStreamReader(is, "US-ASCII");
                        ow.write("2");
                        connection.close();
                        connection = null;
                        is.close();
                        ow.close();
                    } catch (IOException ioe) {
                    }

                } else if (selectedMenu == 3) {
                    try {
                        btConnectionURL = "btspp://" + "001203287048" + ":1;authenticate=true;encrypt=false;master=false";
                        StreamConnection connection = (StreamConnection) Connector.open(btConnectionURL);
                        out = connection.openOutputStream();
                        is = connection.openInputStream();
                        OutputStreamWriter ow = new OutputStreamWriter(out, "US-ASCII");
                        InputStreamReader ir = new InputStreamReader(is, "US-ASCII");
                        ow.write("3");
                        connection.close();
                        connection = null;
                        is.close();
                        ow.close();
                    } catch (IOException ioe) {
                    }
                } else if (selectedMenu == 4) {
                    try {
                        btConnectionURL = "btspp://" + "001203287048" + ":1;authenticate=true;encrypt=false;master=false";
                        StreamConnection connection = (StreamConnection) Connector.open(btConnectionURL);
                        out = connection.openOutputStream();
                        is = connection.openInputStream();
                        OutputStreamWriter ow = new OutputStreamWriter(out, "US-ASCII");
                        InputStreamReader ir = new InputStreamReader(is, "US-ASCII");
                        ow.write("4");
                        connection.close();
                        connection = null;
                        is.close();
                        ow.close();
                    } catch (IOException ioe) {
                    }
                }
        }
        repaint();
    }
    public void commandAction(Command c, Displayable d) {
    }
    private void destroyApp(boolean b) {
    }
    private void notifyDestroyed() {
    }
}




 
Cara Penggunaan Alat
                  Penggunaan alat ini, pertama aktifkan minimum system dan Bluetooth JY-MCU, sehingga akan nampak LCD yang menyala dan Led indikator pada bluetooth JY-MCU berkedip, langkah kedua siapkan handphone yang telah terintsll program bluej2me.jar, aktifkan aplikasinya. Jika telah terkoneksi dengan baik, tekan salah satu menu yang ada, maka hasil akan seperti pada table berikut.

Menu Yang Ditekan
Nyala Led
Tampilan LCD
Led 1 On
Led merah menyala
Led 1 ON
Led 1 Off
Led merah padam
Led 1 OFF
Led 2 On
Led kuning menyala
Led 2 ON
Led 2 Off
Led kuning padam
Led 2 OFF



 VIDEO HASILNYA







Selamat Mencoba kawan........................