/********* Pleasedontcode.com **********
Pleasedontcode thanks you for automatic code generation! Enjoy your code!
- Terms and Conditions:
You have a non-exclusive, revocable, worldwide, royalty-free license
for personal and commercial use. Attribution is optional; modifications
are allowed, but you're responsible for code maintenance. We're not
liable for any loss or damage. For full terms,
please visit pleasedontcode.com/termsandconditions.
- Project: Climate Monitor
- Source Code NOT compiled for: Arduino Nano ESP32
- Source Code created on: 2024-10-02 21:47:47
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* Initialize internal Bluetooth device as master, */
/* receive BLE data, and show it on a 16x2 LCD using */
/* LiquidCrystal library for Arduino. */
/****** SYSTEM REQUIREMENT 2 *****/
/* read temperature and send it via bluetooth. */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
#include
#include //https://github.com/arduino-libraries/LiquidCrystal
#include //https://github.com/matmunk/DS18B20
#include //https://github.com/adafruit/DHT-sensor-library
#include // Library for Bluetooth serial communication
#include "LiquidCrystalDisplay.h" // Include custom library for LCD functionality
#include "DS18B20Sensor.h" // Include custom library for DS18B20 sensor functionality
#include "Adafruit_SSD1306_OLED.h" // Include OLED library
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void sendTemperature(); // Function to send the temperature via Bluetooth
void updateBluetoothDisplay(); // Function to update LCD with Bluetooth data
/***** DIGITAL INPUT/OUTPUT PINS *****/
const uint8_t temp_DS18B20_DQ_PIN_D8 = 8; // DS18B20 sensor pin
const uint8_t temperatureSensor_DHT22_DOUT_PIN_D9 = 9; // DHT22 sensor pin
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(temperatureSensor_DHT22_DOUT_PIN_D9, DHTTYPE); // Create a DHT sensor object
// LCD display pins
const uint8_t display_LCD1602_RS_PIN_D2 = 2;
const uint8_t display_LCD1602_E_PIN_D3 = 3;
const uint8_t display_LCD1602_D4_PIN_D4 = 4;
const uint8_t display_LCD1602_D5_PIN_D5 = 5;
const uint8_t display_LCD1602_D6_PIN_D6 = 6;
const uint8_t display_LCD1602_D7_PIN_D7 = 7;
// Create an instance for Bluetooth
BluetoothSerial SerialBT;
/****** DEFINITION OF LIBRARIES CLASS INSTANCES *****/
// Include and initialize the sensor libraries
DS18B20 ds(temp_DS18B20_DQ_PIN_D8); //create an instance for DS18B20
void setup(void) {
Serial.begin(9600); // Initialize serial communication
dht.begin(); // Initialize the DHT sensor
SerialBT.begin("ESP32_Bluetooth"); // Set Bluetooth device name
initializeLCD(); // Initialize the LCD display
}
void loop(void) {
sendTemperature(); // Send temperature data
updateBluetoothDisplay(); // Display data on LCD
delay(2000); // Wait before next loop to avoid flooding data
}
// Function to read temperature and send it via Bluetooth
void sendTemperature() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return; // Exit function if read failed
}
// Prepare message for Bluetooth
String message = String("Temp: ") + temperature + "°C Humidity: " + humidity + "%";
SerialBT.println(message); // Send message via Bluetooth
}
// Function to update the displayed message on the LCD
void updateBluetoothDisplay() {
if (SerialBT.available()) {
String inputMessage = SerialBT.readString(); // Read incoming message
displayData(inputMessage.c_str()); // Display message on the LCD
}
}
void displayData(const char* message) {
lcd.clear(); // Clear LCD
lcd.print(message); // Print Bluetooth message on LCD
}
/* END CODE */