Dulu saya pernah pakai ESP8266 yang model ESP-1, yang dihubungkan dengan mikrokontroler (ARM STM32 atau Arduino yang saya pakai) melalui SPI. Setelah saya ngobrol-ngobrol dengan teman saya, dia bilang di tokopedia udah banyak yang jual ESP8266 yang model NodeMCU. Oiya, NodeMCU sebenernya nama firmwarenya, bukan hardwarenya. Hardwarenya sih ESP8266 ESP-12E.
NodeMCU ESP8266 ESP-12, gambar dari Seedstudio.com |
Dengan ESP model ini, kita bisa masukin kodingan langsung ke ESP karena udah ada downloadernya. RAM dan ROMnya juga lebih besar dari ESP-1, jadi lebih enak kalo mau make ESP tanpa model master-slave (tanpa mikrokontroler tambahan). ESP ini gampang dicari di Indonesia, di toko online banyak yang jual dengan harga 60 ribuan.
Memprogram ESP8266 ESP-12E NodeMCU
Firmware NodeMCU mengizinkan kita untuk memprogram dengan LUA script. Namun, jujur saja saya tidak familiar dengan LUA script, jadi saya memilih untuk mencoba dengan C++ (atau plain C) gaya Arduino.
Cara ngoding dengan Arduino IDE:
Pertama kali saya coba, saya menggunakan Arduino IDE yang diinstal board tambahan si ESP ini. Langkahnya ada di website Sparkfun. Di website sparkfun jelas caranya, jadi saya ga tulis di sini.
Cara ngoding yang lebih manusiawi: PlatformIO
Saya ga terlalu suka sama ArduinoIDE. Ga ada file explorernya, ga ada terminal, dsb. Makanya dulu saya males pake arduino, karena dulu ngoding ARM STM32 pake CooCox yang IDEnya menurut saya lebih enak dipakai.
Tampilan PlatformIO |
Apa yang saya suka dari PlatformIO? Dia punya fitur yang ada di Arduino IDE: serial monitor, board-board arduino yang mudah diinstall, dan lebih enak untuk bikin file configurasi untuk ngotak ngatik.
Dari 2 hari nyoba PlatformIO, ini yang saya dapet dari sedikit sumber untuk pakai PlatformIO:
Cara install library tambahan di PlatformIO
Misalnya kita mau ngoding sensor IR buat remote TV dan sejenisnya. Kita bisa buka terminal di PlatformIO (dengan Shift+alt+t) trus ketik:
pio lib search IR
IR itu nama yang kita mau cari. Bisa diganti-ganti, misal mau nyari buat DHT22, BMP85, dan sebagainya. Nanti akan keluar hasil pencarian kayak gini:
Kalau kita pake ESP8266, pilih yang nomor [1089 ]. Cara installnya dengan masukkin command:
pio lib install 1089
Dimana nomor 1089 itu adalah nomor dari librarynya. Selesai deh. Enak kan.
Ada file lain yang bisa kita lakuin: nambahin build flags gcc dengan mengedit file konfigurasi platformio.ini (ada di file explorer sebelah kiri tampilan PlatformIO). Kalau mau nambahin build flag -Os, tambahin aja di file platformio.ini:
build_flags= -OsApaan itu -Os? Dari man gcc, kita bisa baca kalo "-Os Optimize for size.". Ini penting untuk mengoptimasi hasil kompilasi dari gcc buat dimasukkin ke flash memorynya mikrokontroler [makin optimal (makin kecil), makin baik].
Ada lagi. Kalau mau bikin file .h dan .cpp sendiri, kita sebaiknya ngikutin struktur yang disarankan sama platformIO. Kita bisa baca di readme.txt yang ada di {projek kita}/lib/readme.txt:
The source code of each library should be placed in separate directory, like
"lib/private_lib/[here are source files]".
For example, see how can be organized `Foo` and `Bar` libraries:
|--lib
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |- readme.txt --> THIS FILE
|- platformio.ini
|--src
|- main.c
Then in `src/main.c` you should use:
#include <Foo.h>
#include <Bar.h>
// rest H/C/CPP code
Dengan ngikutin struktur ini, projek kita akan lebih rapih dan kalo mau maintenance pun lebih enak dibanding semua ada di satu folder.