Panduan terperinci Blynk App | Mobile App Paling Mudah untuk Arduino

Antara “Ultimate” dalam bermain dengan Arduino adalah mengadakan Mobile App yang mampu mengawal atau monitor projek-projek Arduino anda.

Special Update November 2019!
Blog Post ini telah dilengkapkan!
Selamat memulakan perjalanan anda dalam dunia IOT!

Berbanding MIT App yang lebih kompleks, Blynk App adalah jauh lebih mudah untuk beginners bermula dengan IOT.

Dalam Tutorial-Entry ini, MatGyver akan menerangkan cara menggunakan widget-widget penting dari Blynk App.

Tidak semua fungsi Blynk App dapat diterangkan dalam entry ini, kerana fungsi Blynk App terlalu banyak. Namun kami pasti, Tutorial ini akan membantu menguatkan asas yang anda perlu tahu sebelum sebelum membuat projek-projek IOT yang lebih kompleks.

Jika ini pertama kali anda menggunakan App Blynk dan membaca artikel ini, kami sarankan anda laksanakan Tutorial Berikut dahulu, sebelum meneruskan bacaan.

Hari ini, kita berterima-kasih pada Blynk.cc kerana inisiatif syarikat Start-Up mereka membangunkan Mobile App yang paling mudah untuk di-configure dan digunakan dan mereka juga telah sediakan Cloud-Server online, yang membolehkan Mobile App mengawal atau Monitor projek Arduino dari mana-mana lokasi seluruh dunia yang mempunyai internet.

Apa Itu Blynk ?

“Every project made with Blynk can be branded, and published to App Store and Google Play with your icon and app name.” -Blynk.cc-

architecture

Asas kepada mana-mana App IOT Smartphone adalah, sebarang DATA dari phone perlu di hantar dan disimpan sementara di CLOUD-SERVER internet.

Begitu juga dengan DATA dari Arduino atau NodeMCU juga sebelum ia sampai ke App Smartphone, ia perlu dihantar dan disimpan sementara di CLOUD-SERVER internet.

KEMUDIAN, apabila data dah disimpan sementara, barulah DATA tersebut dapat di panggil dan diguna-pakai semula oleh Arduino/NodeMCU atau SmartPhone anda.

CLOUD-SERVER adalah komponen paling penting dalam dunia IOT. DATA tidak boleh dihantar TERUS ke applikasi atau Arduino melalui internet, kerana ada kebarangkalian besar, data tersebut boleh hilang semasa Transmission.

Oleh itu, perlu faham, System IOT bukan hanya setakat pada phone App dan coding Arduino, ia memerlukan CLOUD-SERVER yang perlu mempunyai memory hard-disk storage, mempunyai server computer dan pelbagai maintenance dan kos penyelenggaraan untuk memastikan server sentiasa berjalan dan up-to-date.

MEMAHAMI Blynk App dan Cara Penggunaanya

#1 Kawal Terus Pin Digital dari App Blynk

Kaedah ini, telah diterangkan dengan jelas dalam Tutorial pertama kami yang Menyalakan LED melalui butang dalam App Blynk.

Kita tahu, Pin Digital Output Arduino/NodeMCU perlu diberi arahan HIGH/LOW untuk aktifkan atau keluarkan voltage 5V atau voltage OFF(0V) bagi menyalakan LED, Relay dan pelbagai Digital Output lain.

Terdapat 2 jenis butang yang hanya berbeza dari grafik bentuk, Button dan Styled Button. Size dan warna butang boleh diubah dalam Option Configuration.

Pilih pin Digital Arduino/NodeMCU (D1, D2….DN) yang ingin diberikan HIGH atau LOW, dan tanpa coding tambahan lain, lepas RUN Blynk, Pin Digital Arduino/NodeMCU yang ditetapkan akan mengeluarkan output HIGH apabila butang di tekan.

#2 Dapatkan Status HIGH/LOW dari Button App Blynk

Kaedah ke-2 menggunakan button atau butang dari App Blynk, adalah dengan cara mendapatkan status ON/OFF butang tersebut untuk digunakan dalam coding Arduino.

Rujuk Coding sample di bawah untuk mendapatkah bacaan status Button dalam Blynk App:

int butang_1 = 0;   //declare variable untuk butang

BLYNK_WRITE(V0){
  butang_1 = param.asInt();
}

void setup() {
  // put your setup code here, to run once:
  // tiada perubahan code dalam Void Setup
}//END VOID SETUP

void loop() {
  // put your main code here, to run repeatedly:
  Blynk.run();  //kekalkan sytanx ini, syntax wajib untuk Blynk
  
  if(butang_1 == HIGH){
    //aktifkan device atau proses anda di sini
  }
  if(butang_1 == LOW){
    //aktifkan device atau proses anda di sini
  }
  
}//END VOID LOOP

Dalam coding di atas, perkara berikut telah ditetapkan, dan akan berlaku:

#1 Pin Virtual telah digunakan

Penggunaan App Blynk boleh menggunakan sehingga 255 maksimum Pin Virtual. Blynk App, menggunakan konsep Pin Virtual untuk membuat komunikasi antara CLOUD-APP-Device.

Hanya satu fungsi atau widget boleh digunakan untuk 1 Pin Virtual!

Dalam Coding di atas, Pin Virtual telah digunakan untuk Button tersebut.

#2 Memanggil Status Pin Virtual dengan BLYNK_WRITE(pin)

Syntax BLYNK_WRITE (Pin) adalah syntax standard untuk memanggil status atau nilai data pada Pin Virtual Blynk.

BLYNK_WRITE(Pin) perlu diletak di-LUAR Void Setup() dan juga di-LUAR Void Loop().

Untuk Best-Practice, biasakan meletakkan BLYNK_WRITE(Pin) di atas Void Setup() selepas buat variable declaration.

Function BLYNK_WRITE akan di rujuk oleh syntax Blynk.run(); yang terdapat dalam Void Loop. Setiap kali loop, Blynk.run() akan merujuk semua BLYNK_WRITE yang terlibat untuk meng-Update status semua Pin Virtual.

#3 Sediakan Varible khas untuk menyimpan data setiap Pin Virtual

Pastikan anda sediakan dan declare Global-Bariable khas untuk menyimpan data setiap pin Virtual.

#4 Data Pin Virtual di simpan dalam syntax param.asInt()

Push Button dalam Blynk App, mengandungi data HIGH atau LOW, yang juga dengan maksud lain mempunyai nilai ‘1’ atau ‘0’.

Oleh itu hanya 2 nombor yang berada pada data tersebut, maka syntax param.asInt() digunakan.

Int adalah variable-syntax yang boleh menyimpan nombor dari -32,000 hingga 32,000.

Jika anda menghantar data yang ada titik perpuluhan dari Blynk App, maka anda perlu gunakan param.asFloat();

Jika anda menghantar data perkataan pula, anda perlu gunakan param.asString();

#5 Gunakan Data yang disimpan dalam Variable, untuk kegunaan Project

  if(butang_1 == HIGH){
    //aktifkan device atau proses anda di sini
  }
  if(butang_1 == LOW){
    //aktifkan device atau proses anda di sini
  }

Rujuk Coding di atas, Variable butang_1 telah mengandungi data dari Button App Blynk HIGH/LOW.

Terus gunakan data tersebut dalam coding project dalam Void Loop.

#6 Contoh Menggunakan Pin Virtual yang banyak

Rujuk sample code di bawah untuk melihat kaedah menulis BLYNK_WRITE untuk situasi penggunaan Pin Virtual yang banyak.

int butang_1 = 0;   //declare variable untuk butang
int butang_2 = 0;   //declare variable untuk butang
int joystick1 = 0;  //declare variable untuk joystick analog dalam Blynk
int inputData1 = 0; //declare variable untuk input nombor data lain

BLYNK_WRITE(V0){  //V0 untuk butang 1
  butang_1 = param.asInt();
}
BLYNK_WRITE(V1){  //V1 untuk butang 2
  butang_2 = param.asInt();
}
BLYNK_WRITE(V2){  //V2 untuk joystick Blynk
  joystick1 = param.asInt();
}
BLYNK_WRITE(V3){  //V3 untuk input nombor dari Blynk
  inputData1 = param.asInt();
}

void setup() {
  // put your setup code here, to run once:
  // tiada perubahan code dalam Void Setup
}//END VOID SETUP

#3 Memberikan Input-Analog dari Blynk App

Input Analog adalah input yang bersifat boleh ubah, di mana nombor-nombor input tersebut boleh berubah.

Beberapa jenis Widget Input Analog yang terdapat dalam Blynk adalah seperti gambar kiri di atas, Slider, Vertical Slider, Joystick, Step H Widget dan juga Step V Widget.

Kaedah memanggil data Input Widget di atas masih sama, dan di simulasi dalam coding contoh di bawah:

int inputData1 = 0; //declare variable untuk input nombor data lain
int kelajuanMotor = 0;

BLYNK_WRITE(V3){  //V3 untuk input nombor dari Blynk
  inputData1 = param.asInt();
}

void setup() {
  // put your setup code here, to run once:
  // tiada perubahan code dalam Void Setup
}//END VOID SETUP

void loop() {
  // put your main code here, to run repeatedly:
  Blynk.run();  //kekalkan sytanx ini, syntax wajib untuk Blynk
  
  kelajuanMotor = inputData1;
  
}//END VOID LOOP

Dalam coding ini, ibaratkan, anda menggunakan Slider Widget untuk menentukan kelajuan motor pada Pin Virtual V3.

Nombor data maksimum dan minimum dari Blynk App boleh diubah dan ditentukan melalui Konfigurasi Widget yang menunjukkan nilai 0~1023 dalam gambar kanan. Ia boleh diubah kepada range nombor berlainan seperti 0~100 ataupun yang lain.

Jika anda mahu terus gunakan Widget tersebut untuk memberi output PWM pada pin digital PWM ARduino/NodeMCU, tukarkan pilihan Pin Digital PWM dan tukarkan nilai keluaran kepada nilai range 0~255.

#4 Menggunakan Widget LED dalam Blynk App

Widget LED dalam App Blynk, seperti gambar kiri di bawah, mempunyai kaedah coding yang berlainan untuk dikawal dari Arduino/NodeMCU.

Rujuk contoh code berikut yang mengawal LED dalam App Blynk:

int inputData1 = 0; //declare variable untuk input nombor data lain

WidgetLED led1(V5);
WidgetLED led2(V6);

BLYNK_WRITE(V8){  //V3 untuk input nombor dari Blynk
  inputData1 = param.asInt();
}

void setup() {
  // put your setup code here, to run once:
  // tiada perubahan code dalam Void Setup
}//END VOID SETUP

void loop() {
  // put your main code here, to run repeatedly:
  Blynk.run();  //kekalkan sytanx ini, syntax wajib untuk Blynk
  
  if(sensorValue > 250){
    led1.off();
    led2.on();
  }
  if(sensorValue < 987){
    led1.on();
    led2.off();
  }
  
}//END VOID LOOP

Berdasarkan coding di atas,

#1 Delcare Objek Widget LED NamaLED(pin)

Objek WidgetLED NamaLED(pin) perlu di-declare dalam Defining Area.

#2 Gunakan Syntax NamaLED.on() atau NamLED.off()

Dengan itu, LED di dalam Blynk App boleh di kawal dengan .on() atau .off()

#5 Menggunakan Widget LCD untuk paparan Display

Juga, terdapat LCD Screen di dalam Blynk App, yang berfungsi hampir sama seperti Screen LCD 16X02.

Namun, untuk anda yang tidak biasa menggunakan LCD Screen, kami sarankan anda rujuk artikel kami berkenaan LCD untuk menguatkan asas pemahaman mengenai LCD.

Untuk LCD Widget Blynk, kami sarankan anda gunakan fungsi Advanced. Rujuk contoh coding berikut:

WidgetLCD lcdBlynk(V10);

void setup() {
  // put your setup code here, to run once:
  // tiada perubahan code dalam Void Setup
  lcdBlynk.clear();
  lcdBlynk.print(2, 0, "Selamat Pagi");
  lcdBlynk.print(2, 1, "MatGyver");
  
}//END VOID SETUP

void loop() {
  // put your main code here, to run repeatedly:
  Blynk.run();  //kekalkan sytanx ini, syntax wajib untuk Blynk
  
}//END VOID LOOP

Sama seperti WidgetLED, objek Widget LCD NamaLCD(pin) , perlu di-declare dalam bahagian Defining Area.

Kemudian, syntax print bagi lcd widget ini hampir serupa dengan syntax print LCD biasa.

#5 Display Nilai atau Bacaan Sensor

Selain Widget LCD, Nilai atau Bacaan Sensor dapat di-Display melalui 3 widget lain, Value Display, Labeled Value ataupu Gauge.

Rujuk code sample di bawah, untuk melihat cara menghantar Nilai/Value Sensor pada widget Display.

float temperatureValue = 0.0;

void setup() {
  // put your setup code here, to run once:
  // tiada perubahan code dalam Void Setup  
}//END VOID SETUP

void loop() {
  // put your main code here, to run repeatedly:
  Blynk.run();  //kekalkan sytanx ini, syntax wajib untuk Blynk

  temperatureValue = sensor.read(0x87);
 
  Blynk.virtualWrite(V5, temperatureValue);
}//END VOID LOOP

Dalam coding di atas, Widget Display telah menggunakan Pin Virtual V5.

Syntax Blynk.virtualWrite(V5, temperatureValue); telah digunakan untuk menghantar nilai data sensor temperature pada Widget Display.

Widget-widget Lain Bagaimana ?

Untuk setakat ini, kami yakin, jika tuan/cikpuan telah menganalisa coding-coding yang diberikan di atas bersama penerangan kami, tuan/cikpuan pasti mampu untuk menyelidik kaedah penggunaan widget-widget lain yang tidak kami terangkan dalam tutorial ini.

Asasnya, setiap widget diberikan guide simple dalam Blynk App apabila tuan/cikpuan menekan icon ‘!’ di bahagian kanan-atas setiap page setting widget.

Kaedah Lain Mendapatkan Sample Code dan Guide Blynk ?

Kaedah lain mendapatkan panduan berkenaan Blynk adalah seperti berikut:

  1. Melalui Web Official Blynk docs.blynk.cc
    https://docs.blynk.cc/
  2. Hadirkan diri ke R&D Studio Makerspace MatGyver di Bandar Teknologi Kajang, untuk dapatkan Coaching dari #teamMatgyver
  3. Hadiri Kursus MatGyver berkenaan Arduino, IOT dan Blynk.
    Kursus Arduino & IOT MatGyver

Blynk FREE atau BERBAYAR ?

Blynk App, menggunakan kaedah Energy yang juga boleh dianggap sebagai topup kredit. Kredit Energy ini takkan habis, dan boleh dikitar semula dengan cara men-Delete project atau DELETE Widgets.

Melainkan, jika anda mempunyai banyak project App, dan projek lama perlu disimpan, dalam keadaan ini, anda perlukan banyak Energy, namun Energy App Blynk tidak begitu mahal,

5,000 Energy hanya berharga RM20.99 sahaja!

yang mana cukup untuk membuat sehingga 4-5 Project IOT!

Energy dapat di-claim semula dengan men-delete widget lama ataupun projek lama.

Cuba Satu Tutorial Mudah!

Anda boleh cuba satu tutorial mudah untuk menyalakan LED pada Arduino dengan menggunakan Push-Button Widget dalam Blynk App.

Ikuti URL berikut untuk terus mencuba Tutorial ini:


Jika anda menyukai artikel-artikel keluaran MatGyver.my, kami mohon jasa baik tuan/cikpuan untuk menyumbangkan like pada page FaceBook kami.

Dapatkan Tips-tips DIY dan Arduino dari FB Page Kami.

Published by Mat Gyver

Peneraju Komuniti Digital Maker Malaysia. Pembangunan Komuniti diUtamakan.

Tinggalkan Jawapan

Masukkan butiran anda dibawah atau klik ikon untuk log masuk akaun:

WordPress.com Logo

Anda sedang menulis komen melalui akaun WordPress.com anda. Log Out /  Tukar )

Twitter picture

Anda sedang menulis komen melalui akaun Twitter anda. Log Out /  Tukar )

Facebook photo

Anda sedang menulis komen melalui akaun Facebook anda. Log Out /  Tukar )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: