VAIBHAV DUBEY
Published © GPL3+

Arduino Unified Real-time Analytics

(Arduino Unified Real-time Analytics) is an IoT-based multi-sensor monitoring system using Arduino R4 WiFi.

BeginnerFull instructions provided10 hours104
Arduino Unified Real-time Analytics

Things used in this project

Hardware components

Arduino UNO R4 WiFi
Arduino UNO R4 WiFi
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

Untitled file

C/C++
#include <WiFiS3.h>         // For Arduino UNO R4 WiFi
#include "ThingSpeak.h"
#include <DHT.h>
#include <Adafruit_BMP085.h> // BMP180 compatible

// -------- WiFi & ThingSpeak Config --------
char ssid[] = "YOUR_WIFI_SSID";
char pass[] = "YOUR_WIFI_PASSWORD";
WiFiClient client;

unsigned long myChannelNumber = YOUR_CHANNEL_ID;
const char * myWriteAPIKey = "YOUR_WRITE_API_KEY";

// -------- Sensor Pins --------
#define DHTPIN 2
#define DHTTYPE DHT11
#define IR_PIN 3
#define TRIG_PIN 4
#define ECHO_PIN 5

// -------- Sensor Objects --------
DHT dht(DHTPIN, DHTTYPE);
Adafruit_BMP085 bmp;

// -------- Variables --------
float temperature, humidity, pressure, altitude, distance;
int motion;

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

  // Start DHT
  dht.begin();

  // Start BMP180
  if (!bmp.begin()) {
    Serial.println("BMP180 not detected!");
    while (1);
  }

  // IR sensor
  pinMode(IR_PIN, INPUT);

  // Ultrasonic sensor
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  // WiFi connection
  WiFi.begin(ssid, pass);
  Serial.print("Connecting to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nConnected to WiFi.");

  ThingSpeak.begin(client);
}

void loop() {
  // Read DHT11
  temperature = dht.readTemperature();
  humidity = dht.readHumidity();

  // Read BMP180
  pressure = bmp.readPressure() / 100.0; // hPa
  altitude = bmp.readAltitude();

  // Read IR sensor
  motion = digitalRead(IR_PIN);

  // Read Ultrasonic
  distance = getDistance();

  // Debug print
  Serial.print("Temp: "); Serial.print(temperature); Serial.print(" °C  ");
  Serial.print("Humidity: "); Serial.print(humidity); Serial.print(" %  ");
  Serial.print("Pressure: "); Serial.print(pressure); Serial.print(" hPa  ");
  Serial.print("Altitude: "); Serial.print(altitude); Serial.print(" m  ");
  Serial.print("Motion: "); Serial.print(motion);
  Serial.print("  Distance: "); Serial.print(distance); Serial.println(" cm");

  // Send to ThingSpeak
  ThingSpeak.setField(1, temperature);
  ThingSpeak.setField(2, humidity);
  ThingSpeak.setField(3, pressure);
  ThingSpeak.setField(4, altitude);
  ThingSpeak.setField(5, motion);
  ThingSpeak.setField(6, distance);

  int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  if (x == 200) {
    Serial.println("Data sent to ThingSpeak.");
  } else {
    Serial.print("Error sending data: ");
    Serial.println(x);
  }

  delay(20000); // ThingSpeak minimum update interval
}

float getDistance() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH);
  return duration * 0.0343 / 2; // cm
}

Credits

VAIBHAV DUBEY
10 projects • 7 followers
Aspiring hardware engineer focused on embedded systems, high‑reliability circuit design, and PCB layout for IoT and robotics projects.

Comments