Projects

Group Design Project

Group Design Project


During my fourth year of my MEng degree, I had a four month group project to complete. Our groups assigned supervisor was Geoff Merrett and my team consistent of Gavin Fish, Foivos Gaitantzis, Leonardo Moreira and Adel Hedayat, and I was assigned the project manager role. We worked with the UEKSF and more specifically, their CEO, Stewart Edmondson to conceptiualise, design, and implement an application within 4 months between October 2020 until Janurary 2021.

Original Mock-up of Design

Original Mock-up of Design

The goal of the project was to work alongside the UKESF and Southampton's Electronics Everywhere kits, in order to enhance the experience that students could get when using the boards to learn. The main goal was to give more of a visual indication of physical processes occuring on the board. As electronics as a field is difficult to see the actual effect, the application's main goal was to work as an oscilloscope and signal generator, allowing for students to explore concepts such as superposition and interferance, as well as being able to visualise sound waves, how they travel through circuits and the setup of potential dividers.

Home Page

Home Page

The home screen was the landing page for the application, and needed to be branded for the UKESF, with links to more information about the project, as well as direct access to other areas of the app designed for interfacing with both the Music Mixer but also the Logic and Arithmetic Boards.

About Page

About page

The about page was styled for both the different boards individually. It contained simple introductory information about the boards and their intended uses, as well as a link to the interactive page, which included a walkthrough of the board. The pages used the strong UKESF branding, as well as more specific branding relating to the boards themselves. This page also contained a navigation bar at the bottom to link to both the exercises pages and the practical page (for the Music Mixer kit). In the top right, there is also a link to the settings page.

Exercises Page

Exercises Page

The exercises page contained a list of all the experiments already design by the University in collaboration with the UKESF, with interactive videos and interactive instructions to follow through from within the application. Previously, the instructions were simply on a PDF where students would be following through a print out. This change in medium would hopefully increase interactivity.

Settings Page

Settings Page

The settings page contained a few of the preferences that could be changed about the practical page. This included the colour mode, and also the graphing style. We understood that some students may learn in one way, and others may learn in another, and so we wanted to provide the design of the oscilloscope to be the most flexible possible, allowing for both a traditional oscilloscope display, in light or dark mode, or a more traditional A-level graph, with a standard time axis.

Practical Page

Practical Page

The practical page is where most of the project was based, this was the key implementation in getting students to be more engaged with the boards. As discussed in the settings page section, the adaptability of this page was crucial, with each student learning in a different way. As a result, the page was implemented to be able to overlay all the graphs over one another, or to display them all separately. If graphs were not in use, they could be hidden by changing the mode of operation, and this would also simplify the options available to the user to interact with. This page uses the aux port to send out signals (on the left and right channel audio individually) and also to read the microphone as a input. In conjunction with the board, and some adapters available this allows a single phone to both produce, and display the result of two independent but interfering signals.

If you would like to get more information about the application or how it works, I have uploaded the full report to my experiences page, under my university section (named Group Design Project). Feel free to go and have a look.

Individual Project

Individual Project


During my third year of MEng degree, I had a year long project to undertake. It involved a project with a supervisor I was assigned Prof m.c. scraefel (intended punctuation) with whom I developed an android application to help author experiments known as Experiments in a Box, based around the inBodied 5 model.

Static pages

Static pages

Data structure to box visualisation

Data structure to box visualisation

Single box showing expeirments from data structure

Single box showing expeirments from data structure

Create a new box with experiments included from within the app

Create a new box with experiments included from within the app

The project was focused around creating Experiments in a Box (XB) data structures, which allow other users to experience the XB from within the application. This helps extend both the research capability and reduce overhead for the amount of time and budget needed for launching a new research project into this field.

Create experiments page

Create experiments page

Survey response page showing the data structures

Survey response page showing the data structures

Progress page showing the users progress in three states

Progress page showing the users progress in three states

Progress page journal entries

Progress page journal entries

The project is mostly explained in the git repository, with the included project reports and the full application included, however below are a few images of the application in operation:

Discord Bot

Discord Bot (Known as cotixBot)


At the start of summer of 2020, and awaiting news about getting an internship over the summer, I began to search for ways to fill the time. I found that me close friends and I were on Discord a lot. This is where we handled most of our social distancing meet ups. As a result, we wanted to increase the functionality of our server by adding a few custom features. Many of the features could have been added independantly through several different bots that were already created by others, but I was determined to find implementations myself. We have named our group Cotix, and so the bot was termed CotixBot.

To date, CotixBot has 35 functions that can be run on the server, ranging from Eight Ball predictions to playing music to the whole group so that we can listen along. In addition, the bot also hosts a few web pages which allow the users to authenticate other applications to access their data through apis (such as Spotify api) and records stats for each user on the server (length of time in call channels, number of messages sent to each text channel, etc).

The bot is hosted on an AWS Elastic Beanstalk server that provides the bot with a static IP and the ability to run 24/7. This was critical since I did not want to be running the bot from my computer locally, since it would require me to keep the computer powered on for the functionality to be available on the server (which was not always possible). When first starting to use AWS many of the quirky specifications that are required took some time to troubleshoot, but the more I found one method of doing things I realised that there was a better one on another side of AWS. This discovery means I have interacted with IAM roles, static EC2 instances, codedeploy, codepipeline, S3 buckets, cloudfront, and cloudwatch. Each discovery meaning a port of the previous method to improve the efficiency of the bot. This was also how I discovered the relatively cheap way to host my own website, buy my own domain and secure it with SSL.

D5 Smart Meter

D5: Smart Meter Design Exercise


This was the second of the two group projects in Year 2 of the degree. Once again it was done in a group of 6. The members of the group were Anurag Sahare, Sam Evans, Yue Shuen, Tianyang Li, Iris Gao, and myself. This project involved producing a complete product of a micro-grid smart meter to prioritize power usage. The scenario was a hospital environment that had different operations on different loads. We had to design the entire product from the ground up, this meant housing, the power supply, the interface circuitry, the control algorithm and the graphical user interface. The product had to interface to a TTL logical board that had a simulated scenario for a 24 hour period (ran at a rate of 1 minute to an hour in the simulation) and we had to minimize the amount of losses in life (as if each load lost power when it required it, there was an associated loss).

The final smart meter box

The final smart meter box

Once again, since there were distinct tasks we decided to split the team up and assign responsibilities. This project was different to the last as we had a budget and had a stricter time management. As a result we were recommended to give roles of Project Manager, Budget Manager and Secretary. As a result, I put myself forward for PM and got it. This was something that I wanted to do as working in corporate environment for my summer jobs I was hoping this experience would give me an upper hand on managing the project. It was also a good experience for me in learning how to manage people and setting expectations of the team.

We then decided that we should once again split the jobs up evenly and all come together to work on the final piece. This meant the housing, power supply and coding were all undertaken by pairs of lab partnerships. We had 3 milestones in the project where a certain aspect of the project was evaluated and so each team had a different timeline to work to, but also needed to work harmoniously to bring it all together for the final review where the product was evaluated as a whole.

The initial GUI

The development of the Graphical User Interface

To cut an extremely long and stressful story short (and to save on many of the technical details along the way), we hit every deadline producing a more than satisfactory result each time. We managed to produce an algorithm that in the end saved 240/250 people in a day, and would have reduced catastrophe if there was an all out power outage. We had a housing that was protective enough from water than when it was tested, the electronics stayed on and nothing had to be remade due to water damage, and we had a power supply that ran at just above the power draw specification but produced a bright screen and our interface, after some stressful debugging on the final day worked flawlessly to interface between our control board and the TTL logic.

Overall Result: 73%

Integrated Circuit Design

D2: Integrated Circuit Design


This was the first of our two group projects in Year 2 of the degree, each of which were done in teams of 6. My team consisted of Anurag Sahare, Byron Theobald, Hawk Roy Wood, Ben West, Oliver Dalziel, and myself. This particular project involved designing an integrated circuit (IC) to be created on a silicon chip and then testing it once it had been fabricated. The specifications meant we were required to have an inverter, a 4-bit adder, sequence decoder, ring oscillator and an X-bit multiplier. (We were able to choose between 4 to 8 bits depending on the space we had and how long it would take us to fit it in).

We were required to use L-edit and S-edit for the layout and schematic respectively. We split each requirement into a team (a lab partnership), one to do the layout, the other to do the schematic. The reason we did this was because the inverter was already designed, so we had 3 circuits to design before all coming together to work on the multiplier. In the end we used a hierarchical design so that we could move it about in the overall schematic to give us the most flexibility for our multiplier. Due to this fact we were able to produce a 7-bit multiplier schematic. The chip was laid out as follows:

The blackbox schematic for the IC

The blackbox schematic for the IC

In the second semester, we had to test our design. To do this, we designed test vectors to be ran on the input and output pins. The vectors contained timings for the changing of the input pins and the expected results on the output pins. Any deviation from the vectors were reported. I am glad to report that after 5 months of anticipation and hoping we had designed our chip correctly, all our test vectors returned a 0 error report. This meant that as we had defined, the chip was working as intended.

We were also able to ensure the vectors would pick up errors by testing other sites on the chip that did not have same functionality as ours. When testing on these sites we received the correct error reporting from the vectors. We also had to produce a manual test which including a binary input console that did the multiplication and tested the output. This meant the invigilator could input whatever test values they wanted and the system would automatically test the result. Our methodology, process and testing was then put in a report. We then received grading for each section of the project, which was as followed:

    • Schematic Design: 10.3/10
    • L-edit Design: 10.3/10
    • Chip Functionality: 20.6/10
    • Design Stage: 40+/40 (it was possible to get more than the maximumdepending on how much further than the standard 4-bit multiplier designed)
    • Golden Design: 10/10
    • Test Vectors: 5.5/10
    • System Demonstration: 10/10
    • Testing Stage: 25.5/30
    • Technical Approach: 75±5 / 100
    • Testing and Evaluation: 75±5 / 100
    • Report writing, structure, format: 80±5 / 100
    • Report: 72%
  • Overall Results: 89.5%

Personal Website V2.0

Personal Website V2.0 (this website)


During the summer of 2020, much like the discord bot, and the original website, I was looking to spend some time to develop a project. In the same vein of the AWS toolkit I had learned, I wanted to put my skills to the test. In addition, I wanted to create a professional feeling website that I could show to potential employers and have as my personal branding page.

The main difference between this website and the previous version (v1.0) is that this one is hosted on a proper domain, is written mostly in html and css (with very minimal js) and does not require node or react js for its operation. I wanted to keep the responsive features, which became more difficult to consider, but with tools like boostrap, it is very possible to hold everything within css.

There is not much else to be said, the technical difficulty was not too hard, but the design practice was more what was put to the test in this situation. The AWS hosting was the most involved process technically, and even that only involved creating a few IAM roles and then setting up some configuration options on some very basic to follow guides from Amazon themselves.

Personal Website V1.0

Personal Website V1.0


In the summer of 2018, I had time on my hands and so decided to teach myself web coding. This followed my introduction to C coding at university the semesters before. I wanted to use it to learn about APIs and backend / frontend development. The website was based on the React framework as I wanted to be able to develop dynamically updated layouts and styles (as well as modules and smart data collection from the backend to display on the frontend). The website has now fallen into depreciation as the maintenance was far too large for me to keep up with at university. The website is still up and available here however if there are any errors / bugs, this is due to the fact it is no longer maintained.

Home page for the website

Home page for the website

About page

About page

Blog page concept

Blog page concept

Contact page

Contact page

Originally, the purpose of the website was to display my projects, much like this site aims to do, teach me to use some APIs and overall just be a project for development to try and teach me some of the skills required to maintain and manage a short-term project. I had several "formats" if you will for pages, and below you can see below. The code for the frontend can be found here, and the code for the backend can be found here.

Design page built with the same module as the apps page

Design page built with the same module as the apps page

The apps page, showing the comparrison

The apps page, showing the comparrison

Spotify page with built in player

Spotify page with built in player

The animations I created using P3D (something like that) are shown below, for performance they will only run if you mouse over them. These were very simple code used to introduce myself into writing graphical displays.