Cinnamondev

Hi! I am a 2nd year student at the University of Manchester- studying Electrical Engineering, with a keen interest in Digital System Design. Over time in education, I have transitioned from software oriented projects and studying CS + related both at GCSE and A-Levels, to taking a particular interest in Electronics at A-Levels.

I now study Electrical and Electronic Engineering at the University of Manchester (MEng, expected 2027, Year in Industry).

Feel free to browse my projects below. These are projects from different points in my studies & personal work thus far. Some work's source may not be available or may not be currently available- this may be because the work is part of an ongoing course or the original source may be lost (i.e: some older pieces of coursework from GCSE/A-Level). Feel free to browse my Github and Gists for other works that may have not been significant enough to list here.

Projects

  1. Personal Projects
    1. cmsis-rp2040
    2. Handheld Console
    3. Personal Website
  2. University Projects
    1. Embedded Systems Project
    2. Misc. Scripting
  3. School Projects
    1. DTMF Tone Generator
    2. Reaction Timer Coursework
    3. Math Quizzer

Personal Projects

cmsis-rp2040

Custom scripts and template project structure for a project using the Pico SDK in tandem with CMSIS csolutions - allowing us to use CMSIS/KEIL Packs, for improved interoperability & convenience.

Additional branch provides a custom C driver for the ILI9341 and XPT2046, which can be used with LVGL.

Can be used as a starting template for other RP2040 projects- more info can be found in the project’s README.

2 templates are provided:

  • Base (master)
    Template with a blinking LED demo.
  • LVGL (demo-lvgl)
    LVGL Demo using custom ILI9341 + XPT2046 driver (XPT2046 driver still has some bugs to work out.)

Project links: Repository

Handheld Console

This project aspires to create a handheld games console, powered by a Compute Module 4 (equivalent to a Raspberry Pi 4, with board-board connectors that break out the IO of the RPi). This was chosen for its performance and software support from the Pi Foundation.

Due to shortages, this project has ended up being left ‘on-hold’, despite all larger components being fully designed (PCB, casing) Revisions to parts of the design are being made when free time is found for it, such as to prototype a new sliding mechanism for thw screen, using a 3D printed spring to provide feedback and require additional force to oprate.

Update (December ‘23): A redesign of part of the project may be due, with the release o a compute module 5 being due in ‘24, despite persisting (though slowly alleviating) shortages.

I hope to design a lot of parts of this project, regardless, using my improved CAD and PCB design skills to use. With component shortages being somewhat less severe, we may also be able to redesign parts of the project to use different components entirely - and make the design more compact and overall better. Should try to put active cooling somewhere, and we can change the dimensions of the project to allow for batteries to be relocated to the sides rather than under everything else. This will also provide an area for grips and potentially new button placement a lot alike newer products with a similar form factor.

Note: Youtube shouldn’t be collecting any data unless the video is played.

Project links: Repository

Personal Website

Personal website- has been frequently updated over time as my projects or focus has changed.

Static website + blog generated using custom jekyll.

Project links: Repository Website

University Projects

Embedded Systems Project

As part of the Embedded Systems Project course, as a group, we must undertake designing an autonomous vehicle (line follower robot). This requires strong team-working skills and a combination of skills in hardware and software design (C/C++), as well as learning and using the skills required to manage a group of people and responsibly manage resources.

Within this project, my role revolves primarily around the software component of the buggy, though this comprimises a larger scope as this requires intimate knowledge and research of the microcontrollers we will use in order to design software that is maintainable, as well as fast and taking full advantage of the hardware available.

Throughout the 2nd semester, our buggy will be tested in a variety of challenges. We aim to build the fastest buggy possible so that we can participate in the final race (goes to an external website), where the fastest and best documented buggies will be eligible for prizes.

Misc. Scripting

A Level Projects

DTMF Tone Generator

For my Electronics A-Level, we were tasked to design 2 electronic systems of our own choice and design.

The second project I designed was a DTMF (Dual Tone Modulation Frequency) tone generator.

DTMF is often seen in telecommunication systems, everything from phones to intercom systems. This is done entirely through a combination of analogue and digital circuitry to generate each frequency and modulate them at the output based on demand.

The inspiration used for this project was this video, where someone was able to feed DTMF tones through a speaker into an intercom system, allowing the person entry to the building. This is an example of physical penetration testing, a crucial skill in the modern world. See the corresponding writeup on the exploit in afforementioned video for more.

(Source unavailable due to data loss that happened before the project would’ve been put onto Github, apologies.)

Reaction Timer Coursework

For my Electronics A-Level, we were tasked to design 2 electronic systems of our own choice and design.

For our first electronic system, I designed a guessing game using a PIC16F88. The task of the game is to guess a randomly selected number. Once a number is guessed, the game will indicate using LEDs if you won or lost, and if so, by more or less.

RNG is only pseudo-random, as there is a limitation on available sources of ‘randomness’. So, instead, we constantly increment a value while waiting for a button press. Whatever this value is when the button is pressed becomes that particular digit.

Input to the system is done by a 4x3 keypad matrix, which is scanned repeatedly while waiting for an input. All code was written in MPASM assembly. This lets us take advantage of the hardware, as we are particularly strained for resources on such a microcontroller.

Project links: Repository

Math Quizzer

As part of the A-Level Computer Science course, we were tasked with both the design and development of a program of our own choice. This required us to determine all factors, such as the demand for such a program, intended target audience. From this, we could determine a set of software requirements and use case diagrams.

I chose to design an automatic quiz generator program, intended to help primary and early secondary school students learn the basics of mathematics.

The result of this is a system designed within the C# (.NET) ecosystem and the corresponding Windows Presentation Framework.

It is capable of quizzing students on everything from basic addition to solving quadratics, as well as basic user management, along with a tiered permission system and administration tools that could be used to check student progress.

(Source unavailable due to data loss that happened before the project would’ve been put onto Github, apologies.)

Contact us

GithubMastodonEmail