Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <RTClib.h>
- #include "SSD1306Wire.h"
- #include <ESP8266WiFi.h>
- #include <SoftwareSerial.h>
- #include <FirebaseESP8266.h>
- #include <addons/RTDBHelper.h>
- #include <addons/TokenHelper.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #define onewirepin D6
- OneWire oneWire(onewirepin);
- DallasTemperature sensors(&oneWire);
- DeviceAddress Probe = { 0x28, 0x2F, 0xE1, 0x49, 0xF6, 0x1F, 0x3C, 0x5D };
- //////////////////////////////////////////////////////////////////////
- #define WIFI_SSID "network"
- #define WIFI_PASSWORD "123456789"
- #define API_KEY "AIzaSyCz8k4yj9UiMvfkO6sP66cEIKdyWJLBbJQ"
- #define DATABASE_URL "smartwatch-37f35-default-rtdb.firebaseio.com"
- #define USER_EMAIL "project9686firebase@gmail.com"
- #define USER_PASSWORD "123456789"
- /////////////////////////////////////////////////////////////////////
- FirebaseData fbdo;
- FirebaseAuth auth;
- FirebaseConfig config;
- unsigned long sendDataPrevMillis = 0;
- #define RX D1
- #define TX D3
- RTC_DS3231 rtc;
- SoftwareSerial ss(RX, TX);
- SSD1306Wire display(0x3C, D2, D5);
- String timee;
- String dayyy;
- const int MPU = 0x69;//0x69 [with jumper]
- int16_t Tmp, GyX, GyY, GyZ;
- char c;
- String dataIn;
- int8_t indexOfA, indexOfB;
- String data1, data2;
- float tempC;
- void setup() {
- Serial.begin(9600);
- ss.begin(9600);
- sensors.begin (); // Initialize the sensor and set resolution level
- sensors.setResolution(Probe, 10);
- initOLED();
- initRTC();
- initGyro();
- 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);
- /* Assign the api key (required) */
- config.api_key = API_KEY;
- /* Assign the user sign in credentials */
- auth.user.email = USER_EMAIL;
- auth.user.password = USER_PASSWORD;
- /* Assign the RTDB URL (required) */
- config.database_url = DATABASE_URL;
- /* Assign the callback function for the long running token generation task */
- config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h
- //Or use legacy authenticate method
- //config.database_url = DATABASE_URL;
- //config.signer.tokens.legacy_token = "<database secret>";
- Firebase.begin(&config, &auth);
- Firebase.reconnectWiFi(true);
- #if defined(ESP8266)
- fbdo.setBSSLBufferSize(512, 2048);
- #endif
- }
- void loop() {
- getTimeAndDate();
- Gyroscope();
- sensors.requestTemperatures(); // Command all devices on bus to read temperature
- Serial.print("Temperature is: ");
- printTemperature(Probe);
- Serial.println();
- while (ss.available() > 0) {
- c = ss.read();
- if (c == '\n') {
- break;
- }
- else {
- dataIn += c;
- }
- }
- if (c == '\n') {
- parseData();
- ShowRxData();
- if (Firebase.ready() && (millis() - sendDataPrevMillis > 1000 || sendDataPrevMillis == 0))
- {
- sendDataPrevMillis = millis();
- Serial.print("Set String... ");
- Firebase.setString(fbdo, "/HR", data1);
- Firebase.setString(fbdo, "/O2", data2);
- Firebase.setString(fbdo, "/Temp", String(tempC));
- //Firebase.setIntAsync(fbdo, "/Distance", count);
- Serial.println("ok");
- }
- if ( GyY > -500 && GyY < 500 ) {
- ShowOLED();
- }
- else {
- display.clear();
- display.display();
- }
- resetData();
- }
- }
- void parseData() {
- indexOfA = dataIn.indexOf("A");
- indexOfB = dataIn.indexOf("B");
- data1 = dataIn.substring(0, indexOfA);
- data2 = dataIn.substring(indexOfA + 1, indexOfB);
- }
- void ShowRxData() {
- Serial.println("HR: " + data1);
- Serial.println("O2: " + data2);
- Serial.println("####################");
- }
- void resetData() {
- c = 0;
- dataIn = "";
- }
- void ShowOLED() {
- display.clear();
- display.setFont(ArialMT_Plain_10);//Size: 10 / 16 / 24
- display.setTextAlignment(TEXT_ALIGN_CENTER);
- display.drawString(64, 0, String("HR: " + data1));
- display.drawString(64, 13, String("O2: " + data2 + "%"));
- display.drawString(64, 26, String(timee));
- display.drawString(64, 38, String(dayyy));
- display.drawString(64, 50, String(tempC));
- display.display();
- delay(10);
- }
- void Gyroscope() {
- Wire.beginTransmission(MPU);
- Wire.write(0x3B);
- Wire.endTransmission(false);
- Wire.requestFrom(MPU, 12, true);
- GyX = Wire.read() << 8 | Wire.read();
- GyY = Wire.read() << 8 | Wire.read();
- GyZ = Wire.read() << 8 | Wire.read();
- Serial.print("Gyroscope: ");
- Serial.print("X = "); Serial.print(GyX);
- Serial.print(" | Y = "); Serial.print(GyY);
- Serial.print(" | Z = "); Serial.println(GyZ);
- Serial.println(" ");
- delay(333);
- }
- void initOLED() {
- display.init();
- display.flipScreenVertically();
- display.setFont(ArialMT_Plain_10);
- }
- void initRTC() {
- if (! rtc.begin()) {
- Serial.println("Couldn't find RTC");
- Serial.flush();
- while (1) delay(10);
- }
- if (rtc.lostPower()) {
- Serial.println("RTC lost power, let's set the time!");
- rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
- //rtc.adjust(DateTime(2022, 8, 6, 18, 58, 0));
- }
- }
- void initGyro() {
- Wire.begin();
- Wire.beginTransmission(MPU);
- Wire.write(0x6B);
- Wire.write(0);
- Wire.endTransmission(true);
- }
- void getTimeAndDate() {
- DateTime now = rtc.now();
- timee = "";
- timee += now.hour();
- timee += ':';
- timee += now.minute();
- timee += ':';
- timee += now.second();
- dayyy = "";
- dayyy += (now.year());
- dayyy += '/';
- dayyy += (now.month());
- dayyy += '/';
- dayyy += (now.day());
- }
- void printTemperature(DeviceAddress deviceAddress)
- {
- tempC = sensors.getTempC(deviceAddress);
- if (tempC == -127.00)
- {
- Serial.print ("Error getting temperature");
- }
- else
- {
- Serial.print ("C: ");
- Serial.println (tempC);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement