{"id":27443050,"url":"https://github.com/codyvangosen/cs350-emerging-sys-arch-and-tech","last_synced_at":"2026-04-28T08:02:10.829Z","repository":{"id":287818092,"uuid":"965886643","full_name":"codyvangosen/cs350-Emerging-Sys-Arch-and-Tech","owner":"codyvangosen","description":"This is a repository of my project files and final submission for my final portfolio for the CS-350 Class at SNHU.","archived":false,"fork":false,"pushed_at":"2025-04-14T04:44:28.000Z","size":167,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T01:18:26.642Z","etag":null,"topics":["embedded-systems","gpio","gpio-pins","gpiozero","python","python-3","raspberry-pi","raspberry-pi-3","state-machine","statemachine","uart","uart-protocol"],"latest_commit_sha":null,"homepage":"","language":"Python","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/codyvangosen.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-04-14T04:23:00.000Z","updated_at":"2025-04-14T04:50:14.000Z","dependencies_parsed_at":"2025-04-14T05:32:48.075Z","dependency_job_id":"80db9e74-991f-4ec2-a92b-82f718a5f8f5","html_url":"https://github.com/codyvangosen/cs350-Emerging-Sys-Arch-and-Tech","commit_stats":null,"previous_names":["codyvangosen/cs350-emerging-sys-arch-and-tech"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codyvangosen%2Fcs350-Emerging-Sys-Arch-and-Tech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codyvangosen%2Fcs350-Emerging-Sys-Arch-and-Tech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codyvangosen%2Fcs350-Emerging-Sys-Arch-and-Tech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codyvangosen%2Fcs350-Emerging-Sys-Arch-and-Tech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codyvangosen","download_url":"https://codeload.github.com/codyvangosen/cs350-Emerging-Sys-Arch-and-Tech/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248986316,"owners_count":21194025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["embedded-systems","gpio","gpio-pins","gpiozero","python","python-3","raspberry-pi","raspberry-pi-3","state-machine","statemachine","uart","uart-protocol"],"created_at":"2025-04-15T01:18:42.996Z","updated_at":"2026-04-28T08:02:05.809Z","avatar_url":"https://github.com/codyvangosen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CS-350: Emerging Systems Architectures and Technologies  \n**Southern New Hampshire University | Cody VanGosen**\n\nThis repository contains project files and final submissions for the CS-350 course, showcasing embedded systems applications developed using Python, Raspberry Pi hardware, and various I/O components.\n\n---\n\n## 🔧 Project Overview\n\nThroughout this course, I developed two embedded systems applications that demonstrate my ability to interface with hardware, implement concurrent programming principles, and manage system state logic using Python.\n\n- **Artifact 1: `TemperatureSensorIntegration.py`**  \n  This script displays temperature and humidity data on a 16x2 LCD and allows the user to toggle between Celsius and Fahrenheit using a physical button input.  \n- **Artifact 2: `Thermostat.py`**  \n  This program expands on the previous artifact by implementing a fully functional smart thermostat, incorporating three states (Off, Heat, Cool), temperature setpoint adjustments, LED indicators, UART communication, and real-time display updates via LCD.\n\n---\n\n## 💡 Key Takeaways \u0026 Reflection\n\nBoth projects were designed to solve the challenge of presenting real-time environmental data in a readable and interactive format, while maintaining responsiveness and stability under concurrent operations.\n\nDuring the implementation of `TemperatureSensorIntegration.py`, I encountered and resolved a race condition that caused corrupted characters on the display. This issue was traced to unsynchronized access to the LCD from multiple threads. By applying Python’s `Lock` mechanism from the `threading` module, I resolved the issue and ensured consistent behavior under rapid user input (Python Software Foundation, 2023).\n\nOne area I performed particularly well in was the integration of hardware interfaces with clean, modular code. Each function was supported by detailed, line-by-line comments to enhance maintainability and collaboration. However, I recognize the opportunity to improve code reusability by refactoring repeated structures in the display and LED logic.\n\nTo support future development, I adopted several resources into my toolkit:  \n- **Libraries:** `gpiozero`, Adafruit's sensor/display packages  \n- **Documentation:** Python threading API, UART protocols, and LCD pinout references  \nThese tools significantly strengthened my confidence in diagnosing hardware behavior and implementing multithreaded workflows.\n\nSkills developed in this course—especially state machine modeling, concurrent programming, and sensor integration—are directly transferable to future coursework and real-world IoT projects. Both artifacts reflect my growing ability to design scalable embedded systems that balance clarity, responsiveness, and functionality.\n\n---\n\n## ✅ Design Considerations\n\nTo ensure long-term maintainability:\n- Clear naming conventions and modular class design were enforced\n- State transitions were modeled using the `statemachine` package\n- Thorough documentation and changelogs were included in all code\n- Threading logic was isolated and protected with locks to avoid race conditions\n- UART output was structured for future integration with external systems\n\n---\n\n## 🎥 Video Demonstrations\n\n### Module Six Lab Demonstration  \n[![Watch the video](https://img.youtube.com/vi/e_fi43AeBDw/maxresdefault.jpg)](https://www.youtube.com/watch?v=e_fi43AeBDw)\n\n### Final Project Lab Demonstration  \n[![Watch the video](https://img.youtube.com/vi/XHy1QBI6wC8/maxresdefault.jpg)](https://www.youtube.com/watch?v=XHy1QBI6wC8)\n\n---\n\n## 📚 References\n\nPython Software Foundation. (2023). *threading — Thread-based parallelism*. https://docs.python.org/3/library/threading.html  \nPressman, R. S., \u0026 Maxim, B. R. (2020). *Software engineering: A practitioner’s approach* (9th ed.). McGraw-Hill Education.  \nBovet, D. P., \u0026 Cesati, M. (2005). *Understanding the Linux Kernel* (3rd ed.). O’Reilly Media.  \nMicrochip Technology Inc. (2023). *PIC32 family reference manual*. https://www.microchip.com/design-centers/32-bit  \nNXP Semiconductors. (2023). *i.MX RT1060 Crossover MCU Family*. https://www.nxp.com/products/i.MX-RT1060  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodyvangosen%2Fcs350-emerging-sys-arch-and-tech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodyvangosen%2Fcs350-emerging-sys-arch-and-tech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodyvangosen%2Fcs350-emerging-sys-arch-and-tech/lists"}