Modu-Link is a low-cost, open-source IoT project designed to remotely monitor and control connected sensors via Wi-Fi. This repository contains both the ESP32 client-side and server-side implementations, enabling seamless wireless data logging and visualization.
- Wireless Data Transmission: Connects sensors to a remote server for real-time monitoring.
- Multi-Sensor Support: Handles temperature and light intensity sensors, with extensibility for more.
- Data Logging: Logs sensor data into CSV files for further analysis.
- Real-Time Visualization: Plots live temperature and light intensity graphs using
matplotlib
. - User Commands: Supports commands like
START
,STOP
,RATE
, andRESET
for flexible operation.
📂 Modu-Link
├── main.py # ESP32 client-side code for sensor reading and data transmission
├── Project.py # Server-side code for receiving, logging, and visualizing sensor data
├── data.csv # Example CSV log for sensor data
├── generated_sensor_data.csv # Generated data for simulation/testing
├── Test.csv # Additional test dataset
└── README.md # Project documentation
- ESP32 with Wi-Fi capabilities
- Temperature sensor (e.g., analog thermistor)
- Light intensity sensor (e.g., photodiode)
- Breadboard and prototyping wires
- Wi-Fi router
- Python 3.x
- Libraries:
socket
,struct
,matplotlib
,csv
,threading
- MicroPython for ESP32
- Flash the
main.py
script to your ESP32 using your preferred MicroPython IDE. - Update the Wi-Fi credentials and server IP address in
main.py
:ssid = 'YourSSID' password = 'YourPassword' SERVER_IP = 'ServerIPAddress'
- Run the
Project.py
script on the server machine. - Ensure the server is listening on the appropriate IP and port (default:
0.0.0.0:12345
).
- Connect the temperature sensor to ADC pin 39 on the ESP32.
- Connect the light intensity sensor to ADC pin 34.
Project.py
provides real-time plots for temperature and light intensity data.- Use the "Start" and "Stop" buttons in the GUI to control plotting.
The server communicates with the ESP32 using the following commands:
START
: Begin data transmission.STOP
: Halt data transmission.RATE = X
: Set sampling rate (in seconds).RESET
: Restart the ESP32.
- Sensor data is logged to
data.csv
with fields:device_id
timestamp
temperature
light_intensity
device_id,timestamp,temperature,light_intensity
1,1693312675.5,24.5,0.76
1,1693312676.5,24.8,0.82
MicrosoftTeams-video.3.mp4
Contributions are welcome! Feel free to fork this repository and submit pull requests for bug fixes or feature enhancements.
This project is licensed under the MIT License. See the LICENSE
file for details.
- Ciril Biju Joseph - Software Development
- Benjamin Hughes - Embedded Systems & Hardware Integration
- Trevor Standen - Project Management & Hardware Design
- Aditya Manoj - Enclosure Design