/Aqua-sense

The algorithm is designed for sensor data processing, employing various combining techniques for robust VLC communication.

Primary LanguageCMIT LicenseMIT

Libraries and Constants

  • Libraries: Includes the necessary libraries for the HTS221 sensor and standard C++ algorithms.
  • Constants: Defines pin assignments (sensorPin1, sensorPin2, sensorPin3), LED pin (LED), and threshold values (HB, SB, EP).
  • Global Variables: Initializes variables for sensor readings (v_R1, v_R2, v_R3), thresholds (Th_voltages, Th_voltage), and communication parameters.

Setup Function (setup())

  • Begins serial communication and initializes the HTS221 temperature and humidity sensor.
  • Halts program execution with an error message if sensor initialization fails.

Loop Function (loop())

  • Calls DiversityGainEngineInit() repeatedly to initiate the diversity gain engine process.

Diversity Gain Engine (DiversityGainEngineInit())

  • Iterates through a loop (BITLENGTH times) to read sensor values (v_R1, v_R2, v_R3) and estimate threshold voltages (Th_voltages) using ThresholdVoltageEstimator().
  • Calculates an average threshold voltage (Th_voltage) from the collected data.
  • Calls CombiningTEchniqueSelection() to determine and execute a combining technique (EGC, MLC, or SC) based on the highest detected signal strength.

Threshold Voltage Estimation (ThresholdVoltageEstimator())

  • Determines the maximum value among three sensor readings (v1, v2, v3) to estimate the threshold voltage.

Combining Technique Selection (CombiningTEchniqueSelection())

  • Evaluates the effectiveness of different combining techniques (EGC, MLC, SC) based on sensor readings.
  • Selects the technique with the highest signal strength (CT_ID_EGC, CT_ID_MLC, CT_ID_SC) and calls the corresponding function (EGC_machine(), MLC_machine(), SC_machine()).

Communication and Machine Functions

  • EGC Machine (EGC_machine()): Implements error correction and detection using the EGC (Exclusive-OR Gate Combination) technique.
  • MLC Machine (MLC_machine()): Implements majority logic combining technique.
  • SC Machine (SC_machine()): Implements selection combining technique.
  • Data Processing: Each machine function processes sensor data to determine communication modes and handles data transmission.

Utility Functions

  • Write Byte (writeByte()): Converts a decimal value to binary and sends it bit-by-bit to output pins.
  • Pulse Mapping (PulseMapping()): Controls LED to indicate data transmission status based on temperature data.

Supporting Functions

  • EGC_Engine(), MLC_Engine(), SC_Engine(): Functions implementing respective combining techniques with different bit processing logic.
  • inRange(): Checks if a value falls within a specified range.

Overall Purpose

  • The sketch is designed for sensor data processing, employing various combining techniques for robust communication.
  • It likely serves as part of a larger system for data transmission or control in an embedded environment like Arduino.
  • Modifications can be made to tailor the code to specific application requirements.
  • Application Context: Designed for robust sensor data processing and communication in an Arduino, stm32 or any other environment.
  • Functionality: Implements diverse combining techniques (EGC, MLC, SC) to ensure reliable data transmission or control.
  • Feedback: Provides visual feedback through an LED to indicate transmission status based on temperature data.
gh

Explore More! 🚀