About

profile_img

Hello! My name is Jasper Wong, and I am a computer science graduate from SFU as of December 2023.

In my free time, I like to tinker with microcontrollers and build mini IoT projects for personal use, as well as hosting my own home lab to run services such as a personal VPN as well as a small game server that me and my friends can play on. As such, network security is also a related topic I dedicate time to in order to safely expose services from the comfort of my home.

As for this website, it is being served by a NodeJS instance running inside a Docker container. The container is set to rebuild itself for every successful push to the remote GitHub repository that stores the code for this website, which is achieved through GitHub webhooks. This effectively forms a simple CI/CD pipeline.

Other hobbies I enjoy are eating food and building Gundam models. As such, my favorite vacation spot is Japan since there are plenty of inexpensive and delicious foods, especially ramen. Here is a ranking list for my favorite ramen places, which includes all the places I've been to around the world so far!

Pip-Boy

pip-boy_img

As part of a special topics course in human computer interaction, a group project involving several members resulted in a medium-fidelity prototype of a Pip-Boy from the Fallout series of video games. Various technologies were used to put the contraption together, such as an Arduino Nano to read potentiometer values. These values were then sent over the Bluetooth Low Energy protocol to a custom Android application developed in Kotlin. The case is custom 3D printed, and the end result with wires exposed throughout the Pip-Boy resulted in a rugged look that indeed does give the Fallout feel.

This project was my favorite throughout my undergraduatate degree at SFU. The numerous unexpected workarounds taken to fix major issues, albeit stressful, was very fun and rewarding.

Source code for the Pip-Boy's android app can be accessed here →
Source code for the Arduino setup can be accessed here →

LED Visualizer

led_visualizer_img

The image shown above is an LED Visualizer driven by a BeagleBone as a result from a group project from a course in embedded systems. Controlled by a web interface written in React, it has various functionalities such as displaying the current time, and can show the sound waves of the environment around it, as well as from an audio file being played. The sound is output through an audio jack on a custom cape attached to the BeagleBone.

Source code for the LED Visualizer can be accessed on Github →

ESP32 I2S Sound Card

esp32_img

Background

Being an audiophile is one of my hobbies, and so when I chose a project to work on for my spare time I gravitated towards working on a sound related project. One of the ways that audio is transmitted in embedded systems is through the I2S protocol, and this project was started for me to further learn about this technology. Having a spare Raspberry Pi 3 that I use to stream Spotify with, I decided to buy an ESP32 with the idea to stream Bluetooth audio to as there is an issue with the Raspberry Pi's integrated Bluetooth chip not working well with Wi-Fi enabled. Working with this microcontroller has allowed me to learn about real-time operating systems (RTOS), which was completely different than the software model of the Arduino suite that I have worked with in the past. RTOS programming is much like the multi-threaded embedded Linux applications I have developed in the past, with functionalities separated out into different modules.

Current Progress

The idea was to wire up an ESP32 like that of a MEMS microphone to run on the Pi's I2S bus, capturing sound through ALSA. The configuration for this setup would've been for the Pi as the master device and the ESP32 as the slave, but this proved to be rather difficult as the microcontroller's interrupt service routine would not trigger in slave mode. Current configuration has the master and slave role switched around and although there is valid sound data being passed into the Pi, the data is distorted and pitch shifted. A separate I2S DAC is being ordered to test whether it is a configuration problem in the code or if it is a hardware problem.

Here is a sound test for what Max Coveri's Running in the 90's sounds like with the current setup. The DAC used is a Topping E30 connected directly to the Pi through USB.

Source code for the ESP32 can be accessed on Github →