2.1 Arsitektur Mikrokontroler/Mikrokomputer
Mikrokontroler adalah sebuah chip yang mengintegrasikan berbagai komponen inti seperti CPU, memori (RAM dan ROM), serta periferal input/output (I/O). Semua elemen ini dirancang dalam satu sistem untuk menjalankan tugas-tugas tertentu dengan efisiensi tinggi. Karena sifatnya yang ringkas dan hemat daya, mikrokontroler sering digunakan dalam perangkat yang membutuhkan pengendalian spesifik, seperti mesin cuci, remote control, dan perangkat IoT. Di sisi lain, mikrokomputer adalah komputer kecil yang dilengkapi CPU, memori, dan berbagai periferal, serta mampu menjalankan sistem operasi lengkap seperti Linux atau Windows. Berbeda dengan mikrokontroler, mikrokomputer menawarkan fleksibilitas yang
lebih besar dalam menjalankan berbagai program atau fungsi. Contoh populer dari mikrokomputer adalah Raspberry Pi, yang banyak digunakan untuk pengembangan prototipe, aplikasi multimedia, atau bahkan sebagai server kecil.
2.1.1 Perbedaan Mikrokontroler dan Mikrokomputer
1. Fokus Penggunaan
Mikrokontroler dirancang untuk tugas-tugas spesifik yang tidak membutuhkan kapasitas pemrosesan besar. Karena itu, sistem operasi biasanya tidak diperlukan. Sebaliknya, mikrokomputer dibuat untuk menangani tugas-tugas yang lebih kompleks, memanfaatkan sistem operasi untuk mengelola aplikasi dan fungsi yang beragam. Mikrokomputer sering digunakan dalam pendidikan, penelitian, hingga proyek DIY yang
membutuhkan perangkat komputasi serbaguna.
2. Efisiensi Daya
Salah satu perbedaan mencolok antara keduanya adalah konsumsi daya.
Mikrokontroler sangat hemat energi karena dirancang untuk tugas-tugas sederhana dengan kebutuhan daya yang minimal. Ini membuatnya ideal untuk perangkat yang ditenagai oleh baterai atau yang membutuhkan operasi terus-menerus tanpa sumber daya besar. Sebaliknya, mikrokomputer memiliki konsumsi daya yang lebih tinggi karena kemampuan pemrosesannya yang lebih kompleks dan dukungan untuk berbagai periferal.
3. Kompleksitas dan Fleksibilitas
Mikrokontroler cenderung lebih sederhana karena hanya ditujukan untuk menjalankan tugas tertentu. Hal ini membuatnya kurang fleksibel dibandingkan mikrokomputer, yang mampu menangani berbagai aplikasi dan mendukung multitasking. Namun, kesederhanaan ini justru menjadi keunggulan mikrokontroler dalam aplikasi yang tidak memerlukan fungsi-
fungsi tambahan.
4. Contoh Aplikasi
Mikrokontroler sering digunakan pada perangkat yang memerlukan pengendalian langsung dan hemat daya, seperti Arduino dan ESP32. Sementara itu, mikrokomputer seperti Raspberry Pi atau BeagleBone lebih sering digunakan dalam proyek-proyek yang membutuhkan kemampuan pemrosesan lebih tinggi, seperti pengembangan prototipe, media
center, atau bahkan sebagai server kecil.
2.1.2 Struktur Dasar Mikrokontroler
Mikrokontroler adalah sirkuit terpadu yang menggabungkan unit pemrosesan pusat (CPU), memori, dan periferal input/output (I/O) dalam satu chip. Struktur dasar mikrokontroler mencakup beberapa komponen penting yang memungkinkan fungsi dan fleksibilitasnya dalam berbagai aplikasi. Berikut adalah ikhtisar komprehensif tentang komponen utama mikrokontroler:
- Unit Pemrosesan Pusat (CPU): CPU berfungsi sebagai otak mikrokontroler, bertanggung jawab untuk mengambil (fetch), menerjemahkan (decode), dan mengeksekusi instruksi. CPU mengoordinasikan operasi semua komponen lain dalam sistem.
2. Memori:
○ RAM (Random Access Memory): Digunakan untuk menyimpan data
sementara selama eksekusi program. Data dalam RAM akan hilang saat daya
dimatikan.
○ ROM (Read Only Memory): Menyimpan program dan data yang tidak
berubah, seperti firmware. Beberapa mikrokontroler menggunakan memori
flash yang dapat diprogram ulang.
Port Input/Output (I/O): Port I/O memungkinkan mikrokontroler berinteraksi dengan perangkat eksternal seperti sensor, aktuator, dan komponen lainnya. Port ini dapat dikonfigurasi sebagai input atau output sesuai kebutuhan aplikasi.
Timer dan Counter: Digunakan untuk fungsi pengaturan waktu dan penghitungan, seperti pengukuran interval waktu, pembangkitan sinyal, dan penghitungan pulsa eksternal.
Analog to Digital Converter (ADC): Mengonversi sinyal analog menjadi data digital, memungkinkan mikrokontroler memproses input dari sensor analog.
Digital to Analog Converter (DAC): Mengonversi data digital menjadi sinyal analog, digunakan untuk mengendalikan perangkat analog seperti motor DC.
Kontrol Interupsi (Interrupt Control): Memungkinkan mikrokontroler merespons peristiwa eksternal atau internal secara asinkron, menghentikan sementara eksekusi program utama untuk menangani peristiwa penting.
Port Serial: Menyediakan antarmuka komunikasi serial antara mikrokontroler dan periferal lain atau perangkat komunikasi
Blok Fungsi Khusus: Beberapa mikrokontroler dilengkapi dengan fungsi khusus untuk aplikasi tertentu, seperti modul kriptografi atau antarmuka komunikasi khusus. Selain komponen utama di atas, mikrokontroler juga dilengkapi dengan berbagai periferal tambahan yang meningkatkan fungsionalitasnya:
● GPIO (General-Purpose Input/Output) Controllers: Mengelola pin yang dapat dikonfigurasi sebagai input atau output untuk berinteraksi dengan perangkat eksternal.
● PWM (Pulse Width Modulation) Controllers: Menghasilkan sinyal PWM yang
digunakan untuk mengendalikan kecepatan motor, kecerahan LED, dan aplikasi lain yang memerlukan sinyal modulasi.
● Serial Communication Controllers: Mendukung protokol komunikasi seperti UART, SPI, I2C, dan Ethernet untuk pertukaran data dengan perangkat lain.
● Direct Memory Access (DMA) Controllers: Memungkinkan transfer data langsung antara memori dan periferal tanpa intervensi CPU, meningkatkan efisiensi sistem. Memahami struktur dasar dan periferal mikrokontroler sangat penting untuk merancang dan mengimplementasikan sistem tertanam yang efisien dan andal.
Sumber:
● https://randomnerdtutorials.com/esp32-pinout-reference-gpios/
● https://www.jaycon.com/microprocessor-vs-microcontroller-vs-microcomputer/
● https://embeddedinventor.com/9-essential-microcontroller-peripherals-explained/
2.2 Library Arduino/ESP32
2.2.1 Penjelasan tentang Library Arduino dan ESP-IDF
Library Arduino adalah sekumpulan fungsi atau kode yang mempermudah
pengembangan perangkat lunak untuk platform Arduino. Library ini dirancang untuk menangani tugas-tugas umum seperti komunikasi, kontrol sensor, atau pengendalian perangkat keras. Dengan menggunakan library Arduino, pengembang dapat menulis kode dengan lebih mudah tanpa harus memahami detail teknis yang kompleks. Fungsi-fungsi yang sering digunakan meliputi membaca data dari sensor, mengontrol motor, atau berkomunikasi dengan perangkat eksternal. Kemudahan aksesibilitas menjadi salah satu keunggulan utama library Arduino. Sintaks yang sederhana memungkinkan pengguna dari berbagai tingkat keahlian untuk mengimplementasikannya dengan mudah. Library ini juga menghemat waktu pengembangan karena banyak fungsi yang sudah tersedia dan siap digunakan. Misalnya, "Adafruit_GFX" mempermudah pembuatan antarmuka grafis, sementara "WiFi" mendukung konektivitas jaringan secara praktis. Dengan fleksibilitas yang ditawarkan, library Arduino dapat menangani berbagai kebutuhan proyek spesifik.
Keunggulan Library Arduino
- Kemudahan Penggunaan: Library Arduino memiliki dokumentasi dan sintaks yang mudah dipahami oleh pemula.
- Kompatibilitas Luas: Mendukung berbagai sensor dan perangkat keras, memungkinkan integrasi dengan beragam komponen untuk proyek yang fleksibel.
- Komunitas Aktif: Komunitas global menyediakan solusi atas berbagai masalah teknis, mempercepat proses pengembangan.
Pengertian ESP-IDF
ESP-IDF adalah framework resmi dari Espressif yang dirancang untuk
mengembangkan aplikasi pada chip ESP32. Framework ini memberikan kontrol penuh terhadap hardware ESP32 serta mendukung fitur-fitur canggih seperti multitasking dan konektivitas jaringan. Dengan ESP-IDF, pengembang dapat memanfaatkan driver perangkat keras untuk mengelola GPIO, komunikasi serial, dan berbagai fungsi lainnya. Selain itu, framework ini juga mendukung protokol IoT populer seperti MQTT, HTTP, dan WebSocket, menjadikannya solusi ideal untuk pengembangan perangkat IoT.
Keunggulan ESP-IDF
- Kontrol Tingkat Lanjut: ESP-IDF memungkinkan akses langsung ke hardware, seperti dijelaskan oleh Espressif, memberikan pengembang fleksibilitas untuk mengoptimalkan performa aplikasi.
- Dukungan Multitasking: Dengan integrasi FreeRTOS, ESP-IDF mendukung multitasking sehingga cocok untuk aplikasi kompleks.
- Fitur Debugging dan Analisis: Mendukung alat debugging tingkat lanjut untuk memastikan stabilitas aplikasi dalam berbagai kondisi.
- Dukungan Protokol IoT: Mendukung berbagai protokol komunikasi, seperti MQTT dan HTTP, membuatnya ideal untuk solusi IoT modern.
Kesimpulan
Library Arduino menawarkan solusi sederhana dan cepat, cocok untuk pemula atau proyek yang membutuhkan pengembangan cepat tanpa banyak konfigurasi teknis. Sebaliknya, ESP-IDF menawarkan fleksibilitas tinggi dan fitur canggih untuk pengembang berpengalaman yang ingin memanfaatkan kemampuan penuh dari perangkat keras ESP32. Dengan memahami keunggulan masing-masing, pengguna dapat memilih framework yang paling sesuai dengan kebutuhan dan tujuan proyek mereka.
Sumber:
● https://cyberhub.id/pengetahuan-dasar/apa-itu-library-arduino
● https://www.espressif.com/en/products/sdks/esp-idf#:~:text=ESP%2DIDF%20is%20Espressif%27s%20official,as%20C%20and%20C++
2.2.2 Perbandingan fitur antara Arduino dan ESP32.
Sumber :
2.2.3 Studi kasus penggunaan library
- Membuat Proyek IoT dengan Arduino ● Sensor Suhu dan Kelembaban
Sumber: (circuitbasics.com, 2015)
Penggunaan sensor suhu dan kelembaban sangat umum dalam proyek IoT, terutama untuk pemantauan lingkungan seperti di rumah, kantor, atau pertanian. Arduino menjadi pilihan yang ideal karena platform ini mudah diakses, didukung oleh komunitas yang luas, dan cocok untuk pemula. Pada proyek ini, sensor DHT11 atau DHT22 akan digunakan untuk membaca data suhu dan kelembaban secara real-time. Hasilnya dapat ditampilkan langsung pada layar LCD atau OLED agar pengguna dapat memantau kondisi lingkungan.
Dalam skenario yang lebih canggih, Arduino dapat dihubungkan dengan modul
ESP8266 untuk mengirim data ke platform cloud seperti Thingspeak. Hal ini memungkinkan pemantauan jarak jauh melalui internet. Pengguna dapat melihat informasi suhu dan kelembaban dari mana saja menggunakan perangkat dengan browser atau aplikasi khusus. Proyek ini sangat relevan untuk sistem rumah pintar atau pertanian cerdas, di mana kondisi lingkungan harus dipantau dan direspons secara otomatis.
Komponen yang Dibutuhkan:
● Arduino Uno atau Nano
● Sensor DHT11/DHT22
● LCD 16x2 atau OLED (opsional)
● Modul ESP8266 untuk konektivitas internet (opsional)
● Kabel jumper, breadboard, dan resistor
Langkah-langkah Implementasi:
- Pemasangan Sensor: Sambungkan sensor ke Arduino melalui pin digital, dan hubungkan LCD untuk menampilkan data.
- Kode di Arduino IDE: Buat program sederhana untuk membaca data dari sensor dan menampilkannya di LCD.
- Koneksi Internet (Opsional): Jika menggunakan ESP8266, hubungkan Arduino ke Wi-Fi dan kirim data ke dashboard online.
Pengujian: Pastikan data dari sensor ditampilkan secara akurat dan, jika terhubung ke internet, dapat diakses dari web.
Membuat Proyek IoT dengan ESP32
ESP32 adalah mikrokontroler yang sangat powerful, dengan dukungan Wi-Fi dan Bluetooth bawaan, serta kemampuan untuk menjalankan banyak tugas secara bersamaan. Proyek-proyek dengan ESP32 lebih fleksibel dan mendukung aplikasi yang lebih kompleks.
● Pengendalian Lampu Pintar via Smartphone
Sumber: (lastminuteengineers.com, 2024)
Dalam proyek ini, ESP32 digunakan sebagai pengontrol utama untuk mengaktifkan atau menonaktifkan lampu atau perangkat elektronik lainnya dari jarak jauh. Dengan Wi-Fi bawaan, ESP32 dapat berkomunikasi langsung dengan aplikasi di smartphone atau browser web. Pengguna dapat mengontrol perangkat secara real-time, baik melalui aplikasi khusus seperti Blynk maupun melalui antarmuka web sederhana.
Proyek ini relevan untuk sistem rumah pintar, di mana kontrol otomatis dan manual dari perangkat rumah adalah fitur penting. Dengan menambahkan relay, pengguna dapat mengendalikan perangkat dengan aman dan memastikan lampu atau peralatan hanya bekerja sesuai kebutuhan. Selain itu, proyek ini bisa diperluas dengan menambahkan sensor gerak untuk menyalakan lampu secara otomatis saat mendeteksi aktivitas.
Komponen yang Dibutuhkan:
● ESP32
● Relay 5V
● Lampu atau perangkat elektronik
● Aplikasi Blynk (opsional)
Langkah-langkah Implementasi:
- Hubungkan Relay dengan ESP32: Pasang relay untuk mengontrol lampu atau perangkat.
- Program Server Web di ESP32: Buat server web sederhana untuk menerima perintah kontrol.
- Integrasi dengan Aplikasi: Hubungkan dengan aplikasi seperti Blynk untuk kontrol lebih mudah.
- Uji Sistem: Pastikan lampu bisa dikendalikan secara manual maupun otomatis. ● Streaming Video dari IP Cam dengan ESP32
Sumber: (github,2022)
Proyek ini memperlihatkan bagaimana ESP32 dapat digunakan untuk streaming video real-time. Dengan menghubungkan modul kamera OV2640, ESP32 dapat menangkap dan mengirim video dalam format MJPEG melalui jaringan Wi-Fi. Pengguna dapat mengakses video tersebut dari smartphone atau komputer untuk pemantauan keamanan. Proyek ini cocok untuk sistem keamanan rumah atau pemantauan lokasi terpencil. Dengan menambahkan fitur seperti deteksi gerakan, sistem dapat mengirimkan peringatan otomatis jika ada aktivitas mencurigakan. Ini memberi pengguna kontrol lebih besar atas keamanan lingkungan mereka tanpa harus berada di lokasi.
Sumber: https://github.com/StandardAE7/CLUB-IOT/wiki/Modul-1
Komponen yang Dibutuhkan:
● ESP32
● Modul kamera OV2640
● Power supply untuk ESP32
● Browser untuk pemantauan
Langkah-langkah Implementasi:
- Sambungkan Kamera ke ESP32: Pastikan modul kamera terhubung dengan benar.
- Program Streaming Video: Buat kode untuk mengirim video dalam format MJPEG.
- Akses Melalui Browser: Buka IP kamera di browser untuk melihat video real-time.
- Uji Sistem: Tambahkan simulasi aktivitas untuk memverifikasi streaming berjalan baik.
Sumber: (github,2022)
● Monitoring Jarak Jauh melalui Web
Pada proyek ini, sistem memanfaatkan modul ESP8266 yang memungkinkan Arduino bertindak sebagai server web mini. Data dari sensor suhu dan kelembaban dikirim ke halaman web dalam format JSON atau teks sederhana, yang kemudian bisa diakses oleh pengguna melalui browser. Ini memberikan fleksibilitas bagi pengguna untuk memantau kondisi lingkungan tanpa perlu berada di lokasi fisik sensor. Dengan menggunakan ESP8266 sebagai server, setiap perangkat dengan akses internet dapat melihat kondisi lingkungan secara real-time. Proyek ini memperkenalkan konsep
dashboard IoT sederhana yang sangat bermanfaat dalam situasi seperti pemantauan gudang atau laboratorium. Sistem ini bisa diperluas dengan menambahkan fitur peringatan otomatis jika suhu atau kelembaban melebihi ambang batas tertentu. Komponen yang Dibutuhkan:
● Arduino Uno atau Nano
● Sensor DHT11/DHT22
● Modul ESP8266
● Breadboard dan kabel jumper
Langkah-langkah Implementasi:
- Hubungkan Modul ESP8266: Sambungkan modul dengan Arduino dan konfigurasi Wi-Fi untuk koneksi internet.
- Buat Halaman Web: Program Arduino untuk meng-host halaman web sederhana dengan data sensor.
- Kirim Data secara Real-Time: Pastikan data dapat di-refresh secara berkala di halaman web.
- Pengujian: Akses halaman dari browser dan cek apakah data tampil dengan baik.
2.3 Interfacing Sensor dan Aktuator dengan Arduino/ESP32
Dalam istilah sederhana, sensor interfacing adalah proses menghubungkan sensor dengan mikrokontroler atau sistem pemrosesan lainnya. Proses ini memungkinkan mikrokontroler untuk memperoleh, memproses, dan merespons data sensor, sehingga memungkinkan interaksi dengan lingkungan secara real-time.
Interface ini memungkinkan mikrokontroler untuk:
- Memperoleh sinyal dari sensor
- Memproses dan menginterpretasikan data dari sensor
- Mengontrol perangkat atau aktuator berdasarkan input yang diberikan oleh sensor
2.3.1 Teknik interfacing untuk sensor analog dan digital.
Berdasarkan jenis outputnya, sensor dapat dibagi menjadi dua kategori utama:
Analog dan Digital. Sensor analog menghasilkan sinyal output yang bersifat kontinu dan sebanding dengan besaran yang diukur, seperti tegangan yang bervariasi secara linear terhadap perubahan suhu. Sementara itu, sensor digital menghasilkan data dalam format digital yang dikirim melalui protokol komunikasi tertentu, memungkinkan transfer informasi yang lebih akurat dan tahan gangguan.
Berikut adalah panduan sepuluh langkah untuk membantu memilih sensor
yang tepat untuk proyek Anda.
- Identifikasi Tujuan Identifikasi parameter fisik yang akan diukur.
- Akurasi dan Resolusi Pahami tingkat akurasi dan resolusi yang dibutuhkan.
- Rentang Operasi Pertimbangkan rentang operasi sensor.
- Identifikasi Lingkungan Faktor lingkungan seperti suhu ekstrem, debu, tekanan, dll. dapat memengaruhi kinerja sensor.
- Jenis Output Tentukan jenis output sensor: analog atau digital.
- Kebutuhan Daya Pilih berdasarkan kebutuhan daya.
- Kompatibilitas Interface Pertimbangkan protokol komunikasi dan kompatibilitas mikrokontroler.
- Waktu Respon Respon yang lebih cepat diperlukan untuk deteksi gerakan dibandingkan pemantauan suhu.
- Reliability dan Durability Evaluasi masa pakai yang diharapkan dari sensor. 10.Kalibrasi Beberapa sensor mungkin memerlukan kalibrasi rutin untuk menjaga akurasi.
2.3.1.1 Sensor Analog
Sensor analog menghasilkan keluaran berupa sinyal kontinu, biasanya berupa tegangan atau arus yang berubah sesuai dengan perubahan parameter fisik (seperti suhu, tekanan, atau cahaya). Contoh: LM35, LDR, dan potensiometer.
Langkah-Langkah Interfacing Sensor Analog
Koneksi Fisik
○ Sambungkan pin power (Vcc) dan ground (GND) dari sensor ke
mikrokontroler.
○ Hubungkan pin keluaran sensor ke pin analog input (seperti A0, A1)
pada mikrokontroler.Signal Conditioning
○ Sensor analog sering kali membutuhkan pengkondisian sinyal (signal
conditioning) untuk memastikan sinyal sesuai dengan kebutuhan
mikrokontroler. Teknik yang digunakan meliputi:
■ Amplifikasi: Menguatkan sinyal yang lemah menggunakan
amplifier (misalnya op-amp).
■ Filtering: Menghilangkan noise atau interferensi menggunakan
filter (low-pass, high-pass, atau band-pass).Konversi Analog ke Digital (ADC)
○ Karena mikrokontroler bekerja dengan data digital, sinyal analog harus
dikonversi menggunakan Analog-to-Digital Converter (ADC).
○ ADC akan mengubah sinyal analog menjadi data digital dengan
resolusi tertentu, misalnya 10-bit (0–1023).Pemrosesan Data
○ Data digital yang diperoleh diolah menggunakan kode pemrograman
untuk mendapatkan nilai parameter fisik (misalnya suhu dalam derajat
Celsius).
2.3.1.1 Sensor Digital
Sensor digital menghasilkan keluaran dalam bentuk sinyal digital (0 atau 1) atau data digital langsung. Sensor ini sering menggunakan protokol komunikasi seperti I2C, SPI, atau UART. Contoh: DHT11 (suhu dan kelembapan) atau MPU6050
(accelerometer dan gyroscope).
Langkah-Langkah Interfacing Sensor Digital
Koneksi Fisik
○ Sambungkan pin power (Vcc), ground (GND), dan pin data ke
mikrokontroler.
○ Jika menggunakan protokol komunikasi tertentu, seperti I2C atau SPI,
pastikan mikrokontroler mendukung protokol tersebut.Pemilihan Protokol Komunikasi
○ I2C: Digunakan untuk aplikasi multi-sensor dengan kecepatan rendah
hingga sedang (misalnya sensor suhu).
○ SPI: Digunakan untuk sensor yang memerlukan kecepatan tinggi
(misalnya accelerometer).
○ UART: Digunakan untuk komunikasi sederhana dengan satu sensor.Library dan Kode Pemrograman
○ Untuk sensor digital, sering kali tersedia library yang memudahkan
pengguna membaca data.
○ Tambahkan library yang sesuai dan gunakan fungsi-fungsi yang
disediakan untuk membaca data sensor.Pemrosesan Data
○ Data digital langsung dapat diolah sesuai kebutuhan tanpa perlu
proses ADC.
Referensi
2.3.2 Penerapan komunikasi serial dengan sensor.
Komunikasi serial adalah metode transfer data satu per satu melalui jalur
komunikasi tunggal. Dalam sistem sensor, komunikasi serial digunakan untuk menghubungkan sensor dengan mikrokontroler guna mengirimkan data hasil pengukuran. Protokol komunikasi serial seperti UART, I2C, SPI, dan SDI-12 memungkinkan integrasi berbagai jenis sensor sesuai dengan kebutuhan aplikasi.
Jenis Protokol Komunikasi Serial
UART (Universal Asynchronous Receiver/Transmitter)
● Ciri-Ciri:
○ Asynchronous, tidak memerlukan sinyal clock bersama.
○ Menggunakan dua jalur: TX (Transmit) dan RX (Receive).
○ Kecepatan ditentukan oleh baud rate.
● Aplikasi:
○ Digunakan dalam modul GPS, Bluetooth, dan komunikasi antar
mikrokontroler.
● Kelebihan:
○ Implementasi sederhana.
○ Komunikasi point-to-point yang andal.
● Kekurangan:
○ Tidak cocok untuk jaringan dengan banyak perangkat.I2C (Inter-Integrated Circuit)
● Ciri-Ciri:
○ Synchronous, menggunakan dua jalur: SDA (Data) dan SCL (Clock).
○ Mendukung banyak perangkat dengan alamat unik.
● Aplikasi:
○ Menghubungkan sensor suhu, tekanan, dan perangkat memori.
● Kelebihan:
○ Mendukung banyak perangkat dalam satu bus.
○ Wiring lebih sederhana.
● Kekurangan:
○ Tidak cocok untuk komunikasi berkecepatan tinggi atau jarak jauh.SPI (Serial Peripheral Interface)
● Ciri-Ciri:
○ Synchronous, full-duplex.
○ Menggunakan empat jalur: MOSI, MISO, SCLK, dan SS.
● Aplikasi:
○ Sensor dengan kebutuhan data berkecepatan tinggi seperti
akselerometer dan giroskop.
● Kelebihan:
○ Kecepatan transfer tinggi.
○ Mendukung daisy-chaining perangkat.
● Kekurangan:
○ Membutuhkan lebih banyak pin I/O.SDI-12 (Serial Digital Interface at 1200 baud)
● Ciri-Ciri:
○ Asynchronous, mendukung hingga 62 sensor dalam satu bus.
○ Operasi pada 1200 baud untuk efisiensi daya.
● Aplikasi:
○ Penggunaan di bidang hidrologi, meteorologi, dan sistem monitoring
lingkungan.
● Kelebihan:
○ Tahan terhadap gangguan listrik.
○ Mendukung kabel panjang tanpa degradasi sinyal.
● Kekurangan:
○ Kecepatan transfer rendah.
Referensi
- https://library.fiveable.me/embedded-systems-design/unit-13
- https://library.fiveable.me/embedded-systems-design/unit-8
- https://www.monolithicpower.com/en/learning/mpscholar/sensors/sensor-design-interfacing-and-challenges/interfacing- sensors?srsltid=AfmBOoqxP1BTz6G4t0ed78JUsMxKcUjhfvUdEMMCIH1FdT8PTPDgT5wF
2.3.3 Cara pengujian dan debugging interfacing.
Pengujian sistem tertanam bertujuan untuk memverifikasi fungsionalitas,
keandalan, dan performa dari komponen perangkat keras dan perangkat lunak yang terintegrasi. Berikut ini merupakan dasar-dasar pengujian untuk sistem tertanam
Pengujian Unit (Unit Testing)
○ Berfokus pada modul atau komponen individu dari perangkat lunak
tertanam.
○ Memastikan setiap unit berfungsi dengan benar secara terisolasi.Pengujian Integrasi (Integration Testing)
○ Memverifikasi interaksi dan komunikasi antar modul atau komponen.
○ Mengidentifikasi masalah yang muncul saat unit-unit digabungkan.Pengujian Sistem (System Testing)
○ Mengevaluasi sistem tertanam secara keseluruhan untuk memastikan
pemenuhan spesifikasi dan performa yang diharapkan dalam berbagai
skenario.Pengujian Penerimaan (Acceptance Testing)
○ Melibatkan pemangku kepentingan atau pengguna akhir untuk
memvalidasi bahwa sistem tertanam memenuhi kebutuhan dan
harapan mereka.Otomasi Pengujian (Test Automation)
○ Menggunakan alat dan skrip untuk menjalankan pengujian berulang
secara otomatis, mengurangi upaya manual, dan meningkatkan cakupan pengujian.Cakupan Pengujian (Test Coverage)
○ Mengukur sejauh mana fungsionalitas sistem tertanam diuji oleh kasus
pengujian.Pengujian Regresi (Regression Testing)
○ Menjalankan kembali pengujian yang telah lulus sebelumnya untuk
memastikan perubahan atau pembaruan tidak menyebabkan cacat baru.
Selanjutnya, untuk mengidentifikasi, mengisolasi, dan menyelesaikan cacat atau masalah pada perangkat keras atau perangkat lunak sistem tertanam dapat dilakukan beberapa teknik berikut :
Pernyataan Cetak atau Logging
○ Menampilkan nilai atau pesan sementara selama eksekusi program
untuk tujuan debugging.Breakpoints
○ Menghentikan eksekusi program pada baris kode tertentu untuk
memeriksa variabel, memori, dan alur program.Watchpoints
○ Memantau lokasi memori tertentu dan memicu breakpoint saat nilainya
berubah.Debugging Langkah-demi-Langkah (Step-Through Debugging)
○ Menjalankan program baris demi baris untuk inspeksi rinci perilaku
kode.Debugger Perangkat Keras (Hardware Debuggers)
○ Alat seperti JTAG dan SWD yang memberikan akses tingkat rendah ke
prosesor dan memori sistem tertanam.Alat Debugging Perangkat Lunak
○ Alat seperti GDB dan LLDB menyediakan fitur seperti breakpoints, watchpoints, dan inspeksi memori untuk membantu mengidentifikasi dan menyelesaikan masalah.Analisis Jejak (Trace Analysis)
○ Merekam dan memeriksa urutan kejadian atau panggilan fungsi selama eksekusi program untuk mengidentifikasi area bermasalah.
referensi
- https://library.fiveable.me/embedded-systems-design/unit-19
- https://www.electronicsforu.com/technology-trends/learn-electronics/sensor-interfacing
- https://www.monolithicpower.com/en/learning/mpscholar/sensors/sensor design-interfacing-and-challenges/interfacing-sensors?srsltid=AfmBOoqYCk4CWaWkCtTKgFI4vvBZvdBHaS_pAyFxFQmWSTho5iMq3Vu
2.4 Pemrograman C di Arduino/ESP32
2.4.1 Dasar-dasar sintaks C untuk perangkat embedded.
Bahasa C adalah salah satu bahasa pemrograman yang paling sering digunakan dalam pengembangan perangkat embedded karena efisiensinya, kemampuan kontrol perangkat keras yang mendalam, dan keserbagunaannya. Dalam konteks perangkat embedded seperti Arduino, sintaks C berfungsi sebagai dasar untuk menulis program yang dapat langsung berinteraksi dengan perangkat keras. Berikut adalah pembahasan tentang dasar-dasar sintaks yang relevan untuk pengembangan perangkat embedded.
Struktur Program C pada Perangkat Embedded
Program C pada perangkat embedded biasanya mengikuti struktur dasar berikut:
- Header File dan Definisi: Program dimulai dengan menyertakan file header yang menyediakan fungsi dan definisi standar.
- Deklarasi Variabel dan Konstanta: Variabel dan konstanta digunakan untuk menyimpan data dan konfigurasi. Sebagai contoh:
- Fungsi Utama: Program Arduino selalu memiliki dua fungsi utama: ○ setup(): Dijalankan sekali saat perangkat dinyalakan atau di-reset. Digunakan untuk inisialisasi. ○ loop(): Dijalankan berulang-ulang setelah setup(). Berisi logika utama program.
Dasar-Dasar Sintaks C yang Relevan
Tipe Data dan Operator:
○ Tipe data yang sering digunakan meliputi int, float, char, dan boolean.
○ Operator dasar seperti aritmatika (+, -, *, /), logika (&&, ||, !), dan bitwise (&, |, ^) sering digunakan untuk pengendalian perangkat keras.Struktur Kontrol: Struktur kontrol seperti if-else, for, while, dan switch digunakan untuk membuat logika yang dinamis.
Fungsi dan Modularitas: Fungsi dapat digunakan untuk memecah kode menjadi bagian-bagian yang lebih kecil dan mudah dikelola.
Spesifikasi Sintaks C untuk Embedded
Pemrosesan I/O: Dalam perangkat embedded, fungsi-fungsi khusus seperti
digitalWrite(), digitalRead(), dan analogRead() digunakan untuk berinteraksi dengan perangkat keras.Pengendalian Memori: Dalam perangkat embedded dengan memori terbatas,
efisiensi adalah kunci. Penggunaan array, pointer, dan tipe data dengan ukuran kecil seperti uint8_t (unsigned 8-bit integer) menjadi penting.Penanganan Error dan Debugging: Untuk debugging, fungsi seperti
Serial.print() sering digunakan.
2.4.2 Pemrograman Interrupt dan Pengendalian Waktu (Timers)
Pemrograman interrupt dan pengendalian waktu (timers) adalah teknik penting dalam sistem tertanam untuk memastikan efisiensi, multitasking, dan responsivitas aplikasi. Interrupt memungkinkan perangkat keras menghentikan sementara eksekusi program utama untuk menjalankan tugas tertentu, sedangkan timers digunakan untuk mengatur interval waktu yang
presisi. Mikrokontroler, seperti Arduino, menyediakan fitur interrupt timer yang memungkinkan eksekusi tugas secara periodik atau berdasarkan waktu tertentu, tanpa memengaruhi proses utama.
Dasar-Dasar Interrupt
Interrupt adalah mekanisme di mana perangkat keras memicu eksekusi fungsi tertentu (ISR - Interrupt Service Routine) tanpa menunggu program utama menyelesaikan prosesnya. Setelah tugas di ISR selesai, program utama dilanjutkan dari titik sebelumnya.
Jenis-Jenis Interrupt
- Interrupt Eksternal: Dihasilkan dari perangkat eksternal, seperti tombol atau sensor.
- Interrupt Timer: Dihasilkan dari timer internal mikrokontroler, digunakan untuk pengendalian waktu.
- Interrupt Periferal Lain: Misalnya dari UART, SPI, atau ADC.
Timers dalam Mikrokontroler
Timer adalah fitur internal mikrokontroler yang berfungsi sebagai penghitung waktu. Timers dapat dikonfigurasi untuk menghasilkan interrupt pada interval tertentu. Konsep ini memungkinkan aplikasi seperti:
● Pembacaan sensor secara periodik.
● Pengendalian motor dengan siklus tetap.
● Penjadwalan tugas berbasis waktu.
Komponen Timer:
- Prescaler: Mengurangi frekuensi clock untuk memperpanjang durasi hitungan timer.
- Counter Register: Menghitung nilai dari 0 hingga nilai maksimum (8-bit, 16-bit, atau lainnya).
- Compare Match: Nilai perbandingan yang memicu interrupt ketika tercapai.
Keuntungan Penggunaan Timer Interrupt
- Efisiensi Waktu: Menghindari fungsi delay(), sehingga loop utama dapat digunakan untuk tugas lain.
- Responsivitas Tinggi: Program dapat merespons peristiwa eksternal dengan lebih cepat.
- Multitasking: Memungkinkan pelaksanaan beberapa tugas secara bersamaan tanpa konflik waktu.
- Presisi Tinggi: Mengandalkan timer internal dengan ketelitian tinggi dibandingkan metode berbasis loop.
Tips Implementasi
- Minimalisasi ISR: ISR harus singkat untuk menghindari konflik dengan interrupt lain.
- Hati-Hati pada Variabel Bersama: Gunakan variabel yang aman terhadap interrupt (volatile).
- Pahami Datasheet Mikrokontroler: Setiap mikrokontroler memiliki konfigurasi timer yang berbeda.
2.4.3 Contoh program pengendalian perangkat IoT.
Berikut adalah penjelasan program untuk pengendalian perangkat IoT menggunakan ESP32, sensor DHT11, dan buzzer.
#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT11
#define BUZZER_PIN 15
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
delay(2000);
float t = dht.readTemperature();
if (isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
if (t > 30) {
digitalWrite(BUZZER_PIN, HIGH);
Serial.println("Buzzer ON - High Temperature!");
} else {
digitalWrite(BUZZER_PIN, LOW);
Serial.println("Buzzer OFF - Temperature Normal.");
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.println("°C");
}
Penjelasan Program
Kode ini bertujuan untuk membaca suhu dari sensor DHT11 menggunakan ESP32, kemudian memberikan respons berupa nyala atau mati buzzer berdasarkan suhu yang terbaca. Program juga mencetak data suhu ke serial monitor untuk monitoring.
Header File dan Definisi
● #include "DHT.h"
Pustaka DHT digunakan untuk membaca data suhu dari sensor DHT11.
● #define DHTPIN 4 dan #define BUZZER_PIN 15
Mendefinisikan pin yang terhubung dengan sensor dan buzzer:
○ DHTPIN adalah pin yang menerima data dari sensor DHT11.
○ BUZZER_PIN adalah pin yang mengontrol buzzer.Objek Sensor
DHT dht(DHTPIN, DHTTYPE);
Objek dht dibuat menggunakan pin data dan tipe sensor (DHT11). Objek ini akan digunakan untuk membaca suhu menggunakan fungsi bawaan pustaka.Fungsi setup()
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(BUZZER_PIN, OUTPUT);
}
Fungsi setup() dijalankan sekali saat ESP32 dihidupkan:
● Serial.begin(115200): Inisialisasi komunikasi serial dengan baud rate 115200, untuk
mengirimkan data ke komputer.
● dht.begin(): Inisialisasi sensor DHT agar siap digunakan.
● pinMode(BUZZER_PIN, OUTPUT): Menyiapkan pin buzzer sebagai output,
sehingga ESP32 dapat mengontrolnya.
- Fungsi loop()
Fungsi loop() berisi logika utama yang berjalan terus-menerus.
4.1 Membaca Suhu
float t = dht.readTemperature();● Fungsidht.readTemperature()membaca suhu dari sensor DHT11 dan menyimpannya dalam variabel t bertipe float. 4.2 Validasi Pembacaan
if (isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
● Fungsi isnan(t) memeriksa apakah pembacaan suhu berhasil. Jika gagal, akan mencetak pesan kesalahan di serial monitor dan keluar dari fungsi loop.
4.3 Logika Kontrol untuk Buzzer
if (t > 30) {
digitalWrite(BUZZER_PIN, HIGH);
Serial.println("Buzzer ON - High Temperature!");
} else {
digitalWrite(BUZZER_PIN, LOW);
Serial.println("Buzzer OFF - Temperature Normal.");
}
● Jika suhu lebih dari 30°C, buzzer menyala dengan mengatur pin buzzer ke HIGH.
● Jika suhu 30°C atau lebih rendah, buzzer mati dengan mengatur pin buzzer ke LOW.
● Status suhu dan kondisi buzzer dicetak ke serial monitor.
4.4 Menampilkan Suhu
Serial.print("Temperature: ");
Serial.print(t);
Serial.println("°C");
● Menampilkan nilai suhu dalam format "Temperature: X°C" untuk memantau
pembacaan sensor.
Sumber:
● https://www.youtube.com/watch?si=cbzzqJs01X8FY26o&v=2kr5A350H7E&feature=youtu.be
● https://www.youtube.com/watch?v=ZOllXMxLRqc&ab_channel=CurioRes
● https://www.javatpoint.com/arduino-syntax-and-program-flow
Top comments (0)