Your browser does not support the video tag.
OLIVER URSELL
Make, Learn, Repeat
Personal Projects
Unique, useful or just fun
Electromyography
- A makeshift prosthetic
Arduino, C++

There's a company called Myoware who produce electromyography sensors which give an analogue output based on how much you tense an attached muscle. Place it on the right muscles, throw in an Arduino and a few servo motors and you can produce a prosthetic hand which clenches whenever you clench your own, even when its not anywhere near your hand. Whilst being relatively simple & impressively theatrical makes this a great project, I can't help but think what awesomeness could occur if you were to pair a collection of these sensors with a little bit of machine learning.

Take a look at this video and pay close attention to what the blue servo near the top does when I clench my hand at the bottom.

Your browser does not support the video tag.
Fencing Scoring System
- Bringing IoT to the sport of Fencing
Flutter, Java (Processing 3), Raspberry Pi, Mosquitto MQTT broker

A proper electric fencing scoring system is expensive. A solution which keeps score and time even more so. The electrics use soldered in LEDs and 7-segment displays as outputs and a three pronged system to interface with the fencers' swords, guard and/or lame (depending on sword type). There's also a remote control for the referee.

It turns out, a good way of cost reduction for a solution like this is to use the commonly available and flexible devices we use / carry around with us everyday, namely: a monitor to display scores, indicator lights, names, team banners and more; and a mobile phone to control it all.

The inclusion of Processing on a Raspberry Pi allows the building of full screen graphical programs in Java and the ability to communicate over wifi with MQTT. The capability of a Raspbery Pi Zero W also lets it host its own access point and Mosquitto MQTT broker all for a cheap price. Combining all that with these spare part connectors and Processing's PI GPIO capabilities all of the components are there for a £20 system which can interface with the equipment to score correctly, contain all the display features (names, teams, etc...) of a high-level system and be completely configureable over its own access point.

Introduce Google's Flutter and we have an elegant way of creating a mobile app which can perform this configuration with its own MQTT capabilites, and works on both IOS and android. This includes zero added cost thanks to the use of a referee's personal mobile device.

Even further to that (Although I have not yet implemented the following features) the broadcasting of MQTT messages when a hit is scored allows for cheap wifi-enabled modules like the ESP8266-01 to receive prompts to trigger GPIO when different events occur, this allows a full set of peripherals such as mask/floor-mounted LEDs (like in the 2012 olympics) or even more creative ideas (I'm thinking fireworks on the last point of a match, or maybe a program that automatically tweets the score in real time). These can all be made to interface with the system cheaply and setup with minimal effort. I demonstrated the ability for MQTT to work across a wide array of technologies at GreatUniHack 2020 by using it to communicate across 4 different programming languages: Javascript, Java, Python and C++.

Even further to that, this allows referees at tournaments to store scores for group and knockout stages, preventing the accidental lack of score recording (in group mode you cannot reset the board without storing the score). Using a desktop application could allow multiple scoring systems to be connected at once allowing referees to upload their scores to a central recording application, reducing the extreme waits at some fencing tournaments due to the written recording, and subsequent manual data entry, most tournament organisers use.

Your browser does not support the video tag.
Can Filler
- Industrial Brewery Canning
Arduino, C++, Circuit / PCB Design

TAP brewery is located in Marston, Gloucestershire and run by two enterprising ale enthusiasts called Tim and Pete. As the next step in the progression of the brewery they wanted to begin canning their beer to increase shelf-life and ease of distribution over bottles. Working together with me, Tim and Pete designed and manufactured the metal frame whilst I designed, programmed and installed the electronic sensors / microcontrollers required to fill the cans effectively. This includes:
  • Linear actuator to raise and lower the filling arms
  • Liquid and gas valves for dispensing beer and clearing the cans with CO2 gas before filling
  • Capacitative sensors to detect the position of cans, preventing dispensing beer / CO2 unnecesarily if the total number of cans is not a multiple of 3
  • Liquid Level sensors to shut off dispensing when individual cans are full. Infrared light versions of these sensors are also capable of ignoring foam when they are detecting.
The whole system was coordinated by an Arduino uno wih a custom PCB I designed using EasyEDA.œ

It's since featured in 6+ electronics / brewing magazines, for example this article from Brewer's Journal.
Your browser does not support the video tag.
HOI Magazine
- An online humanities magazine
HTML, CSS, Javascript, PHP, SQL

In 2020, a good friend of mine, Jasper Newport, asked me about the creation of an online magazine where he would be able to post content categorised into subjects like History, English and Economics, citing a large number of friends who he thought would be willing to provide articles hosted in such a manner. Along with another of my friends, Callum Nimmo, in September of the same year we purchased www.hoi-magazine.com to host my design and began sourcing writers.

The backend design used fundamental php and SQL just like COVID Challenges which was my first attempt at a web backend of any kind.

Gamma Ray Detector
Ogden trust sixth form physicist of the year,
3rd place HiSPARC conference with CERN 2017,
Gold CREST award
- Arduino, C++, ESP8266, Google sheets API

In 2017, Mr.Berry, one of the best teachers I've ever met, approached me with a SparkFun Geiger Counter unable to decipher how to extract readings from it. Luckily I had been using FTDI boards to program the Esp8266-01 and recognised the 6 pin FTDI layout on the left hand side of the board.

I used an Arduino Uno, combining a GPS board and a SD card reader with the Geiger counter to create a device which could be deployed on 5V power to record an accurate time and location of each ray it detected in a txt file. Use of a red insulating hood prevented detection of alpha particles, an added plastic shield does the same for beta particles, allowing the project to be adjusted for cosmic ray detection. Working with a team of two others to work on a write up and using the device to analyse cosmic ray events in our school, we earned a gold CREST award without a supervisor and 3rd place at the national HiSPARC conference for our presentation at Birmingham University. Additionally, I won Ogden trust physicist of the year.

I also came up with a more concise device using a SparkFun Esp8266 Thing to detect events from the Geiger counter and send them to a google sheet, this used google's API to get the time and date over the cloud. The disadvantage to this being a reliance on a wi-fi signal and losing exact latitude and longitude values. However, it also meant it was monitorable over the internet meaning a large number of devices could be deployed and easily monitored from a central location. The added benefit of google sheets meant the collected data could also be shared in real time to anyone wishing to use it.

The Park Online
- A multiplayer, exploration-puzzle game built in unity
Unity, C#, Photon

I had plans to make an escape room in my house for my friends to complete, but then COVID locked everybody down. Then agan, I've never let a small thing like that stop me before.

Built using the Unity engine with Photon, to provide multiplayer functionality, the game started as a simple model of the park where I live that me and friends could run around in digitally whilst chatting. Admittedly, this has since escalated.

It's currently a large island with multiple "puzzle areas" which each have their own mechanics and routes, some of which are less obvious but take much less time. Designed for 6 people, every 15 minutes the sun sets and the game is reset right back to the beginning. Winning the game requires the result of completing every challenge around the island. This challenges players to not only solve the puzzles, but master the teamwork, problem solving and platforming skills required to combine their solutions together in time to reach the end of the game.

This is an ongoing project. Currently I'm working with the vivox voice and text comms system to encorporate local voice chat, preventing players from being able to communicate should they get too far from eachother in game. This brings pre-planning into the game, since there is not enough time to solve all three puzzles sequentially before sunset, players are forced to split up and coordinate a return in the end.


Check out a list of my interactive web demos

Hackathons
Because sleep is overrated
Great Uni Hack 2020
- MOA: Multiplayer Online Arcade
Winner Game Dev, 2nd place BET365 challenge
C++, Python, Processing 3, Javascript, HTML, CSS, MQTT

GreatUniHack is hosted by the University of Manchester on an annual basis. For 2020 me and my team built a collection of multiplayer arcade games (Frogger, DOD (dungeons and dragons) & Boss Battle) which you could play by having users log into a website and interact with the page, whilst streaming your screen to them over a video calling service like Discord, Zoom or Skype. The aim was to create some games similar to Jackbox but on the scale of a whole lecture theatre playing the game at the same time. I worked on achieving the backend using a publish subscribe system which allowed users to host the server on their own PC, allowing for the required scale, whilst my teammates, none of which had attended a hackathon before, worked on the individual games. I provided a dummy class for them to work with and filled out each of their methods in various languages so that their games could interface correctly with the backend system.
Check out the project Devpost for more details!

Hack Quarantine
- Covid Challenges
3rd Tech and Health
HTML, CSS, Javascript, PHP, SQL

Early on after I was sent home from university due to the covid-19 pandemic I decided to take part in my second hackathon to keep my programming skills fresh. I entered Hack Quarantine which had nearly 2000 entrants. I constructed a social media site from scratch, designed around tracking indoor exercise on a treadmill / exercise bike / rowing machine and mapping those distances onto a real life journey, like travelling from Land's End to John O'Groats. I called it COVID Challenges and came 3rd in my track "Tech and Health" becoming one of 17 / 248 submitted projects to win a prize. Check out its Devpost!

Hack The Burgh VI
- Eat, Drink, Sleep
Overall Top 5
Java, Google Maps API

Hack the Burgh VI was my first hackathon which I attended with my friend George Tarleton the app we built was called eat, drink, see and allowed users to create a day out easily by forming a list of nearby areas to eat, see or drink. This used the google maps API to find nearby areas matching the given category, and also display their locations on a map, giving a complete route on how to reach each destination. We entered the AND digital track to create an app relevant to the Edinburgh tourism industry. We were chosen to present on stage as part of the overall top 5. Check out its Devpost!
Flutter Puzzle Hack
- Fallen Inc
Flutter Web, Dart, PubNub

One day, whilst chilling in the pub, me and my girlfriend Elarna Paine decided to enter Flutter Puzzle Hack with some of our spare time. Elarna wanted to a build something creatively original in order to confirm the programming skills she'd developed at university.

The brief was to create a take on a classic sliding puzzle game, built in Flutter and compiled to be hosted as a website.

Our idea was a two player sliding puzzle game, one player controls a character which moves around a maze, the other controls the tiles in the maze, moving them so that the other player can successfully reach the final room. We decided on a theme of moving through levels of hell, theming them after sloth, gluttony, etc... The result is a fun, and often tricky, game. Check out it's Devpost, take a look at the code or play it here!