Hackster is hosting Hackster Cafe: Open Hardware Summit. Watch the stream live on Friday!Hackster is hosting Hackster Cafe: Open Hardware Summit. Stream on Friday!
rene123456
Published © MIT

Send sensor data from one Arduino to another using Firebase

Connect two Arduinos via Firebase real-time database to send sensor data from one and display it onto an LCD in the other one.

IntermediateFull instructions provided11,271
Send sensor data from one Arduino to another using Firebase

Things used in this project

Story

Read more

Code

lcd_arduino.ino

Arduino
Arduino_LCD_Code
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
LiquidCrystal_I2C lcd(0x3F, 20, 4);
String values, sensor_data;

void setup() {
  Serial.begin(9600);
  delay(2000);
  // set up the LCD's number of columns and rows:
  lcd.begin(20, 4);
  // Print a message to the LCD.
  lcd.init(); // initialize the lcd
  lcd.backlight();
  delay(2000);
  lcd.setCursor(0, 0); lcd.print("Temperature: " );
  delay(10);
  lcd.setCursor(18, 0); lcd.print("C");
  delay(10);

  lcd.setCursor(0, 1); lcd.print("Humidity: ");
  delay(10);
  lcd.setCursor(15, 1); lcd.print("%");
  delay(2000);

}

void loop() {


  bool Sr = false;

  while (Serial.available()) {

    //get sensor data from serial put in sensor_data
    sensor_data = Serial.readString();
    Sr = true;

  }

  delay(1000);

  if (Sr == true) {

    values = sensor_data;

    //get sensors data from values variable by spliting by commas and put in to variables
    String temperature = values.substring(0, 5);
    String humidity = values.substring(6, 11);


    initialize();
    lcd.setCursor(13, 0);
    delay(10);
    lcd.print(temperature);//set cursor to print temperature
    delay(10);
    lcd.setCursor(10, 1);
    delay(10);
    lcd.print(humidity);

  }
  delay(2000);

}
void initialize() {
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Temperature: " );
  delay(10);
  lcd.setCursor(18, 0); lcd.print("C");
  delay(10);

  lcd.setCursor(0, 1); lcd.print("Humidity: ");
  delay(10);
  lcd.setCursor(15, 1); lcd.print("%");
}

lcd_esp8266.ino

Arduino
ESP8266_LCD_Code
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>


#define FIREBASE_HOST "YOUR_FIREBASE_LINK"
#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"

String values;

void setup() {
  Serial.begin(9600);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);


}

void loop() {


  String temperature = Firebase.getString("temperature");
  String humidity = Firebase.getString("humidity");

  temperature = temperature.substring(0, 5);
  humidity = humidity.substring(0, 5);
  values = (temperature + humidity);
  delay(10);


  // always flush before printing
  Serial.flush();
  delay(1000);

  Serial.print(values);
  delay(1000);


}

sensor_arduino.ino

Arduino
Arduino_Sensor_Code
#include <SoftwareSerial.h>
#include <dht.h>
#define dht_apin A0

dht DHT;
String values;

void setup() {
  Serial.begin(9600);
  delay(5000); //Delay to let system boot

}

void loop() {

  DHT.read11(dht_apin);
  values = (String(DHT.temperature) + ',' + String(DHT.humidity));
  delay(10);
  
  Serial.flush();
  delay(1000);

  // sent sensors data to serial (sent sensors data to ESP8266)
  Serial.print(values);
  delay(2000);

}

sensor_esp8266.ino

Arduino
Sensor_ESP8266_Code
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>

#define FIREBASE_HOST "YOUR_FIREBASE_LINK"
#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"

String sensor_data, values;

void setup() {


  delay(1000);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  Serial.begin(9600);
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

}

void loop() {

  bool Sr = false;

  while (Serial.available()) {

    //get sensor data from serial put in sensor_data
    sensor_data = Serial.readString();
    Sr = true;

  }

  delay(1000);

  if (Sr == true) {

    values = sensor_data;

    //get comma indexes from values variable
    int fristCommaIndex = values.indexOf(',');
    int secondCommaIndex = values.indexOf(',', fristCommaIndex + 1);

    //get sensors data from values variable by  spliting by commas and put in to variables
    String temperature = values.substring(0, fristCommaIndex);
    String humidity = values.substring(fristCommaIndex + 1, secondCommaIndex);

    //store ultrasonic sensor data as string in firebase
    Firebase.setString("temperature", temperature);
    delay(10);
    //store IR sensor 1 data as string in firebase
    Firebase.setString("humidity", humidity);
    delay(10);
    
    //store previous sensors data as string in firebase

    delay(1000);

    if (Firebase.failed()) {
      return;
    }

  }
}

Credits

rene123456
0 projects • 1 follower
Contact

Comments

Please log in or sign up to comment.