15 November 2017

Tutorial 16 - Arduino & PIR Sensor



Hello semua!! Rindu saya tak? Haha.. Lama sungguh rasanya saya tak update blog ni. Seperti kebiasaan, bulan 10 dan 11 memang meletihkan. Hampir kebanyakan IPT melaksanakan presentation FYP pada waktu ini. Jadual saya terus jadi padat. Tempahan keluar dan masuk tak henti - henti.  Phewwww!! Mak letih dik... Haha..

Terima kasih kepada semua yang menempah projek dengan saya tempoh hari, harap anda semua berpuas hati dengan hasil kerja saya.

Ok, untuk sesi perkongsian kali ini, saya nak cerita sedikit pasal sebuah sensor yang biasa digunakan. Sensor ini biasa digunakan untuk mengesan pergerakan (movement). Pergerakan ini tidak terhad kepada manusia sahaja. Boleh juga pergerakan ini terhasil daripada objek - objek yang bergerak seperti kipas, pintu, kucing, langsir dan juga lain - lain. Jadi, sensor apakah itu? Saya bagi situasi ya..

PIR Sensor

Situasi 
Pernahkah anda pergi ke mana - mana shopping complex dan tidak semena - mena, pintu itu terbuka sendiri? Pernah kan? Adakah anda rasa ada kuasa mistik pada pintu itu sehingga ia boleh terbuka sendiri? Kalau anda rasa ada unsur mistik, anda memang mistik..

Jika anda perhatikan dengan teliti pada pintu tersebut, anda akan mendapati yang pintu itu dilengkapi dengan sensor yang mengesan pergerakan pada jarak lingkungan 2 ke 3 meter dari pintu tersebut. Rujuk gambar dibawah:

Konsep PIR
Konsep apa dia guna ek..? Ok. Dia macam ni..Apabila terdapat pergerakan di dalam range penebaran cahaya IR, gelombang IR yang terpantul semula ke sensor ini akan menjadi tidak seragam. Receiver sensor akan proses ketidakseragaman ini dan menghasilkan nilai HIGH. Sensor ini bukan mengesan manusia atau kucing tau.. IA MENGESAN PERGERAKAN! Tak percaya? Cuba buat macam ni:

Berdiri tegak di depan pintu tersebut.. Jangan bergerak - gerak tau. Kali pertama, pintu akan terbuka. Ok. Bila pintu dah terbuka, kekal berdiri.. Jgn gerak. Anda akan dapati, pintu akan tertutup semula walaupun anda sedang berdiri betul - betul di hadapan pintu.. Ini membuktikan yang sensor ini mengesan pergerakan, bukannya objek.

Contoh Projek

Theft Detector

Baiklah. Untuk tutorial kali ini, saya akan tunjukkan bagaimana menghasilkan projek Theft Detector. Projek ini akan menggunakan PIR sensor, Arduino dan juga buzzer. PIR sensor ini akan diletakkan di luar rumah kediaman. Objektif projek ini dihasilkan adalah untuk mengesan sebarang pergerakan di luar rumah pada waktu malam dengan andaian pencuri ingin memecah masuk rumah sewaktu tuan rumah sedang tidur.

Sambungan


Aturcara (Coding)


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const int PIR_Sensor = 2;     // the number of the PIR Sensor pin connect
const int Buzzer =  13;      // the number of the buzzer pin

int SensorState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(Buzzer, OUTPUT);
  // initialize the PIR Sensor pin as an input:
  pinMode(PIR_Sensor, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  SensorState = digitalRead(PIR_Sensor);

  // check if the PIR Sensor is triggered.
  // if it is, the SensorState is HIGH:
  
  if (SensorState == HIGH) 
  {
    // turn LED on:
    digitalWrite(Buzzer, HIGH);
  } 
  
  else 
  {
    // turn LED off:
    digitalWrite(Buzzer, LOW);
  }
}


SELAMAT MENCUBA & SEMOGA BERJAYA

04 July 2017

Tutorial 15 - Kaedah Betul Menggunakan Relay Module


Hai! Hola! Apa khabar semua? Harap masih sihat walafiat semua. Masih dalam mood raya lagi ke tu? Takpe.. Teruskan aktiviti beraya anda. Raya kan sebulan.. Tapi pastikan anda maintain berat badan tu, jangan keje nak melantak free je.. Haha..

Memandangkan kita berada di musimperayaan, saya pun tak mahulah nak bercerita tentang benda-benda yang berat dan kompleks. Perkongsian saya kali ini ringan-ringan sahaja iaitu cara penyambungan yang betul di antara Arduino dengan relay module.

Apa itu relay module? Relay module ni adalah satu litar relay yang dah siap dan sedia untuk digunakan. Maksudnya, pengguna tidak perlu lagi nak solder, etching atau sebagainya. Pergi kedai, pilih mana yang berkenan, balik terus sambung ke Arduino dan load. Senang kerja! Namun terdapat banyak jenis relay module yang ada di pasaran. Ada 1 channel, 2 channel, 4 channel dan 8 channel. Channel ni bermaksud berapa banyak litar relay yang ada atas satu papan PCB yang sama. Jika kita beli 4 channel relay module, maksudnya ada 4 litar relay pada satu papan. Rujuk gambar di bawah.
4 Channel Relay

2 Channel Relay

Ok, baik! Sekarang kita dah kenal apa itu relay module. Sekarang kita belajar cara sambungan antara Arduino dengan relay module. Saya akan menggunakan 4 channel relay module sebagai contoh ya.. Kalau tak faham, cepat-cepat angkat tangan tau..

Jom!!

Jika diperhatikan pada pin-out di atas, anda akan dapati yang pin JD-VCC bersambung dengan pin VCC menggunakan 2.54mm header pin jumper (rujuk gambar di bawah). Jadi, akan timbul 2 persoalan untuk situasi ini.
  1. Bila kita perlu kekalkan sambungan ini?
  2. Bila perlu cabut jumper ini? 

2.54mm header pin jumper
Pilihan 1: Biarkan sahaja jumper ini bersambung antara pin JD-VCC dengan pin VCC

Jika anda untuk membiarkan sahaja jumper ini berada pada pin JD-VCC dengan pin VCC, bermakna anda telah memilih untuk menolak ciri keselamatan yang ada pada litar ini.

Tidaklah menjadi satu kesalahan atau berdosa jika anda membiarkan jumper ini, tapi kemungkinan besar litar relay dan juga load yang bersambung pada relay akan lebih terdedah kepada kerosakan. Namun jika anda bertegas untuk memilih kaedah ini, berikut adalah cara sambungannya.


Cara Sambungan dengan mengekalkan jumper

Pilihan 2: Cabut jumper

Ini adalah pilihan yang bijak dan boleh saya katakan, PALING TEPAT. Tahniah! Namun, jika anda memilih untuk guna kaedah ini, anda perlu menyediakan satu sumber bekalan kuasa yang lain. Sebagai contoh, jika saya nak menggunakan kaedah ini, saya akan stand-by DC Power Supply 5V untuk disambungkan pada pin JD-VCC nanti. Ikuti langkah-langkah seperti di bawah:


  1. Cabut header pin jumper yang menyambungkan pin JD-VCC dengan pin VCC
  2. Ambil kabel terminal positive DC power supply (+5V) dan sambungkan pada pin JD-VCC 
  3. Ambil kabel terminal negative DC power supply (0V) dan sambungkan pada pin GND
  4. Sambungkan kabel 5V pada papan Arduino dengan satu lagi pin VCC pada relay module
  5. Untuk pin IN1 hingga IN4, sambungkan pada mana - mana pin Arduino seperti yang anda telah assign di dalam coding


Gambar dibawah adalah contoh penyambungan antara DC Power Supply, relay module dan Arduino. Check-it out!

Pastikan pin GND Arduino tidak bersambung dengan mana - mana pin pada relay module

SELAMAT MENCUBA & SEMOGA BERJAYA


24 April 2017

Tutorial 14 - Arduino & Gas Sensor



Apa khabar kepada semua pembaca - pembaca setia blog saya? Mudah - mudahan dirahmati Allah sentiasa lah ye.. Rasanya dah hampir 3 bulan saya tidak update apa - apa dalam blog ini. Maaf sekiranya ada yang ternanti - nanti berkaitan tutorial terbaru dalam blog ini. Saya menghadapi kesibukan yang amat luar biasa berikutan tempahan projek dari pelajar diploma politeknik yang telah pun selamat membuat pembentangan akhir projek mereka pada bulan 3 lepas. Alhamdulillah, kini saya ada sedikit kelapangan untuk berkongsi dengan anda semua tutorial terbaru saya iaitu Gas Sensor.

Gas sensor adalah satu instrumen yang digunakan untuk mengesan kehadiran sesuatu jenis gas yang wujud dalam persekitaran. Saya sering ditanya oleh pelajar, bolehkah saya mengukur jumlah gas mengunakan gas sensor? Jawapannya adalah TIDAK SAMA SEKALI. Ini kerana, gas sensor digunakan hanya untuk mengesan kewujudan gas, bukannya mengukur ketumpatan / jumlah gas. Ada beza tu ye..

Terdapat pelbagai jenis gas sensor yang ada dipasaran. Kepelbagaian ini adalah disebabkan wujudnya banyak jenis gas yang ada di persekitan kita. Semua gas sensor mempunyai kod produk yang tersendiri. Kod produk gas sensor adalah MQ-X. Abjad "X" adalah merujuk kepada jenis gas yang ingin dikesan. Di sini, saya akan membuat senarai ringkas berkaitan jenis - jenis gas sensor yang ada dipasaran:

  • MQ-2  :  General combustible gas
  • MQ-3  :  Gas alkohol
  • MQ-4  :  Gas metana dan CNG ( compressed natural gas )
  • MQ-5  :  LPG ( gas memasak) & gas natural
  • MQ-6  :  LPG ( gas memasak), gas butana & gas propana
  • MQ-7  :  Gas karbon monoksida
  • MQ-8  :  Gas hidrogen
Gas sensor module

Cadangan Projek:

Saya ingin membuat satu alat / device yang mengesan kebocoran gas memasak (LPG) di dapur. Apabila terdapatnya kebocoran gas, kipas ekzos yang terdapat di dapur akan berfungsi secara automatik ( bertujuan untuk menyedut gas LPG ini keluar dari rumah ) sehinggalah tiada lagi gas LPG dikesan.

Komponen / Peralatan

  1. Arduino UNO
  2. MQ-5 gas sensor module
  3. 5V Relay
  4. Kipas Ekzos
Cara Sambungan

Jika diperhatikan, gas sensor module ini boleh digunakan dalam 2 cara, iaitu secara digital atau analog. Oleh sebab itu, sensor ini didatangkan dengan 4 pin yang perlu disambung kepada Arduino. Dari 4 pin ini, kita hanya perlu sambung 3 sahaja bergantung pada kaedah yang ingin kita gunakan, sama ada digital atau analog. Rujuk rajah dibawah.

Bagi projek ini, saya ingin menggunakan kaedah digital sahaja. Tidak menjadi satu kesalahan jika anda ingin menggunakan pengesanan kaedah analog. Tak berdosa pun!

Jadi, sambungannya adalah seperti ini:

  • Vcc ( module ) ---- 5V ( Arduino )
  • GND ( module ) ---- GND ( Arduino )
  • DOUT ( module ) ---- Pin 2 ( Arduino )
Sambungan relay module pula adalah seperti di bawah
  • IN ( relay ) ---- Pin 8 ( Arduino )
  • GND ( module ) ---- GND ( Arduino )
  • Vcc ( module ) ---- 5V ( Arduino )



    Sambungan relay module sebagai suis bagi kipas ekzos
    Aturcara:



    1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    const int Gas_Sensor = 2;
    const int fan_relay =  8;
    int Gas_state = 0;
    
    void setup()
    {
      pinMode(fan_relay, OUTPUT);
      pinMode(Gas_Sensor, INPUT);
    }
    
    void loop() 
    {
      Gas_state = digitalRead(Gas_Sensor);
    
      if (Gas_state == HIGH) 
      {
        digitalWrite(fan_relay, HIGH);
      }
      else 
      {
        digitalWrite(fan_relay, LOW);
      }
    }
    

    SELAMAT MENCUBA!!

    09 January 2017

    Tutorial 13 - Arduino dan Paparan LCD Menggunakan I2C



    Hai kawan - kawan.. Sihat ke tu? Kalau sihat, baguslah.. Kalau tak sihat, jangan lupa makan ubat yer.. Rasanya masih belum terlewat untuk saya ucapkan Selamat Tahun Baru 2017. Semoga tahun 2017 ini menjadi turning point untuk saya dan rakan - rakan pembaca setia blog ini berusaha lebih keras lagi.

    Untuk tutorial kali ini, saya ingin berkongsi dengan anda semua cara mudah menggunakan LCD. Saya pernah berkongsi cara menggunakan LCD pada Tutorial 2 sebelum ini. Kaedah itu adalah salah satu dari DUA cara yang boleh diaplikasikan untuk menggunakan LCD. Cara ke-2 adalah menggunakan Serial Interface Adapter Module atau lebih popular dipanggil I2C ( sebut I to see ). Jika ditanya pada saya kaedah mana yang lebih digemari, saya akan pilih guna I2C ini. Saya akan senaraikan kebaikan dan keburukan ( pada pandangan saya ) menggunakan I2C ini.

    Kebaikan:
    1. Mengurangkan penggunaan pin pada Arduino ( dari 6 pin kepada 2 pin sahaja)
    2. Mengurangkan risiko kesalahan penyambungan antara Arduino dgn LCD
    3. Tidak perlu menggunakan variable resistor (VR) kerana sudah ada VR dalam module I2C
    Keburukan:
    1. Kena beli I2C module yang harganya RM12.
    I2C mempunyai 4 pin yang perlu disambungkan secara terus kepada Arduino anda. 4 pin tersebut ialah:
    1. Vcc / 5V
    2. GND
    3. SCL
    4. SDA
    Jika papan Arduino anda tiada pin SCL dan SDA (model lama), anda masih boleh menggunakan I2C ini dengan cara sambungan seperti berikut:
    1. SCL ( I2C ) ke pin A5 ( Arduino )
    2. SDA ( I2C ) ke pin A4 ( Arduino )
    I2C Module

    Contoh Sambungan I2C dan Arduino



    Projek: Memaparkan ayat "Selamat Datang" & "Welcome" pada LCD menggunakan I2C

    Untuk menggunakan I2C ini, untuk penulisan coding nanti, kita perlu menambah library LiquidCrystal_I2C pada folder libraries Arduino kita. Mana nak dapat library itu? Seperti biasa, saya yang baik hati ini akan memudahkan kerja anda. Anda boleh muat turun library itu di bawah

    LiquidCrystal_I2C

    Aturcara:

    Selepas anda membuat sambungan seperti gambar di atas dan memuat turun library I2C, anda bolehlah memulakan penulisan coding anda. Saya akan tunjukkan coding ringkas menggunakan I2C dan anda semua bolehlah jadikan ini sebagai rujukan,



    1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    
    void setup()
    {
      lcd.begin(16,2);
      lcd.backlight();
    }
    
    void loop()
    {
      lcd.setCursor(4,0);
      lcd.print("Welcome!");
      delay (2000);
    
      lcd.setCursor(1,1);
      lcd.print("Selamat Datang");
      delay (2000);
    
      lcd.clear();
      delay (1000);
    }
    

    Perhatikan pada baris yang ke-2, terdapat nombor 0x27. Ini menunjukkan alamat I2C yang digunakan. Jika anda perhatikan tiada apa - apa paparan pada LCD selepas anda upload coding ini, terdapat 2 faktor yang menyebabkan masalah ini.
    1. VR tidak dilaraskan. Anda perlu laraskan VR (warna biru) yang terdapat pada module I2C sehinggalah tulisan timbul
    2. 0x27 bukanlah alamat I2C yang digunakan. Cuba tukar 0x27 kepada 0x3F.
    SELAMAT MENCUBA...!