Skip to content

Arduino BMP180: Real-Time Dashboard with Node-RED | ShillehTek

June 20, 2025

Video Tutorial (Optional)

Watch first if you want the full build in real time.

Project Overview

Build a Real-Time BMP180 Dashboard: Use an Arduino with a BMP180 pressure and temperature sensor to send live readings to Node-RED so you can view a real-time temperature and pressure dashboard in your browser.

  • Time: 20 to 45 minutes
  • Skill level: Beginner to Intermediate
  • What you will build: A live web dashboard showing BMP180 temperature and pressure updates from an Arduino using USB serial and Node-RED
Screenshot of the Node-RED dashboard showing live temperature and pressure charts from BMP180 via Arduino
Live dashboard preview: temperature and pressure visualized in Node-RED.

Parts List

From ShillehTek

  • ShillehTek Pre-Soldered BMP180 sensor - breakout used to read temperature and pressure
  • Jumper wires - for wiring the sensor to the Arduino

External

  • Arduino Uno, Nano, or similar - runs the BMP180 reading sketch
  • Mac or PC with USB port - runs Node-RED and connects to the Arduino
  • Node.js (LTS) - required to install and run Node-RED

Note: The BMP180 breakout runs at 3.3V logic. Use the Arduino 3.3V pin for VCC or ensure proper level shifting on 5V boards. I2C pins vary by Arduino variant (A4/A5 on classic Uno).

Step-by-Step Guide

Step 1 - Install Node-RED

Goal: Install and start Node-RED locally so you can build the dashboard.

What to do: Install Node.js (LTS) from nodejs.org, then install Node-RED globally and start it.

Code:

npm install -g --unsafe-perm node-red

Code:

node-red

Expected result: Node-RED runs and the editor is available at http://localhost:1880.

Step 2 - Install Dashboard and Serial Nodes

Goal: Add the UI and serial support to Node-RED.

What to do: In the Node-RED editor, open the menu -> Manage palette -> Install, then install the following packages:

  • node-red-dashboard
  • node-red-node-serialport

Expected result: You will have ui_gauge, ui_chart, and serial nodes available in the palette to build the dashboard and read the Arduino.

Step 3 - Connect BMP180 to Arduino

Goal: Wire the BMP180 breakout to the Arduino over I2C so the sketch can read sensor data.

What to do: Wire the BMP180 as follows:

  • VCC -> 3.3V
  • GND -> GND
  • SDA -> A4
  • SCL -> A5

Expected result: The BMP180 is powered and connected to the Arduino I2C bus and ready for the sketch to initialize.

Step 4 - Upload Arduino Code

Goal: Run a sketch that reads temperature and pressure from the BMP180 and prints JSON to serial.

What to do: In the Arduino IDE install these libraries: Adafruit BMP085 Unified and Adafruit Unified Sensor. Then upload the sketch below.

Code:

#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
    Serial.println("Sensor not found!");
    while (1);
  }
}

void loop() {
  float temp = bmp.readTemperature();
  float pressure = bmp.readPressure() / 100.0;

  Serial.print("{\"temp\":");
  Serial.print(temp);
  Serial.print(",\"pressure\":");
  Serial.print(pressure);
  Serial.println("}");

  delay(2000);
}

Expected result: The Arduino prints JSON lines like {"temp":24.3,"pressure":1013.2} over serial at 9600 baud.

Step 5 - Build the Node-RED Flow

Goal: Read the serial JSON from the Arduino, parse it, and display temperature and pressure on the dashboard.

What to do: Create a flow with a serial in node, a json node, a ui_gauge for temperature, and a ui_chart for pressure. Add a function node to extract pressure for the chart.

Function node code:

return { payload: msg.payload.pressure };

Wiring in Node-RED:

[serial in] → [json] → [ui_gauge]
                        → [function] → [ui_chart]

Configuration notes: Set the serial in node to 9600 and select the correct COM/tty device for your Arduino. For the gauge use value {{msg.payload.temp}}.

Node-RED flow screenshot showing serial in, json, ui_gauge, function, and ui_chart nodes wired together
Example Node-RED flow: serial input parsed to dashboard gauge and chart.

Expected result: Parsed messages update the dashboard gauge and chart with live sensor values.

Step 6 - Deploy and View the Dashboard

Goal: Make the dashboard live and confirm data is flowing.

What to do: Click Deploy in Node-RED, then open http://localhost:1880/ui in your browser.

Expected result: You should see a live temperature gauge and a real-time pressure chart updating with readings from the BMP180.

Step 7 - Export and Share Your Flow

Goal: Save the flow so you can restore or share it later.

What to do: Select all nodes in the editor, right-click → Export → Clipboard, then save the JSON.

Expected result: You can re-import the flow or share it with others for quick replication.

Conclusion

You built a real-time temperature and pressure dashboard using an Arduino and a BMP180 sensor with Node-RED visualizations. The Arduino publishes JSON over serial and Node-RED parses and displays the data in gauges and charts.

Want the exact parts used in this build? Grab them from ShillehTek.com. If you want help customizing this project or building a production dashboard, hire us on UpWork: UpWork profile.