Translate

Membuat Jam Digital Menggunakan RTC ( Real Time Clock ) dan Mikrokontroller

Membuat Jam Digital Menggunakan RTC ( Real Time Clock ) dan Mikrokontroller


            Pada saat yang berbahagia ini saya akan menjelaskan mengenai bagaimana cara membuat jam digital menggunakan mikrokontroller dan RTC sebagai kendali waktunya, Adanya IC RTC yaitu DS1307 dan battery 3,3 volt membuat mikrokontroller update selalu waktunya biarpun alat dalam keadaan OFF atau mati, jika dihidupkan kembali maka waktu yang tertera akan update atau real time yaitu waktu sekarang biarpun sebelumnya alat dalam posisi mati, itu karena adanya supply dan detak pulsa dari rangkaian RTC. Perlu diingat bahwa pada bascom AVR ada dua cara mengakses RTC atau jam digital, pertama menggunakan library dan kedua tidak menggunakan library, waktu menggunakan library biasanya saat dikonfigrasikan dengan SD card Module atau device yang menggunakan SPI Port, saat tidak menggunakan library yaitu saat tidak menggunakan SPI Port. Untuk lebih jelasnya berikut skema dan programnya.



a. Minimum System + RTC




b. Program Bascom AVR tidak menggunakan Library RTC

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

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

Cls
Cursor Off

Config Sda = Portc.1
Config Scl = Portc.0

Const Ds1307w = &HD0
Const Ds1307r = &HD1

Dim Oke As Integer
Dim Mark As Byte

Dim _sec As Byte
Dim _min As Byte
Dim _hour As Byte
Dim _day As Byte
Dim _month As Byte
Dim _year As Byte
Dim _weekday As Byte

Dim Sa(3) As String * 2
Dim Sb(3) As String * 2

Declare Sub Getdatetime
Declare Sub Settime
Declare Sub Getsec
Declare Sub Disptime
Declare Sub Dispdate
Declare Sub Format_00
Declare Sub Setdate
Declare Sub Subset

Dim I As Byte
Dim Flagset As Bit                                          '0 = Waktu, 1 = Tanggal
Dim Flagreset As Bit
Dim Line1 As String * 1

Dim Weekday As Byte
Dim Jam_puluhan As Integer
Dim Jam_satuan As Integer
Dim Min_puluhan As Integer
Dim Min_satuan As Integer
Dim Sec_puluhan As Integer
Dim Sec_satuan As Integer

Ddrb.0 = 1
Ddrb.1 = 1
Ddrb.2 = 1
Ddrb.3 = 1

'_sec = 00
'_hour = 14
'_min = 59
'Settime

'_day = 28
'_month = 11
'_year = 15
'Setdate

I = 13
Line1 = Chr(13)

Do

Portb.0 = 1
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0

Wait 3

Portb.0 = 0
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Wait 1
Getdatetime

Upperline
Disptime
Lowerline
Dispdate

Loop
Sub Getdatetime:

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address

I2cwbyte 0                                                  ' start address in 1307

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307r                                            ' send address

I2crbyte _sec , Ack
I2crbyte _min , Ack                                         ' MINUTES
I2crbyte _hour , Ack                                        ' Hours
I2crbyte _weekday , Ack                                     ' Day of Week
I2crbyte _day , Ack                                         ' Day of Month
I2crbyte _month , Ack                                       ' Month of Year
I2crbyte _year , Nack                                       ' Year

I2cstop

_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
End Sub

Sub Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 0                                                  ' starting address in 1307
I2cwbyte _sec                                               ' Send Data to SECONDS
I2cwbyte _min                                               ' MINUTES
I2cwbyte _hour                                              ' Hours
I2cstop

End Sub

Sub Setdate

_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 4                                                  ' starting address in 1307
I2cwbyte _day                                               ' Send Data to SECONDS
I2cwbyte _month                                             ' MINUTES
I2cwbyte _year                                              ' Hours
I2cstop

End Sub
Sub Dispdate
Sa(1) = Str(_day)
Sa(2) = Str(_month)
Sa(3) = Str(_year)
Format_00
Lcd "Date: " ; Sb(1) ; "-" ; Sb(2) ; "-" ; Sb(3)
End Sub


Sub Disptime
Sa(1) = Str(_hour)
Sa(2) = Str(_min)
Sa(3) = Str(_sec)
Format_00
Lcd "Time: " ; Sb(1) ; ":" ; Sb(2) ; ":" ; Sb(3)
End Sub

Sub Format_00
For I = 1 To 3 Step 1
Sb(i) = Format(sa(i) , "00")
Next I
End Sub



c. Program Bascom AVR menggunakan Library RTC

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

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

Cls
Cursor Off

$lib "ds1307clock.lib"

Config Sda = Portc.1
Config Scl = Portc.0
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Config Clock = User
Dim Weekday As Byte
Dim Char As String * 10 , Tanda As String * 1
Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10
Dim Hari As String * 10 , Bulan As String * 10 , Tahun As String * 10
Dim A As Byte , B As Byte , C As Byte
Dim X As Byte , Y As Byte , Z As Byte
Dim Waktu As String * 10
Dim Tanggal As String * 10

'Date$ = "09-11-15"
'Time$ = "15-13-10"

Ddrd.0 = 1

Print "Tanggal: " ; Date$
Print "Waktu:" ; Time$
  Cls
  Cursor Off
  Locate 1 , 1
  Lcd "Tanggal: " ; _day ; "-" ; _month ; "-" ; _year
  Locate 2 , 1
  Lcd "Waktu : " ; _hour ; ":" ; _min ; ":" ; _sec
  Wait 1

Mulai:
Do
Print "Tanggal: " ; Date$
Print "Waktu:" ; Time$
  Cls
  Cursor Off
  Locate 1 , 1
  Lcd "Tanggal: " ; _day ; "-" ; _month ; "-" ; _year
  Locate 2 , 1
  Lcd "Waktu : " ; _hour ; ":" ; _min ; ":" ; _sec
  Wait 1

  If _hour = 4 Then                                         'setting waktu alarm
  Portd.0 = 1
  Else
  Portd.0 = 0
  End If

Loop
End

'Pengambilan data RTC DS1307
Getdatetime:
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0
  I2cstart
  I2cwbyte Ds1307r
  I2crbyte _sec , Ack
  I2crbyte _min , Ack
  I2crbyte _hour , Ack
  I2crbyte Weekday , Ack
  I2crbyte _day , Ack
  I2crbyte _month , Ack
  I2crbyte _year , Nack
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 4
  I2cwbyte _day
  I2cwbyte _month
  I2cwbyte _year
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0
  I2cwbyte _sec
  I2cwbyte _min
  I2cwbyte _hour
  I2cstop
Return



e. Cara Penggunaan

Pada bagian code berikut pada program pertama

 '_sec = 00
'_hour = 14
'_min = 59
'Settime

'_day = 28
'_month = 11
'_year = 15
'Setdate

harus di-uncomment atau hilangkan tanda " ' " dahulu untuk memasukkan data waktu dan tanggal kedalam DS1307, setelah di-upload ke mikrokontroller kemudian upload kembali dengan menonaktifkan code tersebut agar tidak kembali reset ke nilai awal.

Pada bagian code berikut pada program kedua

'Date$ = "09-11-15"
'Time$ = "15-13-10"

harus di-uncomment atau hilangkan tanda " ' " dahulu untuk memasukkan data waktu dan tanggal kedalam DS1307, setelah di-upload ke mikrokontroller kemudian upload kembali dengan menonaktifkan code tersebut agar tidak kembali reset ke nilai awal.


 
FOTO HASILNYA










Jual Alat Kendali Relay Menggunakan Waktu ( RTC - Real Time Clock )

Jual Alat Kendali Relay Menggunakan Waktu ( RTC - Real Time Clock )
 
            Produk Baru November, Alat kendali relay via waktu, Alat ini sangat cocok sekali dengan aplikasi otomasi, seperti menghidupkan kipas otomatis, menghidupkan lampu AC otomatis dan lain-lain menggunakan pewaktu, jadi nanti bisa diset kapan device tersebut nyala / ON dan kapan device tersebut mati / OFF. Alat ini memiliki fitur sebagai berikut.

1. Memiliki 4 buah relay
2. Memiliki indikator relay ON / OFF
3. Menggunakan RTC ( Real Time Clock )
4. Memiliki LCD 16x2
5. Menggunakan ATMega16
6. Semua Port I/O ditampilkan di PCB
7. Port VCC dan GND ada 8 buah
8. Menggunakan soket DC untuk power supply
9. Rendah daya dan harga murah
10. Bisa diset sesuai keinginan


MAU ? Hubungi kami via SMS / WA
HARGA = Rp. 750.000 


Foto Produk :










  

Jual 3D Printer Arduino Mega

Jual 3D Printer Arduino Mega

         Assalamu'alaikum Wr. Wb. Kami dari team 3D Printer menjual alat yang digunakan untuk menghasilkan benda-benda 3D, alat ini adalah 3D printer yang sangat murah jika dibandingkan yang lain, selain itu kami juga akan memberikan software dan tutorial penggunaannya, jika ada masalah dalam mekanismenya bisa kontak kami kapan saja via WA atau BBM., Alat ini bisa digunakan untuk membuat komponen 3D seperti aero modelling part, body mainan mobil, pesawat, kapal dan lainnya.

Tertarik ingin membeli ?
Harga = Rp. 3.250.000 ( Nego )

Komponen utama :
1. Arduino Mega
2. Motor Stepper plus driver stepper
3. Pemanas plastik


FOTO PRINTER 3D :




FOTO HASILNYA




VIDEO HASILNYA
 







Jual Alat Pendeteksi Suhu dan Kelembapan

Jual Alat Pendeteksi Suhu dan Kelembapan

                Ingin punya alat yang bisa digunakan untuk monitoring suhu dan kelembapan dirumah atau di mobil ?, atau mau monitoring suhu dan kembapan tanaman ? tidak perlu khawatir karena kami menjual alat tersebut, alat ini menggunakan sensor yang baik dan tingkat keakuratannya bagus, alat ini menghasilkan dua buah output yaitu suhu dan kelembapan, selain itu keuntungan alat ini yaitu menggunakan tegangan DC 12 volt atau bisa menggunakan battery kotak 9 volt, untuk tampilannya seperti gambar berikut, jika menginginkan tambahan device maka kami siap membantu dengan biaya pun bertambah tergantung harga device yang akan ditambahkan. 

Harga = Rp. 750.000  (Sudah Ongkir)
Bisa pesan via E-mail atau via SMS / WA
Jika ingin plus programnya +300.000, total = Rp. 1050.000 (sudah ongkir)










Membuat Alat Pendeteksi Suhu dan Kelembapan Menggunakan Dotmatrik dan DHT11

Membuat Alat Pendeteksi Suhu dan Kelembapan Menggunakan Dotmatrik dan DHT11


            Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara mengakses dan membuat sebuah alat yang mana alat tersebut dapat mendeteksi suhu dan kelembapan serta ditampilkan kedalam dotmatrix 5x7, sensor yang dipakai yaitu DHT11 untuk detektor suhu dan kelembapan kemudian IC dotmatrix yang digunakan adalah 74HC595. Pada alat ini menggunakan mikrokontroller ATMega8 sebagai processornya. Jadi tampilan alat ini adalah suhu dan kelembapan, untuk lebih jelasnya berikut program dan skemanya.


a. Skematik Rangkaian





b. VIDEO HASILNYA





c. Program Bascom AVR

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

Declare Sub Get_th(t As Byte , H As Byte)
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128

Dht_put Alias Portb.4
Dht_get Alias Pinb.4
Dht_io_set Alias Ddrb.4

Dim T As Byte
Dim H As Byte
Dim Tin As Byte
Dim Hin As Byte

Dim Satuant As Byte
Dim Satuanh As Byte
Dim Puluhant As Byte
Dim Puluhanh As Byte
Dim Strsatuant As String * 5
Dim Strsatuanh As String * 5
Dim Strpuluhant As String * 5
Dim Strpuluhanh As String * 5
Dim Awal1 As Integer
Dim Akhir1 As Integer
Dim Awal2 As Integer
Dim Akhir2 As Integer
Dim Awal3 As Integer
Dim Akhir3 As Integer
Dim Awal4 As Integer
Dim Akhir4 As Integer
Dim Awal5 As Integer
Dim Akhir5 As Integer
Dim Awal6 As Integer
Dim Akhir6 As Integer


Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Dim Coun As Integer

Enable Interrupts

Set Dht_io_set
Set Dht_put

Dataout Alias Portc.1
Clock Alias Portc.2

Dataout2 Alias Portb.3
Clock2 Alias Portb.5

Dim Datas As Byte
Dim Datasx As Byte

Dim I As Integer
Dim Zz As Integer


Ddrc = &B11111111
Ddrb.2 = 1
Ddrb.5 = 1

Main:

Awal1 = 0
Akhir1 = 0
Awal2 = 0
Akhir2 = 0
Awal3 = 0
Akhir3 = 0


Do

Wait 1
Call Get_th(t , H)

Tin = T Mod 100
Puluhant = Tin / 10
Satuant = Tin Mod 10


Hin = H Mod 100
Puluhanh = Hin / 10
Satuanh = Hin Mod 10

'satuan
Awal1 = Satuant * 8
Akhir1 = Awal1 + 7

'puluhan
Awal2 = Puluhant * 8
Akhir2 = Awal2 + 7

'T atau H
Awal3 = 0
Akhir3 = Awal3 + 7


'satuan
Awal4 = Satuanh * 8
Akhir4 = Awal4 + 7

'puluhan
Awal5 = Puluhanh * 8
Akhir5 = Awal5 + 7

'T atau H
Awal6 = 8
Akhir6 = Awal6 + 7


Goto Datakirim



Loop



Datakirim:
Coun = 0
Do

For I = Awal1 To Akhir1

Portc.2 = 0
Portc.2 = 1

Portb.5 = 0
Portb.5 = 1


Datasx = Lookup(i , Variasi)
Shiftout Dataout2 , Clock2 , Datasx , 1


Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Angka)
Shiftout Dataout , Clock , Datas , 1


Portb.5 = 0
Portc.2 = 0

Waitus 100

Portc.0 = 1
Portc.0 = 0

Portb.2 = 1
Portb.2 = 0


Next I




For I = Awal2 To Akhir2

Portc.2 = 0
Portc.2 = 1

Portb.5 = 0
Portb.5 = 1


Datasx = Lookup(i , Variasi)
Shiftout Dataout2 , Clock2 , Datasx , 1


Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Angka)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1


Portb.5 = 0
Portc.2 = 0
Waitus 100

Portc.0 = 1
Portc.0 = 0

Portb.2 = 1
Portb.2 = 0


Next I



For I = Awal3 To Akhir3

Portc.2 = 0
Portc.2 = 1

Portb.5 = 0
Portb.5 = 1


Datasx = Lookup(i , Variasi)
Shiftout Dataout2 , Clock2 , Datasx , 1


Datas = Lookup(i , Huruf)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1


Portb.5 = 0
Portc.2 = 0
Waitus 100

Portc.0 = 1
Portc.0 = 0

Portb.2 = 1
Portb.2 = 0

Next I

Incr Coun

Loop Until Coun = 1000

'===================================
Coun = 0
Do

For I = Awal4 To Akhir4

Portc.2 = 0
Portc.2 = 1

Portb.5 = 0
Portb.5 = 1


Datasx = Lookup(i , Variasi)
Shiftout Dataout2 , Clock2 , Datasx , 1


Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Angka)
Shiftout Dataout , Clock , Datas , 1


Portb.5 = 0
Portc.2 = 0

Waitus 100

Portc.0 = 1
Portc.0 = 0

Portb.2 = 1
Portb.2 = 0


Next I




For I = Awal5 To Akhir5

Portc.2 = 0
Portc.2 = 1

Portb.5 = 0
Portb.5 = 1


Datasx = Lookup(i , Variasi)
Shiftout Dataout2 , Clock2 , Datasx , 1


Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Angka)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1


Portb.5 = 0
Portc.2 = 0
Waitus 100

Portc.0 = 1
Portc.0 = 0

Portb.2 = 1
Portb.2 = 0


Next I



For I = Awal6 To Akhir6

Portc.2 = 0
Portc.2 = 1

Portb.5 = 0
Portb.5 = 1


Datasx = Lookup(i , Variasi)
Shiftout Dataout2 , Clock2 , Datasx , 1


Datas = Lookup(i , Huruf)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1

Datas = Lookup(i , Kosong)
Shiftout Dataout , Clock , Datas , 1


Portb.5 = 0
Portc.2 = 0
Waitus 100

Portc.0 = 1
Portc.0 = 0

Portb.2 = 1
Portb.2 = 0

Next I

Incr Coun

Loop Until Coun = 1000


Goto Main
Return



Sub Get_th(t As Byte , H As Byte)

 Count = 0
 Sensor_data = ""
 Set Dht_io_set
 Reset Dht_put
 Waitms 25

 Set Dht_put
 Waitus 40
 Reset Dht_io_set
 Waitus 40
 If Dht_get = 1 Then
    H = 1
    Exit Sub
 End If

  Waitus 80
  If Dht_get = 0 Then
    H = 2
    Exit Sub
  End If

  While Dht_get = 1 : Wend

   Do
    While Dht_get = 0 : Wend
    Waitus 30
     If Dht_get = 1 Then
       Sensor_data = Sensor_data + "1"
       While Dht_get = 1 : Wend
       Else
       Sensor_data = Sensor_data + "0"
    End If
    Incr Count
   Loop Until Count = 40

   Set Dht_io_set
   Set Dht_put

   Tmp_str8 = Left(sensor_data , 8)
   H = Binval(tmp_str8)

   Tmp_str8 = Mid(sensor_data , 17 , 8)
   T = Binval(tmp_str8)

   Tmp_str8 = Right(sensor_data , 8)
   Crc = Binval(tmp_str8)

   Mybyte = T + H
   If Mybyte <> Crc Then
      H = 3
   End If
End Sub
Return


Kosong:
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111




Variasi:
Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001

Data &B1000000
Data &B0100000
Data &B0010000
Data &B0001000
Data &B0000100
Data &B0000010
Data &B0000001
Data &B0000001


'(

Aa:
Data &B11000111
Data &B00111001
Data &B00111001
Data &B00000001
Data &B00000001
Data &B00111001
Data &B00111001
Data &B00111001



Bb:
Data &B00000001
Data &B00111101
Data &B00111101
Data &B00000011
Data &B00000001
Data &B00111101
Data &B00111001
Data &B00000011

')
'0-7
Angka:
'0:
Data &B10000001
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10000001


'8-15
'1:
Data &B11000111
Data &B10000111
Data &B11100111
Data &B11100111
Data &B11100111
Data &B11100111
Data &B11100111
Data &B10000001


'16-23
'2:
Data &B11000001
Data &B10011001
Data &B11111001
Data &B11110011
Data &B11100111
Data &B11001111
Data &B10011111
Data &B10000001


'24 31
'3:
Data &B10000001
Data &B11111001
Data &B11111001
Data &B11000001
Data &B11000001
Data &B11111001
Data &B11111001
Data &B10000001


'32-39
'4:
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10000001
Data &B10000001
Data &B11111001
Data &B11111001
Data &B11111001


'40-47
'5:
Data &B10000001
Data &B10011111
Data &B10011111
Data &B10000001
Data &B10000001
Data &B11111001
Data &B11111001
Data &B10000001



'48-55
'6:
Data &B10000001
Data &B10011111
Data &B10011111
Data &B10000001
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10000001


'56-63
'7:
Data &B10000001
Data &B10000001
Data &B11111001
Data &B11110011
Data &B11100111
Data &B11001111
Data &B10011111
Data &B10011111


'64-71
'8:
Data &B10000001
Data &B10011001
Data &B10011001
Data &B10000001
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10000001


'72-79
'9:
Data &B10000001
Data &B10011001
Data &B10011001
Data &B10011001
Data &B10000001
Data &B11111001
Data &B11111001
Data &B10000001


Huruf:
'80-87
'10:
Data &B11110001
Data &B11110111
Data &B11110001
Data &B11111101
Data &B11110001
Data &B11111111
Data &B11111111
Data &B11111111


'88-95
'11:
Data &B11110101
Data &B11110101
Data &B11110001
Data &B11110101
Data &B11110101
Data &B11111111
Data &B11111111
Data &B11111111













Alat Pengusir Burung dan Tikus di Sawah

Alat Pengusir Burung dan Tikus di Sawah


            Malam hari ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang bisa mengusir burung dan tikus yang kerap sekali menggangu para petani, berawal dari keresahan warga akhirnya saya pun membuat alat ini, prinsip kerja alat ini yaitu terdapat sensor PIR yang akan mendeteksi gerakan dan panas tubuh dari burung, jika terdeteksi maka akan menggerakkan tangan orang2an sawah ini, sehingga akan terlihat hidup yang mana akan mengusir burung, untuk tikus dibuat rangkaian yang berbeda, dengan menggunakan frekuensi tertentu maka tikus akan pergi , untuk lebih jelasnya berikut adalah penjelasan detailnya.



a. Minimum System ATMega





b. Sensor PIR 





c. Sensor Suara





d. Mikro Servo





e. Rangkaian Pengusir Tikus





f. Program Bascom AVR

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

Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
Config Portb.1 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim X As Integer
Dim Dataadc1 As Word
Dim Dataadc2 As Word

X = 0

Enable Interrupts

Ddrc.0 = 0

Start Adc

Do

Dataadc1 = Getadc(0)
Dataadc2 = Getadc(1)

If Pinc.0 = 1 Or Dataadc1 > 350 Or Dataadc2 > 350 Then
Do
Servo(1) = 90
Waitms 200
Servo(1) = 200
Waitms 200
Incr X
Loop Until X = 1
End If

X = 0
Loop





g. VIDEO HASILNYA









Monitoring Ketinggian Air via Internet

Monitoring Ketinggian Air via Internet


           Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara memonitoring ketinggian air menggunakan media internet hosting yang diposisikan sebagai server sedangkan transmitter datanya adalah sensor dan mikrokontroller yang terhubung ke router dan internet, sensor yang dipakai adalah PING))) yang mana maksimal jarak deteksinya sekitar 3 meter saja, jadi lebih dari itu datanya kurang valid. jika menginginkan jarak yang lebih jauh bisa diganti sensornya secara terpisah tergantung kebutuhan, untuk lebih jelasnya berikut penjelasannya.



a. Arduino + Ethernet





b. Sensor PING)))





c. Modem dan Router





d. Program ARDUINO IDE

// Cara membuat server hosting kunjungi web berikut
// http://kursuselektronikaku.blogspot.co.id/2015/05/cara-menyimpan-database-di-internet.html

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

const int pingPin = 7;
int tinggi;

String txData="";

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.charging-stations.hol.es"; 
IPAddress ip(192,168,1,99);
EthernetClient client;


void setup() {
 Serial.begin(9600);
  while (!Serial) {
    ; //wait for serial port to connect. Needed for Leonardo only
  }
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
    delay(1000);
    Serial.println("connecting...");
//    kirim ();

}

void loop()
{
  long duration, inches, cm;

  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);
  tinggi = cm;
 
//  Serial.print(cm);
//  Serial.print("cm");
//  Serial.println();
 
  delay(1000);
 
kirim ();

}

long microsecondsToInches(long microseconds)
{
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
  return microseconds / 29 / 2;
}

void kirim (){
  EthernetClient client;
  if (client.connect(server, 80)){
    txData = "tinggi="+ (String (tinggi));
    Serial.println("connected");
    client.println("POST /konekin.php HTTP/1.1");
    client.println("Host: www.charging-stations.hol.es");
    client.println("Connection: close");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(txData.length());
    client.print("\n\n");
    client.print(txData);
    Serial.println(txData);
  }  
  else{
    Serial.println("Connection Failed."); // Again the Serial is for feedback. 
    Serial.println();
  }
}




e. VIDEO HASILNYA










Membuat Alat Untuk Kendali Suhu / kelembapan Tanaman Anthurium dan Jamur

Membuat Alat Untuk Kendali Suhu / kelembapan Tanaman Anthurium dan Jamur


            Pada kesempatan berbahagia ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk mengendalikan kesejukan, intensitas cahaya dan waktu penyiraman secara otomatis untuk tanaman hias, jamur dan tanaman culture jaringan. Alat ini dilengkapi dengan 4 buah kipas DC yang ukurannya besar, kemudian ada kran air  otomatis menggunakan servo. di atas alat ini terdapat sebuat atap yng bisa buka tutup sehingga intensitas cahaya bisa masuk ke dalam alat dan bisa diterima oleh tanaman, yang harus diperhatikan yaitu tanaman hias harus berada di suhu 18 sampai 31 derajat celcius dan kelembapannya antara 60 sampai 80 persen. waktu untuk pencahayaan maksimal 8 jam per hari dari jam 8 sampai jam 4 sore, maka dari itu alat ini akan melakukan hal itu semua secara otomatis, waktu penyiraman alat ini yaitu pada jam 7 dan jam 5 sore. untuk lebih jelasnya berikut program dan skemanya.



a. Minimum System ATMega  





b. RTC (Real Time Clock)





c. Micro Servo





d. Sensor DHT11





 e, Program Bascom AVR

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

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

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

Cls
Cursor Off

Config Sda = Portc.1
Config Scl = Portc.0

Const Ds1307w = &HD0
Const Ds1307r = &HD1

Dim Oke As Integer
Dim Mark As Byte

Dim _sec As Byte
Dim _min As Byte
Dim _hour As Byte
Dim _day As Byte
Dim _month As Byte
Dim _year As Byte
Dim _weekday As Byte

Dim Sa(3) As String * 2
Dim Sb(3) As String * 2

Declare Sub Getdatetime
Declare Sub Settime
Declare Sub Getsec
Declare Sub Disptime
Declare Sub Dispdate
Declare Sub Format_00
Declare Sub Setdate
Declare Sub Subset

Dim I As Byte
Dim Flagset As Bit                                          '0 = Waktu, 1 = Tanggal
Dim Flagreset As Bit
Dim Line1 As String * 1

Dim Weekday As Byte
Dim Jam_puluhan As Integer
Dim Jam_satuan As Integer
Dim Min_puluhan As Integer
Dim Min_satuan As Integer
Dim Sec_puluhan As Integer
Dim Sec_satuan As Integer

Declare Sub Get_th(t As Byte , H As Byte)
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128
Dht_put Alias Portb.2
Dht_get Alias Pinb.2
Dht_io_set Alias Ddrb.2
Dim T As Byte
Dim H As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Enable Interrupts
Set Dht_io_set
Set Dht_put

Ddrd.7 = 1

'_sec = 00
'_hour = 17
'_min = 50
'Settime

'_day = 07
'_month = 11
'_year = 15
'Setdate

I = 13
Line1 = Chr(13)

'tutup
'Servo(1) = 105

'buka
'Servo(1) = 170

Mark = 0

Do

Call Get_th(t , H)

Lowerline
Lcd "TMP: " ; T ; "C" ; " / " ; H ; "%"

If T > 31 Then
Portd.7 = 1
Else
Portd.7 = 0
End If

Getdatetime

Upperline
Disptime

Waitms 200

If _hour >= 16 Then
Pwm1a = 135
Elseif _hour >= 8 Then
Pwm1a = 220

End If

If _hour = 7 And Mark = 0 Then
Pwm1a = 10
Wait 10
Pwm1b = 175
Mark = 1
Elseif _hour = 17 And Mark = 1 Then
Pwm1a = 10
Wait 10
Pwm1b = 175
Mark = 0
End If

Loop

Sub Getdatetime:

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address

I2cwbyte 0                                                  ' start address in 1307

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307r                                            ' send address

I2crbyte _sec , Ack
I2crbyte _min , Ack                                         ' MINUTES
I2crbyte _hour , Ack                                        ' Hours
I2crbyte _weekday , Ack                                     ' Day of Week
I2crbyte _day , Ack                                         ' Day of Month
I2crbyte _month , Ack                                       ' Month of Year
I2crbyte _year , Nack                                       ' Year

I2cstop

_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
End Sub

Sub Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 0                                                  ' starting address in 1307
I2cwbyte _sec                                               ' Send Data to SECONDS
I2cwbyte _min                                               ' MINUTES
I2cwbyte _hour                                              ' Hours
I2cstop

End Sub

Sub Setdate

_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 4                                                  ' starting address in 1307
I2cwbyte _day                                               ' Send Data to SECONDS
I2cwbyte _month                                             ' MINUTES
I2cwbyte _year                                              ' Hours
I2cstop

End Sub

Sub Dispdate
Sa(1) = Str(_day)
Sa(2) = Str(_month)
Sa(3) = Str(_year)
Format_00
Lcd "Date: " ; Sb(1) ; "-" ; Sb(2) ; "-" ; Sb(3)
End Sub

Sub Disptime
Sa(1) = Str(_hour)
Sa(2) = Str(_min)
Sa(3) = Str(_sec)
Format_00
Lcd "Time: " ; Sb(1) ; ":" ; Sb(2) ; ":" ; Sb(3)
End Sub

Sub Format_00
For I = 1 To 3 Step 1
Sb(i) = Format(sa(i) , "00")
Next I
End Sub

Sub Get_th(t As Byte , H As Byte)
 Count = 0
 Sensor_data = ""
 Set Dht_io_set
 Reset Dht_put
 Waitms 25
 Set Dht_put
 Waitus 40
 Reset Dht_io_set
 Waitus 40
 If Dht_get = 1 Then
    H = 1
    Exit Sub
 End If
  Waitus 80
  If Dht_get = 0 Then
    H = 2
    Exit Sub
  End If
  While Dht_get = 1 : Wend
   Do
    While Dht_get = 0 : Wend
    Waitus 30
     If Dht_get = 1 Then
       Sensor_data = Sensor_data + "1"
       While Dht_get = 1 : Wend
       Else
       Sensor_data = Sensor_data + "0"
    End If
    Incr Count
   Loop Until Count = 40
   Set Dht_io_set
   Set Dht_put
   Tmp_str8 = Left(sensor_data , 8)
   H = Binval(tmp_str8)
   Tmp_str8 = Mid(sensor_data , 17 , 8)
   T = Binval(tmp_str8)
   Tmp_str8 = Right(sensor_data , 8)
   Crc = Binval(tmp_str8)
   Mybyte = T + H
   If Mybyte <> Crc Then
      H = 3
   End If
End Sub




f. VIDEO HASILNYA












Cara Membuat Alat Penghitung Heart Beat (BPM) dan Suhu DS18B20

Cara Membuat Alat Penghitung Heart Beat (BPM) dan Suhu DS18B20


              Pada kesempatan yang berbahagia kali ini saya akan mencoba menjelaskan mengenai bagaimana cara membuat alat untuk mengukur detak jantung atau heart beat, selain heart beat juga mengukur suhu menggunakan sensor suhu DS18B20, kegunaan alat ini yaitu bisa digunakan untuk mengukur detak jantung manusia dan juga suhu tubuh manusia, dari pada LM35 sensor DS18B20 ini lebih bagus karena tingkat sensitifitasnya tinggi, memang sensor ini lebih mahal dibanding LM35 tapi harga menunjukkan performa, maka dari itu lebih baik untuk masalah suhu serahkan pada sensor ini, prinsip kerja heartbeat yang digunakan yaitu menghitung titik puncak atau tegangan puncak, saat tegangan puncak terjadi akan mulai dihitung selama lima detik, setelah lima detik maka diasumsikan sinyal akan sama terus untuk lima detik setelahnya, maka dari itu dikalikan X agar menjadi satu menit. Agar bagus alat ini dilengkapi Buzzer yang berada di PortB.0, untuk lebih jelasnya berikut adalah skema dan programnya.



a. Minimum System 




b. Sensor Heart Beat / Pulse Sensor


* NOTE : Hubungkan kabel berikut
VCC = 5 v Supply
GND = Gnd
Out = PINA.7 ( ADC 7 )



c. Sensor Suhu DS18b20


*NOTE = Kabel dihubungkan ke port berikut
VCC = Supply 5v
GND = Gnd
D0 = PortD.7



d. Program Bascom AVR

$regfile = "8535def.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

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

Ddrb.0 = 1

Dim I1 As Integer , Ss As String * 6
Dim Id1(8) As Byte
Dim A As Byte
Dim W As Byte

Dim Au As Integer
Dim B As Integer
Dim Dataadc As Word
Dim X As Integer

Start Adc

Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32

Config 1wire = Portd.7

Cursor Off
Cls

'setting sensor suhu
W = 1wirecount()
Upperline
Lcd "Sensor = "
Waitms 500
Lcd W
Wait 3
Cls
Id1(1) = 1wsearchfirst()
'CRC
If Id1(8) = Crc8(id1(1) , 7) Then
 Locate 1 , 1
 Lcd "CRC OK "
 Wait 1
 Locate 2 , 1
 Lcd "ID:"
 For A = 1 To 8
 Cls
 Upperline
 Lcd "ID Sensor = " ; Hex(id1(a));
 Next
End If
Wait 2
Cls
'---------------
Main:
Do
'mengambil data suhu
   1wreset
   1wwrite &H55
   1wwrite &HCC
   1wverify Id1(1)
   1wwrite &HBE
   I1 = 1wread(2)
   1wreset
   1wwrite &HCC
   1wwrite &H44
'---------------------------------
Wait 1

'merubah ke celcius dan tipe data string
'-------
I1 = I1 * 10
   I1 = I1 / 16
   Ss = Str(i1)
   Ss = Format(ss , " 0.0")

Cls
Upperline
Lcd "Siap Deteksi"
Locate 2 , 1
Lcd "Tmp = " ; Ss ; " " ; Chr(0) ;

Wait 3

Cls
'mengambil bilai adc heart beat
Dataadc = Getadc(7)
Au = 0
B = 0

'mengambil nilai puncak / threshold
If Dataadc > 512 Then
Goto Deteksi
End If

Loop

'melakukan perhitungan BPM
Deteksi:
Cls
Cursor Off
Do

Dataadc = Getadc(7)

If Dataadc > 512 Then
Incr Au
Portb.0 = 1
Else
Portb.0 = 0
End If

Incr B
Waitms 200

'ambil lima 5 detik pertama                                               'frekuensi sampling
Loop Until B = 25

'untuk menjadi 1 menit
X = Au * 12

'untuk menampilkan suhu dan bpm
Upperline
Lcd "DETAK = " ; X
Locate 2 , 1
Lcd "Tmp = " ; Ss ; " " ; Chr(0) ;
   '-------
Portb.0 = 0
Wait 3
Goto Main
Return




e. VIDEO HASILNYA