Friday, January 28, 2011

Info Selingan: Sistem Keselamatan Rumah yang mudah

Assalamualaikum semua,

Buat masa ni, saya agak sibuk. Mungkin minggu depan saya akan teruskan tutorial berkenaan macammana nak set config PIC. Dan tutorial ni akan mengakhiri tutorial 4.x.

Selepas habis tutorial nie, saya akan buat satu projek, projek keselematan rumah yang mudah. Sistem keselamatan ini akan menggunakan PIC sebagai otak utama.

So harap bersabar.

Tuesday, January 25, 2011

Tutorial 4.3: LED.c - Penerangan

Assalamualaikum semua,

Pada kali ini, saya akan menerangkan secara ringkas tentang isi kandungan file LED.c.

Kepada sesiapa yang tidak jelas, sila emailkan kepada saya di allpicproject@gmail.com atau letakkan message anda di CBOX di sebelah kiri blog.






1. #include
  • Mesti ada dalam setiap file.c (hitech.c) dan mesti berada di baris paling atas.
  • Kegunaanya adalah untuk memuatkan/mendapatkan maklumat-maklumat penting bagi microcontroller seperti alamat pin, alamat port, pin naming dan lain-lain.
  • Untuk pengetahuan lanjut, sila rujuk file pic.h di tempat hitech.c di install.

2. /*
3. * LED Demo program
4. * Running LEDs on Port D
5. */
  • Ini adalah komen-komen pengenalan dan info. Setiap komen mestilah di dahulukan dengan ‘/*’ dan di tamatkan dengan ‘*/’. Komen jenis ini boleh berada dalam beberapa baris seperti contoh di atas.
  • Tanda komen ‘//’ dalam ‘// Set varible I n J sebagai unsign int (nilai 0 - 65k)’ adalah tanda komen untuk satu baris sahaja. Jika komen tersebut perlukan 2 baris maka setiap baris mestilah dimulakan dengan ‘//’

6. main(void){
17 }
  • Rujuk no. 6, ini adalah function utama ( function ini mesti nama ‘main(void)’. Setiap file.c yang utama mesti ada function ini. Di function inilah setiap program c akan bermula.
  • Rujuk no. 17, ‘}’ ini adalah tanda penutup bagi function ‘main(void).
  • Arahan-arahan bahasa C yang berada di dalam ‘{‘ dan ‘}’ akan di jalankan / run.


7. unsigned int I, J; // Set varible I n J sebagai unsign int (nilai 0 - 65k)
  • Int adalah singkatan bagi integer
  • Baris ini menetapkan pembolehubah I dan J sebagai pembolehubah unsigned integer
  • Nilai unsigned integer adalah 0 à 65,535
  • Nilai integer (bukan unsigned) adalah -32,768 à 32,765
  • Setiap baris arahan mesti di akhiri dengan tanda ‘;’

8. TRISD = 0; /* Set semua Pin Port D sebagai output */
  • PIC16F887 mempunyai lima jenis port iaitu PORTA, PORTB,PORTC, PORTD dan PORTE (sila rujuk datasheet untuk maklumat terperinci)
  • Bilangan pin dalam setiap PORT tak sama (rujuk datasheet)
  • PORTD terdiri dari 8 bit iaitu RD0 à RD7 dan RD7 adalah nilai bit yang terbesar (MSB)
  • Nilai PORTD dari 0 à 255 atau 0b00000000 à 0b11111111 (format binary) atau 0x00 à0xFF (format hexadecimal)
  • TRISD adalah gabungan TRIS dan PORTD
  • TRIS adalah arahan untuk set sesuatu port sebagai masukan/keluaran (input/output)
  • TRISD = 0 adalah sama dengan TRISD = 0b00000000 (0bxxxxxxxx adalah format binary)
  • TRISD = 255 çè TRISD = 0b11111111 çè TRISD = 0xFF (format hexadecimal)
  • TRISD = 0 = 0b00000000 bermaksud semua bit/pin PORTD di set sebagai keluaran/output. 0 à Output / keluaran , 1 à Input / masukan
  • Jika TRISD = 0b10000000, bermaksud hanya bit RD7 / bit D7 di set sebagai Input dan selainnya adalah sebagai Output.
  • Setiap baris arahan mesti di akhiri dengan tanda ‘;’

9. J = 1; // Set nilai default/awal J = 0
  • Set nilai J bersamaan 1.
  • Setiap baris arahan mesti di akhiri dengan tanda ‘;’


10 while(1){ // Loop selama-lamanya
16 } // Penutup untuk 'while' syntax.
  • Arahan ‘while(1){ ……} ‘ melaksana semua arahan-arahan yang berada di dalam ‘{ … }’ tanpa henti / selama-lamanya.

11 PORTD = J; // Set portD dengan nilai J
  • Setkan nilai PORTD bersamaan dengan nilai J
  • Setiap baris arahan mesti di akhiri dengan tanda ‘;’

12 for(I = 65000 ; --I ;) continue; // Sebagai delay
13 for(I = 65000 ; --I ;) continue; // Sebagai delay - satu lagi delay
  • Ini adalah arahan ‘for … next’ atau ‘for … buat sesuatu … ulang sehingga no 0 atau no tertentu.
  • Dalam kes ini, hanya di set sebagai masa lengah / delay sahaja.


14 J = J * 2; // Nilai J di darab dengan 2.
  • Setiap baris arahan mesti di akhiri dengan tanda ‘;’


15 if(J > 128) J = 1; // Set nilai J = 1 jika nilai J > 128.
  • Setiap baris arahan mesti di akhiri dengan tanda ‘;’

Bersambung ....

Sunday, January 23, 2011

Tutorial 4.2: Programkan Hex code ke dalam PIC

Assalamualaikum semua.

Hari ni saya nak tunjukkan macammana kita nak masukkan/ burn kan firmware/hex code yang telah dihasilkan dalam tutorial 4.1 ke dalam PIC16F887 di dalam board PIC v2 ( PIC board v2). Bila PIC16F887 telah dimasukkan dengan hex code dan disambung dengan supply (8V -13V), maka PIC board v2 akan mempamirkan LED 'running light'.


Langkah-langkah adalah seperti berikut:


1. Pilih jenis programmer yang akan digunakan ... dalam kes ini adalah PICkit2


2. Sebelum tekan butang 'Re-establish PICkit 2 .... ' (dalam bulatan merah)
pastikan PICkit2 disambung ke PC dan PIC board v2 telah di sambung
ke PICkit2(rujuk 'DIAGRAM - macammana nak program PIC').


3. PICkit2 dan PIC16F887 ( dalam PIC board v2) telah di kesan.
Jika tiada message seperti di atas (setelah PICkit2 n PIC board v2
disambung ke PC), sila periksa semua sambungan dan sila
ulangi langkah 2.


4. Klik icon 'Program the target device' (dalam bulatan merah) untuk
memprogram PIC16F887 dengan hex code hasil daripada tutorial 4.1.


5. Hex code telah berjaya di program ke dalam PIC16F887.







Friday, January 21, 2011

Tutorial 4.1: Set PIC configuration

Assalamualaikum semua.

Dalam tutorial 4.0, saya telah menunjukkan macam mana nak mula tulis program c dengan menggunakan 'Project Wizard'.

Jadi untuk kali ini, saya akan tunjukkan cara untuk menentukan konfigurasi (configuration) untuk PIC. Secara ringkasnya, konfigurasi ni perlu di setkan adalah menentukan cara PIC berfungsi. Sebagai contoh, PIC nak guna 'clock' secara dalaman ataupun dari sumber luar dan sebagainya.

Saya juga akan tunjuk secara gambarajah supaya senang ikut dan senang faham. Kalau ada kemusykilan, sila email ke allpicproject@gmail.com atau tinggalkan pesanan di CBOX sebelah.




1. Di menu, tekan 'Configure' dan pilih 'Configuration Bits'


2. Uncheck checkbox ( dalam bulatan merah)


3. Di column 'Setting' tukarkan semua yang berada dalam kotak merah supaya sama dalam gambarajah di atas. Bila dah tukar di bahagian 'Setting' , no yang terdapat di column 'Value' mesti sama dengan nombor yang ada di gambar atas.


4. Check checkbox seperti dalam kotak merah paling atas (Configuration Bits set in code).


5. Klik butang merah 'Re-build with compiler ..... ' ( dalam kotak merah) untuk compile/tukarkan program c (LED.c) kepada hex/binary code
(bahasa yang microcontroller/PIC akan faham)


6. Berjaya 100% ... Program C (LED.c) telah berjaya di compile
(ditukarkan kepada hex code/binary code)
7. Hex code hasil compilation ( Demo02_LED.hex)


Bersambung .....

Tutorial 4.0: Program C untuk 'ON' kan LED

Assalamualaikum semua,

Ok, oleh kerana lama sangat saya tinggalkan tutorial ni, saya rasa lebih baik saya mula balik dengan program C (dalam hi-tech C) yang pertama (cara nak install Mplab, sila rujuk post yang terdahulu).

Ok, dalam tutorial nie, saya akan program C untuk nyalakan LED secara berturutan (running light). Program nie dibuat simple supaya senang ikut dan tak banyak perlu fikir untuk permulaan nie.

So, saya akan menggunakan 'project wizard' supaya senang ikut dan senang faham. So saya start dari mula.




1. Run/double click 'Mplab IDE v8.63' (sekarang saya guna
version 8.63, version yang terdahulu pun ok).


2. Default MPLAB IDE.


3. Di menu, klik 'Project' dan pilih 'Project Wizard'.


4. Klik 'Next'.


5. Pilih PIC microcontroller 'PIC16F887'


6. Di 'Active Toolsuite', pilih 'HI-TECH Universal Toolsuite'

7. Klik 'browse' dan namakan projek sebagai 'Demo02_LED'
di dalam folder 'D:/Allpicproject/Demo02_LED'


8. Lokasi dan nama project disimpan


9. Tekan Next


10. Tekan butang 'finish' ... selesai.


11. Arrange kan kedudukan ruang MPLAB seperti kat atas.
(Saya akan menggunakan susunan tersebut untuk tutorial ini)


12. Right click atas 'Demo02_LED.mcp' dan pilih 'Add new file'


13. Buatkan main folder 'Allpicproject' dan subfolder 'Demo02_LED'
dan namakan file tersebut sebagai LED.c ... tekan butang 'Save'


14. Copy program C di bawah dan paste kan ke dalam ruang 'LED.c
(huraian tentang program, saya akan bagi kemudian)


#include

/*
* LED Demo program
* Running LEDs on Port D
*/

main(void)
{
unsigned int I,J; // Set varible I n J sebagai unsign int (nilai 0 - 65k)

TRISD = 0; /* Set semua Pin Port D sebagai output */
J = 1; // Set nilai default/awal J = 0

while(1){ // While loop selama-lamanya
PORTD = J; // Set portD dengan nilai J
for(I = 65000 ; --I ;) continue; // Sebagai delay
for(I = 65000 ; --I ;) continue; // Sebagai delay - satu lagi delay
J = J * 2; // Nilai J di darab dengan 2.
if(J > 128) J = 1; // Set nilai J = 1 jika nilai J > 128.
} // Penutup untuk 'while' syntax.
} // Penutup untuk 'main(void)' function.






15. Klik 'save file' (gambar disket) untuk save kan file LED.c



16. Save projek ... clik kanan di 'Demo02_LED.mcp' dan pilih 'Save'
( tanda '*' menunjukkan projek ni belum save dan bila dah
di save, tanda tersebut tiada)



17. Ok, semua siap ( dah save semua file 'LED.c' dan Projek 'Demo02_LED.mcp)


Bersambung ..........

Sunday, January 16, 2011

Info Selingan: Buat PCB di rumah

Assalamualaikum semua,

Insya allah saya akan update / teruskan dengan tutorial belajar PIC dalam masa terdekat ni ( bila ada kelapangan) , di harap bersabar.

Oleh kerana ramai yang berminat nak buat PCB sendiri, saya akan senaraikan website yang bagus tentang cara membuat PCB di rumah. Kalau sesiapa yang ada/tahu mana-mana website yang bagus berkenaan belajar benda ni, minta email kan kat saya di allpicproject@gmail.com atau masukkan dalam message kat sebelah. Nanti saya update kan kat sini untuk kebaikan semua.

Ini senarai website untuk membuat PCB sendiri kat rumah:

1. http://www.foxhunt.com.au/misc/pcb/making_pcbs.htm

2. http://www.riccibitti.com/pcb/pcb.htm

Tuesday, January 11, 2011

Info Selingan: Buat Schematic dan PCB

Assalamaualaikum semua,

Beberapa hari ini, saya terima email dari pengunjung blog saya nie bertanyakan pasal macam mana nak buat schematic dan PCB dan juga software yang diguna dalam blog saya ni.

Ok, untuk software, saya guna eagle ( boleh download di http://www.cadsoft.de/download.htm ) utk buat schematic n pcb.

Lepas buat schematic, saya convertkan kepada PCB (eagle buat PCB daripada schematic yang kita lukis).

Bila PCB dah siap, saya printkan PCB tersebut ke atas kertas tracing paper menggunakan laser jet printer.

Selepas tu, saya lekatkan kertas tersebut kepada UV PCB (ultra violet PCB / photo resist PCB ... setelah cover UV board tu di buang) dan expose kepada UV source/ mesin yang keluarkan UV light/ cahaya ultra violet. Lama masa expose adalah bergantung kepada kekuatan cahaya UV yang di gunakan.

UV PCB yang saya gunakan adalah jenis positif exposure/acting ( Jenama Kinsten, Jenis PP1530 , single side dan hargakan di jalan Pasar dalam RM23.00 untuk size 15cm x 30cm) .

Cuba rujuk kat sini untuk dapatkan gambaran yang lebih jelas.

http://www.foxhunt.com.au/misc/pcb/making_pcbs.htm.


Saya belum bercadang untuk buat tutorial untuk buat PCB tetapi boleh la jawab serba ringkas jika ada yang ingin tahu.

Harap penerangan ringkas ni dapat membantu sesiapa yang ingin buat PCB sendiri kat rumah.