LATEST PROJECTS
Project |01
Team​
​
Nathan Hemmelgarn
Jeff Johnson
Kirsten Benney
Brett Hoelscher
Senior Design
Internet of Things Smart Home
Best EET Project of the 2021 Expo
​​
My senior design team at the University of Cincinnati created an Internet of Things (IoT) smart home system that has the capability to monitor several different areas of concern within the home and alert the residents if an issue is detected wherever they may be. The system leverages the power of the Internet and the prevalence of smartphones to communicate this information. The basic design could be adapted for a host of different sub-systems and sensor suites, but we chose to focus on home security and safety. I personally designed the home security sensor suite which was comprised of two parts: open fenestration detection and glass break detection. I was also responsible for most of the editing on our poster and final report. The team evaluating the senior design projects voted our project the best of our program, Electrical Engineering Technology.
![System Concept](https://static.wixstatic.com/media/19e408_922cd5c3700846f6af2fa94e6ceacfa4~mv2.jpg/v1/fill/w_980,h_634,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/19e408_922cd5c3700846f6af2fa94e6ceacfa4~mv2.jpg)
![System Circuit Diagram](https://static.wixstatic.com/media/19e408_394bb64b7da04d339d56ae89eae666a5~mv2.png/v1/fill/w_950,h_586,al_c,q_90,enc_auto/19e408_394bb64b7da04d339d56ae89eae666a5~mv2.png)
![Intruder Detection Flowchart](https://static.wixstatic.com/media/19e408_f976e6852f744ff5a03378e9c14a104c~mv2.jpg/v1/fill/w_648,h_850,al_c,q_85,enc_auto/19e408_f976e6852f744ff5a03378e9c14a104c~mv2.jpg)
![Intrusion Detection Test Configuration](https://static.wixstatic.com/media/19e408_3c8b02efb8b34d8bb6ffc0f19ae5c3fd~mv2.jpg/v1/fill/w_697,h_349,al_c,q_80,enc_auto/19e408_3c8b02efb8b34d8bb6ffc0f19ae5c3fd~mv2.jpg)
![Hazard Detection Test Configuration](https://static.wixstatic.com/media/19e408_d170a3bb9c43456a992fa1db200549ad~mv2.jpg/v1/fill/w_545,h_409,al_c,q_80,enc_auto/19e408_d170a3bb9c43456a992fa1db200549ad~mv2.jpg)
![System Concept](https://static.wixstatic.com/media/19e408_922cd5c3700846f6af2fa94e6ceacfa4~mv2.jpg/v1/fill/w_980,h_634,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/19e408_922cd5c3700846f6af2fa94e6ceacfa4~mv2.jpg)
![System Circuit Diagram](https://static.wixstatic.com/media/19e408_394bb64b7da04d339d56ae89eae666a5~mv2.png/v1/fill/w_950,h_586,al_c,q_90,enc_auto/19e408_394bb64b7da04d339d56ae89eae666a5~mv2.png)
![Intruder Detection Flowchart](https://static.wixstatic.com/media/19e408_f976e6852f744ff5a03378e9c14a104c~mv2.jpg/v1/fill/w_648,h_850,al_c,q_85,enc_auto/19e408_f976e6852f744ff5a03378e9c14a104c~mv2.jpg)
![Intrusion Detection Test Configuration](https://static.wixstatic.com/media/19e408_3c8b02efb8b34d8bb6ffc0f19ae5c3fd~mv2.jpg/v1/fill/w_697,h_349,al_c,q_80,enc_auto/19e408_3c8b02efb8b34d8bb6ffc0f19ae5c3fd~mv2.jpg)
![Hazard Detection Test Configuration](https://static.wixstatic.com/media/19e408_d170a3bb9c43456a992fa1db200549ad~mv2.jpg/v1/fill/w_545,h_409,al_c,q_80,enc_auto/19e408_d170a3bb9c43456a992fa1db200549ad~mv2.jpg)
![Pipelined Processor Datapath](https://static.wixstatic.com/media/19e408_75a0be825b4e43f89566f7f2d4c7ae42.png/v1/fill/w_980,h_492,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/19e408_75a0be825b4e43f89566f7f2d4c7ae42.png)
![Instruction Set](https://static.wixstatic.com/media/19e408_d4526edb127c4d9abfe3cd9840fcfcd2.png/v1/fill/w_892,h_601,al_c,q_90,enc_auto/19e408_d4526edb127c4d9abfe3cd9840fcfcd2.png)
![Instruction Fetch Stage](https://static.wixstatic.com/media/19e408_4a18c580220e4174ac9ed89eace9dbad.png/v1/fill/w_860,h_647,al_c,q_90,enc_auto/19e408_4a18c580220e4174ac9ed89eace9dbad.png)
![Operand Fetch Stage](https://static.wixstatic.com/media/19e408_f194b516e9454591b9a6d1b47dec05db.png/v1/fill/w_749,h_549,al_c,q_90,enc_auto/19e408_f194b516e9454591b9a6d1b47dec05db.png)
![ExecuteStage.png](https://static.wixstatic.com/media/19e408_77b7fca3c3994732b673f9571551016a.png/v1/fill/w_744,h_568,al_c,q_90,enc_auto/19e408_77b7fca3c3994732b673f9571551016a.png)
![Pipelined Processor Datapath](https://static.wixstatic.com/media/19e408_75a0be825b4e43f89566f7f2d4c7ae42.png/v1/fill/w_980,h_492,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/19e408_75a0be825b4e43f89566f7f2d4c7ae42.png)
![Instruction Set](https://static.wixstatic.com/media/19e408_d4526edb127c4d9abfe3cd9840fcfcd2.png/v1/fill/w_892,h_601,al_c,q_90,enc_auto/19e408_d4526edb127c4d9abfe3cd9840fcfcd2.png)
![Instruction Fetch Stage](https://static.wixstatic.com/media/19e408_4a18c580220e4174ac9ed89eace9dbad.png/v1/fill/w_860,h_647,al_c,q_90,enc_auto/19e408_4a18c580220e4174ac9ed89eace9dbad.png)
![Operand Fetch Stage](https://static.wixstatic.com/media/19e408_f194b516e9454591b9a6d1b47dec05db.png/v1/fill/w_749,h_549,al_c,q_90,enc_auto/19e408_f194b516e9454591b9a6d1b47dec05db.png)
![ExecuteStage.png](https://static.wixstatic.com/media/19e408_77b7fca3c3994732b673f9571551016a.png/v1/fill/w_744,h_568,al_c,q_90,enc_auto/19e408_77b7fca3c3994732b673f9571551016a.png)
Project |02
Team​
​
Jeff Johnson
Kevin Chandler
Pipelined Processor Design
​
The goal of this class assignment was to develop a computer processor that uses a pipeline to enhance performance (a pipeline enables multiple tasks to be accomplished in parallel). This processor was designed with a 3-stage pipeline (3 different parts of 3 different instructions can be performed at the same time).
![Dice Suite High-Level Design](https://static.wixstatic.com/media/19e408_56eaaa6c7d5f443aa7ab39944d5e365c~mv2.jpg/v1/fill/w_811,h_702,al_c,q_85,enc_auto/19e408_56eaaa6c7d5f443aa7ab39944d5e365c~mv2.jpg)
![Statistics System Flowchart](https://static.wixstatic.com/media/19e408_d8d2e7ddb0f64839b7f8c5f38186ebbf~mv2.jpg/v1/fill/w_792,h_1024,al_c,q_85,enc_auto/19e408_d8d2e7ddb0f64839b7f8c5f38186ebbf~mv2.jpg)
![Dice Roll](https://static.wixstatic.com/media/19e408_2e94737291be4602998de1cf4de388c9~mv2.png/v1/fill/w_341,h_128,al_c,q_85,enc_auto/19e408_2e94737291be4602998de1cf4de388c9~mv2.png)
![Most Likely Rolls](https://static.wixstatic.com/media/19e408_50136b4bb7e448edb91383877847ed75~mv2.png/v1/fill/w_341,h_224,al_c,q_85,enc_auto/19e408_50136b4bb7e448edb91383877847ed75~mv2.png)
![Probability Outcome #1](https://static.wixstatic.com/media/19e408_6e3b177e306a45c896af36b5c7501936~mv2.png/v1/fill/w_343,h_152,al_c,q_85,enc_auto/19e408_6e3b177e306a45c896af36b5c7501936~mv2.png)
![Probability Outcome #2](https://static.wixstatic.com/media/19e408_9f3ac9fe3e1e439da1b0bf01cba1cc29~mv2.png/v1/fill/w_342,h_148,al_c,q_85,enc_auto/19e408_9f3ac9fe3e1e439da1b0bf01cba1cc29~mv2.png)
![Dice Suite High-Level Design](https://static.wixstatic.com/media/19e408_56eaaa6c7d5f443aa7ab39944d5e365c~mv2.jpg/v1/fill/w_811,h_702,al_c,q_85,enc_auto/19e408_56eaaa6c7d5f443aa7ab39944d5e365c~mv2.jpg)
![Statistics System Flowchart](https://static.wixstatic.com/media/19e408_d8d2e7ddb0f64839b7f8c5f38186ebbf~mv2.jpg/v1/fill/w_792,h_1024,al_c,q_85,enc_auto/19e408_d8d2e7ddb0f64839b7f8c5f38186ebbf~mv2.jpg)
![Dice Roll](https://static.wixstatic.com/media/19e408_2e94737291be4602998de1cf4de388c9~mv2.png/v1/fill/w_341,h_128,al_c,q_85,enc_auto/19e408_2e94737291be4602998de1cf4de388c9~mv2.png)
![Most Likely Rolls](https://static.wixstatic.com/media/19e408_50136b4bb7e448edb91383877847ed75~mv2.png/v1/fill/w_341,h_224,al_c,q_85,enc_auto/19e408_50136b4bb7e448edb91383877847ed75~mv2.png)
![Probability Outcome #1](https://static.wixstatic.com/media/19e408_6e3b177e306a45c896af36b5c7501936~mv2.png/v1/fill/w_343,h_152,al_c,q_85,enc_auto/19e408_6e3b177e306a45c896af36b5c7501936~mv2.png)
![Probability Outcome #2](https://static.wixstatic.com/media/19e408_9f3ac9fe3e1e439da1b0bf01cba1cc29~mv2.png/v1/fill/w_342,h_148,al_c,q_85,enc_auto/19e408_9f3ac9fe3e1e439da1b0bf01cba1cc29~mv2.png)
Project |03
Dice Probability Engine
C++ Program
​
I created this in my own free time to simulate dice rolls and produce dice statistics for a strategy board game called Star Wars Imperial Assault. The board game uses specialized dice with unique symbols on each one. Certain characters, units, and items would use certain dice combinations. Those combinations would have a major impact on the usefulness of each possible choice. Therefore, my friends and I would often wonder what the probability of favorable outcomes would be with certain dice combos.
​
To assist with the decision-making process, I created this tool. After specifying a dice combination, the program is capable of calculating the most likely outcomes of that dice combination, or the likelihood of receiving a defined outcome. The program calculates probabilities and produces statistics by simulating possible dice rolls with a recursion algorithm.
​
Most of the source code and the final version of the application are accessible on my Google Drive account via the link below, but it should be noted that the provided data is not complete due to accidental deletion at some point in the past. The main.cpp file and the argument list for one of the commands have been lost, but I do still have the complete source code for the two main classes and a readme with instructions for the other commands. The lack of comments in the code is not typical of my work. This is because the source code files available are not final. In time, I may revisit this project to fill in the gaps that have formed.
![Display Before Count](https://static.wixstatic.com/media/19e408_ac12dc9d272246a6ab760a95e3357843~mv2.jpg/v1/fill/w_965,h_425,al_c,q_85,enc_auto/19e408_ac12dc9d272246a6ab760a95e3357843~mv2.jpg)
![Display During Count #1](https://static.wixstatic.com/media/19e408_c470181fa7274d6b8caefba63206c29f~mv2.jpg/v1/fill/w_918,h_403,al_c,q_85,enc_auto/19e408_c470181fa7274d6b8caefba63206c29f~mv2.jpg)
![Display During Count #2](https://static.wixstatic.com/media/19e408_c802ab7671bd47c897b0f680264a1a9a~mv2.jpg/v1/fill/w_914,h_333,al_c,q_80,enc_auto/19e408_c802ab7671bd47c897b0f680264a1a9a~mv2.jpg)
![Display Before Count](https://static.wixstatic.com/media/19e408_ac12dc9d272246a6ab760a95e3357843~mv2.jpg/v1/fill/w_965,h_425,al_c,q_85,enc_auto/19e408_ac12dc9d272246a6ab760a95e3357843~mv2.jpg)
![Display During Count #1](https://static.wixstatic.com/media/19e408_c470181fa7274d6b8caefba63206c29f~mv2.jpg/v1/fill/w_918,h_403,al_c,q_85,enc_auto/19e408_c470181fa7274d6b8caefba63206c29f~mv2.jpg)
![Display During Count #2](https://static.wixstatic.com/media/19e408_c802ab7671bd47c897b0f680264a1a9a~mv2.jpg/v1/fill/w_914,h_333,al_c,q_80,enc_auto/19e408_c802ab7671bd47c897b0f680264a1a9a~mv2.jpg)
Project |04
Delayed BCD Count w/ 16x2 LCD Display
Assembly Program
​
This program counts from 0 to 99 every 100ms. The count is written to a LCD display. A pause and reset function are both supported. The execution occurred within a microcontroller emulator. This program is included to demonstrate my typical commenting behavior in addition to my understanding of Assembly. Comparable C code executed on a Cypress PSoC 3 chip is included for clarity.