Monday 4 January 2021

Litar Asas ATMEGA328 Arduino UNO Compatible

Papan Arduino UNO merupakan sebuah development kits yang biasa menjadi pilihan para pereka elektronik.

Rajah 1(a): Papan Arduino UNO
Sumber: https://store.arduino.cc/usa/arduino-uno-rev3

Papan Arduino UNO adalah seperti Rajah 1 (a) di atas, kit ini sebenarnya terdiri daripada gabungan beberapa litar iaitu:
  1. Litar pengatur voltage (Voltage Regulator)
  2. Litar asas ATMega328 dengan XTAL = 16MHz
  3. Litar USB-to-UART converter
  4. Litar manual RESET
  5. Litar auto RESET
  6. Litar indicator TX & RX
  7. Litar indicator 5V
  8. Litar VCC selector
  9. Terminal SPI/ICSP
  10. Terminal I2C
  11. Terminal Input / Output
seperti yang ditunjukkan dalam Rajah 1(b) di bawah:
Rajah 1(b): litar skematik Arduino UNO R3
Sumber: http://www.electronoobs.com/eng_arduino_tut31_sch2.php


Pembangunan litar berasaskan ATMega328 yang compatible dengan Arduino UNO sebenarnya boleh diringkaskan lagi, dimana beberapa litar di Rajah 1(b) boleh diubahsuai dan digugurkan. Hanya litar asas, litar auto reset berserta litar USB-to-UART converter sahaja pun sudah mencukupi bagi membolehkan litar ini berfungsi. 

Perlu diingatkan bahasa mesin (file .hex) yang terjana daripada Arduino IDE akan dimasukkan ke ATMega328 melalui Serial Communication (pin RX & pin TX). Oleh itu, sambungan antara modul USB-to-UART converter dan ATMega328 haruslah seperti dalam Jadual 1 di bawah: 

Jadual 1: Sambungan UC00C - ATMega328


Dimana pin 2 dan pin 3 masing-masing adalah Digital pin 0 (RX) dan Digital pin 1 (TX) pada Arduino UNO. Rajah 2 di bawah menunjukkan pinout bagi ATMega328 melawan pin pada Arduino UNO.

Rajah 2: Pinout ATMega328 melawan Arduino
Sumber: https://www.theengineeringprojects.com/2017/08/introduction-to-atmega328.html


Bagi membolehkan sebuah litar pengawal mikro ATMega328 compatible dengan Arduino IDE, ia hanya memerlukan litar-litar ini:

  1. Litar asas ATMega328 dengan XTAL = 16MHz
  2. Litar auto RESET
  3. Terminal USB-to-UART converter
  4. Terminal Input / Output
  5. Terminal bekalan kuasa (VCC dan GND).
Oleh itu, litarnya boleh dibangunkan semula seperti yang ditunjukkan dalam Rajah 3. Litar ini adalah teringkas, dimana peranti USB-to-UART converter boleh disambungkan ke litar melalui terminal J5. Bagi tujuan itu, penulis mencadangkan peranti UC00C digunakan sebagai USB-to-UART converter.

Rajah 3: Litar asas ATMega328 compatible Arduino UNO 

Berikut merupakan senarai komponen elektronik yang diperlukan membangunkan litar seperti pada Rajah 3 di atas:
  1. U1 - IC ATMega328 DIP28 (telah dimasukkan dengan firmware Serial Bootloader)
  2. C1, C2 - Capacitor Ceramic 0.1uF
  3. C3, C4 - Capacitor Ceramic 30pF
  4. X1 - Crystal Oscillator 16MHz
  5. J5 - 6x1 Right Angle Male Pin Header
  6. UC00C + USB cable type micro
  7. IC socket 28pin
Sekali lagi diingatkan bahawa litar pada Rajah 3 adalah asas sahaja. Jika anda ingin membuat aplikasi, sememangnya anda perlukan sambungan ke pin masuk / keluaran. Oleh itu, pin-pin masuk/keluar boleh disambung keluar ke terminal seperti Rajah 4 di bawah.

Rajah 4: Litar ATMega328 compatible Arduino UNO


Kesimpulan, litar ATMega328 compatible Arduino UNO boleh dibangunkan sendiri.


Thursday 3 October 2019

Langkah-langkah Flash AT Firmware ke dalam ESP8266


Langkah-langkah untuk Flash AT Firmware ke dalam ESP8266-01

Rajah 1: ESP8266 Pinout

Rajah 2: UC00C

Langkah 1:

Sambung ESP8266 ke UC00C seperti dibawah:

ESP8266                     UC00C
GND      ------------->  GND
GPIO2   ------------->  Not Connected (Open)
GPIO0   ------------->  GND
RXD      ------------->  TXO
TXD      ------------->   RXI
CH_PD  ------------->  VCC (3V3)
RST       ------------->  Not Connected (Open)
VCC      ------------->  VCC (3V3)

Langkah 2:

Muat turun ESP8266 Flasher disini

Langkah 3:

Muat turun AT Firmware.bin disini atau disini

Langkah 4:

Plug-in UC00C ke PC/Laptop, dan seterusnya semak COM Port di Device Manager.

Langkah 5:

Run esp8266_flasher.exe (Flasher yang telah dimuat turun semasa Langkah 2 diatas)

Paparan GUI Flasher ini adalah seperti dibawah:
  • Tukar COM1 ke COM6 (rujuk Langkah 4)
  • Browse AT Firmware.bin (rujuk Langkah 3)

  • Seterusnya tekan butang "Download"

Langkah 6:

ESP8266                     UC00C
GND      ------------->  GND
GPIO2   ------------->  Not Connected (Open)
GPIO0   ------------->  Not Connected (Ooen)
RXD      ------------->  TXO
TXD      ------------->   RXI
CH_PD  ------------->  VCC (3V3)
RST       ------------->  Not Connected (Open)
VCC      ------------->  VCC (3V3)

Plug-in UC00C ke Laptop / PC, seterusnya buka Arduino->Serial Monitor

Taip: AT+GMR <tekan send>

Paparan version Firmware akan terpapar.

Untuk rujuk senarai AT Command yang terkini, boleh layari website ini.

~SELESAI~ 


Monday 7 January 2019

Burn Serial Bootloader Firmware ke ATMega328 (compitable Arduino UNO)

Seterusnya, litar skematik asas untuk litar ATMega328 beroperasi adalah seperti yang ditunjukkan dalam Rajah 1 dibawah.

Rajah 1: Litar Asas ATMega328

untuk download litar skematik, sila klik disini.

Pada kebiasaannya cip ATMega328 yang baru dibeli TIDAK ADA Serial Bootloader firmware. Oleh yang demikian, pengguna perlu masukkan firmware tersebut sendiri dengan menggunakan Programmer seperti USBasp.

Rajah 2: USBasp

Bagi menggunakan programmer ini, Sila ikut langkah-langkah seperti dibawah:

Langkah 1:
Download installer bagi USBasp untuk OS Windows 8/8.1/10. Installer USBasp sila klik disini.

Langkah 2:
Unzip dan install application
Image 4

Image 5

Image 6

Setelah berjaya install, pada device manager akan terpapar "USBasp" seperti dalam rajah dibawah.

Image 7

Langkah 3:
Klik disini dan ikut "step 3".

Terima kasih kepada Cytron Technologies kerana menyediakan tutorial yang sangat berguna.

Sunday 4 September 2016

Serial Bootloader for PIC18F45K22

Selamat Sejahtera, entry pada kali ini akan membincangkan tentang penggunaan Serial Bootloader bagi PIC18F45K22.

Bahasa mesin yang terjana daripada MPLAP X IDE akan dimasukkan ke dalam PIC18F45K22 dengan menggunakan kaedah serial bootloader. Untuk tujuan itu, kita akan menggunakan sebuah perisian yang bernama Tiny Multi Bootloader+ sebagai GUI bagi memasukkan bahasa mesin ke dalam PIC18F45K22. Perisian ini adalah open source dan telah dikongsi ke umum melalui https://sourceforge.net/projects/tinypicbootload/files/

Berikut adalah keperluan untuk entry ini.

1. Firmware dan GUI, download 
2. Panduan untuk kendalian A-Z, download

Catatan: Firmware ini ambil dari web https://sourceforge.net/projects/tinypicbootload/files/ jika anda berminat untuk mendapatkannya, boleh click disini untuk muat turun file tersebut

Wednesday 16 September 2015

Teori - Universal asynchronous receive transmit (UART)

Post ini akan membincangkan dengan ringkas berkenaan dengan UART protocol.

UART - Universal Asynchronous Receiver and Transmitter merupakan serial protocol yang sangat berguna. Ia dilihat menjadi pilihan yang common untuk berkomunikasi dengan sistem komputer / Microcontroller.

Untuk kupasan lanjut berkenaan dengan teori UART, sila klik disini.

Cara guna printf() dalam XC8

The printf() function performs two main tasks: formatting of text, and printing this formatted text to stdout. The exact location of stdout is determined by a second function called putch(), which is called by printf() to output each character.
The printf() function performs the formatting and then calls a helper function, called putch, to send each byte of the formatted text. By default the putch() function is empty. It should be customised to suit the project at hand. By customizing the putch function you can have printf send data to any peripheral or location. The printf() function is used to print to USART, but it could define stdout to output to an LCD screen or SPI. Code to initialize the intended destination must be executed before printf() is called. [1]

Mengikut wikidot.com, kita boleh guna function printf() bagi menghantar mesej melalui UART.
Berikut adalah caranya:

1.    Masukkan header file berikut ke dalam program:


2.    Initialize UART dengan setting berikut:
Baud Rate = 9600bps
Data bit = 8
Dll
Contoh:

3.    Tambah function dibawah ini tanpa perlu prototype function.


4.    Seterusnya function printf() sudah tersedia untuk digunakan bersama dengan UART. Contoh aturcara klik disini


References

[1]
Microchip, "Wikidot.com," 17 April 2014. [Online]. Available: http://microchip.wikidot.com/faq:29. [Accessed 16 September 2015].
[2]
Microchip, "Microchip Technology Inc," 5 Aug 2012. [Online]. Available: ww1.microchip.com/downloads/en/DeviceDoc/52053B.pdf. [Accessed 19 Sep 2015].




Tuesday 25 August 2015

Cara guna ADC modul di dalam PIC8F4550

Post ini akan membincangkan ciri - ciri ADC modul yang terdapat di dalam PIC8F4550 serta menerangkan langkah - langkah untuk menggunakannya.

1) Teori ADC Modul di dalam PIC18F4550

Sila rujuk Rajah 1 dibawah bagi memudahkan pemahaman terhadap ADC modul.

Rajah 1: Gambarajah blok ADC

Daripada rajah 1, boleh diperhatikan terdapat beberapa parameter yang perlu diberi perhatian, antaranya ialah:
  • Voltage Input yang datang daripada Analog Channel (AN0 - AN12).
  • Reference Voltage iaitu Vref(+) dan Vref(-)
  • Resolution 10bit (0 - 1023)
Ketiga-tiga parameter ini boleh dihubungkan melalui graf dibawah:

Rajah 2: Graf Digital vs Analog

Rajah 2 diatas menunjukkan hubung kait diantara digital dan analog adalah linear. Maka ia boleh diterjemahkan dalam persamaan matematik seperti berikut:

------------------------------- (1)

Justeru, kita boleh mengira hasil ADC (Dout) jika diberi Voltage input (Vin) dengan menggunakan persamaan (1) diatas.

Note: 3V <=Vref <= 5V


Dengan menggunakan PIC18F4550, keluaran daripada ADC modul (Dout) ini akan disimpan di dalam SATU(1) register, iaitu ADRES.

Selain daripada itu, terdapat parameter lain yang mempengaruhi hasil ADC, antaranya ialah:
  • A/D conversion time per bit, Tad. 
Bagi mendapat hasil conversion 10-bit yang lengkap, masa yang diperlukan adalah 12Tad.

Note: Nilai Tad mesti melebihi 1.6us


Nilai Tad boleh dikira berdasarkan pilihan ADCS seperti dibawah:


Berikut adalah contoh kiraan bagi menentukan ADCS yang paling sesuai:

Diberi nilai Fosc = 48MHz

Maka,

Case 1: Fosc/2
48MHz / 2 = 24MHz
Tad = 1/24MHz = 0.0041 us. Pilihan ini tidak sah, kerana kurang dari 1.6us

Case 2: Fosc/4
48MHz / 4 = 12MHz
Tad = 1/12MHz = 0.0083 us. Pilihan ini tidak sah, kerana kurang dari 1.6us

Case 3: Fosc/8
48MHz / 8 = 6MHz
Tad = 1/6MHz = 0.1667 us. Pilihan ini tidak sah, kerana kurang dari 1.6 us

Case 4: Fosc/16
48MHz /16 = 3MHz
Tad = 1/3MHz = 0.333 us. Pilihan ini tidak sah, kerana kurang dari 1.6 us

Case 5: Fosc / 32
48MHz / 32 = 1.5MHz
Tad = 1/1.5MHz = 0.666us. Pilihan ini tidak sah, kerana kurang dari 1.6us

Case 6: Fosc/ 64
48MHz / 64 = 0.75MHz
Tad = 1/0.75MHz = 1.333us. Pilihan ini diterima walaupun kurang dari 1.6us sebab tiada pilihan lain.

Justeru,  convertion time = 12 x 1.333us = 16.996 us


Daripada contoh ini dapati bahawa dengan menggunakan Fosc = 48MHz, tiada ADCS yang sesuai kerana kesemuanya adalah kurang dari 1.6us. Tetapi ADCS yang paling hampir iaitu Fosc/64 boleh digunakan. Walaupun hasil conversion tidak lengkap 100% tetapi masalah ini boleh diatasi dengan membuat purata hasil conversion.

2) Menulis aturcara C18 

Langkah seterusnya adalah menulis aturcara menggunakan C18 untuk manipulasi kandungan register:
  • ADCON0
  • ADCON1
  • ADCON2

Bagi memudahkan, penerangkan seterusnya akan berdasarkan kepada contoh dibawah.

1. Contoh simple ADC program. 


Rajah 3
Penyata Masalah:

Tulis aturcara C18 supaya Pin RA0 pada PIC18F4550 boleh digunakan untuk melakukan proses ADC secara berterusan. Dimana configurasi ADC yang diperlukan adalah seperti berikut:

i) Vref(+) = Vdd (5V)
ii) Vref (-) = Vss (0V)
iii) Resolution = 10 bit
iv) A/D Acquisition Time = 12Tad
v) A/D Conversion Clock = Fosc/64

Penyelesaian:
Rajah 4: aturcara bagi contoh 1.

Untuk mendapat aturcara penuh, Klik Disini

2. Aturcara yang ditunjukkan dalam Rajah 4 boleh di naik taraf supaya lebih flexible. Dimana ia boleh guna untuk mana-mana channel (AN0-AN12).

Untuk mendapat aturcara yang telah di naik taraf, Klik Disini


Penutup:

Diharapkan post yang ringkas ini akan memberi manfaat kepada pembaca. Jika terdapat masalah atau kekeliruan, sila komen di ruang yang disediakan.

Sekian