{"id":49577155,"url":"https://github.com/panastasiadis/embedded-systems-projects","last_synced_at":"2026-05-03T17:36:39.333Z","repository":{"id":300256140,"uuid":"1005698251","full_name":"panastasiadis/embedded-systems-projects","owner":"panastasiadis","description":"A collection of educational embedded systems projects using HLS, Arduino, and Verilog — developed for the course Embedded Systems Programming in Edge Environments.","archived":false,"fork":false,"pushed_at":"2025-06-20T17:02:01.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-20T17:47:46.966Z","etag":null,"topics":["arduino","bayer-filter","educational-projects","embedded-systems","fpga","high-level-synthesis","image-processing","systemverilog","verilog"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/panastasiadis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-20T16:50:57.000Z","updated_at":"2025-06-20T17:02:05.000Z","dependencies_parsed_at":"2025-06-20T17:47:50.780Z","dependency_job_id":"74eb36fd-bae5-4aa6-9c1f-5c6c3f31731d","html_url":"https://github.com/panastasiadis/embedded-systems-projects","commit_stats":null,"previous_names":["panastasiadis/embedded-systems-assignments"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/panastasiadis/embedded-systems-projects","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Fembedded-systems-projects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Fembedded-systems-projects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Fembedded-systems-projects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Fembedded-systems-projects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panastasiadis","download_url":"https://codeload.github.com/panastasiadis/embedded-systems-projects/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Fembedded-systems-projects/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32579079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: 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":["arduino","bayer-filter","educational-projects","embedded-systems","fpga","high-level-synthesis","image-processing","systemverilog","verilog"],"created_at":"2026-05-03T17:36:39.085Z","updated_at":"2026-05-03T17:36:39.324Z","avatar_url":"https://github.com/panastasiadis.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Collection of Embedded Systems Projects\n\nThis repository contains projects developed for the course \"Προγραμματισμός Ενσωματωμένων Συστημάτων σε περιβάλλοντα Edge\" (Embedded Systems Programming in Edge Environments).\n\n## Project Overview\n\nThis repository consists of three main projects that demonstrate different aspects of embedded systems programming:\n\n1. **HLS Project**: High-Level Synthesis implementation of a Debayering filter for image processing\n2. **Arduino Project**: Client service system using Arduino with buttons and LED indicators\n3. **Verilog Project**: Hardware description language implementation of the client service system\n\n## HLS Project - Debayering Filter for Image Processing\n\n### Description\nA High-Level Synthesis (HLS) project that implements a Debayering filter for image processing. The project demonstrates the conversion of a Bayer-patterned image to a full RGB image using both Python and C, with the C implementation optimized for hardware synthesis using HLS pragmas.\n\n### Workflow\n- **Step 1:** Use the Jupyter notebook (`transform_image.ipynb`) to:\n  - Convert an RGB image to a Bayer pattern and save it as a binary text file (`image_8bit.txt`).\n  - (Optional) Reconstruct the RGB image in Python for verification.\n- **Step 2:** The C implementation (`debayering_filter.c` and `debayering_filter.h`) reads the Bayer-patterned image, applies the Debayering algorithm, and reconstructs the RGB image. HLS pragmas are used to optimize the code for hardware synthesis.\n- **Step 3:** The test program (`debayering_filter_test.c`) automates reading the input, running the filter, and saving the output RGB values to `output.txt`.\n- **Step 4:** The notebook can also reconstruct and visualize the output image from the C implementation for comparison.\n\n### Features\n- Implements a 3x3 neighborhood Debayering algorithm\n- HLS pragmas for loop unrolling and pipelining to optimize for FPGA/ASIC synthesis\n- Python scripts for data preparation and verification\n- Supports 256x256 pixel images (configurable in code)\n- Sample images (`mountains.jpg`, `ravi.jpg`) provided for testing\n\n## Arduino Project - Client Service System\n\n### Description\nAn Arduino-based client service system that manages a queue of clients using buttons and LED indicators. The system tracks the current client being served and the total number of clients in the queue.\n\n### Features\n- **Buttons**: New Client, Done, Reset\n- **LED Indicators**: \n  - 7 LEDs for total clients count\n  - 7 LEDs for current client number\n  - 1 LED for \"full\" status\n- **Serial Output**: Debug information via Serial Monitor\n\n### Hardware Requirements\n- Arduino board\n- 3 push buttons (connected to A0, A1, A2)\n- 15 LEDs (7 for total clients, 7 for current client, 1 for full status)\n- Appropriate resistors\n\n## Verilog Project - Client Service System\n\n### Description\nHardware description language implementation of the same client service system, designed for FPGA synthesis and simulation.\n\n### Files\n- **`design.sv`**: SystemVerilog module implementing the client service logic\n- **`testbench.sv`**: Comprehensive testbench for simulation and verification\n\n### Features\n- Same functionality as the Arduino version\n- Hardware-optimized design\n- Comprehensive testbench with multiple test scenarios\n- Support for up to 100 clients (configurable)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanastasiadis%2Fembedded-systems-projects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanastasiadis%2Fembedded-systems-projects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanastasiadis%2Fembedded-systems-projects/lists"}