Flashing ESP8266 menggunakan NodeMCU


Ok, kita lanjut lagi ceritanya, di Internet sudah bertebaran sebenarnya tentang how to flash ESP8266. Namun ketika kita flash yang saya tahu sekarang ini ada 2 versi yaitu update dari Ai Thinker dan NodeMCU.

Lalu apa bedanya? Bedanya yaitu Ai thinker menggunakan perintah AT Command untuk eksekusi ESP8266 sedangkan NodeMCU menggunakan script LUA. Defaultnya ESP8266 pastinya menggunakan AT Command karena dari pabrikannya yaitu Ai Thinker.

Ada beberapa keuntungan jika menggunakan LUA dari NodeMCU:
  • Kita tidak membutuhkan mikrokontrol dari luar untuk setting-setting parameter (Optional)
  • Bahasa programming LUA yang mudah dipahami bila sudah mengenal C language
  • API nya yang sudah terdokumentasi dengan baik (English version indeed)
  • Bisa kirim script langsung kedalam ESP8266 dan di jalankan perintahnya oleh ESP8266
  • Dan lain-lain yang mungkin nanti terjawab setelah kalian memakainya :)
So let's begin how to Flashing NodeMCU

Seperti cara mengaktifkan wifi di posting blog sebelumnya, koneksikan ESP8266 dengan FTDI namun untuk flashing power, pull-up GPIO0 menggunakan resistor 1KOhm ke Ground.

Masuk ke website berikut https://github.com/nodemcu/nodemcu-firmware kemudian masuk ke folder Pre_Build dan ambil file ber extensi BIN yang terbaru versi nya. Saat ini saya menggunakan versi nodemcu_20150106.bin.

Setelah itu ambil sofware flasher nya di https://github.com/nodemcu/nodemcu-flasher. Bagi yang menggunakan windows 32Bit (x86) gunakan Win32 dan 64 bit gunakan Win64.

Buka aplikasi ESP8266Flasher.exe, bila FTDI sudah tersambung dengan PC biasanya otomatis COM port akan terisi otomatis. Namun pastikan COM port yang dimaksud adalah COM dari FTDI. Lalu masuk ke tab CONFIG dan pilih File BIN yang telah di download tadi.
Setelah itu masuk ke tab advance dan sesuaikan dengan baud rate nya. And happy flashing!!
Biasanya setelah menekan tombol flash akan muncul AP dan STA MAC addressnya dan beberapa detik kemudian flashing dimulai.

Setelah ada tanda checklist hijau artinya Flashing sudah selesai. Kemudian matikan power wifi dan lepas GPIO0 dari ground.


Troubleshooting

Saya pernah mengalami ketika saya tekan flashing, software seperti gagal berkomunikasi. Coba stop dulu tombol flashingnya kemudian matikan power ESP beberapa detik dan hidupkan kembali dan flashing bisa berjalan normal :)


Test LUA script

Saatnya pengetesan WIFI. Agar lebih mudah ketika eksekusi script berlangsung, bisa download software ESplorer. Softwarenya sangat komplit namun berbasis JAVA sehingga harus menginstall JRE (Java running environtment) dahulu.

Kita test GPIO0 dan GPIO2, caranya koneksikan GPIO0 dan 2 dengan led dan resistor 220Ohm ke ground. Kemudian masukkan beberapa perintah berikut:

gpio.mode(3,gpio.OUTPUT) -- 3 dan 4 adalah index GPI00 dan 2
gpio.mode(4,gpio.OUTPUT)
gpio.write(3,gpio.HIGH) -- Huuray LED GPIO0 dan 2 menyala
gpio.write(4,gpio.HIGH)

Di post berikutnya kita akan coba untuk menyalakan GPIO0 dan secara wireless web browser. Tunggu postingan berikutnya ;)

Boot up ESP8266 dan Troubleshoot

Hi Friends,

Ok kita lanjutkan lagi tutorial IOT nya, yang akan saya bahas device utama untuk IOT disini adalah ESP8266 ESP-01. Kenapa harus ESP8266 ESP-01? Beberapa point plus yang saya suka karena:
  1. Harga nya yang paling ekonomis di antara yang lain tidak akan lebih besar dari $15
  2. Ukurannya yg kecil cocok sebesar koin
  3. Spesifikasinya yang sama dengan wifi lain
  4. Jangkauan sinyalnya lumayan jauh (Ada di youtube perbandingan dengan wifi lain coba googling deh)
Tapi ada juga kekurangannya yaitu voltage TTL nya hanya bisa 3,3V dan jangan pernah sekali-kali diberi 5V karena akan menghanguskan chip IC nya.
ESP8266 from NURDspace
Untuk melihat spesifikasi lengkapnya bisa dilihat datasheet disini, atau bisa juga ke alamat https://nurdspace.nl/ESP8266

Berikut adalah fungsi dari kaki-kaki ESP8266:
ESP8266 interface from NURDspace

 Setelah melihat beberapa konfigurasi dasar, sekarang mari kita mulai beberapa bill of material yang dibutuhkan:
  1. FTDI232 3,3V 5V -> Atur agar mengeluarkan supply 3,3V
  2. ESP8266 ESP-01 tentunya
  3. Regulator 3,3V, saya menggunakan S1117-33PI yang bisa provide sekitar 1A
  4. Capacitor 10uF/16V 2buah untuk filter regulator
  5. Lainnya breadboard, kabel-kabel dan asesoris lain
Sebenarnya tanpa regulator pun bisa saja kita menggunakan suppply dari FTDI232 namun karena sewaktu saya coba, tiap kali reset secara software ataupun hardware, tiba-tiba saja komunikasi USB FTDI232 terputus dengan PC, jadi aman nya saya pisahkan suppply nya dimana WiFi ini mebutuhkan sekitar 200mA, dan saya tidak tahu berapa watt FTDI mampu memberi supply untuk WiFi.

Lebih baik jangan ikutin gaya saya yang semrawutan gini ya, bagusnya WiFi nya dikasih adapter kaki sehingga bisa di tempel ke breadboard, begitu pula FTDI nya bagusnya di tempel langsung ke breadboard jadi rapih tanpa kabel kesana sini, berhubung saya orang sibuk dan JP alias Jaya Plaza tempat saya beli barang elektro sangat-sangat jauh dari rumah akhirnya seadanya dulu yang penting progress maju terus :)

Setelah persiapan hardware sekarang kita lanjut ke bagian software, beberapa software yang cocok untuk pengetesan pertama ada beberapa software bisa dipilih yaitu:
  1. Hyperterminal (Untuk Windows Vista ke atas sudah tidak ada lagi)
  2. Putty
  3. SSCom32E (Versi English, aslinya chinese)
Bagi saya sendiri lebih prefer ke SSCom32E karena ketika membutuhkan perubahan baud rate, dan option lainnya kita bisa pada saat itu juga langsung merubahnya tanpa harus close dulu program/softwarenya dahulu.

Untuk settingan komunikasinya adalah sebagai berikut:
  • Baud Rate: Standardnya 9600, 57600, atau 115200 (Dicoba coba karena tiap device bisa berbeda)
  • Data Bits: 8
  • Stop Bits: 1
  • Verify: none
  • Flow Control: none
Source: electrodragon.com
 Troubleshooting:
Bila setelah dicoba mengetik tidak muncul font sama sekali, artinya komunikasi gagal. Coba pertama dilihat dulu dari hardwarenya, bila kita ketik keyboard, seharusnya led merah (TX) di FTDI menyala dan ketika tombol enter ditekan, maka  led biru menyala artinya ada feedback dari wifi.

Kemungkinan kegagalan tersebut bisa jadi faktor berikut:
  • TX dan RX terbalik, seharusnya TX dihubungkan ke RX dan sebaliknya. Namun ada kasus seperti saya pemasangan nya malah TX ke TX dan RX ke RX
  • Grounding yang belum terpasang semua atau kabel ada yang kendor
  • USB FTDI belum kepasang k PC :D
Ketik AT kemudian enter, bila ada jawaban OK berarti komunikasinya sudah lancar.

Berikut fungsi-fungsi AT Command yang bisa dipakai:

Commands Description Type Set/Execute Inquiry test Parameters Examples
AT+RST restart the module basic - - - -
AT+CWMODE wifi mode wifi AT+CWMODE=<mode> AT+CWMODE? AT+CWMODE=? 1= Sta, 2= AP, 3=both
AT+CWJAP join the AP wifi AT+ CWJAP =<ssid>,< pwd > AT+ CWJAP? - ssid = ssid, pwd = wifi password
AT+CWLAP list the AP wifi AT+CWLAP
AT+CWQAP quit the AP wifi AT+CWQAP - AT+CWQAP=?
AT+ CWSAP set the parameters of AP wifi AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn> AT+ CWSAP? ssid, pwd, chl = channel, ecn = encryption Connect to your router: :AT+CWJAP="YOURSSID","helloworld"; and check if connected: AT+CWJAP?
AT+ CIPSTATUS get the connection status TCP/IP AT+ CIPSTATUS
AT+CIPSTART set up TCP or UDP connection TCP/IP 1)single connection (+CIPMUX=0) AT+CIPSTART= <type>,<addr>,<port>; 2) multiple connection (+CIPMUX=1) AT+CIPSTART= <id><type>,<addr>, <port> - AT+CIPSTART=? id = 0-4, type = TCP/UDP, addr = IP address, port= port Connect to another TCP server, set multiple connection first: AT+CIPMUX=1; connect: AT+CIPSTART=4,"TCP","X1.X2.X3.X4",9999
AT+CIPSEND send data TCP/IP 1)single connection(+CIPMUX=0) AT+CIPSEND=<length>; 2) multiple connection (+CIPMUX=1) AT+CIPSEND= <id>,<length> AT+CIPSEND=? send data: AT+CIPSEND=4,15 and then enter the data
AT+CIPCLOSE close TCP or UDP connection TCP/IP AT+CIPCLOSE=<id> or AT+CIPCLOSE AT+CIPCLOSE=?
AT+CIFSR Get IP address TCP/IP AT+CIFSR AT+ CIFSR=?
AT+ CIPMUX set mutiple connection TCP/IP AT+ CIPMUX=<mode> AT+ CIPMUX? 0 for single connection 1 for mutiple connection
AT+ CIPSERVER set as server TCP/IP AT+ CIPSERVER= <mode>[,<port> ] mode 0 to close server mode, mode 1 to open; port = port turn on as a TCP server: AT+CIPSERVER=1,8888, check the self server IP address: AT+CIFSR=?
+IPD received data


Perkenalan Devices Untuk IOT

Devices Module

Well, kita sudah mengetahui apa IOT atau setidaknya kita sudah mempunyai bayangannya. Sekarang mari kita coba kupas apa saja yang kita perlukan untuk membuat sebuah sistem atau ekosistem IOT itu sendiri.

sumber: imgbuddy.com

Kita misalkan lagi seekor kucing yg ingin kita sebagai objek yang akan dimonitor. Maka kita membutuhkan sebuah kamera, box yang berisi banyak makanan kucing dan bisa kita open or close remotely. Setelah itu kita membutuhkan tentu saja Internet sebagai akses dan terakhir bisa smartwatch, smartphone, laptop, tablet etc untuk mengendalikan kamera dan box makanan kucing. 
Dari gambar diatas dapat dilihat bahwa aliran data dari kamera ataupun feedbox cat untuk mencapai internet bisa menggunakan kabe;, WiFi, ataupun berbasis nirkabel lain seperti bluetooth atau RF.

Yang akan saya coba bahas setelah ini adalah cara menggunakan WiFi module sebagai akses untuk IOT. Mengapa harus Wi-Fi, kenapa tidak kabel saja? Atau kenapa tidak bluetooth atau RF? Berikut pandangan saya untuk perbandingan ke tiap device:

Kabel, mempunyai keuntungan yaitu bisa murah bila digunakan jarak dekat dan gampang digunakan. Kerugiannya yaitu ribet karena bila tidak bisa menanganinya kabel terlihat berantakan, tidak flexible bila aktivitas kita mobile, juga bila di gigit tikus, kita susah menemukan dmn posisi kabel yang rusak.

Bluetooth, Yup dengan tentu saja keuntungannya praktis, mobile, dan compatible dengan semua smartphone, namun kerugiannya yaitu sifatnya yang 2 arah, belum bisa multi devices walaupun ada networking seperti TCP/IP untuk bluetooth bernama PAN (Personal Area Network) namun tidak umum digunakan.

RF (Radio Frequency), sama halnya dengan bluetooth namun lebih tidak praktisnya karena tidak compatible dengan device-device seperti laptop,smartphone etc

Wi-Fi, Tentu saja sifatnya mobile dan compatible dengan laptop ot smartphone dan multidevices sehingga bisa join ke suatu AP (Access Point) sebuah wireless router atau hub. Kecepatan transfer data yang tinggi dibanding bluetooth.

Well, setelah kita tahu perbandingannya saatnya kita memlih module device apa yang cocok untuk kita pakai. Sebenarnya banyak wifi module yang bisa digunakan, berikut sebagai referensi:
- XBee
- Arduino
- Intel
- ESP8266
- Dan lain masih banyak lagi

Module terakhir yang akan kita bahas di blog selanjutnya karena device nya yg begitu kecil dan harganya pun paling miring diantara module-module yang lain.

Sepertinya sudah terlalu malam, time elapsed so fast. :)



Cheers at 1 AM,


Fadli

Pendahuluan (Preliminary)

Pendahuluan (Preliminary)

Internet Of Things

Apa itu IOT? Mungkin masih banyak orang yang belum mengerti apa itu IOT. Saya coba jelaskan sesederhana mungkin apa itu. IOT adalah dimana aktivitas kita benda-benda elektronik ataupun elektronik dan segala hal yang berhubungan denganmu terhubung dengan internet. Contoh sederhananya, kita mempunyai TV di rumah dan karena kamu terburu-buru harus keluar untuk melakukan suatu aktivitas, kamu baru tersadar bahwa TV masih menyala. Lalu dengan smartphone mu kamu matikan TV tersebut dari jarak jauh.

Wow.. it's so amazing right??

Contoh lainnya di rumahmu terdapat seekor kucing yang sangat kamu sayangi, kamu ingin selalu tahu bagaimana keadaannya sekarang dan pada waktu itu kamu tidak bisa memberinya makan dikarenakan sedang di luar kota, sedangkan di rumah tidak ada siapapun. Lalu apa yang akan kamu lakukan? Kamu buka lagi smartphone, kamu minta kamera CCTV atau kamera apapun itu untuk memperlihatkan aktivitas si kucing, dan ketika kamu tahu bahwa kucing itu butuh makan, dengan sekali touch di smartphone..voila!! makanan kucing tiba-tiba mengucur dari box makanan menuju piring si kucing.

Apakah itu bisa? Tentu saja karena kita telah terhubung dengan internet, dimanapun kamu berada selama ada jangkauan BTS (Base Transceiver Station) kamu selalu dekat dengan apapun.

Yup, itulah kecanggihan dari sebuah internet. So, let's start learning basic of IOT ;)



Cheers,



Fadli