ASAS ESP32
NIK NOR HISHAMUDDIN BIN NIK MUSTAPHA
NOOR HISHAM BIN KOYA
MOHD NASRAN BIN MOHD NAWI.
Politeknik Kota Bharu
i
Diterbitkan dan dicetak oleh:
Jabatan Kejuruteraan Elektrik
Politeknik Kota Bharu
KM. 24, Kok Lanas, 16450 Ketereh, Kelantan
Asas ESP32
Terbitan Edisi 2022
© Nik Nor Hishamuddin bin Nik Mustapha, Noor Hisham bin Koya dan Mohd Nasran
bin Mohd Nawi.
Hak cipta terpelihara. Tiada bahagian daripada terbitan ini boleh diterbitkan semula,
disimpan untuk pengeluaran atau ditukarkan kepada sebarang bentuk atau dengan
sebarang alat, sama ada dengan cara elektronik, gambar dan rakaman serta
sebagainya tanpa kebenaran bertulis daripada Jabatan Kejuruteraan Elektrik,
Politeknik Kota Bharu.
Asas ESP32 / Nik Nor Hishamuddin bin Nik Mustapha, Noor Hisham bin Koya dan
Mohd Nasran bin Mohd Nawi.
ii
PENGHARGAAN
Syukur kepada Allah swt di atas kekuatan yang telah diberikan kepada kami di dalam
menyiapkan buku ini. Kami juga ingin mengambil kesempatan untuk merakamkan
terima kasih kepada Ketua Jabatan Kejuruteraan Elektrik, Puan Fatimah binti Abd
Rahman di atas kepercayaan yang diberikan dalam melaksanakan tugas ini. Ucapan
terima kasih juga kepada rakan-rakan seperjuangan yang telah menyumbangkan
fikiran dan masa secara langsung dan tidak langsung dalam memantapkan
kandungan buku ini. Ucapan yang sama turut dirakamkan kepada Puan Sheilani binti
Shaari yang telah bersama-sama melakukan penyemakan ke atas draf dan Encik
Ibrahim bin Abdullah dalam menyediakan rekabentuk kulit buku ini. Tidak lupa juga
kepada isteri dan anak kami yang telah banyak memberi sokongan moral kepada kami
semua.
Nik Nor Hishamuddin bin Nik Mustapha, Noor Hisham bin Koya dan Mohd Nasran
bin Mohd Nawi.
Jabatan Kejuruteraan Elektrik
Politeknik Kota Bharu
KM. 24, Kok Lanas, 16450 Ketereh, Kelantan
iii
SINOPSIS
Buku ini dihasilkan bagi membantu pelajar mahupun penyelia projek dalam
menghasilkan projek inovasi dalam bidang elektrik dan elektronik. Asas ESP32 ini
adalah satu kaedah tunjukcara bagi menghasilkan bahasa pengaturcaraan dengan
menggunakan perisian pengawal mikro ESP32. Perisian yang digunakan ialah
Arduino IDE. Perisian ini amat membantu para pelajar menghasilkan aturcara untuk
mengawal pengawal mikro (microcontroller) bagi mengoperasikan litar projek yang
dihasilkan berpandukan objektif projek yang telah ditetapkan. Perisian ini sangat
mudah digunakan dan ianya sangat berguna dalam pendidikan dan terutamanya
dalam mereka bentuk projek akhir pelajar. Arduino ESP32 dipilih berbanding versi
Arduino yang lain kerana ia menggunakan sistem kuasa dan kos yang rendah.
Tambahan pula, ESP32 telah pun dibina bersepadu bersama Bluetooth dan WiFi bagi
memudahkan penghasilan projek berasaskan Internet of Things (IOT).
iv
BIODATA PENULIS
Nik Nor Hishamuddin bin Nik Mustapha dilahirkan di Machang,
Kelantan pada 16 Ogos 1972. Pada 1997. Beliau melanjutkan
pengajian ke peringkat matrikulasi di Universiti Putra Malaysia
dan Sarjana Muda Kejuruteraan (Elektronik & Komputer) dari
Universiti Putra Malaysia. Bertugas sebagai pensyarah di
Jabatan Kejuruteraan Elektrik (JKE), Politeknik Kota Bharu
(PKB) Kelantan bermula Januari 2000. Pada 2017, beliau
ditugaskan sebagai Penyelaras Projek di JKE, PKB. Beliau
juga bergerak aktif dan banyak memberi sumbangan dalam
program-program pembangunan pelajar, murid-murid sekolah,
kakitangan kerajaan dan juga agensi swasta.
Noor Hisham Bin Koya dilahirkan di Tumpat, Kelantan pada 24
Mei 1978. Melanjutkan pengajian di peringkat Ijazah Sarjana
Muda di Universiti Teknologi Malaysia Skudai Johor dalam
jurusan Kejuruteraan Elektrik (Telekomunikasi) dari Tahun 1996
– 2000. Mula bertugas di Politeknik Kota Bharu sebagai
pensyarah di Jabatan Kejuruteraan Elektrik bermula tahun 2001
sehingga ke hari ini. Sepanjang bertugas di PKB beliau terlibat
dalam pelbagai aktiviti di peringkat Politeknik dan Kebangsaan
antaranya KIK, Polyskill, Fira Malaysia Cup, Program CSR dan
lain-lain.
Mohd Nasran Bin Mohd Nawi dilahirkan di Kota Bharu,
Kelantan pada 9 September 1978. Menyambung pengajian
peringkat Diploma di Politeknik Kota Bharu pada tahun 1996
dalam bidang Kejuruteraan Elektronik dan seterusnya
menyambung pengajian dalam bidang Sarjana Muda
Kejuruteraan Elektrik di Kolej Universiti Teknologi Tun
Hussein Onn pada tahun 1999. Beliau memulakan tugas
sebagai pensyarah elektronik di Kolej Teknologi Darulnaim
dan seterusnya meneruskan kerjaya sebagai seorang jurutera
elektrik sebelum memasuki sektor kerajaan. Beliau
memulakan tugas sebagai pensyarah di Jabatan Kejuruteraan Elektrik di Politeknik
Sultan Mizan Zainal Abidin, Dungun, Terengganu pada tahun 2006 dan pada tahun
2020 ditempatkan di Jabatan Kejuruteraan Elektrik, Politeknik Kota Bharu Kelantan.
Beliau memegang jawatan sebagai Penggubal Kurikulum bagi Program Pengajian
Kejuruteraan Elektrik Jabatan Pendidikan Politeknik, Kementerian Pendidikan Tinggi
(KPT) sejak 2017 sehingga sekarang. Beliau bergerak aktif dan banyak memberi
sumbangan dalam program-program pembangunan pelajar dan masyarakat
terutamanya program CSR di peringkat negeri, kebangsaan dan antarabangsa.
v
ISI KANDUNGAN
PENGHARGAAN……………………………………………………………………………iii
SINOPSIS ..................................................................................................................iv
BIODATA PENULIS ................................................................................................... v
ISI KANDUNGAN .......................................................................................................vi
PAPAN ESP32........................................................................................................... 1
Pengenalan............................................................................................................. 1
GPIO (General Purpose Input Output).................................................................... 2
PEMASANGAN PERISIAN PENGATURCARAAN ESP32 ........................................ 4
Pengenalan............................................................................................................. 4
Cara Pemasangan ARDUINO IDE.......................................................................... 4
Cara Pemasangan EPS32 ke dalam ARDUINO IDE .............................................. 8
PENGANTARAMUKA ESP32 .................................................................................. 12
Pengenalan........................................................................................................... 12
Pengaturcaraan Arduino IDE ................................................................................ 15
Pengistiharan Pin Masukan/Keluaran................................................................ 15
Pengistiharan Arahan READ/WRITE................................................................. 16
Bahasa Pengaturcaraan ARDUINO IDE............................................................ 17
Ralat Kesalahan Muatnaik Aturcara .................................................................. 19
Muatnaik Aturcara ke dalam ESP32 .................................................................. 23
Antaramuka menggunakan DC MOTOR .............................................................. 24
Pulse Width Modulation (PWM) ......................................................................... 24
H-Bridge ............................................................................................................ 25
Muat Turun Pemicu Motor L298N ke dalam Perpustakaan ............................... 27
Antaramuka menggunakan BLUETOOTH ............................................................ 30
Aplikasi Terminal BLUETOOTH............................................................................ 31
Penetapan Nama BLUETOOTH ........................................................................ 32
Aplikasi Bluetooth ESP32 ................................................................................. 34
TUTORIAL ............................................................................................................... 37
Tutorial 1: Buzzer Berbunyi dan LED Menyala ..................................................... 37
Tutorial 2: LED Menyala Secara Berkelip-Kelip .................................................... 39
Tutorial 3: 1 Motor DC Berputar ............................................................................ 41
Tutorial 4: 2 Motor DC Berputar ............................................................................ 44
Tutorial 5: Kawalan Robot menggunakan BLUETOOTH ...................................... 47
RUJUKAN ................................................................................................................ 51
vi
PAPAN ESP32
Pengenalan
Papan ESP32 seperti yang ditunjukkan pada Rajah 1.1 adalah merupakan satu
pengawal mikro yang mempunyai ciri-ciri berikut:
1. Terbina daripada dual core iaitu mempunyai 2 prosessor
2. Mempunyai Wifi dan Bluetooth
3. Boleh menjalankan program 32 bit
4. Mempunyai ‘clock frequency’ sehingga 240MHz
5. Mempunyai RAM 512Kbyte
6. Mempunyai 30 pin
7. Mempunyai sentuhan kapasitif
8. Mempunyai ADC (Analog – Digital Converter)
9. Mempunyai DAC (Digital – Analog Converter)
10. Mempunyai UART (Universal Asynchronous Reciever / Transmitter)
11. Mempunyai SPI (Serial Peripheral Interface)
12. Mempunyai I2C (Inter-Integrated Circuit)
Sumber: https://randomnerdtutorials.com/getting-started-with-esp32
Rajah 1.1: ESP32 DEVKIT V1 dengan 30 GPIO.
1
GPIO (General Purpose Input Output)
Pengawal mikro ESP32 ini boleh digunakan untuk disambungkan kepada komponen-
komponen elektronik. Terdapat 26 GPIO yang disediakan dan doleh digunakan untuk
disambungkan kepada komponen masukan (input) atau keluaran (output) projek.
Berikut adalah beberapa contoh komponen masukan dan keluaran yang boleh
digunakan :-
1. Komponen masukan seperti:
a. Sensor
b. Suis
c. Keypad
d. GPS
2. Komponen keluaran seperti
a. LED
b. Motor
c. LCD
d. Relay
Jadual 1.1 di bawah ini adalah rujukan bagi menentukan pin GPIO ESP32 yang akan
digunakan bagi komponen masukan dan keluaran projek yang dihasilkan.
Penggunaan pin masukan dan keluaran yang berstatus OK atau berwarna hijau
dicadangkan untuk digunakan sebagai penyambungan kepada komponen masukan
dan keluaran projek bagi memudahkan kerja pengaturacaraan.
Jadual 1.1: Pin GPIO ESP32
GPIO INPUT OUTPUT NOTA
0
1 Pulled up OK Outputs PWM signal at boot
2
3 TX pin OK Debug output at boot
4
5 OK OK Connected to on-board LED
OK RX pin HIGH at boot
OK OK
OK OK Outputs PWM signal at boot
2
6X X Connected to the integrated SPI flash
7X X Connected to the integrated SPI flash
8X X Connected to the integrated SPI flash
9X X Connected to the integrated SPI flash
10 X X Connected to the integrated SPI flash
11 X X Connected to the integrated SPI flash
12 OK OK Boot fail if pulled high
13 OK OK
14 OK OK Outputs PWM signal at boot
15 OK OK Outputs PWM signal at boot
16 OK OK
17 OK OK
18 OK OK
19 OK OK
21 OK OK
22 OK OK
23 OK OK
25 OK OK
26 OK OK
27 OK OK
32 OK OK
33 OK OK
34 OK
35 OK Input only
36 OK Input only
39 OK Input only
Input only
Sumber: https://randomnerdtutorials.com/getting-started-with-esp32
3
PEMASANGAN PERISIAN PENGATURCARAAN ESP32
Pengenalan
ESP32 boleh diprogramkan dengan menggunakan perisian pengaturcaraan yang
berbeza. Perisian yang boleh digunakan bagi Bahasa pengaturcaraan ESP32 adalah
seperti Arduino IDE, Espressif, Micropython, JavaScript, LUA, dan lain-lain. Buku ini
hanya akan memberi tumpuan kepada pengaturcaraan ESP32 dengan IDE Arduino
sahaja.
Cara Pemasangan ARDUINO IDE
Perisian Arduino IDE seperti yang ditunjukkan pada Rajah 2.1 berikut boleh dimuat
turun daripada laman sesawang : https://www.arduino.cc/en/software.
Rajah 2.1: Paparan Perisian Arduno IDE
Berikut adalah langkah-langkah yang perlu diikuti bagi pemasangan perisian Arduino
IDE ke dalam komputer:
1. Klik dua kali pada fail yang telah siap dimuat turun pada computer seperti icon
yang ditunjukkan pada Rajah 2.2.
4
Rajah 2.2: Icon Perisian Arduno IDE
2. Klik butang ‘I Agree’ sebagai tetapan perjanjian lesen persediaan Arduino
seperti yang ditunjukkkan pada Rajah 2.3 di bawah.
Rajah 2.3: Paparan Persediaan Arduino bagi Tetapan Perjanjian Lesen
3. Seterusnya, pilih atau klik pada komponen-komponen yang perlu di pasang dan
kemudian klik butang ‘Next’ seperti yang ditunjukkan pada Rajah 2.4.
5
Rajah 2.4: Paparan Tetapan Arduino bagi Pemilihan Pemasangan
4. Pada Destination Folder, tekan Browse untuk mancari C:\Program File
(x86)\Arduino seperti yang ditunjukkan pada Rajah 2.5 dan klik butang ‘Install’.
Rajah 2.5: Paparan Tetapan Arduino bagi Pemasangan Folder
6
5. Tunggu sehingga proses pemasangan selesai dan klik butang ‘Close’ seperti
pada Rajah 2.6.
Rajah 2.6: Paparan Tetapan Arduino Selesai
Ikon Arduino seperti yang ditunjukkan pada Rajah 2.7 akan terpapar pada skrin
desktop komputer masing-masing.
Rajah 2.7: Icon Arduino
7
Cara Pemasangan EPS32 ke dalam ARDUINO IDE
Berikut disediakan langkah-langkah yang perlu dipatuhi bagi memasang ESP32:-
1. Pastikan komputer mendapat capaian internet.
2. Klik pada ikon Arduino bagi memuka perisian Arduino IDE
3. Tekan File pada menu toolbar, klik ‘Preferences’ pada menu pull down Arduino
IDE seperti yang ditunjukkan pada Rajah 2.8 di bawah.
Rajah 2.8: Paparan menu Pull Down Fail → Preferences
4. Pada paparan Preference, masukkan
https://dl.espressif.com/dl/package_esp32_index.json ke dalam kotak
medan URL seperti yang ditunjukkan dalam kotak merah pada Rajah 2.9.
Kemudian, klik butang "OK".
8
Rajah 2.9: Paparan Preference
5. Seterusnya pada menu toolbar klik menu Tools → Board → Board Manager.
Kemudian, klik menu ‘Board Manager’ seperti yang ditunjukkan pada Rajah
2.10.
Rajah 2.10: Menu Pull Down Tools Board Manager
9
6. Tulis perkataan ESP32 pada kotak yang bertanda merah dan pilih kenyataan
yang dipaparkan seperti di dalam kotak merah sabagaimana yang ditunjukkan
pada paparan Board Manager Rajah 2.11. Pilih versi terbaru dan klik butang
‘Install’.
Rajah 2.11: Paparan Board Manager Install
7. Tunggu sehingga proses memasukkan komponen ESP32 ke dalam Arduino
IDE sehingga selesai. Apabila proses selesai, klik butang ‘Close’ seperti yang
ditunjukkan pada Rajah 2.12.
Rajah 2.12: Paparan Board Manager Close
10
8. Tukarkan pengawal mikro daripada Arduino Uno kepada ESP32 dengan klik
menu Tools →Board ‘Arduino Uno’ → ESP32 Arduino → DOIT ESP32 DEVKIT
V1 seperti yang ditunjukkan pada Rajah 2.13.
Rajah 2.13: Paparan Penukaran Board Arduino kepada ESP32
9. Setelah paparan ‘Board’ telah bertukar daripada Arduino UNO kepada DOIT
ESP32 DEVKIT V1, klik menu ‘Tools’ pada menu toolbar dan klik Board DOIT
ESP32 DEVKIT V1 pada menu pull down seperti yang ditunjukkan pada Rajah
2.13.
Rajah 2.13: Paparan Menu Pull Down bagi Board DOIT ESP32 DEVKIT V1
11
PENGANTARAMUKA ESP32
Pengenalan
PORT COM digunakan sebagai perhubungan diantara papan Arduino dan computer
atau peranti lain. Nombor port COM akan berubah apabila menyambungkan papan
pada port yang berbeza digunakan. Berikut adalah langkah-langkah bagi mengetahui
port COM yang digunakan oleh ESP32 apabila ianya disambungkan kepada
komputer.
1. Cari dan buka paparan ‘Devices Manager’ pada komputer seperti yang
ditunjukkan pada Rajah 3.1 di bawah.
Rajah 3.1: Carian Devices Manager
2. Pilih menu PORT (COM & LPT). Senarai nama-nama COM yang telah
digunakan oleh komputer sebelum ESP32 disambungkan kepada computer
akan dipaparkan bersama seperti yang ditunjukkan pada Rajah 3.2. Kelihatan
dua PORT COM yang telah digunakan iaitu COM1 dan COM2.
12
Rajah 3.2: Paparan PORT (COM & LPT)
3. Sambungkan ESP32 ke komputer dengan menggunakan wayar USB Type B.
4. Didapati akan terdapat pertambahan bilangan PORT COM yang digunakan
pada komputer pada menu PORTS (COM & LPT) seperti yang ditunjukkan
pada Rajah 3.3. Ini bermaksud komputer telah berjaya disambungkan dengan
ESP32 melalui COM7 iaitu Silicon Labs CP210x USB to UART Bridge.
13
Rajah 3.3: Paparan Pertambahan Penggunaan PORT (COM & LPT)
5. PORT COM yang digunakan oleh ESP32 perlu disetkan di dalam perisian
Arduino IDE. Pilih dan klik menu ‘Tools’ → PORT → COM7 seperti yang
dipaparkan pada Rajah 3.4. Contoh di sini adalah COM7, pelajar perlu memilih
COM yang digunakan pada komputer masing-masing.
14
Rajah 3.4: Paparan PORT COM yang Dipilih
Pengaturcaraan Arduino IDE
Pengistiharan Pin Masukan/Keluaran
Setiap komponen masukan atau keluaran yang disambungkan kepada pin GPIO
WAJIB diisytiharkan terlebih dahulu pengunaannya. Ini bagi menentukan pin tersebut
digunakan untuk masukan (INPUT) atau keluaran (OUTPUT) litar projek.
Bahasa pengaturcaran bagi pengisytiharan pin yang digunakan sebagai INPUT
adalah seperti di bawah:-
pinMode(X, INPUT); di mana X adalah nombor pin pada GPIO
Contoh 1:
Sensor cahaya adalah sebagai komponen masukan yang digunakan dan
disambungkan kepada GPIO17 sebagai pin masukan.
pinMode(17, INPUT);
15
Manakala, bahasa pengaturcaraan bagi pengisytiharan pin yang digunakan sebagai
OUTPUT adalah seperti di bawah:-
pinMode(X, OUTPUT); di mana X adalah nombor pin pada GPIO
Contoh 2:
LED adalah sebagai komponen keluaran yang digunakan dan disambungkan kepada
GPIO18 sebagai pin keluaran.
pinMode(18, OUTPUT);
Pengistiharan Arahan READ/WRITE
Terdapat 2 jenis proses yang digunakan .untuk pengawal mikro ESP32 bekerja iaitu
READ atau WRITE. READ adalah proses memindahkan data dari dunia luar ESP32
ke dalam ESP32. Proses READ ini adalah dilakukan apabila terdapat pin GPIO pada
ESP32 disambungkan kepada komponen INPUT.
Bahasa pengaturcaran bagi pengisytiharan arahan membaca data dari sensor
masukan adalah dengan menggunakan arahan READ. Maka, arahan untuk proses
READ adalah :-
digitalRead(X); di mana X adalah nombor pin pada GPIO
Contoh : Membaca data daripada sensor cahaya yang disambungkan kepada pin
GPIO17.
digitalRead(17);
Manakala, WRITE adalah proses memindahkan data dari dalam ESP32 ke dunia luar
ESP32. Proses WRITE ini dilakukan apabila terdapat pin GPIO pada ESP32
disambungkan kepada komponen OUTPUT.
16
Bahasa pengaturcaran bagi pengisytiharan arahan mengeluarkan data ke keluaran
bagi menyalakan LED adalah dengan menggunakan arahan WRITE. Maka, arahan
untuk proses WRITE adalah :-
digitalWrite(X, HIGH/LOW); di mana X adalah nombor pin pada GPIO
Contoh 3:
Arahan bagi menyalakan LED yang disambungkan kepada pin GPIO18.
digitalWrite(18, HIGH);
Contoh 4:
Arahan bagi mematikan LED yang disambungkan kepada pin GPIO18.
digitalWrite(18, LOW);
Bahasa Pengaturcaraan ARDUINO IDE
Fail yang digunakan untuk menulis aturcara pada Arduino IDE adalah dipanggil sketch
sebagaimana yang ditunjukkan pada Rajah 3.5.
Rajah 3.5: Paparan Fail sketch
Fail sketch mempunyai bahagian text editor bagi menulis kod atau bahasa
pengaturcaraan projek yang akan dihasilkan. Bahagian ini terbahagi kepada 2 seperti
yang ditunjukkan pada Rajah 3.6 iaitu :-
1. Bahagian void setup ()
2. Bahagian loop setup ()
17
Rajah 3.6: Paparan Text Editor
Setiap bahagian akan dibuka dengan tanda kurung kurawal buka ( { ) dan ditutup atau
diakhiri dengan tanda kurung kurawal tutup ( } ). Atucara perlu ditulis di dalam ruang
di antara kedua-dua tanda tanda kurung kurawal ini.
void setup() //Persediaan bermula disini
{ // Aturcara bermula di sini
} // Aturcara berakhir di sini
void loop()//Bahagian penting aturcara bermula di sini
{ // Bahagian aturcara bermula di sini
} // Bahagian aturcara berakhir di sini
Bahagian void setup() adalah digunakan untuk menulis arahan bagi nama GPIO yang
digunakan sebagai INPUT atau OUTPUT iaitu arahan pinMode(X, INPUT/OUTPUT);
18
Arahan di dalam bahagian ini akan dilaksanakan sekali sahaja. Manakala, bahagian
void loop() digunakan untuk menulis arahan untuk proses READ atau WRITE. Arahan
di dalam bahagian ini akan dilaksanakan secara berulang-ulang.
Ralat Kesalahan Muatnaik Aturcara
Terdapat 4 ralat biasa yang mungkin akan berlaku semasa memuat naik aturcara ke
dalam ESP32 iaitu :-
1. ESP32 tidak disambungkan kepada komputer.
Status ralat akan ditunjukkan pada paparan Error Message adalah:-
“Failed to execute script esptool the selected serial port Failed to execute script
esptool does not exist or your board is not connected” seperti yang ditunjukkan
pada Rajah 3.7.
Rajah 3.7: Paparan Error Message bagi ESP32 tidak disambungkan kepada
komputer
2. Jenis Arduino yang digunakan adalah berlainan dan bukan dari jenis ESP32.
Status ralatyang ditunjukkan pada paparan Error Message adalah seperti yang
ditunjukkan pada Rajah 3.8.
19
Rajah 3.8: Paparan Error Message bagi Arduino selain daripada ESP32.
3. Pemilihan penggunaan COM yang salah atau COM tidak dipilih
Status ralat yang ditunjukkan pada paparan Error Message adalah :-
“A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet
header” seperti yang ditunjukkan pada Rajah 3.9.
20
Rajah 3.9: Paparan Error Message bagi Pemilihan penggunaan COM yang
salah atau COM tidak dipilih
.
4. Kesilapan dalam penulisan aturcara, seperti salah ejaan atau kurungan
tiada.atau tiada tanda ; dihujung pada setiap arahan.
Status ralat yang ditunjukkan pada paparan Error Message adalah :-
exit status 1
expected ';' before '}' token seperti yang ditunjukkan pada Rajah 3.10.
21
Rajah 3.10: Paparan Error Message bagi Kesilapan dalam penulisan aturcara
Ralat kesalahan bagi masalah no 1 – 3 adalah dapat diatasi dengan melihat jenis
board Arduino yang digunakan dan pemilihan COM yang betul. Keadaan ini dapat
dilihat pada hujung kanan bawah perisian Arduino IDE seperti yang ditunjukkan pada
Rajah 3.11.
Rajah 3.11: Paparan Jenis Board Arduino
22
Muatnaik Aturcara ke dalam ESP32
Aturcara yang ditulis tiada kesalahan ralat seperti kesilapan dalam sambungan,
kesilapan dalam pemilihan jenis Arduino, kesilapan dalam pemilihan COM yang
digunakan dan kesalahan semasa menulis aturcara boleh dimuatnaik kedalam
Arduino mengikut Langkah-langkah berikut.
1. Klik pada ikon memuat naik aturcara seperti di dalam Rajah 3.12 di bawah.
Rajah 3.12: Toolbar Button Muatnaik
2. Masukkan nama kepada fail sketch dan simpan pada folder yang telah disetkan
untuk projek akhir dan tekan butang Save seperti yang ditunjukkan pada Rajah
3.13.
Rajah 3.13: Paparan Tempat Penyimpanan Fail Sketch
23
3. Tunggu sehingga proses memuat naik aturcara program selesai. Mesej ‘Done
uploading” dan “Leaving... dan Hard resetting via RTS pin...” akan dipaparkan
pada konsol area pesan seperti yang dipaparkan seperti yang ditunjukkan pada
Rajah 3.14.
Rajah 3.14: Konsol Area Pesan
Antaramuka menggunakan DC MOTOR
Salah satu cara yang paling mudah dan murah untuk mengawal kelajuan dan arah
putaran motor DC ialah dengan menggunakan Pemacu Motor L298N yang
disambungkan kepada ESP32. Kelajuan dan arah putaran motor DC boleh dikawal
dengan menggabungkan kedua-dua teknik ini, iaitu:-
i. PWM – Untuk mengawal kelajuan
ii. H-Bridge – Untuk mengawal arah putaran
Pulse Width Modulation (PWM)
Kelajuan motor DC boleh dikawal dengan mengubah nilai voltan masukannya yang
dikenali sebagai PWM. PWM ialah teknik di mana nilai purata voltan masukan
dilaraskan dengan menghantar satu siri denyutan ON-OFF. Voltan purata adalah
berkadar dengan lebar denyutan yang dikenali sebagai Kitaran Tugas. Semakin besar
24
kitaran tugas bermakna semakin besar voltan purata yang digunakan pada motor dc
yang mana akan mengakibatkan kelajuan atau putaran motor akan semakin tinggi
atau cepat. Manakala, semakin pendek kitaran tugas bermakna semakin kurang
voltan purata digunakan pada motor dc yang mana akan mengakibatkan kelajuan atau
putaran motor semakin rendah atau perlahan. Imej Rajah 4.1 di bawah
menggambarkan teknik PWM dengan pelbagai kitaran tugas dan voltan purata.
Sumber: lastminuteengineers.com
Rajah 4.1: Teknik PWM dengan Pelbagai Kitaran Tugas dan Voltan Purata.
H-Bridge
Arah putaran motor DC boleh dikawal dengan menukar kekutuban voltan
masukannya. Teknik biasa untuk melakukan ini ialah dengan menggunakan H-Bridge.
Litar H-Bridge mengandungi empat suis dengan motor di tengah membentuk susunan
seperti H sebagaimana yang ditunjukkan pada Rajah 4.2.
25
Rajah 4.2: Litar H-Bridge
Dengan menutup dua suis tertentu pada masa yang sama, akan membalikkan
kekutuban voltan yang digunakan pada motor. Ini menyebabkan perubahan arah
putaran motor. Motor DC berputar sama ada ke belakang atau ke hadapan,
bergantung pada cara penyambungan terminal +ve dan –ve bekalan kuasa kepada
motor.
Jika suis 1 dan 4 ditutup seperti yang ditunjukkan pada Rajah 4.3, penyambungan
terminal +ve (VCC) adalah ke bahagian kiri motor dan terminal –ve (GROUND) ke
bahagian lain. Hasilnya adalah motor akan mula berputar ke satu arah.
Rajah 4.3: Suis 1 dan 4 ditutup
26
Sebaliknya jika suis 2 dan 3 ditutup seperti yang ditunjukkan pada Rajah 4.4,
penyambungan terminal +ve (VCC) adalah ke bahagian kanan dan terminal –ve
(GROUND) ke bahagian kiri. Hasilnya adalah motor berputar ke arah bertentangan.
Rajah 4.4: Suis 2 dan 3 ditutup
Animasi pergerakan motor H-Bridge boleh dilihat pada laman sesawang Interface
L298N DC Motor Driver Module with Arduino di pautan
https://lastminuteengineers.com/l298n-dc-stepper-driver-arduino-tutorial/
Muat Turun Pemicu Motor L298N ke dalam Perpustakaan
Muat turun fail ‘robojax_ESP-L298N-DC-Motor_library.zip’ melalui pautan yang
terdapat di dalam Google Drive:
https://drive.google.com/file/d/1Uz7Y3S8aID8WvMNaVFyoLyBCbPPKU1SA/view?us
p=sharing
Berikut adalah langkah-langkah untuk memasukkan fail Arduino IDE yang telah
dimuat turun ke dalam fail perpustakaan Arduino.
1. Buka fail Arduino IDE.
2. Klik menu ADD .ZIP Library dan cari lokasi fail ‘robojax_ESP-L298N-DC-
Motor_library.zip’ seperti yang ditunjukkan pada Rajah 4.5.
27
Rajah 4.5: Paparan ADD .ZIP Library
Rajah 4.6: Pilih Fail Zip
3. Klik menu Open untuk mengesahkan proses memasukkan library ini.
28
4. Klik menu File → Examples → Robojax ESP L298N DC Motor. Terdapat 6 fail
contoh aturcara seperti yang ditunjukkan di dalam Rajah 4.7 iaitu:
i. ESP32_L298N_DC_2motors
ii. ESP32_L298N_DC_2motors_wifi
iii. ESP32_L298N_DC_motor
iv. ESP32_L298N_DC_ motors_wifi
v. L298N_DC_ 2motors
vi. L298N_DC_ motor
Rajah 4.7: Fail Aturcara Robojax ESP L298N DC Motor
29
Rajah 4.8 di bawah adalah menunjukkan nama-nama komponen yang terdapat pada
pemicu motor L298N.
Sumber: https://components101.com
Rajah 4.8 Komponen Pemicu Motor L298N
Antaramuka menggunakan BLUETOOTH
Bluetooth ialah teknologi tanpa wayar yang digunakan bertukar-tukar data di dalam
jarak yang dekat seperti yang ditunjukkan dalam Rajah 4.9. Bluetooth juga beroperasi
pada frekuensi 2.4GHz. ESP32 mempunyai Bluetooth dan Bluetooth BLE (Bluetooth
Low Energy).
Rajah 4.9: Komunikasi menggunakan Teknologi Bluetooh
Bluetooth digunakan dalam banyak aplikasi berbeza yang memerlukan komunikasi
tanpa wayar dan kawalan seperti menghantar audio ke fon kepala atau kereta,
komunikasi antara peranti dan komputer, memindahkan data antara peranti bluetooth
30
dan banyak lagi aplikasi-aplikasi lain yang menggunakan teknologi bluetooth. Peranti
yang menggunakan bluetooth di dalam komunikasi dari satu alat ke peralatan yang
lain memerlukan sambungan berterusan untuk menghantar data.
Manakala, Bluetooth Low Energy (BLE) ialah varian bluetooth yang menjimatkan
kuasa dan amat sesuai untuk digunakan penghantaran data jarak yang dekat. BLE
akan kekal dalam mod tidur kecuali apabila penghantaran data bermula. Ini
menjadikan ia menggunakan kuasa yang sangat rendah. Ciri ini sangat berguna
dalam komunikasi mesin ke mesin (M2M) kerana ia boleh menggunakan yang peranti
kecil dengan menggunakan kuasa bateri. Ia boleh bertahan untuk beroperasi dalam
masa yang sangat lama dan boleh menjimatkan penggunaan kuasa bateri. ESP32
telah dilengkapi dengan IC yang membolehkan penguna menggunakan bluetooth dari
jenis Bluetooth Classic atau Bluetooth Low Energy,BLE.
Aplikasi Terminal BLUETOOTH
Sepanjang panduan ini, kami akan menggunakan telefon pintar android yang akan
menyambung ke peranti papan pembangunan ESP32. Jadi, pastikan anda
mempunyai telefon android di tangan. Kami juga akan menggunakan aplikasi terminal
Bluetooth untuk memasangkan kedua-dua peranti bersama-sama. Muat Turun
aplikasi Serial Bluetooth Terminal daripada Play Store seperti yang ditunjukkan pada
Rajah 4.10.
4.10: Aplikasi Serial Bluetooth Terminal
31
Penetapan Nama BLUETOOTH
Buka Arduino IDE dan klik pada menu File > Examples > BluetoothSerial >
SerialtoSerialBT seperti di dalam Rajah 4.11 di bawah ini.
Rajah 4.11: Paparan Serial to Serial IBT
Berikut adalah aturcara bagi penetapan nama bluetooth:
#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32test"); //Nama Bluetooth yang diberikan adalah ESP32test
Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
if (Serial.available()) {
32
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.write(SerialBT.read());
}
delay(20);
}
Berikut adalah langkah-langkah bagi memuat nak aturcara ke dalam ESP32:
1. Tekan butang EN seperti yang ditunjukkan pada Rajah 4.12 selepas proses
memuat naik selesai.
Rajah 4.12: Butang EN pada Papan ESP32
2. Tekan menu Serial Monitor dan paparan adalah seperti yang ditunjukkan pada
Rajah 4.13.
33
Rajah 4.13: Paparan menu Serial Monitor
3. Mesej ini yang dipaparkan seperti dalam Rajah 4.13 bermaksud sambungan
telah berjaya diwujudkan dengan modul ESP32. Kini ianya boleh melakukan
komunikasi dengan peranti lain.
Aplikasi Bluetooth ESP32
Bagi menyambungkan telefon pintar android kepada modul ESP32 kami. Beberapa
langkah perlu dilakukan seperti:
1. Hidupkan Bluetooth pada tetapan telefon pintar.
2. Buka aplikasi Terminal Bluetooth Bersiri. Klik tiga bar mendatar di penjuru kiri
sebelah atas skrin seperti yang ditunjukkan pada Rajah 4.14.
Rajah 4.14: Paparan Terminal Bluetooth Bersiri
34
3. Klik pada menu Devices seperti yang ditunjukkan pada Rajah 4.15.
Rajah 4.14: Paparan Menu Devices
4. Cari dan pilih nama ESP32test seperti Rajah 4.15.
Rajah 4.15: Paparan nama ESP32test
5. Mesej: ‘Connecting to ESP32test’ akan dipaparkan sehinggalah
penyambungan berjaya dilakukan. Kemudiannya, mesej: ‘Connected’ akan
dipaparkan seperti yang ditunjukkan pada Rajah 4.16.
35
Rajah 4.16: Paparan Mesej Status Penyambungan
6. Tulis perkataan “Hello…” bagi menguji sambungan Bluetooth ini. Perkataan
yang telah ditaip akan dipaparkan pada aplikasi Bluetooth Terminal Application
dan pada paparan Serial Monitor seperti yang ditunjukkan pada Rajah 4.17.
Rajah 4.17: Paparan Perkataan Hello pada Serial Monitor
Maklumat lebih lanjut berkaitan Bluetooth Classic boleh dirujuk pada laman sesawang
Use ESP32 Bluetooth Classic with Arduino IDE melalui pautan
https://microcontrollerslab.com/esp32-bluetooth-classic-arduino-ide/.
36
TUTORIAL
Tutorial 1: Buzzer Berbunyi dan LED Menyala
Anda perlu membina satu aturcara untuk mengeluarkan bunyi pada buzzer dan
menyalakan 1 LED pada modul ESP32 yang telah dibina.
Penyelesaian:
Berikut adalah langkah-langkah yang perlu dilakukan :-
1. Pastikan komponen-komponen yang digunakan adalah daripada jenis
komponen INPUT atau OUTPUT.
➢ Buzzer dan LED adalah komponen OUTPUT
2. Pastikan pin GPIO yang digunakan bagi kedua-dua komponen OUTPUT
tersebut.
➢ GPIO13 → buzzer
➢ GPIO17 → LED
3. Bina jadual kebenaran seperti yang ditunjukkan pada Jadual 5.1 di bawah bagi
kedua-dua komponen OUTPUT tersebut.
Jadual 5.1: Jadual Kebenaran bagi Keluaran Buzzer dan LED
OUTPUT
BUZZER LED1
GPIO13 GPIO17
11
4. Bina Bahasa Pengaturcara Arduino IDE berpandukan Jadual 5.1.
void setup() //Kegunaan untuk setup GPIO yang digunakan sebagai INPUT / OUTPUT
{ //Tanda mula tetapan pin GPIO sebagai INPUT/ OUTPUT
pinMode(13, OUTPUT);
pinMode(17, OUTPUT);
} // Tanda taman tetapan pin GPIO sebagai INPUT/ OUTPUT
void loop()//Bahagian utama aturcara bermula di sini
{ //Tanda mula untuk menulis aturcara
37
digitalWrite(13, HIGH);
digitalWrite(17, HIGH);
} // Tanda tamat untuk menulis aturcara
38
Tutorial 2: LED Menyala Secara Berkelip-Kelip
Anda perlu membina satu aturcara untuk menyalakan 4 LED secara berkelip-kelip
pada modul ESP32 yang telah dibina.
Penyelesaian:
Berikut adalah langkah-langkah yang perlu dilakukan :-
1. Pastikan komponen-komponen yang digunakan adalah daripada jenis
komponen INPUT atau OUTPUT.
➢ LED adalah komponen OUTPUT
2. Pastikan pin GPIO yang digunakan bagi keempat-empat komponen OUTPUT
tersebut.
➢ GPIO16 → LED1
➢ GPIO17 → LED2
➢ GPIO18 → LED3
➢ GPIO19 → LED4
3. Bina jadual kebenaran seperti yang ditunjukkan pada Jadual 5.2 di bawah bagi
kedua-dua komponen OUTPUT tersebut.
Jadual 5.2: Jadual Kebenaran bagi Keluaran 4 LED
OUTPUT
LED1 LED2 LED3 LED4 SELA MASA
GPIO16 GPIO17 GPIO18 GPIO19
1 1 1 1 500ms
0 0 0 0 500ms
4. Bina Bahasa Pengaturcara Arduino IDE berpandukan Jadual 5.2.
void setup() // Kegunaan untuk setup GPIO yang digunakan sebagai INPUT / OUTPUT
{ // Tanda mula tetapan pin GPIO sebagai INPUT/ OUTPUT
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
39
} // Tanda taman tetapan pin GPIO sebagai INPUT/ OUTPUT
void loop()//Bahagian utama aturcara bermula di sini
{ // Tanda mula untuk menulis aturcara
digitalWrite(16, HIGH);
digitalWrite(17, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
delay(500);
digitalWrite(16, LOW);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
delay(500);
} // Tanda tamat untuk menulis aturcara
40
Tutorial 3: 1 Motor DC Berputar
Anda perlu menulis satu aturcara untuk memutarkan 1 motor DC menggunakan
Pemicu Motor L298N dan modul modul ESP32. Penyambungan litar bagi Pemicu
Motor L298N kepada1 biji motor DC adalah seperti yang ditunjukkan di dalam Rajah
5.1 di bawah ini. Pemicu Motor L298N kemudiannya perlu disambungkan kepada
kepada modul ESP32. Buka fail contoh aturcara ESP32_L298N_DC_motor untuk
melihat arah pergerakan untuk satu motor.
Rajah 5.1: Penyambungan 1 Motor DC kepada Pemicu Motor L298N
Penyelesaian:
Berikut adalah aturcara bagi menggerakkan 1 motor DC:-
#include <Robojax_L298N_DC_motor.h>
// motor 1 settings
#define CHA 0
#define ENA 14 // untuk kegunaan PWM
#define IN1 27
#define IN2 26
const int CCW = 2; // Jangan diubah
const int CW = 1; // Jangan diubah
#define motor1 1 // Jangan diubah
41
// Rujuk video YouTube bertajuk Controlling 2 DC Motors using ESP32 and L298N
Motor driver melalui pautan ini: https://youtu.be/2JTMqURJTwg
Robojax_L298N_DC_motor motor(IN1, IN2, ENA, CHA, true);
void setup() {
Serial.begin(115200);
motor.begin();
}
void loop() {
// motor.demo(1); //kelajuan motor1 60% arah CW
motor.rotate(motor1, 60, CW);
delay(3000);
motor.brake(1);
delay(2000);
motor.rotate(motor1, 100, CW); // kelajuan motor1 100% arah CW
delay(3000); // kelajuan motor1 i% arah CW )
42
motor.brake(1);
delay(2000);
for(int i=0; i<=100; i++)
{
motor.rotate(motor1, i, CW);
delay(100);
}
delay(2000);
motor.brake(1);
delay(2000); // kelajuan motor1 70% arah CCW
motor.rotate(motor1, 70, CCW);
delay(4000);
motor.brake(1);
delay(2000);
}
43