Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino BMP180 Tire Pressure Monitoring System with LCD Display and NRF24L01 Wireless Transmission

View and Edit Project In Cirkit DesignerImage of Arduino BMP180 Tire Pressure Monitoring System with LCD Display and NRF24L01 Wireless Transmission

Circuit Documentation

Summary

This circuit is designed to function as a Tire Pressure Monitoring System (TPMS). It utilizes a BMP180 sensor to read temperature and pressure data, an ATmega328P microcontroller to process the data, a 16x2 LCD display to show the information, and an NRF24L01 module to transmit the data wirelessly. The system is powered by a 5V battery for the main components and a separate 3.3V battery for the NRF24L01 module. A resistor is used to limit the current to the LCD backlight.

Component List

BMP180 Sensor

ATmega328P IC

LCD Display 16x2

NRF24L01 Module

5V Battery

3.3V Battery

Resistor

Wiring Details

BMP180 Sensor

ATmega328P IC

LCD Display 16x2

NRF24L01 Module

Resistor

Documented Code

/*
 * Tire Pressure Monitoring System
 * This Arduino sketch reads temperature and pressure data from a BMP180 sensor,
 * displays the data on a 16x2 LCD, and transmits the data via an NRF24L01 module.
 */

#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <SPI.h>
#include <RF24.h>
#include <LiquidCrystal.h>

// BMP180 sensor
Adafruit_BMP085 bmp;

// NRF24L01 module
RF24 radio(9, 10); // CE, CSN

// LCD Display 16x2
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup() {
  // Initialize serial communication
  Serial.begin(9600);

  // Initialize BMP180 sensor
  if (!bmp.begin()) {
    Serial.println("Could not find a valid BMP180 sensor, check wiring!");
    while (1) {}
  }

  // Initialize NRF24L01 module
  radio.begin();
  radio.setPALevel(RF24_PA_LOW);
  radio.openWritingPipe(0xF0F0F0F0E1LL);
  radio.stopListening();

  // Initialize LCD display
  lcd.begin(16, 2);
  lcd.print("Initializing...");
}

void loop() {
  // Read temperature and pressure from BMP180
  float temperature = bmp.readTemperature();
  float pressure = bmp.readPressure();

  // Print data to serial monitor
  Serial.print("Temperature = ");
  Serial.print(temperature);
  Serial.println(" *C");

  Serial.print("Pressure = ");
  Serial.print(pressure);
  Serial.println(" Pa");

  // Display data on LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Pressure: ");
  lcd.print(pressure);
  lcd.print(" Pa");

  // Send data via NRF24L01
  radio.write(&temperature, sizeof(temperature));
  radio.write(&pressure, sizeof(pressure));

  // Wait for a second before next loop
  delay(1000);
}

This code is responsible for initializing the BMP180 sensor, NRF24L01 module, and LCD display. It reads temperature and pressure data from the BMP180 sensor, displays it on the LCD, and transmits it wirelessly using the NRF24L01 module. The code includes error handling for sensor initialization and uses serial communication for debugging purposes.