13 January 2016

Tutorial 6 - Arduino + 433MHz Radio Frequency (RF) Transmitter & Receiver

ASSALAMUALAIKUM WBT & SALAM SEJAHTERA.

Seperti yang janjikan pada post sebelum ini, saya akan menerangkan tentang cara mengawal output menggunakan kaedah wireless. Kali ini, saya memilih alat / komponen asas dalam telekomunikasi  iaitu Radio Frequency.

433MHz RF Transmitter - Receiver
Untuk pengetahuan anda, RF banyak digunakan pada alat kawalan jauh (remote control) seperti TV, penghawa dingin, kipas dan juga alat keselamatan kereta. Sebelum kita pergi lebih jauh, adalah lebih baik kita mengenal secara mendalam tentang RF Transmitter - Receiver.

Transmitter (Tx): 

Voltan Kendalian : 3V hingga 12V  (untuk kuasa maksimum, guna 12V)
Arus Kendalian: 9mA hingga 40mA
Mod Resonan: Surface Acoustic Wave
Mod Modulasi: Amplitude Shift Keying
Frekuensi Kendalian: 433MHz
Kuasa Penghantaran: 25mW (433MHz pada 12V)
Ralat Frekuensi: +150kHz (maksima)
Halaju Gelombang :  kurang dari 10Kbps

Receiver (Rx):

Voltan Kendalian: 5.0VDC +0.5V
Arus Kendalian: maksima 5.5mA
Mod Nyahmodulasi: On Off Keying / Amplitude Shift Keying
Frekuensi Kendalian: 315MHz hingga 433.92MHz
Lebar jalur: 2MHz
Halaju Penghantaran: <9.6Kbps (pada 315MHz dan -95dBm)


Jika di lihat pada spesifikasi di atas, kita boleh membuat kesimpulan yang dengan menggunakan RF Tx-Rx ini, jarak maksimum antara Tx dengan Rx boleh dikawal sejauh 100 meter!! What??!! Ya. 100 meter. Jarak 100 meter hanya boleh dicapai jika tiada halangan seperti dinding, pokok atau bangunan. Atau dalam kata lain, KAWASAN TERBUKA ler.. Jika ada halangan antara Tx dan Rx, maka jarak maksima 100 meter tidak mampu dicapai.

Untuk projek kali ini, saya akan menggunakan 2 Arduino (satu untuk transmit data dan satu lagi untuk receiver) untuk menyalakan LED. Jika bahagian Rx menerima isyarat yang dihantar oleh Rx, LED pada pin 13 (onboard) akan berkelip - kelip mengikut isyarat yang diterima.

Ayuh!! kita mula berhuhu~ ~

Komponen  yang diperlukan.

  1. Arduino UNO - 2 set
  2. 433MHz Transmitter - Receiver - 1 set
  3. Jumper Wire - sesedap rasa
  4. Breadboard
  5. 9V Bateri (Petak) - 2 biji

Skematik Sambungan Litar

Sambungan pada Tx

Sambungan pada Rx

 Aturcara Arduino

Sebelum menulis aturcara, anda perlu memuat turun Arduino library yang membolehkan pengguna menghantar data ringkas tanpa melalui proses addressing, re-transmit dan juga acknowlegdement. Klik link dibawah dan paste folder VirtualWire ini ke dalam libraries Arduino.


Virtual Wire Arduino 

Aturcara pada Tx


#include <VirtualWire.h>
char *controller;
void setup()
{
  pinMode(13,OUTPUT);
  vw_set_ptt_inverted(true);
  vw_set_tx_pin(12);
  vw_setup(4000);
}

void loop()
{
  controller="1"  ;
  vw_send((uint8_t *)controller, strlen(controller));
  vw_wait_tx(); 
  digitalWrite(13,1);
  delay(2000);
  controller="0"  ;
  vw_send((uint8_t *)controller, strlen(controller));
  vw_wait_tx(); 
  digitalWrite(13,0);
  delay(2000);
}


Aturcara pada Rx


#include <VirtualWire.h>
 
void setup()
{
  vw_set_ptt_inverted(true);
  vw_set_rx_pin(12);
  vw_setup(4000); 
  pinMode(13, OUTPUT);
  vw_rx_start();     
}
  
void loop()
{
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)){
      
       if(buf[0]=='1'){
         digitalWrite(13,1);
         }
   
      if(buf[0]=='0'){
         digitalWrite(13,0);
         }

      }
}

02 December 2015

Pengenalan - ARDUINO Dan Alat Perhubungan Tanpa Wayar

ASSALAMUALAIKUM & SALAM SEJAHTERA

Untuk entry kali ini, saya akan berkongsi bersama para pembaca tentang komponen komunikasi yang biasa digunakan bersama mikro pengawal Arduino.

Persoalan yang biasa diajukan kepada saya adalah mengapa perlu ada komponen komunikasi? Jawapannya mudah! Untuk menghantar isyarat kepada sesuatu alat dengan menggunakan kaedah tanpa wayar atau wireless.

Sebagai contoh, jika saya ingin menghidupkan lampu rumah yang terletak 200km dari lokasi saya berada sekarang, apa yang saya perlukan adalah Arduino dan 1 alat komunikasi. Kedua-dua alat ini saya akan letakkan di rumah saya dan berada dalam keadaan ON 24 jam. Bila saya ingin menghidupkan lampu / kipas, saya hanya perlu membuat panggilan ke alat komunikasi yang di attach bersama Arduino dan pommm!! lampu pun hidup.. Hebat bukan?!

Terdapat beberapa jenis alat komunikasi yang biasa digunakan bersama Arduino, antaranya ialah:
  1. 433MHz RF Module
  2. Bluetooth Module
  3. GSM Module
  4. Wi-Fi Module
433MHz Radio Frequency Module

Bluetooth Module
GSM Module (Siemens TC-35)
Wi-Fi Module
Saya akan kongsikan dalam post yang akan datang cara menggunakan 433MHz RF Transmitter & Receiver bersama Arduino.

Tunggu...

06 October 2015

Litar Bekalan Kuasa 12V, 9V dan 5V DC (Power Supply Circuit)

ASSALAMUALAIKUM WBT & SALAM SEJAHTERA

Litar bekalan kuasa ini menghasilkan Arus Terus (DC) sebanyak TIGA keluaran (output) iaitu:
  1. 5V  (untuk litar PIC)
  2. 9V  (untuk Arduino, litar relay)
  3. 12V (untuk litar motor)
Ketiga - tiga keluaran ini boleh digunakan secara serentak. Menggunakan 4 buah diod 1N4001 yang bertindak sebagai "bridge rectifier" atau penerus, diod akan menukar AC voltage kepada DC voltage dan 2 kapasitor akan bertindak sebagai penapis.

LM7809, LM7805 dan LM7812 bertindak sebagai voltage regulator atau pengatur voltan akan mengeluarkan voltan keluaran yang dikehendaki. 2 digit terakhir pada voltage regulator ini bermaksud nilai voltan yang akan dihasilkan. Contoh, LM7805. 2 digit terakhir (05) bermaksud, voltan keluaran yang akan dihasilkan adalah 5V DC.

Litar Bekalan Kuasa dengan 3 Voltan Keluaran (ISIS)
PCB Footprint Untuk Litar Bekalan Kuasa (ARES)
3D View Litar Bekalan Kuasa.
Memandangkan litar ini mudah dan ringkas, namun proses penghasilannya tetap rumit. Anda masih perlu melakukan proses UV, develop, etching, drilling dan soldering. Jika tersilap melakukan proses develop, terpaksa pulak membeli UV Board yang baru (RM15 - RM 17 bagi saiz 15cm x 10 cm). Jika tiada maslah bagi setiap proses di atas, berkemungkinan litar anda tidak dapat beroperasi disebabkan silap melukis litar pada software. Berapa banyak kos dah habis? Penat lagi.. Supervisor dah makin hilang sabar dah tu..

JANGAN RISAU.. KAMI BOLEH MEMBANTU MERINGANKAN BEBAN ANDA!

Dengan RM45.00**, anda akan mendapat satu set litar bekalan kuasa 5V, 9V & 12V (1 Ampere) yang cun dan tip - top. Anda tak perlu membazir masa, tenaga dan wang untuk membuat litar power supply lagi. Kami telah melakukan ujian kendalian sebelum litar ini dihantar kepada ada bagi memastikan kualitinya terjamin.

Litar Bekalan Kuasa 5, 9 & 12V DC (1 Amp) - RM45.00**

04 October 2015

Tutorial 5 - Motor Control - Forward Reverse PART 2

ASSALAMUALAIKUM W.B.T & SALAM SEJAHTERA 


Pada kali ini, saya akan berkongsi cara atau tips yang ke-2 untuk membuat kawalan motor ( mara & songsang). Jika entry sebelum ini saya menggunakan litar geganti, di mana litar ini hanya boleh mengawal sama ada motor berputar mara atau songsang sahaja. MENGAWAL KELAJUAN ADALAH MUSTAHIL jika anda menggunakan litar geganti pada motor anda. Ini adalah satu daripada beberapa kelemahan yang ada pada litar geganti.

Namun begitu, cara kedua ini adalah lebih baik dan efficient jika dibandingkan dengan cara sebelum ini. Ianya adalah dengan menggunakan integrated - circuit (IC) L293D iaitu Dual H-Bridge Motor Control. Harga IC ini di pasaran adalah lebih kurang RM8 ke RM10.00. Dengan menggunakan IC ini, anda boleh:
  1. Membuat kawalan motor (forward & reverse)
  2. Mengawal kelajuan motor
  3. Maksimum 2 buah motor DC boleh digunakan dalam satu - satu masa.
HEBAT BUKAN??? 

IC L293D
Saya akan membincangkan secara ringkas tentang kaedah menyambung IC ini kepada papan Arduino anda.

IC ini mempunyai 16 pin. Jika anda ingin mengawal sebuah motor, anda hanya akan menggunakan hanya 8 pin (sebelah) sahaja. Jika 2 buah motor, anda perlu menggunakan kedua - dua belah IC ini (kiri & kanan).

Pin configuration untuk IC ini adalah seperti gambar di bawah:

L293D Pin Configuration
Untuk memutarkan satu motor, saya mudahkan dalam bentuk senarai:
  • Pin 1 - Enable Pin (Sambung pada mana - mana pin PWM Arduino)
  • Pin 2 - Rotation Pin (Sambung pada mana - mana pin Arduino)
  • Pin 3 - Motor A (Sambung pada motor A+)
  • Pin 4, 5, 12 & 13 -GND (Sambung pada GND Arduino dan GND bekalan kuasa motor)
  • Pin 6 - Motor A (Sambung pada motor A -)
  • Pin 7 - Rotation Pin (Sambung pada pin Arduino)
  • Pin 8 - DC Power (Sambung bahagian positive bateri @ bekalan kuasa untuk motor)
  • Pin 16 - DC Power (Sambung 5V dari Arduino untuk menghidupkan IC ini)
Dalam Proteus, sambungan litar akan kelihatan seperti berikut:

Litar Skematik Proteus untuk L293D
Jika anda perhatikan, saya menyambungkan kaki PWM (pin 11) Arduino pada Enable Pin (EN1) L293D. Ini bertujuan agar saya dapat mengubah kelajuan motor dengan menggunakan function analogWrite.

Untuk pin Input 1 (IN1) dan Input 2 (IN2) pula, saya hanya menggunakan pin digital biasa dari Arduino (pin 12 & pin 13). Ini kerana, pin ini hanya bertujuan untuk mengawal arah rotasi motor sama ada forward atau reverse. Sebagai contoh, jika saya membuat arahan:

digitalWrite (12, HIGH);
digitalWrite (13, LOW);
** motor akan berputar secara forward

digitalWrite (12, LOW);
digitalWrite (13, HIGH);
**motor akan berputar secara reverse

digitalWrite (12, LOW);
digitalWrite (13, LOW);
**motor berhenti berputar


digitalWrite (12, HIGH);
digitalWrite (13, HIGH);
**invalid situation. IC anda berkemungkinan akan rosak

Saya kongsikan program Arduino untuk kawalan rotasi dan kelajuan motor. Sambungan di antara IC, Arduino dan DC motor masih mengikut skematik di atas. Operasi motor adalah seperti berikut:
  1. Forward dalam masa 5 saat dengan kelajuan penuh (PWM = 255), kemudian;
  2. Stop dalam masa 3 saat, kemudian;
  3. Reverse dalam masa 5 saat dengan kelajuan 50% (PWM = 128), kemudian;
  4. Stop dalam masa 3 saat. Ulang operasi 1.

int enablePin = 11;
int motor_Out_A = 12;
int motor_Out_B = 13;

void setup() {

pinMode (enablePin, OUTPUT);
pinMode (motor_Out_A, OUTPUT);
pinMode (motor_Out_B, OUTPUT);
}

void loop() {

analogWrite(enablePin, 255);
digitalWrite(motor_Out_A, HIGH);
digitalWrite(motor_Out_B, LOW);
delay (5000);

analogWrite(enablePin, 0);
digitalWrite(motor_Out_A, LOW);
digitalWrite(motor_Out_B, LOW);
delay (3000);

analogWrite(enablePin, 128);
digitalWrite(motor_Out_A, LOW);
digitalWrite(motor_Out_B, HIGH);
delay (5000);

analogWrite(enablePin, 0);
digitalWrite(motor_Out_A, LOW);
digitalWrite(motor_Out_B, LOW);
delay (3000);

}

 SELAMAT MENCUBA...!!

Like Facebook kami di sini!