Mengenal ESP & ARDUINO serta Penerapannya dalam IoT

Apa itu ESP?

ESP adalah singkatan dari "Espressif Systems Platform", yang mengacu pada serangkaian mikrokontroler yang dikembangkan oleh perusahaan Espressif Systems, terutama ESP8266 dan ESP32. Mikrokontroler ESP ini populer karena kemampuannya untuk terhubung dengan jaringan Wi-Fi atau Bluetooth, yang membuatnya sangat cocok untuk pengembangan aplikasi Internet of Things (IoT) dan berbagai proyek elektronik yang memerlukan konektivitas nirkabel. Mikrokontroler ESP ini biasanya diprogram menggunakan bahasa pemrograman yang mirip dengan C/C++.


 Apa itu Arduino?

Arduino adalah sebuah platform perangkat keras dan perangkat lunak yang terbuka dan mudah digunakan untuk membuat berbagai proyek elektronik. Pada intinya, Arduino terdiri dari papan mikrokontroler yang dapat diprogram menggunakan bahasa pemrograman yang mirip dengan C/C++. Arduino menyediakan lingkungan pengembangan terpadu (IDE) yang sederhana untuk menulis kode, mengunggahnya ke papan Arduino, dan mengontrol berbagai komponen elektronik seperti sensor, motor, lampu LED, dan banyak lagi.

Karakteristik utama Arduino meliputi:

  • Papan mikrokontroler: Arduino memiliki berbagai macam papan mikrokontroler yang didasarkan pada mikrokontroler dari berbagai produsen seperti ATMEL, Microchip, dan lainnya.
  • Pin I/O: Arduino biasanya memiliki pin input/output (I/O) yang dapat digunakan untuk menghubungkan komponen elektronik seperti sensor, motor, lampu LED, dan lain-lain.
  • Komunitas besar: Arduino didukung oleh komunitas yang besar dan aktif, yang menyediakan banyak tutorial, proyek, dan dukungan bagi para penggunanya.
  • Perangkat lunak: Arduino IDE (Integrated Development Environment) adalah perangkat lunak sumber terbuka yang memudahkan penulisan dan pengunggahan kode ke papan Arduino.
  • Dukungan berbagai bahasa pemrograman: Meskipun bahasa pemrograman utama yang digunakan dalam Arduino adalah bahasa yang mirip dengan C/C++, namun ada juga pilihan untuk menggunakan bahasa pemrograman yang lain, seperti Python atau JavaScript, dengan bantuan perangkat lunak tambahan.

Arduino sangat populer karena kemudahan penggunaannya dan banyaknya dukungan komunitas serta dokumentasi yang tersedia. Hal tersebut membuatnya menjadi platform yang ideal untuk pemula yang ingin belajar tentang elektronika dan pemrograman, serta untuk pengembangan proyek-proyek elektronik yang lebih kompleks.

 Contoh Rangkaian ESP dan Arduino serta Kodingannya:

Penjelasan Rangkaian ESP32 

Rangkaian ESP32 digunakan untuk mengontrol LED hijau menggunakan ESP32.

Berikut adalah penjelasan komponen-komponennya: 

Komponen:

  • ESP32: ESP32 adalah mikrokontroler 32-bit yang dapat digunakan untuk mengontrol berbagai perangkat. Mikrokontroler ini memiliki modul Wi-Fi bawaan yang memungkinkannya untuk berkomunikasi dengan perangkat lain melalui internet. Dalam rangkaian ini, ESP32 berfungsi sebagai otak yang mengontrol LED hijau.
  • LED hijau: LED hijau adalah dioda pemancar cahaya yang memancarkan cahaya hijau ketika arus mengalir melaluinya. Dalam rangkaian ini, LED hijau digunakan sebagai indikator status.
  • Resistor 330 Ω: Resistor ini membatasi arus yang mengalir melalui LED hijau.
  • Kabel jumper: Kabel jumper digunakan untuk menghubungkan komponen-komponen dalam rangkaian.

 

Cara kerja rangkaian:

  • ESP32 mengirimkan sinyal digital ke pin GPIO 18.
  • Sinyal digital ini diubah menjadi arus oleh LED hijau.
  • Arus yang mengalir melalui LED hijau menyebabkan LED hijau menyala.

Kesimpulan:

Rangkaian ESP32 ini adalah rangkaian sederhana yang dapat digunakan untuk mengontrol LED hijau menggunakan ESP32.


Penjelasan kodingan:

define INPUT_LAMPU 2

- Baris ini mendefinisikan konstanta bernama INPUT_LAMPU dengan nilai 2. Konstanta ini digunakan untuk menyimpan nomor pin yang akan digunakan untuk mengontrol lampu. Dalam hal ini, pin 2 akan digunakan.

void setup()

- Baris ini menandakan awal dari fungsi setup(). Fungsi ini dijalankan sekali saat papan Arduino dinyalakan.

pinMode(INPUT_LAMPU, OUTPUT)

- Baris ini mengatur pin yang ditentukan oleh konstanta INPUT_LAMPU (dalam hal ini pin 2) sebagai pin output. Pin output dapat digunakan untuk mengontrol perangkat eksternal.

void loop()

- Baris ini menandakan awal dari fungsi loop(). Fungsi ini dijalankan berulang kali setelah fungsi setup() selesai dijalankan.

digitalWrite(INPUT_LAMPU, HIGH)

- Baris ini menyalakan lampu dengan mengatur pin INPUT_LAMPU ke keadaan HIGH.

delay(500)

- Baris ini menunda program selama 500 milidetik (0,5 detik).

 

digitalWrite(INPUT_LAMPU, LOW)

- Baris ini mematikan lampu dengan mengatur pin INPUT_LAMPU ke keadaan LOW.

 

delay(500)

- Baris ini menunda program selama 500 milidetik (0,5 detik).

Secara keseluruhan, kode ini akan membuat lampu menyala dan mati setiap setengah detik.

Penjelasan Rangkaian Arduino

Penjelasan mengenai rincian rangkaiannya:

Komponen:

  • Arduino Uno: Ini adalah board mikrokontroler yang mengontrol rangkaian. Ini menyediakan daya dan antarmuka yang dapat diprogram untuk LED.
  • LED Merah: Ini adalah dioda pemancar cahaya yang memancarkan cahaya merah ketika arus mengalir melaluinya ke arah maju.
  • Resistor: Ini adalah komponen elektronik pasif yang membatasi arus yang mengalir melalui LED. Sangat penting untuk menggunakan resistor dengan LED untuk mencegahnya terbakar karena arus yang berlebihan.

Koneksi:

  • Kaki positif (lebih panjang) dari LED: Ini biasanya terhubung ke resistor secara seri.
  • Resistor: Salah satu sisi resistor terhubung ke kaki positif LED, dan sisi  lainnya terhubung ke pin digital 13 dari Arduino Uno.
  • Kaki negatif (lebih pendek) dari LED: Ini terhubung ke pin GND (ground) dari Arduino Uno.

Fungsi:

Ketika Arduino Uno dihidupkan, ia dapat mengontrol state (HIDUP atau MATI) LED merah menggunakan pin digital 13. Kode yang berjalan pada Arduino Uno menentukan bagaimana LED berperilaku.

Penjelasan kodingan:

#define INPUT_MERAH 2

- Baris ini adalah instruksi preprocessor, yang artinya diproses oleh compiler sebelum kode sebenarnya dikompilasi.

- #define adalah keyword yang digunakan untuk membuat makro, yang pada dasarnya adalah singkatan untuk nilai atau sepotong kode.

- INPUT_MERAH adalah nama makro yang sedang didefinisikan. Merupakan kebiasaan umum untuk menggunakan huruf besar untuk makro untuk membedakannya dari variabel.

- 2 adalah nilai yang ditetapkan ke makro. 

void setup() {

- Baris ini mendefinisikan fungsi yang disebut setup().

- Dalam pemrograman Arduino, fungsi setup() adalah fungsi khusus yang hanya berjalan sekali, pada awal program, saat board Arduino dinyalakan.

- Kurung kurawal {} menandai awal dan akhir blok kode fungsi.

pinMode(INPUT_MERAH, OUTPUT);

- Baris ini berada di dalam fungsi setup().

- pinMode() adalah fungsi bawaan Arduino yang digunakan untuk mengonfigurasi pin sebagai input atau output.

- Argumen pertama, INPUT_MERAH (yang sekarang menjadi 2 karena definisi makro), menentukan nomor pin pada board Arduino. Dalam kasus ini, pin nomor 2 akan digunakan.

- Argumen kedua, OUTPUT, memberi tahu fungsi bahwa pin 2 harus dikonfigurasi sebagai pin output. Ini berarti Arduino dapat mengontrol level voltase pada pin tersebut (baik tinggi maupun rendah). 

}

- Kurung kurawal penutup ini menandai akhir dari blok kode fungsi setup().

void loop() {

- Baris ini mendefinisikan fungsi lain yang disebut loop().

- Fungsi loop() adalah fungsi khusus lainnya dalam pemrograman Arduino. Ini berjalan berulang kali, selama board Arduino dihidupkan.

- Kurung kurawal {} menandai awal dan akhir blok kode fungsi loop().

digitalWrite(INPUT_MERAH, HIGH);

- Baris ini berada di dalam fungsi loop().

- digitalWrite() adalah fungsi bawaan Arduino lainnya yang digunakan untuk menulis nilai digital (baik HIGH atau LOW) ke pin tertentu.

- Argumen pertama, INPUT_MERAH (yang masih 2), menentukan nomor pin pada board Arduino.

- Argumen kedua, HIGH, memberi tahu fungsi untuk menulis level voltase tinggi (biasanya 5 volt pada kebanyakan board Arduino) ke pin 2.

delay(500);

- Baris ini juga berada di dalam fungsi loop().

- delay() adalah fungsi bawaan Arduino yang menghentikan eksekusi program untuk jangka waktu tertentu.

- Argumen, 500, dalam milidetik (pertigaan detik). Jadi, dalam kasus ini, program akan dijeda selama 500 milidetik (setengah detik) setelah menulis nilai HIGH ke pin 2.

 digitalWrite(INPUT_MERAH, LOW);

- Baris ini masih di dalam fungsi loop().

- Mirip dengan baris 6, tetapi kali ini ia menulis level voltase LOW (biasanya 0 volt) ke pin 2 menggunakan fungsi digitalWrite().

delay(500);

- Baris ini juga berada di dalam fungsi loop().

- Mirip dengan baris 7, tetapi kali ini ia menjeda eksekusi program selama 500 milidetik setelah menulis nilai LOW ke pin 2.

}

- Kurung kurawal penutup ini menandai akhir dari blok kode fungsi loop().

Singkatnya, kode Arduino ini terus-menerus menyalakan dan mematikan LED (atau perangkat apa pun yang terhubung ke pin 2) dengan penundaan setengah detik di antara setiap status. Makro INPUT_MERAH digunakan untuk membuat kode lebih mudah dibaca dan dimodifikasi jika nomor pin perlu diubah.

 

Apa Perbedaanya?

Salah satu perbedaan utama adalah ESP32 memiliki dukungan bawaan untuk Wi-Fi dan Bluetooth, sedangkan Arduino biasanya memerlukan tambahan perangkat keras (seperti modul Wi-Fi atau Bluetooth) untuk mendukung konektivitas nirkabel. ESP32 juga memiliki prosesor yang lebih canggih dibandingkan dengan banyak varian Arduino. 

Walau dengan perbedaan tersebut, ESP32 dan Arduino bukanlah platform yang bersaing, melainkan yang saling melengkapi.

ESP melengkapi Arduino dengan menambahkan kemampuan konektivitas nirkabel yang terintegrasi dan kemampuan pemrosesan yang lebih canggih. Berikut beberapa contoh ESP melengkapi Arduino:

Konektivitas Wi-Fi dan Bluetooth:

ESP32 memiliki dukungan bawaan untuk Wi-Fi dan Bluetooth, yang memungkinkan Arduino untuk terhubung ke jaringan Wi-Fi dan berkomunikasi dengan perangkat lain melalui Bluetooth tanpa memerlukan modul tambahan.

Pemrosesan yang lebih canggih

ESP32 memiliki prosesor yang lebih canggih dibandingkan dengan sebagian besar varian Arduino, dengan kecepatan clock yang lebih tinggi dan jumlah inti prosesor yang lebih banyak. 

Hemat daya yang lebih baik: 

ESP32 memiliki fitur-fitur bawaan yang mendukung mode hemat daya yang lebih efisien, yang memungkinkan pengguna untuk mengoptimalkan konsumsi daya perangkat.

Dukungan untuk proyek IoT: 

Kombinasi kemampuan Wi-Fi, Bluetooth, dan pemrosesan yang canggih membuat ESP32 sangat cocok untuk pengembangan proyek-proyek IoT yang kompleks. Arduino dapat digunakan sebagai antarmuka pengguna atau kontrol utama, sementara ESP32 bertanggung jawab atas komunikasi nirkabel dan pemrosesan data yang terkait dengan IoT.

Ketersediaan: 

Arduino memiliki ekosistem perangkat keras yang luas, termasuk banyaknya sensor dan modul tambahan yang dapat digunakan. Dengan menggunakan ESP32 bersama dengan Arduino, pengguna dapat memanfaatkan ekosistem Arduino untuk mendukung berbagai macam perangkat tambahan yang terhubung ke ESP32 melalui antarmuka yang sudah ada pada papan Arduino. 

Kesimpulan 

ESP32 melengkapi Arduino dengan menambahkan kemampuan konektivitas tanpa kabel yang saling terintegrasi, pemrosesan yang lebih canggih, dan kemampuan hemat daya yang lebih baik, membuatnya menjadi pilihan yang sangat baik untuk proyek-proyek yang memerlukan konektivitas nirkabel atau pemrosesan yang lebih intensif, terutama dalam hal Internet of Things (IoT).

Komentar

Postingan populer dari blog ini

Sejarah dan Perkembangan Prosesor Intel

Pertemuan 5 : Ekuivalensi NFA ke DFA