top of page

Sky Watcher ( C++ )

I have an interest in photography and wanted to write a motion detector for a webcam. I wrote SkyWatcher in C++ and advertised it as applicable to assist astronomers detect any motion in the sky using any webcam.  Moving objects are detected and illustrated with a bounding box. Video snapshots are stored in a user specified directory.

Scene 1 - introduces the user to Sky Watcher and how to use it

Scene 2 - Requires the user to select the correct webcam and directory for storing captured images.

Scene 2 - Demonstration showing BLOB detection as the cloud moves. The software creates a bounding box around the moving target.

​

The sensitivity of Sky Watcher to movement can be adjusted as we as to objects of various sizes.

HelpingHands (Corona SDK,  Lua )

In collaboration with Dr Prash Jesudason, Orthapaedic consultant at Ysbyty Gwynedd, I wrote this mobile application to assist the patient perform hand exercises after hand surgery

I developed HelpingHands using the Lua programming language to assist with patient hand rehabilitation for Ysbyty Gwynedd, Bangor. The application has games for hand exercises and measures finger responses. In this way patient recovery can be assessed and data visualised on the app and sent to the doctor.

Registration view

Hand exercises menu

Sample game level

Main Menu

Statistics view

Doodle App (iOS, Swift)

GitHub Link

​

Based on an online tutorial by Aaron Caines, Geeky Lemon Development.

 

I wanted to build an interactive app that makes use of some basic GUI building blocks which pass messages to the update the UIImageView. 

​

The app is composed of two view controllers that are accessed with buttons; a settings and back button. Touch coordinates on the UIImageView are stored into a before and after coordinate. This in turn allows a line to be drawn on the view with the selected colour. Since many small lines are drawn on the view it makes it look like a doodle. 

117545745_750758565757267_53225843166131
117617476_300389144507991_25047322228471

Business App Prototype (iOS, Swift)

117616114_3143459772366247_7880111155122

Anglesey Council social services are looking to mobile apps to help provide vulnerable people with relevant information to hand. This will also free-up non-essential council resources by providing information and educational content to those with social care needs by referring them to the app.

​

The prototype lists the views in the easily accessible tab bar. A table view lists social service platforms on twitter, Facebook and others. 

​

Queries can be sent using the UITextView contained in a stack view. Clients can also find how to travel to the council office using MapKit if required and other contact details are included in the app.

​

Some improvements: (i) make sure the view titles correspond to the tab bar icons; (ii) Make the table view look more professional by putting a buffer between the table view cells.

​

​

Services
117589752_305368314012036_57908794779593
Social links
117445167_737889053441600_19771078344483
Contact us
117445466_318988405915046_97669108312060

Welsh Castles (iOS, Objective-C)

This app is meant to assist tourists find Welsh castles on their site-seeing journeys around Wales. It annotates a list of castles using the iOS MapKit framework. Each castle name and coordinate is hard coded into the applications property list file. Once an annotation (pin) is selected, the application opens a browser to Apple maps with the users current location and selected destination. 

IMG_5828.PNG

Each Castle is annotated using its corresponding latitude and longitude.

 //iterate through each castle

    for (int i = 0; i<[locations count]; i++) {

        MKCoordinateSpan span = MKCoordinateSpanMake(0, 0);

        CLLocationCoordinate2D center = CLLocationCoordinate2DMake(0, 0);

        pinRegion = MKCoordinateRegionMake(center, span);

        //MKCoordinateRegion pinRegion = {{0.0, 0.0}, {0.0, 0.0}};

        MapPin *pin = [[MapPin alloc] init];

        

        pinRegion.center.longitude = [locations[i][0] doubleValue];

        pinRegion.center.latitude  = [locations[i][1] doubleValue];

        pin.title = names[i];

        pin.coordinate = pinRegion.center;

        

        [self.mapView addAnnotation:pin];

    }

Code Snippet

Segmented control for choosing different map views

Arduino Tracking Device ( C )

There are many examples of person tracking using computer vision but not many using accelerometer-gyroscope combinations. This is understandable since the computer vision method uses remote tracking so that the user person being tracked does not need to wear te sensor.

​

I came across an interesting article by 'Geek Mom Projects' discussing the use of the MPU-6050 sensor for the Arduino for tracking objects and decided to see if I could do something similar using the same sensor module.

The MPU 6050 module for the Arduino contains a microelectromechanical systems gyroscope and accelerometer. The module has an integrated digital motion processor (DMP) for combining the accelerometer and gyroscope data to reduce errors inherent to both sensors. The DMP outputs the resulting sensor data as quaternions or Euler angles. It performs a 16 bit analog to digital conversion for the x, y, and z axes channels at the same time, making it fast and able to resolve very small 3D movements.  This is good for me since the module itself does most of the hard work in combining both sensor data.

​

The resulting sensitivity of the Arduino-sensor module combination is sensitive enough to detect small motions of the body; even vibrations due to heart beats. This makes it ideal for small motion tracking but also susceptible to noise by unwanted movements. A simple bespoke threshold filter is programmed into Arduino to reduce this noise.

The Arduino and sensor are packaged together with a DSD Tech HC-05 bluetooth module and a 9V battery within a laser-cut case (See my laser cutter on the services link) which fits into a Cycling bag to be carried by the person. 

Image Compressor ( VB.NET)

I am following an online tutorial for an image compressor so that i can better understand the .NET framework. The application loads multiple files of various formats and can compress them according to the user specification. I have not finished following the tutorial yet and more details will be added once I have made my own changes and additions to the software. 

Capture.PNG
bottom of page