Contoh Pembacaan Input di Blynk

Berikut dokumentasi singkat pembacaan masukan di aplikasi Blynk 2.0.

Gambar 1.
Gambar 2.

Gambar 1 dan Gambar 2 merupakan tampilan modifikasi dari dashboard sebelumnya. Modifikasi dilakukan hanya untuk menambah indikator hasil pembacaan dari ESP8266. Sebagai catatan, indikator gauge sebenarnya tidak kurang begitu optimal untuk nilai biner, tetapi di sini hanya dipakai untuk contoh singkat dengan pengerjaan cepat.

Gambar 3.

Virtual pin V5 terhubung ke widget label sedangkan V6 terhubung ke widget gauge.

Kode berikut juga dapat diunduh di Pastebin.

[sourcecode] /*************************************************************
Download latest Blynk library here:
https://github.com/blynkkk/blynk-library/releases/latest

Blynk is a platform with iOS and Android apps to control
Arduino, Raspberry Pi and the likes over the Internet.
You can easily build graphic interfaces for all your
projects by simply dragging and dropping widgets.

Downloads, docs, tutorials: http://www.blynk.cc
Sketch generator: http://examples.blynk.cc
Blynk community: http://community.blynk.cc
Follow us: http://www.fb.com/blynkapp

Blynk library is licensed under MIT license
This example code is in public domain.

*************************************************************
This example runs directly on ESP8266 chip.

Note: This requires ESP8266 support package:
https://github.com/esp8266/Arduino

Please be sure to select the right ESP8266 module
in the Tools -> Board menu!

Change WiFi ssid, pass, and Blynk auth token to run 🙂
Feel free to apply it to any other example. It’s simple!
*************************************************************/

/* Comment this out to disable prints and save space */
// #define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "isiDenganPengenalTemplate"
#define BLYNK_DEVICE_NAME "Uji baris LED Dev 01"
#define BLYNK_AUTH_TOKEN "isiDenganAuthToken"

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "mySSID";//Enter your WIFI name
char pass[] = "myPASS";//Enter your WIFI password

BlynkTimer timer;
WidgetLED led1(V4);

BLYNK_WRITE(V0){
int pinValue = param.asInt();
digitalWrite(16, pinValue);
}
BLYNK_WRITE(V1){
int pinValue = param.asInt();
digitalWrite(5, pinValue);
}
BLYNK_WRITE(V2){
int pinValue = param.asInt();
digitalWrite(4, pinValue);
}

BLYNK_WRITE(V3){
int pinValue = param.asInt();
digitalWrite(0, pinValue);
}

void bacaD5(){
int val_D5 = digitalRead(14);
if(val_D5 == HIGH){
led1.on();
Blynk.virtualWrite(V5, "D5 LED ON");
Blynk.virtualWrite(V6, 90);
}
else{
led1.off();
Blynk.virtualWrite(V5, "D5 LED OFF");
Blynk.virtualWrite(V6, 25);
}
}

void setup()
{
// Debug console
//Serial.begin(9600);
pinMode(14, INPUT); //D5 GPIO14
pinMode(16, OUTPUT); //D0 GPIO16
pinMode(5, OUTPUT); //D1 GPIO5
pinMode(4, OUTPUT); //D2 GPIO4
pinMode(0, OUTPUT); //D3 GPIO0
pinMode(2, OUTPUT); //D2 GPIO2
digitalWrite(16, HIGH); //Hanya dipakai untuk display LED
digitalWrite(2, HIGH); //Hanya dipakai untuk display LED
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, bacaD5);
}

void loop()
{
Blynk.run();
timer.run();
}
[/sourcecode]

 

Rujukan:

 

Uji Baris LED dengan Blynk Web Dashboard dan Android App

Web Dashboard

Di bagian awal akan dicatatkan dokumentasi pengendalian 5 jalur keluaran digital (D0~D5) dengan memanfaatkan web dashboard.

Gambar 1.
Gambar 2.
Gambar 3.
Gambar 4.
Gambar 5.

Android App

Gambar 6.

Di smartphone Android, pengguna dapat mengawali pembuatan antarmuka dengan memasuki Developer Mode.

Gambar 7.
Gambar 8.
Gambar 9.
Gambar 10.
Gambar 11.

Untuk keperluan yang sama tombol/sakelar lain dapat dibuat  dan disesuaikan dengan cara yang sama.

Gambar 12.

Contoh kode yang perlu dioperasikan di sistem papan Arduino bisa disalin dari Pastebin atau di bawah ini. 

[sourcecode] /*************************************************************
Download latest Blynk library here:
https://github.com/blynkkk/blynk-library/releases/latest

Blynk is a platform with iOS and Android apps to control
Arduino, Raspberry Pi and the likes over the Internet.
You can easily build graphic interfaces for all your
projects by simply dragging and dropping widgets.

Downloads, docs, tutorials: http://www.blynk.cc
Sketch generator: http://examples.blynk.cc
Blynk community: http://community.blynk.cc
Follow us: http://www.fb.com/blynkapp

Blynk library is licensed under MIT license
This example code is in public domain.

*************************************************************
This example runs directly on ESP8266 chip.

Note: This requires ESP8266 support package:
https://github.com/esp8266/Arduino

Please be sure to select the right ESP8266 module
in the Tools -> Board menu!

Change WiFi ssid, pass, and Blynk auth token to run 🙂
Feel free to apply it to any other example. It’s simple!
*************************************************************/

/* Comment this out to disable prints and save space */
//#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "isiDenganPengenalTemplate"
#define BLYNK_DEVICE_NAME "Uji baris LED Dev 01"
#define BLYNK_AUTH_TOKEN "isiDenganAuthToken"

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "mySSID";//Enter your WIFI name
char pass[] = "myPASS";//Enter your WIFI password

BlynkTimer timer;
WidgetLED led1(V4);

BLYNK_WRITE(V0){
int pinValue = param.asInt();
digitalWrite(16, pinValue);
}
BLYNK_WRITE(V1){
int pinValue = param.asInt();
digitalWrite(5, pinValue);
}
BLYNK_WRITE(V2){
int pinValue = param.asInt();
digitalWrite(4, pinValue);
}

BLYNK_WRITE(V3){
int pinValue = param.asInt();
digitalWrite(0, pinValue);
}

void bacaD5(){
int val_D5 = digitalRead(14);
if(val_D5 == HIGH){
led1.on();
}
else{
led1.off();
}
}

void setup()
{
// Debug console
//Serial.begin(9600);
pinMode(14, INPUT); //D5 GPIO14
pinMode(16, OUTPUT); //D0 GPIO16
pinMode(5, OUTPUT); //D1 GPIO5
pinMode(4, OUTPUT); //D2 GPIO4
pinMode(0, OUTPUT); //D3 GPIO0
pinMode(2, OUTPUT); //D2 GPIO2
digitalWrite(16, HIGH); //Hanya dipakai untuk display LED
digitalWrite(2, HIGH); //Hanya dipakai untuk display LED
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, bacaD5);
}

void loop()
{
Blynk.run();
timer.run();
}
[/sourcecode]

 

 

Uji Coba Blynk Virtual Datastream

Di post sebelumnya sudah dicatatkan ringkasan percobaan pengaturan awal Blynk melalui web dan hanya menggunakan digital datastream. Di artikel ini akan dicatat penggunaan virtual datastream, masih dengan menggunakan antarmuka web.

Template yang dipergunakan masih sama dengan yang dibuat sebelumnya.

Gambar 1.

Pilih virtual pin  saat menu pilihan tampil, lalu kerjakan seperti di Gambar 2.

Gambar 2.
Gambar 3.

Di Gambar 3 terlihat bahwa virtual pin datastream telah berhasil ditambahkan, ditandai sebagai V0. Sedangkan digital datastream sebelumnya tetap ada ditandai dengan angka pin 2.

Jika dikehendaki untuk dapat melakukan pengaturan melalui web, kita perlu melakukan penambahan di web dashboard seperti di Gambar 4 dan Gambar 5.

Gambar 4.
Gambar 5.
Gambar 6.

Logika penyakelaran perlu disesuaikan dengan kondisi riil rangkaian elektronik. Terutama untuk papan yang sudah dipabrikasi seperti modul ESP8266/Nodemcu. Cobtoh pengubahan dari active high ke active low dapat dilihat di Gambar 5 dan Gambar 6.

Gambar 7.
Gambar 8.
Gambar 9.

Agar perintah yang dikirim dari Blynk dapat dieksekusi, kode program yang mengendalikan ESP8266 (atau mikrokontroler lain) perlu disesuaikan.

Gambar 10.

Kode lengkap sebagai contoh cepat dapat diunduk di Pastebin berikut, atau langsung dari halaman ini.

[sourcecode] /*************************************************************
Download latest Blynk library here:
https://github.com/blynkkk/blynk-library/releases/latest

Blynk is a platform with iOS and Android apps to control
Arduino, Raspberry Pi and the likes over the Internet.
You can easily build graphic interfaces for all your
projects by simply dragging and dropping widgets.

Downloads, docs, tutorials: http://www.blynk.cc
Sketch generator: http://examples.blynk.cc

Blynk library is licensed under MIT license
This example code is in public domain.

*************************************************************
This example runs directly on ESP8266 chip.

Note: This requires ESP8266 support package:
https://github.com/esp8266/Arduino

Please be sure to select the right ESP8266 module
in the Tools -> Board menu!

Change WiFi ssid, pass, and Blynk auth token to run 🙂
Feel free to apply it to any other example. It’s simple!
*************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "isiDenganPengenalTemplate"
#define BLYNK_DEVICE_NAME "Uji baris LED Dev 01"
#define BLYNK_AUTH_TOKEN "isiDenganAuthToken"

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "mySSID";//Enter your WIFI name
char pass[] = "myPASS";//Enter your WIFI password

BLYNK_WRITE(V0){
int pinValue = param.asInt();
digitalWrite(16, pinValue);
}

void setup()
{
// Debug console
Serial.begin(9600);
pinMode(16, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(0, OUTPUT);
pinMode(2, OUTPUT);
Blynk.begin(auth, ssid, pass);
}

void loop()
{
Blynk.run();
}

[/sourcecode]
Gambar 11.

Virtual pin lain dapat ditambahkan dengan pola yang sama. Di artikel berikutnya masih berupa catatan pengaturan satu arah, tetapi sudah termasuk penggunaan aplikasi Blynk di Android. 

 

Rujukan:

 

Ringkasan Uji Coba Blynk 2.0

Dokumentasi singkat uji coba new blynk (blynk 2.0).

Instalasi Pustaka

Gambar 1.

Percobaan ini memanfaatkan Arduino IDE, sehingga instalasi pustaka perlu dilakukan seperti di Gambar 1.

Blynk Template

Gambar 2. Aksesweb site ini di https://sgp1.blynk.cloud/ atau https://blynk.cloud/  .
Gambar 3.
Gambar 4.

Papan ESP8266

Sebelum melanjutkan percobaan, terlebih dahulu diketahui pengaturan pin di papan/modul mikrokontroler.

Gambar 5.

Gambar 5 menunjukkan dua LED yang bisa dipakai sebagai indikatordi papan RobotDyn WIFI NODEM 32 MBit. Di penanda 1, adalah LED GPIO16 (D0), sedangkan di penanda 2 adalah LED GPIO2 (D4).

Gambar 6.

Sebagai pembanding, berikut konfigurasi papan ESP8266 (LOLIN dan Amica).

Gambar 7. [Sumber]
Gambar 8. [Sumber]
Gambar 9. Screenshot tabel pinout [Sumber].

Digital Datastream

Untuk contoh penyakelaran pertama, akan dipergunakan digital datastream untuk mengatur keluaran berupa LED di D4 (GPIO2).

Gambar 10.
Gambar 11.
Gambar 12.
Gambar 13.
Gambar 14.
Gambar 15.

Add New Device

Gambar 16.
Gambar 17.
Gambar 18.
Gambar 19.

Program Arduino

Gambar 20.

Isian di penanda 1 dan penanda 2 perlu diganti dan disesuaikan. Isian untuk penanda 1 diperoleh dari Blynk (lihat Gambar 19) sedangkan isian untuk penanda 2 disesuaikan dengan AP/hotspot WiFi lokal yang akan dipakai untuk menghubungkan ESP8266 ini ke Blynk melalui Internet. Kode beikut ini juga dapat diunduh melalui Pastebin (https://pastebin.com/qAgHgMSr).

[sourcecode] /*************************************************************
Download latest Blynk library here:
https://github.com/blynkkk/blynk-library/releases/latest

Blynk is a platform with iOS and Android apps to control
Arduino, Raspberry Pi and the likes over the Internet.
You can easily build graphic interfaces for all your
projects by simply dragging and dropping widgets.

Downloads, docs, tutorials: http://www.blynk.cc
Sketch generator: http://examples.blynk.cc
Blynk community: http://community.blynk.cc
Follow us: http://www.fb.com/blynkapp

Blynk library is licensed under MIT license
This example code is in public domain.

*************************************************************
This example runs directly on ESP8266 chip.

Note: This requires ESP8266 support package:
https://github.com/esp8266/Arduino

Please be sure to select the right ESP8266 module
in the Tools -> Board menu!

Change WiFi ssid, pass, and Blynk auth token to run 🙂
Feel free to apply it to any other example. It’s simple!
*************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "isiDenganPengenalTemplate"
#define BLYNK_DEVICE_NAME "Uji baris LED Dev 01"
#define BLYNK_AUTH_TOKEN "isiDenganAuthToken"

#include <ESP8266WiFi.h>;
#include <BlynkSimpleEsp8266.h>;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "mySSID";//Enter your WIFI name
char pass[] = "myPASS";//Enter your WIFI password

void setup()
{
// Debug console
Serial.begin(9600);
pinMode(16, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(0, OUTPUT);
pinMode(2, OUTPUT);
Blynk.begin(auth, ssid, pass);
}

void loop()
{
Blynk.run();
}
[/sourcecode]

Uji Aktivasi LED di GPIO2

Pada tahap pertama, uji coba dilakukan hanya menggunakan satu buah LED yang terhubung ke D4 (GPIO2) dengan menggunakan digital datastream.

Gambar 21.

Penyakelaran hidup & mati LED dengan antarmuka di halaman web terlihat di Gambar 21. Berikutnya untuk penggunaan fasilitas virtual pin datastream dan penggunaan antarmuka aplikasi di Android akan dicatat di artikel terpisah.

Untuk catatan ringkas penggunaan virtual pin datastream sudah dapat dilihat di sini.

 

Rujukan:

 

Catatan reflashing ESP 01 (ESP8266)

Sebagaimana komponen yang lain, di rumah ada beberapa modul/papan ESP 01 yang sudah tidak tersentuh selama beberapa tahun. Sebagai bagian dari pekerjaan yang lebih besar, bulan ini saya lakukan tinkering untuk melakukan pembaruan firmware di papan-papan tersebut. Selain beberapa hal yang terlupa, ternyata (seperti yang bisa diduga) ada juga sejumlah pembaruan mengenai firmware ESP 01. Berikut ini saya buat catatan agar lebih mudah untuk diulangi dan sebagai bagian dari pustaka bebas di Internet yang bisa diakses banyak orang yang ‘mau dan perlu’.

Gambar 1.

Sebelum reflashing

Sebagaimana layaknya, dengan waktu dan sumber daya yang memungkinkan, perlu dilakukan dokumentasi ‘ before & after ‘. Kali ini software yang dipergunakan adalah CuteCom.

Gambar 2.
Gambar 3.
Gambar 4.

Pinout

Gambar 5.
Gambar 6.
Gambar 7.

Firmware

Gambar 8.

Firmware yang dipergunakan di artikel ini adalah Software Development Kit 3.0.5 (SDK 3.0.5).

Note: Espressif has not released a separate version for the 1 MB ESP8285/8266 series of chips, but you can refer to How to Download the Latest Temporary Version of AT Firmware from GitHub and choose to download the 1 MB firmware on the CI (Continuous Integration) of GitHub (Please switch to release/v2.2.0.0_esp8266 branch and download esp8285-1MB-at under the Artifacts page).About Espressif 1 MB firmware.
Gambar 9.

Pada saat artikel ini ditulis salah satu versi yang bisa diunduh (V1.7.5), bisa dilihat di sini. Bisa juga menggunakan “ESP8266 nonOS SDK”  versi v3.0.5. Tampilan di Gambar 8 menunjukkan bahwa yang dipergunakan untuk tinkering ini adalah versi 3.0.5 dan bisa langsung diunduh tautan ini.

Esptool

Saya menggunakan sistem GNU/Linux, berikut sekadar dokumentasi versi GNU/Linux yang sedang dipergunakan saat tinkering ini dilakukan.

[intense_code type=”block”]sunu@sunuMachine:~$ uname -a
Linux sunuMachine 5.4.0-122-generic #138-Ubuntu SMP Wed Jun 22 15:00:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[/intense_code] [intense_code type=”block”]sunu@sunuMachine:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 20.3
Release: 20.3
Codename: una
[/intense_code]

Di sistem Linux, cara yang lebih efektif & efisien untuk melakukan flashing ESP* adalah dengan menggunakan esptool. Berikut perintah untuk melakukan instalasi esptool.

[intense_code type=”block”]sudo apt install esptool [/intense_code]

Untuk mengetahui opsi perintah di esptool, dapat langsung menggunakan perintah esptool di terminal seperti di Gambar 10 berikut ini. Untuk format html, mengenai perintah ESP8266 di esptool bisa dilihat di sini

Gambar 10.

Berikut adalah beberapa contoh untuk memeriksa kondisi ESP 01 sebelum melakukan flashing.

[sourcecode] esptool.py –chip esp8266 –port /dev/ttyUSB0 chip_id
esptool.py –chip esp8266 –port /dev/ttyUSB0 flash_id
[/sourcecode]

Berikut beberapa acuan yang bisa dipergunakan untuk melakukan pengaturan flashing dengan esptool.

Gambar 11. ESP8266 Non-OS SDK IoT_Demo Guide
Gambar 12. ESP8266 AT Instruction Set – Espressif Systems
Gambar 13. ESP8266 Non-OS AT Instruction Set – Espressif Systems

Ada beberapa contoh pengaturan yang bisa dicoba, silakan mengacu kembali ke Gambar 11, Gambar 12, dan Gambar 13.

[intense_code type=”block”] esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
0x00000 boot_v1.7.bin \
0x01000 at/512+512/user1.1024.new.2.bin \
0xfb000 blank.bin \
0xfc000 esp_init_data_default_v08.bin \
0xfe000 blank.bin \
0x7e000 blank.bin
[/intense_code] [intense_code type=”block”] esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
0x00000 boot_v1.7.bin \
0x01000 at/512+512/user1.1024.new.2.bin \
0xfb000 blank.bin \
0xfc000 esp_init_data_default_v08.bin \
0xfe000 blank.bin
[/intense_code] [intense_code type=”block”] esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
0x00000 boot_v1.7.bin \
0x01000 at/512+512/user1.1024.new.2.bin \
0xfc000 esp_init_data_default_v08.bin \
0xfe000 blank.bin \
0x7e000 blank.bin
[/intense_code]

Contoh proses dan hasil eksekusi:
[intense_code type=”block”]

sunu@sunuMachine:/media/sunu/Espressif/ESP 01/ESP8266_NONOS_SDK-3.0.5/bin$ esptool.py –chip esp8266 –port /dev/ttyUSB0 write_flash –flash_size 1MB \
> 0x00000 boot_v1.7.bin \
> 0x01000 at/512+512/user1.1024.new.2.bin \
> 0xfb000 blank.bin \
> 0xfc000 esp_init_data_default_v08.bin \
> 0xfe000 blank.bin \
> 0x7e000 blank.bin
esptool.py v3.1
Serial port /dev/ttyUSB0
Connecting….
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:69:73:cc
Uploading stub…
Running stub…
Stub running…
Configuring flash size…
Flash will be erased from 0x00000000 to 0x00000fff…
Flash will be erased from 0x00001000 to 0x00065fff…
Flash will be erased from 0x000fb000 to 0x000fbfff…
Flash will be erased from 0x000fc000 to 0x000fcfff…
Flash will be erased from 0x000fe000 to 0x000fefff…
Flash will be erased from 0x0007e000 to 0x0007efff…
Flash params set to 0x0020
Compressed 4080 bytes to 2936…
Wrote 4080 bytes (2936 compressed) at 0x00000000 in 0.5 seconds (effective 64.4 kbit/s)…
Hash of data verified.
Compressed 413556 bytes to 296998…
Wrote 413556 bytes (296998 compressed) at 0x00001000 in 34.0 seconds (effective 97.2 kbit/s)…
Hash of data verified.
Compressed 4096 bytes to 26…
Wrote 4096 bytes (26 compressed) at 0x000fb000 in 0.3 seconds (effective 130.2 kbit/s)…
Hash of data verified.
Compressed 128 bytes to 75…
Wrote 128 bytes (75 compressed) at 0x000fc000 in 0.0 seconds (effective 33.1 kbit/s)…
Hash of data verified.
Compressed 4096 bytes to 26…
Wrote 4096 bytes (26 compressed) at 0x000fe000 in 0.3 seconds (effective 130.4 kbit/s)…
Hash of data verified.
Compressed 4096 bytes to 26…
Wrote 4096 bytes (26 compressed) at 0x0007e000 in 0.3 seconds (effective 130.4 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…
[/intense_code]

 

Afterburn

Setelah pembaruan firmware ada beberapa cara untuk memeriksa hasil proses yang sudah dilakukan. Pertama, dengan menggunakan esptool.

[intense_code type=”block”]

sunu@sunuMachine:~$ esptool chip_id
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting….
Detecting chip type… ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:69:73:cc
Enabling default SPI flash mode…
Chip ID: 0x006973cc
Hard resetting via RTS pin…

sunu@sunuMachine:~$ esptool flash_id
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting…
Detecting chip type… ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:69:73:cc
Enabling default SPI flash mode…
Manufacturer: 85
Device: 6014
Detected flash size: 1MB
Hard resetting via RTS pin…

[/intense_code]

Berikutnya, dalam mode operasional uji coba firmware baru bisa dilakukan dengan menggunakan Moserial. 

Gambar 14. Moserial.
Gambar 15.

Uji coba sebagaimana ditampilkan di Gambar 15 mempergunakan dua perintah terpisah, AT dan AT+GMR. Perintah yang sama juga bisa dicoba dengan menggunakan ESPlorer sebagaimana di Gambar 16.

Gambar 16. ESPlorer.

Reference Docs:

ESP13 Shield

[ [ Links ] ]

Gambar 1. Arduino Compatible ESP-13 Wifi Shield (CAT.NO: XC4614) [Sumber]

Gambar 2. Arduino Compatible ESP-13 Wifi Shield (CAT.NO: XC4614) [Sumber]

Gambar 3. Arduino Compatible ESP-13 Wifi Shield (CAT.NO: XC4614) [Sumber]

Gambar 4. C4614 Flash reprogramming [Sumber]

  • During the programming phase, the wire on D0 is connected to GND (G) on the shield (see green wire in picture above). This tells the shield to enter programming mode next time it is reset.
  • Make sure the address at right is set to 0x00000.

[intense_video video_type=”youtube” video_url=”https://www.youtube.com/watch?v=_jM–H0f964″]

Arduino ESP8266 WiFi Shield v1.0 WangTongze

[ [ images & links ] ]

Gambar 1. Posisi  switch ON [ Klik gambar untuk memperbesar tampilan ]

Gambar 2. Posisi  switch OFF [ Klik gambar untuk memperbesar tampilan ]

[table id=2 /]

Pengaturan switch untuk tiga mode: flashing/reprogramming ESP8266, komunikasi Arduino ⇔ ESP8266 (system run), Arduino programming

1. flashing/reprogramming ESP8266

Konfigurasi untuk pemrograman modul ESP8266  dengan atau tanpa secara fisik terhubung dengan papan Arduino. Memutus jalur komunikasi serial (hardware), OFF di sw1 dan sw2. Posisi ON pada sw3 (DFU: Device Framework Upgrade) dan posisi ON pada sw4 (lampu LED indikator DFU).

[table id=3 /]

Gambar 3.

2. Arduino programming

Konfigurasi untuk pemrograman papan Arduino dengan shield ESP8266 yang masih terhubung secara fisik.

[table id=4 /]

Gambar 4.

3. komunikasi Arduino ⇔ ESP8266 (system run)

Konfigurasi untuk kondisi saat Arduino bekerja dan berkomunikasi melalui serial hardware dengan modul ESP8266.

[table id=5 /]

Gambar 5.

Gambar 6. [sumber]

 

Gambar 7.

Gambar 8.

Gambar 9. FTDI FT232RL

Gambar 10. Kondisi tegangan kerja 5 V

Gambar 11. Kondisi tegangan kerja 3.3 V

Gambar 12.

Percobaan didahului dengan mengosongkan program pada papan Arduino Uno (Gambar 12). Mengetahui kondisi ESP8266 (Gambar 13), konfigurasi switch mengikuti Gambar 3.

Kondisi peneriksaan semua switch OFF. Kadang-kadang perlu melepas lalu kemudian memasang ulang koneksi kabel USB. Kadang-kadang perlu menekan-tahan tombol reset di shield. Pada beberapa percobaan, penekanan tombol reset saat menunggu jawaban dari papan dapat menggantikan keperluan lepas-pasang koneksi kabel USB. Percobaan berhasil pada tegangan kerja 5 V maupun 3.3 V, dengan penyesuaian pengaturan kabel dari papan FTDI RS232 ke papan WiFi shield  (ESP8266).

Gambar 13.

esptool.py -p /dev/ttyUSB0 flash_id

Perintah penghapusan program di ESP8266, jika diperlukan (Gambar 14), kondisi switch mengikuti Gambar 3.

Gambar 14.

esptool.py -p /dev/ttyUSB0 erase_flash

 

Perintah pengisian firmware program di ESP8266 (Gambar 15), kondisi switch mengikuti Gambar 3.

Gambar 15.

esptool.py write_flash 0x0 ai-thinker-v1.1.1.bin

esptool.py --port /dev/ttyUSB0 write_flash -fm dio 0x00000 ai-thinker-0.9.5.2-115200.bin

Melakukan pemeriksaan kondisi firmware dengan ESPlorer (Gambar 16). Cara yang sama dapat dipakai untuk memberikan perintah AT command.

Kembalikan konfigurasi switch seperti pada Gambar 3 menjadi konfigurasi switch seperti pada Gambar 4.

Gambar 16.

Gambar 17, upload firmware dengan memanfaatkan NodeMCU PyFlasher. Konfigurasi swicth seperti pada Gambar 3.

Gambar 17.

Gambar 18 dan Gambar 19, koneksi ke ESP8266 dengan software moserial, pengaturan switch seperti pada Gambar 4.

Gambar 18.

Gambar 19.

esptool.py write_flash 0x0 ai-thinker-0.9.5.2-9600.bin

esptool.py -p /dev/ttyUSB0 flash_id

Gambar 20, modifikasi Software Serial untuk pengiriman AT command.

Gambar 20.

#include <SoftwareSerial.h>

SoftwareSerial esp8266(10,11); //RX TX

void setup()
{
  Serial.begin(9600);
  
  Serial.println("Hardware serial: aktif");
  Serial.println("");

  esp8266.begin(9600);
}


void loop()
{
  if (Serial.available() > 0)
  {

    byte b = Serial.read();
    esp8266.write(b);
  }

  if (esp8266.available() > 0)
  {
    
    byte b = esp8266.read();
    Serial.write(b);
  }
}

Gambar 21. Koneksi silang untuk SoftwareSerial Rx ⇒ Tx, Tx ⇒ Rx.

 

NodeMCU DEVKIT dan Lua

[ [ images & links ] ]

pinout.pngGambar 1. NodeMCU [sumber]

https://i-esan.com/wp-content/uploads/2013/06/nodemcu_v2_pin_map.pngGambar 2. [sumber]http://c.tutti.ch/images/esp8266-nodemcu-v3-base-board-protoshield-mit-spannungsregle-6355190634.jpgGambar 3. NodeMCU + Base yang tidak memerlukan tambahan adapter [sumber]

Gambar 4. NodeMCU v0.9 pinout [sumber]

Perbedaan antara v0.9 dan v1.0:

If you are going to purchase a NodeMCU board it’s important to know there are two official versions:

  • NodeMCU v0.9 with ESP-12 module
  • NodeMCU v1.0 with ESP-12E module

The main complain about NodeMCU v0.9 is that while it fits on the breadboard, you can’t use as it takes the full width of the board, while NodeMCU v1.0 is really breadboard-friendly as you can see on the right part of the picture above.

wget https://github.com/nodemcu/nodemcu-firmware/releases/download/0.9.6-dev_20150704/nodemcu_integer_0.9.6-dev_20150704.bin
$ /home/sunu/.arduino15/packages/esp8266/tools/esptool/0.4.9/esptool -p /dev/ttyUSB0 erase_flash
$ clear; esptool.py --port /dev/ttyUSB0 flash_id

$ reset; esptool.py --port /dev/ttyUSB0 write_flash -fm dio 0x00000 nodemcu_integer_0.9.6-dev_20150704.bin

$ reset; esptool.py --port /dev/ttyUSB0 write_flash 0x00000 nodemcu_integer_0.9.6-dev_20150704.bin

$ reset; esptool.py --port /dev/ttyUSB1 write_flash -fm dio 0x00000 nodemcu_integer_0.9.6-dev_20150704.bin

$ reset; esptool.py --port /dev/ttyUSB0 write_flash 0x00000 nodemcu-master-7-modules-2017-07-03-14-56-15-integer.bin

Gambar 5.

Gambar 6.

Lakukan hardware reset pada nodeMCU DevKit, setelah menekan Connect pada Moserial.

Gambar 7.

Gambar 8.

Gambar 9.

Lakukan hardware reset pada nodeMCU DevKit, setelah menekan Open pada ESplorer.

Gambar 10.

Gambar 11.

pin = 0
gpio.mode(pin,gpio.OUTPUT)
print("tinker.sunupradna.info")
while 1 do
    gpio.write(pin,gpio.HIGH)
    tmr.delay(100000)
    gpio.write(pin,gpio.LOW)
    tmr.delay(100000)
end

Gambar 12. [ klik gambar untuk memperbesar tampilan ]

~/workspace/LUA/LED_blink $ nodemcu-tool devices
[NodeMCU] Connected Devices | Total: 1
	  |- /dev/ttyUSB0 (Silicon_Labs, usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0)
~/workspace/LUA/LED_blink $ nodemcu-tool --connection-delay 200 -p /dev/ttyUSB0 -b 9600 run blink_led_001.lua 
[NodeMCU-Tool] Connected
[NodeMCU] Version: 0.9.6 | ChipID: 0x74b61 | FlashID: 0x1640e0
~/workspace/LUA/LED_blink $ nodemcu-tool --connection-delay 200 -p /dev/ttyUSB0 -b 9600 upload blink_led_001.lua 
[NodeMCU-Tool] Connected
[NodeMCU] Version: 0.9.6 | ChipID: 0x74b61 | FlashID: 0x1640e0
[NodeMCU-Tool] Uploading "blink_led_001.lua" >> "blink_led_001.lua"...
[NodeMCU-Connector] Transfer-Mode: hex
[NodeMCU-Tool] File Transfer complete!
~/workspace/LUA/LED_blink $ nodemcu-tool init
[NodeMCU-Tool] Creating project based configuration file..
[NodeMCU-Tool] Baudrate in Bit per Seconds, e.g. 9600 (default) (9600) 9600
[NodeMCU-Tool] Serial connection to use, e.g. COM1 or /dev/ttyUSB2 (/dev/ttyUSB0) /dev/ttyUSB0


~/workspace/LUA/LED_blink $ nodemcu-tool run blink.lua
[NodeMCU-Tool] Project based configuration loaded
[NodeMCU-Tool] Connected
[NodeMCU] Version: 0.9.6 | ChipID: 0x74b61 | FlashID: 0x1640e0


~/workspace/LUA/LED_blink $ nodemcu-tool upload init.lua 
[NodeMCU-Tool] Project based configuration loaded
[NodeMCU-Tool] Connected
[NodeMCU] Version: 0.9.6 | ChipID: 0x74b61 | FlashID: 0x1640e0
[NodeMCU-Tool] Uploading "init.lua" >> "init.lua"...
[NodeMCU-Connector] Transfer-Mode: hex
[NodeMCU-Tool] File Transfer complete!

init.lua

--**delay sebelum loop**
--dofile("blink_led_001.lua")

print("tinker.sunupradana.info")

Gambar 13.

Gambar 14. [ klik gambar untuk memperbesar tampilan ]

Gambar 15.

NodeMCU, Lua, Arduino IDE

 

NodeMcu adapter

 

Harapan itu memang kadang tidak menjadi kenyataan, begitulah kenyataan hidup 🙂 . Kadang-kadang perlu kerja ekstra seperti ini.

Tinkering kali ini dilakukan karena ukuran papan yang seharusnya menjadi adapter ternyata tidak cocok dengan ukuran papan sistem NodeMCU. Karena itu papan adapter memerlukan adapter lagi 😀 .  Untung saja apa yang harus dilakukan tergolong mudah.

https://www.aerial.net/shop/imageslarge/IOT-NMCUBase_main.jpgGambar 1. NodeMCU adapter/base [sumber]

Gambar 2. NodeMCU + adapter/base

pinout.pngGambar 3. NodeMCU [sumber]

https://i-esan.com/wp-content/uploads/2013/06/nodemcu_v2_pin_map.pngGambar 4. [sumber]http://c.tutti.ch/images/esp8266-nodemcu-v3-base-board-protoshield-mit-spannungsregle-6355190634.jpgGambar 5. NodeMCU + Base yang tidak memerlukan tambahan adapter [sumber]