Kategori
IoT

NodeMCU

Pengantar

Kebanyakan aplikasi/penerapan IoT memerlukan lebih dari sekedar penambahan sensor pada suatu alat/objek fisik. Berbicara tentang ‘perangkat pintar/smart object’, mereka biasanya berbicara mengenai penambahan suatu mikrokontroler yang terhubung ke Internet (juga disebut dengan MCU/Micro-controller Unit).

Mikrokontroler dapat 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 dapat diprogram – semua tertanam dalam satu sirkuit kecil yang terintegrasi.

MCU berbeda dengan mikroprosesor yang dapat ditemukan pada komputer personal (PC/Desktop/Laptop) karena mereka didesain khusus untuk embedded application atau 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.

Mari bayangkan suatu objek, ruang, atau proses seperti gudang, jembatan, atau mesin industri yang khususnya tidak berisi komputer. Untuk kasus seperti itu, menambahkan suatu mikrokontroler yang terhubung ke Internet akan menyediakan kemampuan komputasi yang memadai untuk meningkatkan objek tersebut tanpa perlu diberatkan dengan biaya dan kerumitan yang lebih tinggi dari prosesor komputer standar. Dengan kata lain, sebuah MCU cukup untuk mengatasi permasalahan atau meningkatkan fungsi suatu objek.

Sejarah NodeMCU

Sejarah lahirnya NodeMCU berdekatan dengan rilis ESP8266 pada 30 Desember 2013, Espressif Systems selaku pembuat ESP8266 memulai produksi ESP8266 yang merupakan SoC Wi-Fi yang terintegrasi dengan prosesor Tensilica Xtensa LX106. Sedangkan NodeMCU dimulai pada 13 Oktober 2014 saat Hong me-commit file pertama nodemcu-firmware ke Github. Dua bulan kemudian project tersebut dikembangkan ke platform perangkat keras ketika Huang R meng-commit file dari board  ESP8266 , yang diberi nama devkit v.0.9.

Berikutnya, di bulan yang sama. Tuan PM memporting pustaka client  MQTT dari Contiki ke platform SOC ESP8266 dan di-c0mmit ke project NodeMCU yang membuatnya mendukung protokol IOT MQTT  melalui Lua. Pemutakhiran penting berikutnya terjadi pada 30 Januari 2015 ketika Devsaurus memporting u8glib ke project NodeMCU yang memungkinkan NodeMCU bisa mendrive display LCD, OLED, hingga VGA. Demikianlah, project NodeMCU terus berkebang hingga kini berkat komunitas open source dibaliknya, pada musim panas 2016 NodeMCU sudah terdiri memiliki 40 modul fungsionalitas yang bisa digunakan sesuai kebutuhan developer.

Fitur Kunci dari Mikrokontroller

Agar dapat menentukan mikrokontroler mana yang dapat digunakan dengan paling maksimal untuk aplikasi yang akan dibuat, kita perlu mengetahui beberapa fitur kunci dari mikrokontroler dan apa saja fungsinya. Berikut adalah beberapa speksifikasi yang perlu diketahui dan harus perhitungkan ketika membaca dokumen data sheet dari suatu MCU:

  • Bits: Mikrokontroler biasanya dijual berdasarkan jumlah bit yang mereka tawarkan. Ini berdampak pada kecepatan yang mampu mereka lakukan untuk komputasi yang tidak sepele.
  • RAM: RAM adalah memori berkecepatan tinggi yang tidak menyimpan data ketika daya mati. Semua MCU memiliki sejumlah RAM, yang memungkinkannya untuk menyelesaikan berbagi aksi dengan cepat. Lebih banyak jumlahnya, lebih baik, namun jumlah yang besar tentunya meningkatkan biaya/harga dari MCU.
  • Flash: Flash adalah 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: Ini adalah bagaimana boardnya (dan juga aplikasinya) dapat 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 MCUnya 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 adalah 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

NodeMCU adalah Microcontroller yang sudah dilengkapi dengan module WIFI ESP8266 didalamnya, jadi NodeMCU sama seperti Arduino, tapi kelebihannya sudah memiliki WIFI, sehingga sangat cocok buat project IoT.

NodeMCU juga bisa di Program menggunakan Arduino IDE, software yang digunakan untuk memprogram board Arduino.

Spesifikasi dasar NodeMCU V3

  • Microcontroller : Tensilica 32 bit
  • Flash Memory : 4 KB
  • Tegangan Operasi : 3.3 V
  • Tegangan Input : 7 – 12 V
  • Digital I/O : 16
  • Analog Input : 1 (10 Bit)
  • Interface UART : 1
  • Interface SPI : 1
  • Interface I2C : 1

Development Board

Microcontroller Development Board

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 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 sebelum 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

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? Kebanyakan aplikasi menggunakan AVR, ARM, MIPS, atau x86. Memilih salah satunya bergantung pada kebutuhan fungsional dari aplikasi kita dan seberapa banyak daya komputasi yang diperlukan oleh sistem.
  • 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? Bagaimana 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.

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

Versi NodeMCU

Beberapa pengguna awal masih cukup bingung dengan beberapa kehadiran board NodeMCU. Karena sifatnya yang open source tentu akan banyak produsen yang memproduksinya dan mengembangkannya. Secara umum ada tiga produsen NodeMCU yang produknya kini beredar di pasaran:  Amica, DOIT, dan Lolin/WeMos. Dengan beberapa varian board yang diproduksi yakni V1, V2 dan V3.

1. Generasi pertama / board v.0.9 (Biasa disebut V1)

NodeMCU_DEVKIT_V0.9

Board versi 0.9 sering disebut di pasar sebagai V.1 adalah versi asli yang berdimensi 47mm x 31mm. Memiliki inti ESP-12 dengan flash memory berukuran 4MB. Berikut adalah pinout dari board v.0.9

NODEMCU-DEVKIT-INSTRUCTION-EN.a

Namun beberapa produk juga ada yang menggunakan chip ESP-12E sebagai inti dari board v.0.9 dengan tampilan board berubah menjadi hitam.

HTB1zQPsPFXXXXagapXXq6xXFXXXr

2. Generasi kedua / board v 1.0 (biasa disebut V2)

NodeMCU_DEVKIT_1.0

Generasi kedua adalah pengembangan dari versi sebelumnya, dengan chip yang ditingkatkan dari sebelumnya ESP12 menjadi ESP12E. Dan IC Serial diubah dari CHG340 menjadi  CP2102

esp8266-nodemcu-dev-kit-v2-pins.a

3. Generasi ketiga / board v 1.0 ( biasa disebut V3 Lolin)

NodeMCU-Lua-V3-1

Sedangkan untuk V3 sebenarnya bukanlah versi resmi yang dirilis oleh NodeMCU. Setidaknya sampai posting ini dibuat, belum ada versi resmi untuk V3 NodeMCU. V3 hanyalah versi yang diciptakan oleh produsen LoLin dengan perbaikan minor terhadap V2. Diklaim memiliki antarmuka USB yang lebih cepat.

esp8266-nodemcu-dev-kit-v3-pins

Jika anda bandingkan dengan versi sebelumnya, dimensi dari board V3. akan lebih besar dibanding V2. Lolin menggunakan 2 pin cadangan untuk daya USB dan yang lain untuk GND tambahan.

Baca lebih lanjut tentang : Microcontroller

Baca lebih lanjut tentang : Sensor IoT

Ref : [1][2][3][4][5]