Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include "MAX30105.h"
- #include "heartRate.h"
- #include <WiFiManager.h>
- #include <Arduino.h>
- #include <FirebaseESP32.h>
- #include <addons/TokenHelper.h>
- #include <addons/RTDBHelper.h>
- //********************************************************************
- String EPC_Number_string = "E280699500604F7332A7";
- //********************************************************************
- ///////////////firbase_setup//////////////////////////////////////////
- #define API_KEY "AIzaSyD-Vb49XEMVPtauYmnyJ7MRu39cQ5zFqL4"
- #define USER_EMAIL "tawaaf8@gmail.com"
- #define USER_PASSWORD "123456789"
- #define DATABASE_URL "tawaf-dc7b8-default-rtdb.firebaseio.com"
- #define DATABASE_SECRET "sgmO3Dwiwu9gkcdfkVOzbMjEIb3HBcj9GombYj4d"
- FirebaseData fbdo;
- FirebaseAuth auth;
- FirebaseConfig config;
- unsigned long dataMillis = 0;
- /////////////////////////////////////////////////////////////////////
- MAX30105 particleSensor;
- const byte RATE_SIZE = 4;
- byte rates[RATE_SIZE];
- byte rateSpot = 0;
- long lastBeat = 0;
- float beatsPerMinute;
- int beatAvg;
- long irValue;
- long delta;
- void setup() {
- Serial.begin(115200);
- init_heart_rate_sensor();
- Connect_To_WiFi();
- firbase_setup();
- Serial.println("Hello world.");
- }
- void loop() {
- ReConnect_To_WiFi();
- read_heart_rate_sensor();
- }
- void Send_Data_To_Firebase(int Heart_Rate_AVERAGE) {
- if (millis() - dataMillis > 10000 && Firebase.ready()) {
- dataMillis = millis();
- String PATH = "/tags/";
- PATH += EPC_Number_string;
- PATH += "/Heart_Rate_Average";
- Serial.printf("Set String and Counter... %s\n", Firebase.setString(fbdo, PATH, String(Heart_Rate_AVERAGE)) ? "ok" : fbdo.errorReason().c_str());
- }
- }
- void init_heart_rate_sensor() {
- Serial.println("Initializing...");
- // Initialize sensor
- if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
- {
- Serial.println("MAX30105 was not found. Please check wiring/power. ");
- while (1);
- }
- Serial.println("Place your index finger on the sensor with steady pressure.");
- particleSensor.setup(); //Configure sensor with default settings
- particleSensor.enableDIETEMPRDY(); //Enable the temp ready interrupt. This is required.
- particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
- particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
- }
- void read_heart_rate_sensor() {
- irValue = particleSensor.getIR();
- if (checkForBeat(irValue) == true) {
- //We sensed a beat!
- delta = millis() - lastBeat;
- lastBeat = millis();
- beatsPerMinute = 60 / (delta / 1000.0);
- if (beatsPerMinute < 255 && beatsPerMinute > 20) {
- rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array
- rateSpot %= RATE_SIZE; //Wrap variable
- //Take average of readings
- beatAvg = 0;
- for (byte x = 0 ; x < RATE_SIZE ; x++)
- beatAvg += rates[x];
- beatAvg /= RATE_SIZE;
- }
- }
- Serial.print("IR=");
- Serial.print(irValue);
- Serial.print(", BPM=");
- Serial.print(beatsPerMinute);
- Serial.print(", Avg BPM=");
- Serial.print(beatAvg);
- Send_Data_To_Firebase(beatAvg);
- if (irValue < 50000)
- Serial.print(" No finger?");
- Serial.println();
- }
- void ReConnect_To_WiFi() {
- while (WiFi.status() != WL_CONNECTED) {
- Serial.print(".");
- Connect_To_WiFi();
- }
- }
- void Connect_To_WiFi() {
- WiFiManager wm;
- bool res;
- res = wm.autoConnect("Senior Project [Setup WiFi]"); // password protected ap
- if (!res) {
- Serial.println("Failed to Connect!!");
- // ESP.restart();
- }
- else {
- //if you get here you have connected to the WiFi
- Serial.println("Connected...");
- }
- }
- void firbase_setup() {
- Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);
- config.api_key = API_KEY;
- auth.user.email = USER_EMAIL;
- auth.user.password = USER_PASSWORD;
- config.database_url = DATABASE_URL;
- Firebase.reconnectWiFi(true);
- fbdo.setResponseSize(4096);
- String base_path = "/UsersData/";
- config.token_status_callback = tokenStatusCallback; // see addons/TokenHelper.h
- config.max_token_generation_retry = 5;
- Firebase.begin(&config, &auth);
- String var = "$userId";
- String val = "($userId === auth.uid && auth.token.premium_account === true && auth.token.admin === true)";
- Firebase.setReadWriteRules(fbdo, base_path, var, val, val, DATABASE_SECRET);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement