Pada tutorial ini saya akan membagikan bagaimana cara streaming data online (IOT) dengan menggunakan arduino wemos D1 based ESP8266 dengan server Firebase dan dapat diakses melalui smartphone Android. Namun sebelum itu download dulu library ESP8266 pada arduino IDE kalian.
Berikut langkah-langkahnya :
1. Buat database baru pada Firebase anda, pada link berikut https://console.firebase.google.com.
Kemudian beri nama project anda "node-mcu firebase"
2. Kemudian atur pada setelan projek anda dan masuk ke akun layanan sesuai dengan gambar
dibawah ini:
Kemudian copy code tersebut dan simpan pada notepad
3. Kemudian pada database buat lah struktur data seperti pada gambar dibawah ini
Berikut langkah-langkahnya :
1. Buat database baru pada Firebase anda, pada link berikut https://console.firebase.google.com.
Kemudian beri nama project anda "node-mcu firebase"
2. Kemudian atur pada setelan projek anda dan masuk ke akun layanan sesuai dengan gambar
dibawah ini:
pada bagian akun layanan pilih rahasia basis data dan pilih tambahkan rahasaia
Kemudian copy code tersebut dan simpan pada notepad
3. Kemudian pada database buat lah struktur data seperti pada gambar dibawah ini
Kemudian setting aturan menjadi true
4. Kemudian download library arduino firebase master pada link berikut ini
5. Jangan lupa setting arduino board pada Wemos D1
6. Berikut program Arduino nya :
//
// Copyright 2015 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// FirebaseRoom_ESP8266 is a sample that demo using multiple sensors
// and actuactor with the FirebaseArduino library.
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
// Set these to run example.
#define FIREBASE_HOST "website firebase anda"
#define FIREBASE_AUTH "kode rahasia firebase"
#define WIFI_SSID "wifi_SSID_anda"
#define WIFI_PASSWORD "wifi_Password_anda"
const int lightSensorPin = A0;
float analog;
float sun;
void setup() {
Serial.begin(9600);
pinMode(lightSensorPin, INPUT);
// connect to wifi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("connected: ");
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Firebase.set("adc", 0);
Firebase.set("sunlight", 0);
}
int button = 0;
float light = 0.0;
void loop()
{
analog = analogRead(lightSensorPin);
sun = map(analog, 0,1023, 0, 100);
Firebase.set("adc", analog);
Firebase.set("sunlight", sun);
Serial.print(analog);
Serial.print(" # ");
Serial.print(sun);
Serial.println();
delay(100);
}
pada program saya setting websitenya seperti dibawah ini :
Hasilnya jadi seperti ini:
7. Kemudian pada program android nya berikut :
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.dimas.firebaseandroid.MainActivity"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView"
android:layout_centerHorizontal="true"
/> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_alignLeft="@+id/textView"
android:layout_alignStart="@+id/textView"
android:layout_marginTop="155dp" /> </RelativeLayout>
mainactivity.java :
package com.example.dimas.firebaseandroid; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.firebase.client.DataSnapshot; import com.firebase.client.Firebase; import com.firebase.client.FirebaseError; import com.firebase.client.ValueEventListener; public class MainActivity extends AppCompatActivity { Firebase a,b; Button btnOn,btnOff; TextView datain1,datain2; @Override
protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datain1=(TextView)findViewById(R.id.textView); datain2=(TextView)findViewById(R.id.textView2); Firebase.setAndroidContext(this); a = new Firebase("https://nodemcu-firebase-bfb59.firebaseio.com/adc"); b= new Firebase("https://nodemcu-firebase-bfb59.firebaseio.com/sunlight"); a.addValueEventListener(new ValueEventListener() { @Override
public void onDataChange(DataSnapshot snapshot) { System.out.println(snapshot.getValue()); Toast.makeText(getBaseContext(), "MASUK", Toast.LENGTH_SHORT).show(); datain1.setText(snapshot.toString()); } @Override
public void onCancelled(FirebaseError error) { }
});
b.addValueEventListener(new ValueEventListener() { @Override
public void onDataChange(DataSnapshot dataSnapshot1) { System.out.println(dataSnapshot1.getValue()); Toast.makeText(getBaseContext(), "MASUK", Toast.LENGTH_SHORT).show(); datain2.setText(dataSnapshot1.toString()); } @Override
public void onCancelled(FirebaseError firebaseError){ }
});
}
}
Berikut Hasilnya :
gan, pernah nampilin data realtime hasil dr sensing ke bentuk grafik di aplikasi android ga?yg dmn data yg ditampilin adalah data yg diambil dr firebase
ReplyDeleteUntuk yang menampilkan ke dalam bentuk grafik sudah saya floorkan di web saya mbak
Deleteoiya sama nanya juga, kenapa data dari arduino saya gamau masuk ya gan ke firebase?pdhl saya udh ngikutin sesuai instruksi dr agan, dan code gaada yg error. mohon bantuan gan, terimakasih
ReplyDeleteMaaf mbak saya baru bisa balas lama tidak buka blog, kemungkinan alamat wifi atau SSID nya salah mbak jadi Wemos nya gak bisa konek wifi. Semua sudah saya floor disini mbak insaallah bisa kok. Bisa saja di librarynya
Deletesaya coba pake arduino uno tapi library firebasenya ga cocok apa ya bos? error saat dicompie.
ReplyDeletesetahu saya hanya bisa make modul platform esp** di library firbase-arduino
Deletemas saya sudah ikuti instruksi diatas tapi serial monitor IDE nya udh berubah2 sesuai cahaya tapi di firebasenya gaberubah2 seperti serial monitor IDE itu kenapa ya kendalanya ? terimakasih
ReplyDeletebisa saja pengaruh komunikasi internetnya mas. Usahakan cukup sinyalnya.
Deletemas, kalo pakai 2 sensor gimana ?
ReplyDeleteprogramnya dipisah apa digabung
kalau pakai dua sensor sama seperti di atas tapi harus sesuai format kirim protokolnya. Biar nanti di androidnya bisa tau sensor yang nomor 1 sma 2 yang mana
Deletegan pake arduino NANO bisa nggak? pake esp 8266 yang 01?
ReplyDeletekalau pakai Nano bisa aja asal tetep pakek ESP8266 atau modul wifi lain. ntar data nya kirim dari rx/tx nano ke modul wifi. Saya pakai wemos karena kan udah include di dalamnya esp8266 jadi lebih simpel
DeleteThis comment has been removed by the author.
ReplyDeleteMas kalau untuk mengkoneksikanke raspbarry bagaimana yah mas apakah bsa saya lagi mengerjakan Raspbarry koneksi ke googl maps
ReplyDeletebisa mas tinggal nanti masukkan platform service nya google maps ke ke android, tapi harus daftar dulu di google API klo gk salah namanya. Klo raspeberry misal buat komunikasi data mending pakai node JS aja lebih mudah. Bisa di chechk di Tutorial saya yg raspberry ke node JS.
Deletemas kalo firebasenya gk dibuka apakah masih tetep bisa ngirim data ke androidnya?
ReplyDeletegak papa mas kan firebase cuma ngecheck database yg masuk
DeleteKalo pake esp32 bisa ?
ReplyDeletebisa mas, hampir sama kok cuma kalau pakai wemos D1 ini lebih praktis
ReplyDelete