Loading...
OUR BLOG

Terima dan hantar data Firebase dan Kodular menggunakan NodeMCU ESP8266

Hi BDx-ian!

 

Tutorial kali ini kita akan belajar cara nak terima dan hantar data Firebase dan Kodular menggunakan NodeMCU ESP8266. Tutorial ini berfungsi dengan cara data jarak dari ultrasonic sensor yang bersambung dengan ESP8266 dihantar ke Firebase dan seterusnya ke Kodular untuk memaparkan data pada skrin aplikasi Android. Kemudian, data ledStatus dari button Kodular yang dipaparkan pada skrin akan dihantar ke Firebase dan seterusnya ke ESP8266 dan LED. 

 

Bagi yang belum pernah guna platform Kodular dan Firebase, anda boleh pergi ke pautan di bawah untuk mengetahui lebih lanjut cara nak setup Kodular dan Firebase sebelum memulakan tutorial ini. 

Kodular 

Firebase

 

FIREBASE 

Setup Firebase dengan cipta Realtime Database dan cipta Authentication. Kemudian, tambah key data pada projek anda seperti di bawah.

 

 

KODULAR

Setup komponen Kodular anda seperti di bawah untuk projek ini berfungsi. 

 

 

Block Code

Bina block code Kodular anda atau boleh rujuk code block di bawah.

 

 

KOMPONEN 

Komponen yang diperlukan untuk tutorial ini:

 

  1. LED
  2. NodeMCU ESP8266
  3. Breadboard
  4. Jumper
  5. Ultrasonic Sensor

 

LITAR

Ultrasonic sensor

 

 

LED

 

 

CODE

 

#include <ESP8266WiFi.h>

#include <FirebaseESP8266.h>

 

 

// Provide the RTDB payload printing info and other helper functions.

#include <addons/RTDBHelper.h>

 

#define trigPin 13

#define echoPin 15

 

/* 1. Define the WiFi credentials */

#define WIFI_SSID "Nama WiFi anda"

#define WIFI_PASSWORD "Password WiFi anda"

 

#define DATABASE_URL "Database URL projek anda" //<databaseName>.firebaseio.com or <databaseName>.<region>.firebasedatabase.app

#define FIREBASE_AUTH "Database Secret anda

 

FirebaseData fbdo;

FirebaseData firebaseData;

 

FirebaseConfig config;

 

unsigned long dataMillis = 0;

 

long duration;

int distance;

 

int led = 2;

String ledStatus;

 

void setup()

{

 

  Serial.begin(115200);

 

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  Serial.print("Connecting to Wi-Fi");

  while (WiFi.status() != WL_CONNECTED)

  {

    Serial.print(".");

    delay(300);

  }

  Serial.println();

  Serial.print("Connected with IP: ");

  Serial.println(WiFi.localIP());

  Serial.println();

 

  Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);

 

  Firebase.begin(DATABASE_URL,FIREBASE_AUTH);

 

  // Comment or pass false value when WiFi reconnection will control by your code or third party library

  Firebase.reconnectWiFi(true);

 

  pinMode(trigPin, OUTPUT);

  pinMode(echoPin, INPUT);

  pinMode(led, OUTPUT);

}

 

void loop()

{

 

 

    if (millis() - dataMillis > 10000)

    {

    dataMillis = millis();

    getDistance();

    

 

    

//terima data ledStatus dari firebase

      

      if (Firebase.getString(firebaseData, "/system/ledStatus")){

        

      Serial.printf("Get ledStatus.. %s\n", Firebase.getString(firebaseData, F("/system/ledStatus"), &ledStatus) ? String(ledStatus).c_str() : firebaseData.errorReason().c_str());  

      

      

      if (ledStatus == "1")

      {

        digitalWrite(led, HIGH);

        Serial.println("LED ON");

      }

      else if (ledStatus == "0")

      {

        digitalWrite(led, LOW);

        Serial.println("LED OFF");

      }

      delay (1000);

    

    }

    }

}

 

 

 

void getDistance()

{  

  digitalWrite(trigPin, HIGH);

    delayMicroseconds(10);

    digitalWrite(trigPin, LOW);

    duration = pulseIn(echoPin, HIGH);

    distance = (duration / 2) / 29.1;

 

//hantar data distance ke firebase

  if (Firebase.setInt(fbdo, "/system/distance", distance))

  {

    

    Serial.print("Distance: ");

    Serial.println(distance);

    Serial.println();

  }

 

else

  {

    Serial.println("DISTANCE FAILED");

    Serial.println("REASON: " + fbdo.errorReason());

    Serial.println("------------------------------------");

    Serial.println();

    return;

  }  

    } 

 

Peringatan

Ganti dan tukar perkara ini ke dalam code anda.

#define WIFI_SSID "Nama WiFi anda"

#define WIFI_PASSWORD "Password WiFi anda"

#define DATABASE_URL "Database URL projek anda" //<databaseName>.firebaseio.com or <databaseName>.<region>.firebasedatabase.app

#define FIREBASE_AUTH "Database Secret anda

 

OUTPUT

Setelah anda berjaya connect Kodular dengan telefon anda dan upload code, data distance dan ledStatus akan dipaparkan pada skrin Kodular, Firebase dan Serial Monitor.  

 

Apabila tekan button LED ON pada skrin aplikasi Kodular, LED akan menyala, value ledStatus Firebase menunjukkan “1”, “LED ON” pada skrin Kodular dan Serial Monitor. 

 

 

Value data ledStatus dan distance pada Firebase.

 

Serial Monitor memaparkan ledStatus, distance dan LED ON

 

Apabila tekan button LED OFFpada skrin aplikasi Kodular, LED tidak menyala, value ledStatus Firebase menunjukkan “0”, “LED OFF” pada skrin Kodular dan Serial Monitor

 

 

Value ledStatus dan distance pada Firebase.

 

Serial Monitor memaparkan ledStatus, distance dan LED OFF

 

Terdapat beberapa tutorial lepas tentang platform Kodular dan Firebase, anda boleh pergi ke pautan di bawah untuk mengetahui lebih lanjut.

Kodular 

Firebase

 

Jika anda suka dengan perkongsian tutorial dalam blog kami ni, jangan lupa untuk follow Facebook dan Instagram kami, kat situ ada bermacam info dan update terkini yang akan kami kongsikan kepada anda. Itu sahaja untuk tutorial kami. Stay update dan selamat mencuba!

Unsure Whether You Need Our Help?

Have you got an awesome new idea or project that you want to talk about? We're here to talk you through it. Flick us an email or give us a call to get started.