Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Title

SMART ENERGY METER

Overview

This project simulates a smart energy meter that measures consumption, calculates bills, stores data, and sends it to a server.

Features

  • Real-time energy reading
  • Bill calculation
  • Data storage
  • Alerts for high usage
  • Cloud communication
  • Firmware updates

System Architecture

  1. Sensor Module
  2. Microcontroller
  3. Display
  4. Communication Module
  5. Storage

Pseudocode


BEGIN SmartEnergyMeter

    // Initialization
    INIT_SYSTEM()
    INIT_LCD()
    INIT_SENSOR()
    INIT_COMMUNICATION_MODULE()
    INIT_MEMORY()

    // Main loop
    WHILE systemIsOn
        currentUsage = READ_ENERGY_USAGE()         // Read energy from meter sensor
        totalConsumption += currentUsage           // Accumulate total consumption

        cost = CALCULATE_BILL(totalConsumption)   // Compute current bill
        DISPLAY_ON_LCD(currentUsage, totalConsumption, cost) // Update LCD

        STORE_DATA(currentUsage, timestamp)       // Log data locally

        IF usageThresholdExceeded(totalConsumption)
            ALERT_USER("High energy consumption!")   // Notify user

        IF FAULT_DETECTED()
            ALERT_USER("System fault detected!")     // Notify user of errors
            LOG_FAULT(timestamp, errorCode)

        IF TIME_TO_SYNC()
            SYNC_TIME()                            // Ensure accurate timestamps

        IF CONNECTION_AVAILABLE()
            SEND_DATA_TO_SERVER(currentUsage, totalConsumption, cost, timestamp)

        IF FIRMWARE_UPDATE_AVAILABLE()
            UPDATE_FIRMWARE()                      // OTA update if needed

        WAIT(interval)                             // Small delay before next reading
    END_WHILE

END SmartEnergyMeter


// --- Function Definitions ---

FUNCTION INIT_SYSTEM()
    // Initialize all peripherals, timers, and communication modules
END_FUNCTION

FUNCTION READ_ENERGY_USAGE()
    // Read sensor data, apply calibration, return value in kWh
END_FUNCTION

FUNCTION CALCULATE_BILL(consumption)
    // Multiply consumption by current tariff rate
    RETURN consumption * tariffRate
END_FUNCTION

FUNCTION DISPLAY_ON_LCD(current, total, cost)
    // Show real-time consumption, total, and current cost on display
END_FUNCTION

FUNCTION STORE_DATA(current, timestamp)
    // Save reading to local memory or SD card
END_FUNCTION

FUNCTION ALERT_USER(message)
    // Send SMS, email, or app notification
END_FUNCTION

FUNCTION FAULT_DETECTED()
    // Check for tampering, overload, or sensor failure
    RETURN TRUE or FALSE
END_FUNCTION

FUNCTION SYNC_TIME()
    // Sync RTC with NTP server or GSM network
END_FUNCTION

FUNCTION SEND_DATA_TO_SERVER(current, total, cost, timestamp)
    // Upload readings to cloud or server
END_FUNCTION

FUNCTION UPDATE_FIRMWARE()
    // Download and flash new firmware
END_FUNCTION

FUNCTION usageThresholdExceeded(consumption)
    // Return TRUE if consumption exceeds pre-defined limit
END_FUNCTION

---

## Simulation (console)

To build and run the simple console simulation (gcc):

```bash
gcc main.c calculations.c sensors.c -o smart_sim -lm
./smart_sim

This runs a short simulated loop that prints readings, history stats, and demonstrates the optional Bluetooth/WiFi send stubs.

Running the simulation

Build and run (desktop):

gcc main.c calculations.c sensors.c bluetooth.c wifi.c -o smart_sim -lm
# default: 30 samples at 1s intervals
./smart_sim
# run 100 samples at 500ms intervals
./smart_sim --iterations 100 --interval-ms 500
# run indefinitely until Ctrl+C
./smart_sim --forever

In hardware (Arduino) mode, create a sketch that calls the same functions from setup() and loop() or compile the project with the Arduino toolchain (the code provides setup()/loop() stubs under #ifdef ARDUINO).

A full example sketch is included as arduino_example.ino showing how to: map pins, initialize serial and display, read ADCs using readSensor, call calculateVoltage/calculateCurrent, update energy, display readings, and send data via Serial/Bluetooth/WiFi.

To use with Arduino IDE:

  • Copy calculations.h, calculations.c, sensors.c, config.h, bluetooth_arduino.cpp, wifi_arduino.cpp, and arduino_example.ino into a sketch folder.
  • Open arduino_example.ino in Arduino IDE and choose the board and port.
  • Upload to the board. Serial output will show readings and communications.

EEC2102GroupWork

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages