Mikrokontroler
Mikrokontroler bisa diibaratkan sebagai komputer kecil yang ditambahkan ke objek fisik atau ruang manapun untuk memberikan mereka "otak". MCU berisi satu atau lebih prosesor komputer, dilengkapi dengan memori dan peralatan input/output yang bisa diprogram dan semua tertanam dalam satu sirkuit kecil yang terintegrasi. MCU berbeda dengan mikroprosesor yang bisa ditemukan pada komputer personal (PC/Desktop/Laptop) karena mereka di desain khusus untuk sistem tertanam, dimana kemampuan komputasi bukanlah tujuan utama dari penerapannya. Meskipun MCU memiliki kemampuan yang lebih kecil daripada mikroprosesor standar yang digunakan oleh komputer, dikarenakan harganya yang rendah membuat MCU menjadi pilihan praktis untuk menambahkan kemampuan komputasi pada suatu objek, ruang atau proses yang belum memilikinya.Fitur Mikrokontroler
Agar bisa menentukan mikrokontroler mana yang bisa digunakan dengan paling maksimal untuk aplikasi yang akan dibuat, kita perlu mengetahui beberapa fitur kunci dari mikrokontroler dan apa saja fungsinya. Berikut ini beberapa speksifikasi yang perlu diketahui dan harus diperhitungkan ketika membaca dokumen datasheet dari suatu MCU :
• Bits : Biasanya mikrokontroler dijual berdasarkan jumlah bit yang ditawarkan. Hal ini berdampak pada kecepatan yang mampu mereka lakukan untuk komputasi yang tidak sepele.
• RAM : RAM merupakan memori berkecepatan tinggi yang tidak menyimpan data ketika daya mati. Semua MCU memiliki sejumlah RAM, yang memungkinkan untuk menyelesaikan berbagi aksi dengan cepat. Lebih banyak jumlahnya, lebih baik, namun jumlah yang besar tentunya meningkatkan biaya atau harga dari MCU.
• Flash : Flash merupakan memori komputer yang tetap menyimpan data meskipun daya mati. Tentunya fitur ini cukup penting dan sangat berguna untuk penyimpanan offline.
• GPIO : GPIO singkatan dari pin untuk general-purpose input/output. Ini adalah pin-pin yang akan kita gunakan untuk menghubungkan sensor-sensor dan aktuator ke MCU dan Internet. Jumlah pin yang tersedia dapat beragam, mulai dari satu hingga ratusan, bergantung pada mikrokontrolernya.
• Konektivitas : Konektivitas adalah bagaimana boardnya (dan juga aplikasinya) bisa terhubung ke Internet, baik melalui Wi-Fi, Ethernet, atau cara lainnya. Ini adalah aspek yang penting dari aplikasi sensor yang saling terhubung, sehingga topik ini akan diangkat dengan lebih detail pada bagian selanjutnya.
• Konsumsi daya : Konsumsi daya adalah hal yang sangat penting untuk penerapan sensor yang terhubung ke jaringan, khususnya ketika perangkatnya bergantung pada sumber daya dari baterai atau panel surya. Spesifikasi ini akan memberitahu kita seberapa rakuskah MCU-nya secara bawaan dan apakah ia dapat mendukung teknik pemrograman yang sadar akan penggunaan daya.
• Komunitas dan tools pengembangan : Tersedianya tools pemrograman dan pengembangan , dokumentasi dan komunitas yang telah matang yaitu salah satu aspek yang sangat penting untuk membantu kita membangun dan mengembangkan program yang akan dapat berjalan pada MCU yang kita pilih untuk aplikasi kita.
Sistem Operasi Mikrokontroler
Sekarang, mari bicara tentang sistem operasi yang berjalan di atas perangkat keras mikrokontroler. Seperti halnya personal komputer yang juga menjalankan sistem operasi seperti Windows, MCU juga menjalankan suatu sistem operasi.
Kita memiliki tiga pilihan utama:
• Bare Metal: Artinya bahwa, dengan kata lain, tanpa sistem operasi. Ini adalah pendekatan asli untuk bekerja dengan mikrokontroler, dan masih sangat populer karena sifatnya yang biayanya tepat sasaran dan efisien. Kekurangan utamanya adalah pilihan ini menyediakan dukungan yang minim bagi pengembang perangkat lunaknya.
• RTOS: Merukapan singkatan dari "Real-Time Operating System". Suatu sistem berbasis RTOS menyediakan garansi pasti dalam kaitannya dengan waktu dimana suatu operasi akan selesai. Ini sangat penting untuk mengkoordinasikan mesin-mesin fisik.
• Linux: Lebih mudah diprogram dan dihubungkan ke Internet. Ia berprilaku lebih mirip dengan "komputer beneran" sebagaimana rata-rata orang mungkin mengetahuinya, yang mana sangat cocok untuk berbagai alasan yang sebelumnya disampaikan. Namun, karena hal ini, ia tidak menyediakan garansi ketepatan pewaktuan apapun.
MCU umumnya dipasarkan dengan disertai suatu papan tambahan yang disebut dengan "development board". Development board menyediakan semua hal yang diperlukan untuk memprogram MCU. Ini adalah pilihan yang sempurna untuk mulai membangun sistem yang terhubung.
Development board adalah printer circuit board (PCB) yang berisi sebuah MCU dan komponen pendukungnya yang diperlukan untuk memprogram si MCU.
Isinya termasuk komponen-komponen seperti sumber daya, dukungan untuk menghubungkan berbagai sensor, dan terkadang bahkan sensor dan aktuator yang telah terpasang on-board.
Development board sangat berguna untuk melakukan prototyping/purwarupa sebelu fabrikasi final dari suatu solusi khusus dan sangat populer bagi berbagai insinyur yang bekerja di bidang pengembangan embedded system.
Development board memungkinkan pengguna untuk dengan cepat menghubungkan sensor dan aktuator (jika mereka tidak disertakan langsung dengan boardnya) dan perangkat lunak pendukungnya memfasilitasi pembuatan dan penerapan kode programnya.
Memilih Mikrokontroler untuk Sistem IoT kita
Terdapat banyak jenis development board dan mikrokontroler tersedia dari berbagai perusahaan seperti: TI, Samsung, Arduino, Raspberry Pi dan lainnya. Memilih yang mana yang cocok dengan kita bergantung pada beberapa faktor yang juga sangat beragam, tergantung dari sifat aplikasi yang akan kita kembangkan:
• Kompatibilitas: Apakah MCUnya mendukung sensor dan aktuator yang ingin kita gunakan? Berdasarkan sensor dan aktuator, kita mungkin perlu banyak atau hanya beberapa port/pin GPIO. Kita mesti memastikan apakah kita punya cukup port yang tersedia.
• Arsitektur: Apakah arsitekturnya cukup canggih untuk menangani kompleksitas dari program kita? Kebanyakan aplikasi menggunakan AVR, ARM, MIPS, atau x86. Memilih salah satunya bergantung pada kebutuhan funsional dari aplikasi kita dan seberapa banyak daya komputasi yang diperlukan oleh sistem kita.
• Memori: Apakah MCUnya memiliki cukup memori - RAM dan Flash - untuk program kita? Sangat direkomendasikan untuk memilih MCU yang memiliki jumlah memori ekstra untuk pembaharuan dimasa yang akan datang. Ini akan banyak menghemat waktu, biaya, dan menghindari kepala pusing dalam perjalanan yang cukup panjang!
• Ketersediaan: Apakah kita bisa mendapatkan MCUnya dengan mudah, dalam jumlah yang kita perlukan? Ini adalah faktor yang sangat penting untuk dipertimbangkan disaat awal proses pengembangan, khususnya apabila kita berencana untuk mengembangkan sistem kita lebih besar lagi nanti.
• Daya: Sebarapa besar daya yang diperlukan MCUnya? Apakah ia nantinya harus dinyalakan dari sumber daya kabel atau kita bisa menggunakan baterai? Efisiensi daya sangatlah penting untuk dipertimbangkan untuk aplikasi IoT industri karena kita tentunya ingin meminimalisir keperluan untuk mengirim petugas pemeliharaan untuk menginspeksi infrastruktur yang letaknya jauh di pinggiran.
• Biaya: Seberapa banyakah setiap unit alatnya menghabiskan biaya? Apakah harganya cocok dengan nilai yang akan dihasilkan? Sekali lagi, kita perlu memikirkan tentang mengembangkan projeknya lebih jauh lagi nanti. Pastikan bahwa anggaran IoT kita mendukung termasuk untuk pengadaaan lebih banyak lagi MCU yang kita pilih.
• Dukungan pengembangan: Apakah dokumentasi yang berisi tata cara untuk berbagai aspek dan fitur dari MCU yang kita pilih tersedia dengan baik? Bagaimanakan kondisi komunitas yang menggunakan board ini? Faktor-faktor tersebut sangat krusial untuk dapat mengambil keputusan dan menggunakan MCU kita dengan sebagaimana mestinya. Komunitas online yang bagus dapat membantu membimbing kita saat kita menghadapi kebuntuan atau mendapatkan masalah dengan implementasi kita.
Pada akhirnya, kita bisa dan harus melakukan riset terlebih dahulu untuk dapat membuat keputusan yang tepat berdasarkan informasi. Namun, sebagaimana dengan keseluruhan teknologi baru ini, kita akan belajar jauh lebih banyak seiring kita melakukan eksperimen.
NodeMCU Development Board
NodeMCU merupakan development board yang juga menyediakan firmware berbasis eLua untuk chip WiFi ESP8266 dari vendor Espressif. Firmwarenya berbasis Espressif NON-OS SDK dan menggunakan file system berbasis spiffs. Repositori kodenya sendiri berisi 98.1% C-code.
Firmware NodeMCU adalah projek pendukung dari development kit NodeMCU yang sangat populer, yang juga menyertakan development board open-source siap pakai yang menggunakan chip ESP8266-12E.
ESP8266 Arduino Code
Arduino (web: arduino.cc) merupakan platform pengembangan perangkat keras mikrokontroler yang juga menyediakan perangkat lunak untuk memprogram berbagai macam mikrokontroler.
Sebagaimana Arduino.cc mulai mengembangkan board MCU baru yang berbasis prosesor non-AVR seperti ARM/SAM MCU seperti digunakan pada Arduino Due, mereka tentunya perlu memodifikasi Arduino IDE sehingga bisa dengan mudah merubah IDEnya untuk mendukung tool chain alternatif yang memungkinkan Arduino C/C++ dikompilasi ke jenis prosesor baru tersebut.
Beberapa penggemar kreatif ESP8266 telah mengembangkan Arduino core untuk chip SoC WiFi ESP8266 yang tersedia secara online di https://github.com/esp8266/Arduino. Inilah apa yang secara populer disebut dengan "ESP8266 Core untuk Arduino IDE" dan telah menjadi salah satu platform pengembangan perangkat lunak untuk berbagi modul berbasis ESP8266 dan development boardnya, termasuk NodeMCU.
Kelebihan Platform NodeMCU Relatif ke Arduino
• Berbiaya rendah
• Dukungan terintegrasi untuk jaringan WiFi
• Ukuran board yang lebih kecil
• Konsumsi energi yang lebih rendah
Kekurangan
• Perlu mempelajari bahasa baru dan IDE baru
• Pinout yang lebih sedikit
• Dokumentasi yang masih sedikit langka
Pemrograman NodeMCU dapat dilakukan dengan mudah sebagaimana menggunakan Arduino. Perbedaan utamanya adalah pada bagian penomeran pin dari boardnya, seperti terlihat pada gambar berikut :
Terdapat 6 ekstra GPIO pin. Semuanya dapat diprogram sebagai PWM, I2C, 1-Wire, kecuali GPIO16 (D0). Projek NodeMCU sendiri menggunakan file system SPIFFS untuk menyimpan file di chip flash memory.
0 Komentar