ngoprek sht11 (sensor suhu dan kelembaban)

dulu semasa kuliah pengen beli sensor sht11 ga kebeli. maklum belum punya duit sendiri. sekarang akhirnya kesampaian juga ngoprek SHT 11. sensor ini aslinya murah banget. tapi karena eh karena harganya melambung tinggi jadi 350 rebu.  maklum indonesia negara yang sangat maju sekali dalam bidang perdagangan. tiap hari motor buatan luar negeri pasti ada yang beli.

di INDONESIA motor seperti gorengan, tinggal ambil saja bayar belakangan juga bisa. dan saya pastikan project GO GREEN ga bakalan sukses selama kredit motor masih gamapang syaratnya dan laku keras.

saya aktivis kredit motor saja lah dan anti go green,

ini dia sensor sht 11 nya

untuk dasar teorinya biar orang lain saja yang bahas. saya cari cari di internet kebanyakan pakai bascom avr, saya convert ke bahasa c gaul code vision. support juga pastinya untuk avr gcc.

//=================================================================
//sht
//==============================================================
void StartSignal()
{       
    ddr_data_out;
    data_hi;;  
    delay_us(1);
    clk_lo;    
    delay_us(1);
    clk_hi;           //Clock pertama
    delay_us(1);
    data_lo;   
    delay_us(1);
    clk_lo; 
    delay_us(1);
    clk_hi;           //Clock pertama
    delay_us(1);
    data_hi;;  
    delay_us(1);
    clk_lo;
    ddr_data_out;       // PortA.0 sbg Output       
}

void ResetSHT (void)
{
    unsigned char i;
    ddr_data_out;   
    data_hi;
    clk_lo;         
    for (i=0; i<=8; i++)
      {
        clk_hi;     //Kirim Data (ShtClock rising edge), 9 kali
        clk_lo;
      }
    StartSignal();        //Transmission Start 
}

void SHTWait()
{
    unsigned char i;
    ddr_data_out;
    data_hi;          //Pin ShtData sebagai input
    ddr_data_in;
    for (i=0; i<250; i++)
      {                     
        TimeOut=(PIND&4)>>2;
        if(!((PIND&4)>>2))break;
        delay_ms(1);
      }      
}

void SHTWriteByte (unsigned char data)
{
    unsigned char i;
    ddr_data_out;       
   
    for(i = 8;i > 0; i–)
    {
        if(data & (1 << (i – 1)))data_hi;
        else data_lo;
        clk_hi;        //Kirim Data (ShtClock rising edge)
        delay_us(10);
        clk_lo;
    }
   
    ddr_data_in;
    clk_hi;             
    AckBit = (PIND&4)>>2;       //Ambil sinyal acknowledge
    delay_us(10);
    clk_lo;;
}

//Receive Data dan kirim bit “AckBit” (‘0’ untuk ACK atau ‘1’ untuk NACK)
void SHTReadByte ()
{
    unsigned char i;
    DataRead = 0x00;
    ddr_data_out;
    data_hi;          //Pin ShtData sebagai input
    ddr_data_in;
    for (i=0; i<8; i++)
      {
        DataRead<<=1;
        clk_hi;
        DataRead |=(PIND&4)>>2 ;  //Ambil Data (MSB first)
        delay_us(10);
        clk_lo;
      }
    ddr_data_out;   
    if (AckBit==1) data_hi;   //Kirim Noacknowledge
    else data_lo;             //Kirim Acknowledge
    clk_hi;         
    delay_us(10);
    clk_lo;
}

// Pembacaan Temperature dari SHt11
void SHTReadTemp (void)
{       
    StartSignal();
    SHTWriteByte(0x03);      //Command Measure Temperature
    if (AckBit==0)
      {
        SHTWait();           //Tunggu sampai pengukuran selesai
        if (TimeOut==0)
          {
           AckBit=0;                    //Kirim ACK untuk menerima byte berikutnya
            SHTReadByte();              // Ambli Byte MSB
            DataTempSHT = DataRead;
            DataTempSHT <<= 8;
            AckBit=1;                   //Kirim NACK untuk mengakhiri pengambilan data
            SHTReadByte();
            DataTempSHT |= DataRead;   //Ambil byte LSB
           
            DataRead = DataTempSHT;           
          }
      }
}

void SHTReadHumidity (void)
{
    StartSignal();
    SHTWriteByte(0x05);   //Command Measure Humidity
    if (AckBit==0)
      {
        SHTWait();
        if (TimeOut==0)
          {
            AckBit=0;
            SHTReadByte();
            DataRHSHT = DataRead;
            DataRHSHT <<= 8;
            AckBit=1;
            SHTReadByte();
            DataRHSHT |= DataRead;
           
            DataRead = DataRHSHT;
          }
      }
}

itu puisi dari saya

bermain sensor accelerometer adxl202

butuh sensor accelerometer. bisa di fungsikan untuk sensor gempa atau sensor kemiringan. ini dia sensor adxl 202. harganya murah banget Rp.250.000(bagi yang punya uang).

spesfikasi adxl 202:

– output digital pwm

– duty cycle diatur nilai R dan elco

– memiliki 2 sumbu, x dan y

– A +- 2g

nah berikut hasil ngoprek saya dengan adxl 202

untuk robot KRSI siapa kali perlu ayo pesan, atau untuk para peneliti gempa jika butuh sensor accelerometer silahkan pesan ke dhani nugraha(085228292473)

www.kei-elektronik.com

aplikasi sensor PIR dengan AVR TRAINER 2.0

Ceritanya di kontrakan saya ada yang kemalingan motor. tapi itu sudah terjadi. untuk meningkatkan keamanan kontrakan, saya sebagai sarjana lulusan t.elektro masa tidak mampu membuat alat pendeteksi maling, atau kalo tidak mampui buat pun masa tidak tahu harus beli dimana alat tersebut. .

ini baru contoh simple saja. saya tadi membeli sensor PIR di universal electronic harganya 65.000. lumayan bisa di aplikasikan untuk pendeteksi manusia. karena ini hanya modul yang mudah digunakan,saya langsung saja, pasangkan modul PIR dengan modul avr trainer 2.0.

pada modul PIR ada 3 pin terdiri dari vcc,out dan gnd, untuk supply nya saya kasih 5v.

Keluaran dari modul PIR yang saya beli ini ketika ada manusia yaitu 3.5 v, dan ketika tidak ada yaitu 0 v. nah gampang sekali. udah saja saya langsung sambungkan dengan pin biasa misalanya pind.7. nah program utamanya seperti ini.

for(;;)
{
if(bit_is_set(PIND,7))
{
lcd_clrscr();
lcd_goto(line1);
lcd_puts(“ada penjahat”);
buzzer_hi;
_delay_ms(1000);
buzzer_lo;
_delay_ms(1000);
}
else
{
lcd_goto(line1);
lcd_puts(“aman aman saja”);
}
}

ini photo sensor pir nya

 

pemasangan sensor pir di jendela

 

nah mungkin untuk ke depannya akan saya tambahkan lagi beberapa sensor, mungkin akan saya tambahkan sensor IR,

sensor suhu TPA81(kalo lampu pijar gimana ya)

Sensor Thermal Array  TPA-81 produksi Devantech ini dapat digunakan untuk mengukur nilai suhu yang ada di daerah kerja sensor.  Koneksi sensor Thermal Array ini melalui protokol I2C seperti halnya kompas elektronik. Pin SDA dihubungkan dengan pin mikrokontroler yang berfungsi sebagai serial data, dan pin SCL dihubungkan dengan pin mikrokontroler yang berfungsi sebagai serial clock.

Modul sensor Thermal Array dengan komunikasi protokol I2C ini sama dengan modul kompas elektronik seperti yang telah dijelaskan sebelumnya. Alamat fix dari sensor ini adalah 0xD0. Selanjutnyamembaca data register dengan mengirimkan nilai alamat register yang diinginkan. Data sensor ada pada alamat register 0x02-0x09 untuk data
sensor pixel 1-pixel 8. Untuk sistem komunikasi I2C secara keseluruhan sama dengan modul kompas elektronik, yang berbeda hanyalah alamat dari modul dan register-register yang dibaca. Sedangkan cara-cara komunikasinya sama, yaitu dengan menggunakan sistem komunikasi standard I2C. Data yang terbaca pada register-register yang menyimpan data sensor tiap pixel adalah data 8 bit yang mempresentasikan nilai suhu yang terukur.
Secara umum, cara untuk mendapatkan nilai-nilai suhu dari sensor thermal array sama seperti pada kompas elektronik, yang berbeda hanyalah pada alamat register yang akan dibaca dan alamat device-nya. Berikut ini adalah potongan program subrutin pembacaan data sensor  thermal array pada register dengan alamat sesuai input variabel addr.

Sub Baca_TPA(byval Pixel As Byte) ‘PIXEL DI IDI REGISTER 2-9
I2cstart
I2cwbyte &HD0
I2cwbyte Pixel
I2cstart
I2cwbyte &HD1

I2crbyte Data_tpa , Nack
I2cstop
‘Waitms 10
End Sub

sensor ultraviolet uvitron (sensor api)

Sensor ini memberikan sinyal aktif apabila mendeteksi adannya sinyal ultraviolet. Tipe sensor yang dipilih adalah Hamamatsu R2868. Prinsip kerja sensor ini adalah mendeteksi adanya gelombang ultraviolet pada range 185 – 260 nm,sensor ini bisa digunakan untuk mendeteksi api lilin karena api lilin berada pada range tersebut. sensor ini memiliki jangkauan hingga 5 meter.

Sensor diatas sangat presisi dan sangat rentan sekali. Dalam perlakuannya sensor tersebut tidak boleh dipegang secara langsung oleh tangan manusia. Hal ini disebabkan karena bisa mengurangi sensitivitas dari sensor tersebut (kata datasheetnya)

modul ini terdiri dari 2 bagian, tabung uvitron dan drivernya (C3704) Tabung UVtron terdiri ata dua kaki yaitu pin katoda dan anoda, untuk dapat beroperasi normal UVtron butuh suplay tegangan antara 350 -400 V DC, karena sumber tegangan yang digunakan hanya 5 V maka digunakanlah sebuah driver untuk memenuhi kebutuhan tersebut. Driver dc yang digunakan adalah type Hamamatsu C3704 yang mampu menghasilkan catu hingga 350V DC dengan Vcc 5 V. driver ini selain berfungsi sebagai penyedia tegangan untuk UVtron juga berfungsi sebagai pemproses sinyal yang diperoleh dari tabung UVtron R2868 dan kemudian mengolah data tersebut menjadi data digital.

sensor ping buatan paralax (ultrasonic)

sensor ping (ultasonic) adalah modul pengukur jarak dengan ultrasonic buatan Parallax Inc. sensor  ini dapat mengukur jarak antara 3 cm sampai 300 cm. keluaran dari sensor ini berupa pulsa yang lebarnya merepresentasikan jarak. Lebar pulsanya bervariasi dari 115 uS sampai 18,5 mS.

Pada dasanya, Ping))) terdiri dari sebuah chip pembangkit sinyal 40KHz, sebuah speaker ultrasonik dan sebuah mikropon ultrasonik. Speaker ultrasonik mengubah sinyal 40 KHz menjadi suara sementara mikropon ultrasonik berfungsi untuk mendeteksi pantulan suaranya.

Pin signal dapat langsung dihubungkan dengan mikrokontroler tanpa tambahan komponen apapun. Ping  hanya akan mengirimkan suara ultrasonik ketika ada pulsa trigger dari mikrokontroler (Pulsa high selama 5uS). Suara ultrasonik dengan frekuensi sebesar 40KHz akan dipancarkan selama 200uS. Suara ini akan merambat di udara dengan kecepatan 344.424m/detik (atau 1cm setiap 29.034uS), mengenai objek untuk kemudian terpantul kembali ke Ping. Selama menunggu pantulan, Ping akan menghasilkan sebuah pulsa. Pulsa ini akan berhenti (low) ketika suara pantulan terdeteksi oleh Ping. Oleh karena itulah lebar pulsa tersebut dapat merepresentasikan jarak antara Ping dengan objek.

$regfile = “m8535.dat”
$crystal = 8000000

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

Config Timer1 = Timer , Prescale = 64

Sigout Alias Portb.0
Sigin Alias Pinb.0
Dirsig Alias Ddrb.0
Dim Data_timer As Integer
‘==================================================
Inisialisasi:
Waitms 100
Initlcd
Locate 1 , 1
Lcd “demo ping”
Wait 1
Cls
Utama:
Gosub Ambil_datatimer
Locate 1 , 1
Lcd Data_timer
Wait 1
Cls
Goto Utama
‘==================================================
Ambil_datatimer:
Dirsig = 1
Set Sigout                                               ‘bankitkan pulsa
Waitus 10
Reset Sigout

‘terima pulsa ubah dulu jadi input
Dirsig = 0                                               ‘jadi input
Set Sigout                                               ‘pull up internal diaktifkan
Bitwait Sigin , Set
Data_timer = 0
Timer1 = 0
Start Timer1

Do
If Sigin = 0 Then
Data_timer = Timer1
Stop Timer1
Exit Do
End If

If Tifr.2 = 1 Then                                    ‘cek register timer1 overflow?
Stop Timer1
Tifr.2 = 1
Data_timer = 0
Exit Do
End If
Loop
Stop Timer1
Return
‘=====================================================

compas cpms 03

Compass buatan Devantech Ltd. CMPS03  ini menggunakan sensor medan magnet Philips KMZ51 yang cukup sensitif untuk mendeteksi medan magnet bumi.  Kompas digital ini hanya memerlukan supplai tegangan sebesar 5V DC, dengan konsumsi arus 15mA. Pada CMPS03, arah mata angin dibagi dalam bentuk derajat yaitu : Utara (00), Timur (900), Selatan (1800) dan Barat (2700). Ada dua cara untuk mendapatkan informasi arah dari modul kompas digital ini yaitu dengan membaca sinyal PWM (Pulse Width Modulation) pada pin 4 atau dengan membaca data interface I2C pada pin 2 dan 3.

contoh program pakai bascom avr

‘====================================

$regfile = “m32def.dat” ‘ATMEGA 32
$crystal = 4000000 ‘KECEPATAN 4 MhZ
$baud = 4800

‘===================================== kompas

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

Declare Sub Baca_kompas ‘MODUL KOMPAS
Dim Data_i2c As BYTE
INISIALISASI:
I2cinit
‘=================================
UTAMA:
CALL Baca_kompas
PRINT DATA_I2C
GOTO UTAMA
”================================
‘ subrutin kompas
‘——————————-
Sub Baca_kompas
I2cstart
I2cwbyte &HC0 ‘ALAMAT DEVICE COMPAS TULIS
I2cwbyte 1 ‘AKSES REGISTER 1
I2cstart
I2cwbyte &HC1 ‘ALAMAT DEVICE COMPAS BACA
I2crbyte Data_i2c , Nack
I2cstop
Waitms 1
End Sub

‘=======================================
cara kalibrasi dengan metoda pinPin 6 dapat dihubungkan ke 0V (Ground) dengan sebuah push button switch. langkah langkahnya sbb

1.   hadapkan kearah Utara, tekan switch dan lepaskan.

2.    hadapkan kearah Timur, tekan switch dan lepaskan.

3.   hadapkan kearah Selatan, tekan switch dan lepaskan.

4.   hadapkan kearah Barat, tekan switch dan lepaskan.

pastikan posisi kompas rata.  nah kalo kompas ini banyak gangguannya ganti saja sama kompas pramuka