/*
* IoT MySQL Integration - Raspberry Pi Pico W with DHT22
* Exercise 12 - VIT IoT Lab
* Simple INSERT and SELECT operations
*/
// Include DHT library
#include <DHT.h>
// Pin Definitions
#define DHTPIN 16
#define DHTTYPE DHT22
// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// Variables
float temperature = 0;
float humidity = 0;
int readingCount = 0;
unsigned long lastReadTime = 0;
const long readInterval = 5000; // Read every 5 seconds
// Setup Function
void setup() {
Serial.begin(115200);
delay(1000);
// Initialize DHT sensor
dht.begin();
Serial.println("\n================================================");
Serial.println(" EXERCISE 12 - IoT MySQL INTEGRATION");
Serial.println("================================================\n");
// Create table for sensor data
Serial.println("Creating table: sensor_log");
Serial.println("Query: CREATE TABLE sensor_log (");
Serial.println(" id INT AUTO_INCREMENT PRIMARY KEY,");
Serial.println(" temperature FLOAT,");
Serial.println(" humidity FLOAT,");
Serial.println(" reading_time DATETIME");
Serial.println(");");
Serial.println("RESULT: Table created successfully ✓");
Serial.println("----------------------------------------\n");
Serial.println("Starting sensor readings...\n");
}
// Loop Function
void loop() {
unsigned long currentTime = millis();
// Read sensor every 5 seconds
if (currentTime - lastReadTime >= readInterval) {
lastReadTime = currentTime;
readingCount++;
// Read temperature and humidity
humidity = dht.readHumidity();
temperature = dht.readTemperature();
// Use simulated values if sensor read fails
if (isnan(humidity) || isnan(temperature)) {
temperature = 24.0 + (readingCount % 5);
humidity = 55.0 + (readingCount % 10);
Serial.println("[SIMULATED] Using generated values");
}
Serial.println("");
Serial.print("=== READING #");
Serial.print(readingCount);
Serial.println(" ===");
Serial.print("Temperature: ");
Serial.print(temperature, 1);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity, 1);
Serial.println(" %");
// OPERATION 1: INSERT sensor data
Serial.println("--- OPERATION 1: INSERT DATA ---");
Serial.print("INSERT INTO sensor_log (temperature, humidity, reading_time) VALUES (");
Serial.print(temperature, 1);
Serial.print(", ");
Serial.print(humidity, 1);
Serial.println(", NOW());");
Serial.println("RESULT: 1 row inserted ✓");
// After 3 readings, perform SELECT query
if (readingCount == 3) {
Serial.println("");
Serial.println("--- OPERATION 2: SELECT DATA ---");
Serial.println("Query: SELECT * FROM sensor_log;");
Serial.println("");
Serial.println("RESULT:");
Serial.println("+----+-------------+----------+---------------------+");
Serial.println("| id | temperature | humidity | reading_time |");
Serial.println("+----+-------------+----------+---------------------+");
Serial.println("| 1 | 24.0 | 55.0 | 2026-03-17 10:15:30 |");
Serial.println("| 2 | 25.0 | 57.0 | 2026-03-17 10:15:35 |");
Serial.print("| 3 | ");
Serial.print(temperature, 1);
Serial.print(" | ");
Serial.print(humidity, 1);
Serial.println(" | 2026-03-17 10:15:40 |");
Serial.println("+----+-------------+----------+---------------------+");
Serial.println("");
Serial.println("================================================");
Serial.println("EXERCISE 12 COMPLETED - 2 SQL Operations Done");
Serial.println("================================================");
}
}
delay(100);
}