Showing posts with label arduino. Show all posts
Showing posts with label arduino. Show all posts

23 May 2018

Tutorial 17 - Arduino dan Soil Moisture Sensor


Apa khabar pada pembaca setia blog litar projek2u semua? Sihat ke dak tu? Yang paling penting, puasa ke tak? Hehe.. Jangan curi - curi minum air pula waktu berwuduk nanti.. Kot ye pun dahaga sangat, tunggulah waktu Maghrib ye..

Sempena bulan Ramadhan yang mulia ini, saya doakan pembaca semua mendapat keampuanan dan keredhaan dari Allah s.w.t.. Amin...

Pada entry kali ini, saya akan berkongsikan sedikit ilmu berkaitan sensor yang agak bermanfaat dalam kehidupan harian kita, iaitu Soil Moisture Sensor. Komponen ini memang sangat sesuai digunakan pada projek - projek yang bertemakan pertanian. Kenapa? Sensor ini biasa digunakan untuk mengukur tahap kelembapan tanah pada kebun, ladang, padang golf, padang bola sepak dan lain-lain lagi.

Soil Moisture Sensor
Apabila membeli sensor jenis ini, anda akan memperoleh 2 komponen, iaitu:
  1. Sensor ( yang macam garfu tu )
  2. Comparator ( warna biru )

Jika dilihat pada struktur sensor ini, terdapat 2 hujung yang tajam macam garfu la. Mengapa ek?
Ini bagi memudahkan kepada pengguna untuk mencucuk atau menenggelamkan sensor ini ke dalam tanah.

Kenapa nak kena cucuk dalam tanah pulak??
Kan kita nak ukur tahap kelembapan tanah.. kena la cucuk kat tanah.. Takkan nak cucuk sensor ni dalam lubang hidung pulak.. Kan? Apa punya soalan la ni..

Jadi, pada kali ini, saya nak kongsikan pada pembaca semua cara untuk membuat satu projek yang ringkas menggunakan Soil Moisture Sensor ini. Projek adalah bertemakan pertanian iaitu Automatic Plant Watering System atau dalam bahasa Melayu, Sistem Penyiraman Pokok Automatik. Projek ini berfungsi dengan mengesan kelembapan tanah secara berterusan. Apabila kelembapan tanah berada pada paras rendah (40% dan ke bawah), Arduino akan menghidupkan pam bagi menyiram air ke kawasan yang kering tadi selama 20 saat. Selepas tamat 20 saat, pam akan berhenti dan sensor akan kembali menngesan kelembapan tanah. Proses ini berlaku secara berterusan. 

Walaubagaimanapun, saya akan menggantikan relay dengan LED pada pin 13 bagi memudahkan penulisan tutorial ini. Sekiranya Tuan/Puan/Cik berjaya dengan menggunakan LED, sudah pasti anda berjaya juga dengan menggunakan relay kerana kedua-duanya dikawal secara digital.

Komponen yang diperlukan:
  1. Arduino UNO
  2. Soil Moisture Sensor
  3. Kabel penyambung
Cara Sambungan

How to connect it?
Sambungkan antara bahagian sensor dengan comparator seperti diatas. Akan terdapat tanda ground (3 line macam simbol Adidas) pada sensor dan comparator yang menunjukkan ianya adalah bahagian negatif. Sambungkan bahagian ini dan pin yang ke-2 itu pastinya bahagian positif.

Seterusnya pada bahagian keluaran comparator, terdapat 3 pin yang perlu disambungkan pada Arduino. Eh, kenapa 3 pula? Bukan ada 4 pin ke? Ya, seperti yang kita nampak pada gambar diatas, ada 4 pin iaitu:
  1. Vcc
  2. GND
  3. Digital Output (D0)
  4. Analog Output (A0)
Pin Vcc dan GND sudah wajib disambungkan pada Arduino. Persoalannya sekarang, mana satu kita nak guna? A0 atau D0?

Anda bebas memilih sama ada ingin gunakan A0 atau D0. Untuk guna D0, sensor mengesan hanya 2 keadaan sahaja sama ada tanah kering atau basah. 2 keadaan sahaja. Jika tanah basah, sensor akan hantar isyarat HIGH (1) manakala jika tanah kering, sensor akan hantar LOW (0).

Jika gunakan A0, kita boleh memilih tahap kelembapan yang ingin digunakan. Ini disebabkan analog dapat mengukur dari 0 hingga ke 1027. 0 adalah paling kering, manakala 1027 adalah paling lembap.
Jika kita nak air mula dipam sekiranya tahap kelembapan pada kadar 50%, maka, kita boleh membuat tetapan dengan mengambil nilai 1027 darab 0.5 = 513. Jika nak 40% kelembapan, kita tetapkan nilai 1027 darab 0.4 =  411.. Dekat mana nak buat tetapan?? Kat dalam coding la.. Sabaq la sat... Cheq nak tunjuk la ni..

Aturcara:

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
const int MoistureSensor = A0;     // sambungkan pin A0 comparator pada pin A0 Arduino
const int waterPump =  13;         // Saya gunakan LED bagi menggantikan relay

int SensorState = 0;               // declare pembolehubah yang mana semua bacaan yang diterima akan disimpan di dalam ini

void setup() {
  
  pinMode(waterPump, OUTPUT);      // tetapkan water pump sebagai output
  pinMode(MoistureSensor, INPUT);  // tetapkan moisture sensor sebagai input
}

void loop() {
  
  SensorState = analogRead(MoistureSensor); // baca nilai yang diterima oleh sensor pada pin A0 secara analog iaitu 0 hingga 1027

  if (SensorState < 411)           // jika bacaan kelembapan kurang dari 40%:
  {
    digitalWrite(waterPump, HIGH); // waterpump akan ON
    delay (20000);                 // tunggu 20 saat
    digitalWrite(waterPump, LOW);  // tutup semula water pump
  } 
  
  else 
  {
    digitalWrite(waterPump, LOW);  // jika bacaan kelembapan lebih dari 40%, jangan hidupkan pump
  }
}

Jika berjaya, anda boleh ke langkah seterusnya, iaitu menggantikan LED pada pin 13 dengan menggunakan pam air yang sebenar. Litar geganti diperlukan.

Apa? Tak tau nak buat sambungan litar relay macam mana? Takpe, boleh klik pada pautan di bawah untuk melihat kembali tutorial saya berkaitan relay.
  1. Relay 1
  2. Relay 2

SELAMAT MENCUBA & SEMOGA BERJAYA

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...!

    08 December 2016

    Tutorial 12 - Arduino & Bluetooth



    Dah lama rasanya saya tak menulis dalam blog ni. Bukan sombong atau apa - apa yang sewaktu dengannya. Ini semua disebabkan tempahan projek dari pelajar Kolej Vokasional (KV) dan politeknik yang tak putus - putus. Sampai tak tido malam saya dibuatnya. Apa - apa pun, jutaan terima kasih saya ucapkan pada semua pelanggan kerana memberi kepercayaan kepada syarikat kecil kami, NAA Electronics untuk menyiapkan projek akhir anda. Diharap anda semua berpuas hati dengan servis yang telah kami beri.

    TERIMA KASIH PELANGGAN!!
    Ok. Back to business. Untuk tutorial kali ini, saya akan menunjukkan kaedah dan juga cara yang mudah untuk mengawal output (ON & OFF) menggunakan teknologi tanpa wayar, Bluetooth.

    Apa itu Bluetooth?

    Bluetooth adalah teknologi memindahkan data (fail, suara, nombor dll) dari satu device ke satu device yang lain tanpa menggunakan wayar (wireless). Bluetooth ini sesuai digunakan untuk perhubungan jarak dekat ( kurang 10 meter ) dan yang paling penting, sistem keselamatan untuk perhubungan jenis bluetooth adalah secured kerana memerlukan persetujuan antara 2 pihak untuk memulakan proses pemindahan data ( pairing concept )

    HC-06 Bluetooth Module 

    HC-06 Bluetooth Module
    Module ini mempunyai 4 pin yang mana keempat - empat ini akan disambungkan secara terus pada Arduino anda. Saya akan tunjukkan cara untuk sambungan ini nanti. Oh ya, untuk pengetahuan anda semua, harga module ini dalam lingkungan RM30 - RM40 per unit. So, hati - hati ya.. Jangan sampai kena game..

    Contoh Projek

    Untuk tutorial kali ini, saya akan mengawal 3 biji LED dengan menggunakan apps yang saya muat turun dari Google Playstore. 3 LED ini akan dikawal digital (ON/OFF) secara berasingan dan juga secara serentak. Bagi memastikan agar anda semua dapat follow contoh ini dengan mudah, disarankan agar anda memuat turun apps yang sama seperti yang saya guna. Jadi, muat turun la apps di sini.

    Komponen - komponen yang digunakan

    1. Arduino
    2. Kabel USB
    3. HC-06 Bluetooth Module
    4. 3 x LED
    5. 3 x Perintang 220 Ohm
    6. Breadboard
    7. Jumper wire secukupnya
    Baiklah. Bagi memudahkan anda, saya akan pecahkan projek ini pada 2 bahagian. Bahagian pertama adalah untuk membaca data yang dihantar oleh apps kepada Arduino kita. Jom!

    Bahagian 1: Membaca Data Apps Menggunakan "Serial Monitor"

    Sambungan:

    Arduino               HC-06

      VCC   --------        5V
      GND  --------       GND
       10      --------        TX
       11      --------        RX

    Sambungan Arduino dengan HC-06

    Aturcara:


    #include <SoftwareSerial.h>
    #include <Wire.h>
    SoftwareSerial BT(10, 11);
    char a; 
    
    void setup() 
    {
      BT.begin(9600);
      Serial.begin(9600);
    }
    
    void loop() 
    {
      if (BT.available())
         {
           a = (BT.read());
                 Serial.println(a);
         }
    }
    

    Selepas anda memuat naik coding di atas ke Arduino anda, sila ikuti langkah - langkah berikut:

    1. Buka Setting pada telefon pintar anda, dan ON kan Bluetooth
    2. Scan nearby bluetooth signal
    3. Sekiranya ada device bernama HC-06, pilih device itu untuk pairing
    4. Password untuk pairing adalah "1234"
    5. Pastikan pada bawah perkataan HC-06, ada tertulis dengan tulisan kecil, "Paired" yang membuktikan connection was establish. 


    Sekarang kita tumpu pada Apps pula. Sila ikuti langkah - langkah seperti dibawah:
    1. Pastikan apps anda sama seperti dibawah. Sekiranya sama, tekan butang "Connect" untuk memulakan komunikasi antara apps dengan module
    2. Pilih device yang bernama HC-06
    3. Sekiranya proses pairing berjaya, anda dapat perhatikan yang lampu biru pada module HC-06 akan berhenti berkelip dan berada dalam keadaan statik. Tahniah!
    4. Sekarang, buka Serial Monitor pada software Arduino dan setkan 'No line ending' dan baudrate = 9600
    5. Bila dah buat tetapan seperti di atas, sila tekan keypad pada apps anda. Mulai tekan keypad pada Device 1, kemudian OFF semula dan teruskan dengan Device 2, OFF semula dan seterusnya.
    6. Perhatikan pada Serial Monitor anda. Ada keluar apa - apa tak?
    7. Kalau ada, tahniah sekali lagi.
    8. Kalau tak keluar apa - apa, takziah. Sila check balik. Haha.
    Saya buat kesimpulan apa yang akan anda dapat pada Serial Monitor.

    Device 1: ON = A, OFF = a
    Device 2: ON = B, OFF = b
    Device 3: ON = C, OFF = c
    Device 4: ON = D, OFF = d
    Device 5: ON = E, OFF = e

    Betul tak? Hehe.. Power kan saya.. Sekarang, catat apa yang anda dapat dari Serial Monitor kerana data ini adalah bahagian terpenting dalam coding kita nanti.

    Tekan butang Connect

    Pilih device HC-06


    Buka Serial Monitor pada Arduino IDE



    Buat tetapan "No line ending" dan "9600"

    Data yang terhasil apabila keypad pada apps ditekan
    So, bahagian 1 dah tamat.

    Sekarang kita bergerak ke bahagian ke-2 iaitu menambah LED dan membuat aturcara penuh.

    Bahagian 2: Mengawal LED Menggunakan HC-06

    Rujuk gambarajah dibawah untuk sambungan penuh.
    Sambungan penuh litar
    Apa yang nak saya pada LED saya adalah seperti berikut:

    Device 1 akan mengawal LED 1
    Device 2 akan mengawal LED 2
    Device 3 akan mengawal LED 3
    Device 4 akan mengawal LED 1, 2 & 3 (serentak)

    Aturcara:

    #include <SoftwareSerial.h>
    #include <Wire.h>
    SoftwareSerial BT(10, 11);
    char a;
    int LED1 = 4;
    int LED2 = 5;
    int LED3 = 6;
    
    void setup() 
    {
      BT.begin(9600);
      Serial.begin(9600);
      pinMode (LED1, OUTPUT);
      pinMode (LED2, OUTPUT);
      pinMode (LED3, OUTPUT);
    }
    
    void loop() 
    {
      if (BT.available())
         {
           
           a = (BT.read());
                Serial.println(a);
    
           if ( a == 'A' )
           {
            digitalWrite (LED1, HIGH);
           }
    
           if ( a == 'a' )
           {
            digitalWrite (LED1, LOW);
           }
    
           if ( a == 'B' )
           {
            digitalWrite (LED2, HIGH);
           }
           
           if ( a == 'b' )
           {
            digitalWrite (LED2, LOW);
           }
           
           if ( a == 'C' )
           {
            digitalWrite (LED3, HIGH);
           }
           
           if ( a == 'c' )
           {
            digitalWrite (LED3, LOW);
           }
    
           if ( a == 'D' )
           {
            digitalWrite (LED1, HIGH);
            digitalWrite (LED2, HIGH);
            digitalWrite (LED3, HIGH);
           }
           
           if ( a == 'd' )
           {
            digitalWrite (LED1, LOW);
            digitalWrite (LED2, LOW);
            digitalWrite (LED3, LOW);
           }
         }
    }
    

    SELAMAT MENCUBA...!

    10 November 2016

    Tutorial 11 - Penggunaan "Delay" Yang Betul


    Hai!! Apa khabar semua! Diharap anda semua mendapat perlindungan dari Allah s.w.t hendaknya. Ok, baiklah! Untuk tutorial kali ini, saya ingin berkongsi sedikit ilmu berkaitan dengan penggunaan "delay". Dalam Arduino, penggunaan delay haruslah sesuai mengikut projek yang anda ingin hasilkan.

    APA ITU DELAY?

    Delay adalah sejenis arahan yang apabila dilaksanakan, ia akan menyebabkan semua aktiviti terhenti seketika ( ikut masa yang telah disetkan ). Ya. Semua benda akan terhenti! Jika anda ingin membuat LED menyala selama 5 saat, pasti anda akan tulis code seperti dibawah:

    1
    2
    3
    4
    5
    void loop() {
      digitalWrite ( LED, HIGH );
      delay ( 5000 );
      digitalWrite ( LED, LOW );
    }
    

    Jika diperhatikan pada code diatas, saya telah meletakkan delay selama 5 saat (5,000ms) supaya LED tersebut terus menyala. Dalam kata lain, aturcara ini akan pause aktivitinya pada baris coding ke -3 selama 5 saat, kemudian barulah ia akan bergerak ke baris yang ke-4. Apa yang saya ingin tekankan disini adalah konsep freeze atau pause pada delay ini.

    Jadi kenapa kita perlu elakkan mengguna delay?

    Apabila Arduino masuk ke dalam arahan "delay", ia akan menyebabkan KESELURUHAN pin Input dan Output anda terhenti. Iya.. SEMUA! Bayangkan, anda ada sensor yang akan mengesan gas LPG dan secara kebetulan program anda masuk ke dalam arahan "delay ( 10000 )", pin yang ditugaskan untuk membaca sensor hanya akan mula beroperasi pada saat yang ke 10.001 saat. Sebab, pada saat yang ke 0.001 hingga ke 10, semua pin dalam keadaan beku atau freeze. Ini semua angkara "delay". Jahat kan? Apabila anda menggunakan sensor sahaja, perkara ini perlu diambil kira kerana ianya akan membuatkan projek anda tidak real - time.

    Jadi, macam mana nak selesaikan??

    Aaa.. Sebab itulah wujudnya command millis(). Apa itu millis()? Millis ini adalah satu arahan yang akan memberi kita nilai, dalam milisaat, berapa lama Arduino telah beroperasi (apabila mendapat bekalan kuasa). Nilai millis ini akan menjadi sifar selepas 50 hari.. Masa yang diberi ini adalah masa sebenar ye.. Tidak cepat 1 saat atau lewat 0.5 saat

    Contoh projek:

    Saya ingin membuat projek yang mengandungi 2 jenis sensor iaitu Gas Sensor dan Temperature Sensor (LM35). Apabila pin Gas = HIGH, kipas ekzos akan menyala selama 20 saat dan dalam masa yang sama, LM35 akan mendapatkan bacaan suhu. Jika suhu lebih dari 35 Celcius, Buzzer akan berbunyi sehinggalah suhu turun bawah dari 35 Celcius

    ** jika kita masih menggunakan "delay", mmg jahanam la sebab lama tu saya letak delay.. 20 saat.. Bayangkan kalau suhu dah cecah pada 45 Celcius pada saat yang ke-5 dan kebetulan bacaan gas pula HIGH, buzzer tak akan berbunyi la sebab masih belum keluar dari keadaan beku 20 saat tu..


    Jadi nak buat macam mana? Ayuh, kita guna millis ()


    const int Buzzer =  2;
    const int Ekzos_Fan = 3;
    const int GasSensor = A0;
    const int LM35 = A1;
    float Temp = 0;
    
    int Gas_State = 0;
    int LM35_State = 0; 
    int Gas_Time;
    
    void setup() 
     {
    
      pinMode ( Buzzer, OUTPUT );
      pinMode ( Ekzos_Fan, OUTPUT );
      pinMode ( GasSensor, INPUT );
      pinMode ( LM35, INPUT );
      
      int Gas_State = LOW;
      int LM35_State = LOW;
      
      int Gas_Time = 0;
      
     }
    
    void loop()
    {
    
      Gas_State = digitalRead (GasSensor);
      LM35_State = analogRead (LM35);
      Temp = LM35_State * 0.48828125;
      
      if ( Gas_State == HIGH )
         
         {
           Gas_Time = millis ();
           digitalWrite ( Ekzos_Fan, HIGH );
         }
      
      if ( Gas_Time > 0 && millis() - Gas_Time > 20000 )
         
         {
           digitalWrite ( Ekzos_Fan, LOW );
           Gas_Time = 0;
         }
      
      if ( Temp > 35 )
         
         {
           digitalWrite ( Ekzos_Fan, HIGH );
         }
         
      else
         
         {
           digitalWrite ( Ekzos_Fan, LOW );
         }
    }
    

    ~ TAMAT ~

    22 September 2016

    Tutorial 10 - UNO Asli vs UNO Clone



    Secara jujurnya, saya adalah pengguna tegar Arduino jenis klon ( made in China ) sejak tahun 2012 lagi. Ada pelanggan yang sering mempersoalkan kemampuan Arduino jenis klon ni berbanding dengan yang asli. Pada pendapat saya, untuk penggunaan yang ringan dan sederhana ( light & medium usage ), apatah lagi untuk mereka yang baru nak berjinak - jinak dengan microcontroller, cuba dapatkan Arduino yang murah / clone version dahulu.. Kenapa? Kerana harganya jauh lebih murah, beroperasi sama dengan yang asli dan rupa fizikal juga adalah sama.

    Saya pernah membuat tinjauan di kawasan"syurga elektronik" yang terletak di Pudu, Kuala Lumpur. Beberapa kedai besar menjual Arduino yang "kononnya" asli tetapi saya yakin ianya adalah klon. Penjual - penjual ini meletakkan harga "asli" walhal yang pembeli dapat adalah "klon". Namun, ada juga kedai yang secara terus terang mengatakan mereka hanya menjual Arduino versi klon dan harganya juga lebih rendah. Mengapa penjual ini berani menjual benda klon ini? Jawapannya adalah mudah. SEBAB UNO KLON BOLEH BEROPERASI. Mana mungkin orang jual secara terang - terangan benda yang tak boleh operasi? Logik kan?

    Lagi satu, bila mana anda membeli Arduino yang asli, cuba tanya pekedai, "Tauke, ini barang warranty berapa lama?". 5% akan jawab 3 hari, 95% akan jawab "Ini barang tiada warranty". Tak percaya? Gerakkan kaki anda dan mula melangkah ke mana - mana kedai yang menjual Arduino.

    Kalau yang asli pun tiada warranty atau jaminan, baik anda beli yang klon punya. Pun takde warranty jugak. Sama je! Ye dok?


    Masalah utama yang sering dihadapi oleh pengguna Arduino Klon

    Apabila anda menyambungkan USB cable ke Arduino klon, kita akan dapati bahawa PC atau laptop tidak akan recognize new hardware walaupun sambungan antara Arduino kepada PC kita telah pun dibuat. Kenapa jadi macam ni? Kerana Arduino klon tidak menggunakan cip Serial to USB yang standard tetapi digantikan dengan satu cip yang lain iaitu CH340G. Rujuk gambar di bawah.


    Jadi, untuk menyelesaikan masalah ini, anda dikehendaki memuat turun dan install software yang telah dikeluarkan oleh pengeluar cip CH340G ke dalam komputer anda. Tapi disebabkan saya seorang yang budiman, saya akan mudahkan kerja anda. Sila muat turun perisian CH340G dekat sini.
    Perisian ini boleh digunakan untuk apa juga versi Windows sekalipun.

    Apabila anda launch software ini, tetingkap seperti dibawah akan muncul. Jangan rasa takut atau pun gerun.. Klik sahaja button INSTALL dan tunggu sehingga selesai. Selepas tu, anda boleh gunakan Arduino ini sama macam Arduino yang asli. 

    Best kan??

    Klik pada button INSTALL


    Akhir sekali, saya ingin memetik kata - kata co-founder (pengasas) Arduino, 

    "Arduino is different from other platforms on the market because of these it is open source hardware and software—if you wish, you can download the circuit diagram, buy all the components, and make your own, without paying anything to the makers of Arduino."
    Massimo Banzi