Skip to content

Arduino Firebase

enyung edited this page Jul 24, 2021 · 3 revisions
  • firebase에 센서 정보 보내기
#include "FirebaseArduino.h"
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

// Set these to run example.
#define FIREBASE_HOST "pinkvoice-a68f3-default-rtdb.firebaseio.com"
#define FIREBASE_AUTH ""
#define WIFI_SSID "hellojihyoung"
#define WIFI_PASSWORD "10011001"

ESP8266WebServer server(80);

int Led = 3;
int rec = 5;
int playe = 4;
int command;
int FSRsensor = A0;
int value = 0;

void handleRoot() {
  //digitalWrite(led, 1);
  server.send(200, "text/plain", "hello from esp8266!");
  //digitalWrite(led, 0);
}


void handleNotFound() {
  //digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  //digitalWrite(led, 0);
}

void setup() {
  pinMode(Led, OUTPUT);
  pinMode(rec, INPUT);
  pinMode(playe,OUTPUT);

  Serial.println("*********command**********");
  Serial.println("1. record 10sec");
  Serial.println("2. play");
  
  //pinMode(led, OUTPUT);
  //digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(WIFI_SSID);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.on("/gif", []() {
    static const uint8_t gif[] PROGMEM = {
      0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x10, 0x00, 0x10, 0x00, 0x80, 0x01,
      0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x00,
      0x10, 0x00, 0x10, 0x00, 0x00, 0x02, 0x19, 0x8c, 0x8f, 0xa9, 0xcb, 0x9d,
      0x00, 0x5f, 0x74, 0xb4, 0x56, 0xb0, 0xb0, 0xd2, 0xf2, 0x35, 0x1e, 0x4c,
      0x0c, 0x24, 0x5a, 0xe6, 0x89, 0xa6, 0x4d, 0x01, 0x00, 0x3b
    };
    char gif_colored[sizeof(gif)];
    memcpy_P(gif_colored, gif, sizeof(gif));
    // Set the background to a random set of colors
    gif_colored[16] = millis() % 256;
    gif_colored[17] = millis() % 256;
    gif_colored[18] = millis() % 256;
    server.send(200, "image/gif", gif_colored, sizeof(gif_colored));
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

  // 초기화 값 디비에 보내기 (센서 값)
  Firebase.setFloat("Seats/seat1/sensorValue", 0);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);

  // 초기화 값 디비에 보내기 (0, 1)
  Firebase.setInt("Seats/seat1/isSitValue", 0);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);

  // 초기화 값 디비에 보내기 (true, false)
  Firebase.setBool("Seats/seat1/isSit", false);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);
}

int n = 0;

void loop() {
  value = analogRead(FSRsensor);
  Serial.println(value);
  value = map(value, 0, 1023, 0, 255);
  analogWrite(Led, value);
  delay(1000);

  // 압력센서 디비에 보내기
  Firebase.setFloat("Seats/seat1/sensorValue", value);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);
    
  if(value>=50)
  {
    Serial.println("play the record");
    digitalWrite(playe,HIGH);
    delay(10);
    digitalWrite(playe,LOW);

    // 착석 여부 디비에 보내기 (1, 0)
    Firebase.setInt("Seats/seat1/isSitValue", 1);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);

    // 착석 여부 디비에 보내기(true, false)
    Firebase.setBool("Seats/seat1/isSit", true);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);
  }

  if(value<50)
  {
    // 착석 여부 디비에 보내기 (1, 0)
    Firebase.setInt("Seats/seat1/isSitValue", 0);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);

    // 착석 여부 디비에 보내기(true, false)
    Firebase.setBool("Seats/seat1/isSit", false);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);
  }
  
  server.handleClient();
  MDNS.update();
}
  • 임산부 인증 추가
#include "FirebaseArduino.h"
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

// Set these to run example.
#define FIREBASE_HOST "pinkvoice-a68f3-default-rtdb.firebaseio.com"
#define FIREBASE_AUTH ""
#define WIFI_SSID "KT_starbucks"
#define WIFI_PASSWORD ""

ESP8266WebServer server(80);

int Led = 3;
int rec = 5;
int playe = 4;
int command;
int FSRsensor = A0;
int value = 0;

void handleRoot() {
  //digitalWrite(led, 1);
  server.send(200, "text/plain", "hello from esp8266!");
  //digitalWrite(led, 0);
}


void handleNotFound() {
  //digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  //digitalWrite(led, 0);
}

void setup() {
  pinMode(Led, OUTPUT);
  pinMode(rec, INPUT);
  pinMode(playe,OUTPUT);

  Serial.println("*********command**********");
  Serial.println("1. record 10sec");
  Serial.println("2. play");
  
  //pinMode(led, OUTPUT);
  //digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(WIFI_SSID);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.on("/gif", []() {
    static const uint8_t gif[] PROGMEM = {
      0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x10, 0x00, 0x10, 0x00, 0x80, 0x01,
      0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x00,
      0x10, 0x00, 0x10, 0x00, 0x00, 0x02, 0x19, 0x8c, 0x8f, 0xa9, 0xcb, 0x9d,
      0x00, 0x5f, 0x74, 0xb4, 0x56, 0xb0, 0xb0, 0xd2, 0xf2, 0x35, 0x1e, 0x4c,
      0x0c, 0x24, 0x5a, 0xe6, 0x89, 0xa6, 0x4d, 0x01, 0x00, 0x3b
    };
    char gif_colored[sizeof(gif)];
    memcpy_P(gif_colored, gif, sizeof(gif));
    // Set the background to a random set of colors
    gif_colored[16] = millis() % 256;
    gif_colored[17] = millis() % 256;
    gif_colored[18] = millis() % 256;
    server.send(200, "image/gif", gif_colored, sizeof(gif_colored));
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

  // 초기화 값 디비에 보내기 (센서 값)
  Firebase.setFloat("Seats/seat1/sensorValue", 0);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);

  // 초기화 값 디비에 보내기 (0, 1)
  Firebase.setInt("Seats/seat1/isSitValue", 0);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);

  // 초기화 값 디비에 보내기 (true, false)
  Firebase.setBool("Seats/seat1/isSit", false);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);
}

int n = 0;

void loop() {
  value = analogRead(FSRsensor);
  Serial.println(value);
  value = map(value, 0, 1023, 0, 255);
  analogWrite(Led, value);
  delay(1000);

  // 압력센서 디비에 보내기
  Firebase.setFloat("Seats/seat1/sensorValue", value);
  if(Firebase.failed()) {
    Serial.print("setting /number failed:");
    Serial.println(Firebase.error());
    return;
  }
  delay(1000);
    
  if(value>=10)
  {
    if(Firebase.getString("Seats/seat1/seatUser")=="") {
      Serial.println("play the record");
      digitalWrite(playe,HIGH);
      delay(10);
      digitalWrite(playe,LOW);
    }
    
    // 착석 여부 디비에 보내기 (1, 0)
    Firebase.setInt("Seats/seat1/isSitValue", 1);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);

    // 착석 여부 디비에 보내기(true, false)
    Firebase.setBool("Seats/seat1/isSit", true);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);
  }

  if(value<10)
  {
    // 착석 여부 디비에 보내기 (1, 0)
    Firebase.setInt("Seats/seat1/isSitValue", 0);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);

    // 착석 여부 디비에 보내기(true, false)
    Firebase.setBool("Seats/seat1/isSit", false);
    if(Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());
      return;
    }
    delay(1000);
  }
  
  server.handleClient();
  MDNS.update();
}

Clone this wiki locally