{"id":14977219,"url":"https://github.com/mnxtr/cloudbasedbiometric-sensors","last_synced_at":"2026-01-19T04:01:52.068Z","repository":{"id":160633757,"uuid":"612285593","full_name":"mnxtr/CloudbasedBioMetric-Sensors","owner":"mnxtr","description":"Research on AI based ekg interpretation of myocardial infarction using multiple neural networks. ","archived":false,"fork":false,"pushed_at":"2025-11-05T17:31:59.000Z","size":39,"stargazers_count":1,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-05T19:37:27.936Z","etag":null,"topics":["ad8232","ad8232ecg","arduino","arduino-sketch","cpp","ecg-classification","ecg-qrs-detection","iot","ipynb"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mnxtr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-10T15:47:16.000Z","updated_at":"2025-11-05T17:42:00.000Z","dependencies_parsed_at":"2024-09-11T12:32:38.064Z","dependency_job_id":"522f2b30-651b-438e-ada4-d7eaf13c2286","html_url":"https://github.com/mnxtr/CloudbasedBioMetric-Sensors","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/mnxtr/CloudbasedBioMetric-Sensors","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnxtr%2FCloudbasedBioMetric-Sensors","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnxtr%2FCloudbasedBioMetric-Sensors/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnxtr%2FCloudbasedBioMetric-Sensors/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnxtr%2FCloudbasedBioMetric-Sensors/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mnxtr","download_url":"https://codeload.github.com/mnxtr/CloudbasedBioMetric-Sensors/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnxtr%2FCloudbasedBioMetric-Sensors/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28561610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ad8232","ad8232ecg","arduino","arduino-sketch","cpp","ecg-classification","ecg-qrs-detection","iot","ipynb"],"created_at":"2024-09-24T13:55:18.540Z","updated_at":"2026-01-19T04:01:52.063Z","avatar_url":"https://github.com/mnxtr.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CSE498R Directed Research | Cloud-based Biometric Sensor\n\n\n[Tasks](https://www.notion.so/ab800a73cf014937b95d28b0d7752da7)\n\n[Task list](https://www.notion.so/ab800a73cf014937b95d28b0d7752da7)\n\nTo verify that the heart rate monitor is working as expected, [open the serial monitor](https://learn.sparkfun.com/tutorials/terminal-basics/arduino-serial-monitor-windows-mac-linux)\n at **9600 baud**\n\n## interfacing with arduino and AD8232\n\n### **/src/sketch.ino**\n\n```cpp\n#include \u003cWire.h\u003e\n#include \u003cAD8232.h\u003e\n\n// Define the AD8232 module\nAD8232 heartRate;\n\nvoid setup()\n{\n  Serial.begin(9600);   // Initialize serial communication\n  heartRate.begin();    // Initialize the AD8232 module\n}\n\nvoid loop()\n{\n  float heart_rate = heartRate.getHeartRate();  // Read the heart rate value\n  Serial.println(\"Heart rate: \" + String(heart_rate) + \" bpm\");  // Print the heart rate value\n  delay(1000);  // Wait for 1 second\n}\n```\n\n. You should see values printed on the screen. Below is an example output with the sensors connected to the forearms and right leg. Your serial work should spike between +300/-200 around the center value of about ~500.\n\n## List of hardware required\n\n- Arduino Rev3 atmega328  + Wi-Fi  → as MCU\n- [AD8232 Heart Sensing Monitor](https://www.analog.com/en/products/ad8232.html)\n- Breadboard\n- Breadboard connector\n- Electrode Sensor Surface pad → Disposable\n- Pulse Sensor Module.\n- `EEG Muscle Sensor.`\n\n---\n\n## **Software**\n\n- Arduino IDE\n- [Arduino Cloud - native](https://cloud.arduino.cc/home/?get-started=true)\n- Fritzing\n- [Excali Draw](https://excalidraw.com/)\n\n \n\n---\n\n\u003e Serial Plotter\n\u003e \n\n![Initial Prototype](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/00037f21-75d7-4f20-9080-6f4012dd424c/296935907_564970585168162_8227733148751023666_n.png)\n\nInitial Prototype\n\n![First Test Case Requires Finetuning](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/48fc0350-1b47-46ba-8340-343493999089/274212130_436201271632733_8440882447172100438_n.png)\n\nFirst Test Case Requires Finetuning\n\n## Arduino Rev3 atmega328 + AD8232 Connection.\n\n![Wiring ](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f1a9496a-8597-4978-8c61-0a3c9d8c5615/Untitled.jpeg)\n\nWiring \n\n![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/080bc427-135b-4308-bc45-9b9b6b1c4cd4/Untitled.png)\n\n![HeartRate_Normal.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/90b1ef18-734e-4b93-aa98-ad7b6df99b26/HeartRate_Normal.png)\n\n![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/708e4173-88c1-41b7-b976-b6efcb2ed370/Untitled.png)\n\n- \n- Cable Color Signal **Black** RA (Right Arm ) | **Blue** LA (Left Arm) | **Red** RL (Right Leg)\n\n![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c8aa6b52-07e1-4816-abab-531831b076a7/Untitled.png)\n\n![Enhancement+](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/92daf233-71b4-48c7-ab0b-f60795f85a5e/Untitled.png)\n\nEnhancement+\n\nArduino layout with 7 Segment Led \n\n![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2284e2e0-9bc4-458a-9863-9e2b902f71fa/Untitled.png)\n\n\nResearch design and problem addressing\n\n-----------------\n\n\n- A research problem is a specific issue, contradiction, or gap in existing knowledge that needs to be addressed.\n\n- Identifying a research problem involves recognizing something problematic that requires attention, explanation, or a solution.\n\n- It is essential to have a well-defined research problem to guide the research process and to contribute to the field of study.\n\n- The process of defining a research problem includes:\n\n  - Identifying a broad topic of interest.\n\n  - Conducting a literature review to understand the current state of knowledge.\n  - Narrowing down to a specific issue that is under-explored or controversial.\n  - Formulating the problem into a clear, concise statement or question.\n- Types of research problems include:\n  - Descriptive: Documenting certain phenomena or situations.\n  - Exploratory: Investigating a topic to generate new insights or hypotheses.\n  - Explanatory: Understanding the causes or effects of certain phenomena.\n  - Predictive: Anticipating future occurrences based on current trends or data.\n  - Evaluative: Assessing the effectiveness of interventions, programs, or policies.\n- Defining a research problem is crucial for:\n  - Setting the direction and scope of the study.\n  - Ensuring the research is focused and manageable.\n  - Avoiding duplication of existing knowledge.\n  - Making a meaningful contribution to the academic field or practical application.\n- For more detailed guidance on defining a research problem, resources such as Scribbr's articles can provide step-by-step instructions and examples.\n\n\n## Scopes\n\n---\n\n## BPNN Model Integration\n\nThe repository now includes comprehensive mathematical formulations for integrating a Backpropagation Neural Network (BPNN) with the EKG system.\n\n### Mathematical Formulations Documentation\n\nSee [BPNN_MATHEMATICAL_FORMULATIONS.md](BPNN_MATHEMATICAL_FORMULATIONS.md) for complete mathematical documentation including:\n\n#### Core BPNN Mathematics\n- **Forward Propagation**: $z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]}$\n- **Activation Functions**: Sigmoid, Tanh, ReLU, Softmax (with derivatives)\n- **Loss Functions**: Binary/Categorical Cross-Entropy, MSE\n- **Backpropagation**: Complete gradient computation formulas\n- **Parameter Updates**: Gradient Descent, Momentum, Adam optimizer\n\n#### Signal Processing\n- **Normalization**: Min-Max and Z-Score formulas\n- **Filtering**: Moving Average and Butterworth Bandpass filters\n- **Feature Extraction**: HRV metrics (SDNN, RMSSD, pNN50)\n\n#### EKG Synthesis Model\nMathematical model for generating synthetic EKG signals:\n\n$$\\text{ECG}(t) = \\sum_{i \\in \\{P, Q, R, S, T\\}} A_i \\exp\\left(-\\frac{(t - t_i)^2}{2\\sigma_i^2}\\right)$$\n\n### Jupyter Notebooks\n\n#### 1. Data Loading and Preprocessing (`dataloading.ipynb`)\n- Signal normalization implementations\n- EKG filtering techniques\n- HRV feature extraction\n- Window-based segmentation for neural network input\n- Complete preprocessing pipeline with visualizations\n\n#### 2. BPNN Implementation (`randomdatasetgenerator.ipynb`)\n- Complete BPNN implementation from scratch\n- Synthetic EKG dataset generation (normal and abnormal patterns)\n- Training and evaluation pipeline\n- Multi-class classification (Normal, Tachycardia, Bradycardia, Arrhythmia)\n- Performance visualization and analysis\n\n### Quick Start\n\nTo use the BPNN model:\n\n```python\n# Install required dependencies\npip install numpy pandas matplotlib scipy scikit-learn\n\n# Run the validation script\npython3 validate_formulations.py\n\n# Open Jupyter notebooks\njupyter notebook dataloading.ipynb\njupyter notebook randomdatasetgenerator.ipynb\n```\n\n### Model Architecture\n\nThe implemented BPNN uses the following architecture:\n- **Input Layer**: 250 neurons (EKG window samples)\n- **Hidden Layer 1**: 128 neurons (ReLU activation)\n- **Hidden Layer 2**: 64 neurons (ReLU activation)\n- **Hidden Layer 3**: 32 neurons (ReLU activation)\n- **Output Layer**: 4 neurons (Softmax activation for 4 classes)\n\n**Total Parameters**: ~54,000 trainable parameters\n\n### Classification Classes\n\nThe model classifies EKG signals into four categories:\n1. **Normal**: Regular heart rhythm (60-100 bpm)\n2. **Tachycardia**: Fast heart rate (\u003e100 bpm)\n3. **Bradycardia**: Slow heart rate (\u003c60 bpm)\n4. **Arrhythmia**: Irregular heart rhythm\n\n---\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnxtr%2Fcloudbasedbiometric-sensors","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmnxtr%2Fcloudbasedbiometric-sensors","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnxtr%2Fcloudbasedbiometric-sensors/lists"}