The International Space Station (ISS) Tracker is a pocket-sized wireless device that alerts users when the ISS is flying overhead, along with information about current and upcoming flybys. This project aimed to expand my expertise in creating small, portable, wireless devices while improving my API integration and JSON parsing skills. For the hardware, I used an ESP8266 microcontroller, a 20x4 LCD with an I2C driver, five tact switches for user input, and two indicator LEDs. For the power electronics, I used a 4000 mAh LiPo battery paired with a TP405 charger for undervolt protection and a 5V boost converter for voltage regulation. The software leverages Google Maps's Geolocation API to estimate the device's latitude and longitude by using nearby WiFi SSIDs and syncs time with NTP servers via UDP. It interfaces with the N2YO API to retrieve accurate ISS flyby data and displays the information in real-time on the LCD. The system also uses Discord Webhooks and the HTTP API to alert users when the ISS is flying overhead.
This project was challenging but rewarding, teaching me to optimize both hardware design and software performance. It was also a great display of the skills I’ve developed through my previous mini-projects, combining elements of portable hardware and electronic design, with API integration into a single cohesive device.
The second iteration of the Discord Motion Bot focused on improving simplicity, detection accuracy, and reproducibility. While the first version provided a valuable learning experience in digital signal processing, the use of an Ultrasonic sensor led to excessive false positives. Version 2 addresses this by replacing the Ultrasonic sensor with an HC-SR501 PIR sensor and removing the IRFZ34N MOSFET, the USB-A port, and the LEDs, drastically simplifying the design. Assembly now requires soldering just three wires, reducing the build time to approx. 15 minutes. Also, a capacitor fix, recommended by space_r, was implemented effectively eliminating false positives from the PIR sensor.
This redesign improved reliability while showing the value of simplicity and iterative design. Through this project, I honed my problem-solving skills and further developed my ability to optimize solutions for real-world applications.
Discord Motion Bot is a motion-detecting intruder alarm that alerts users via Discord when motion is detected in their surroundings. It combines an HC-SR04 Ultrasonic sensor, an ESP8266, and an IRFZ34N MOSFET, to detect motion and optionally power a small USB device. While ultrasonic sensors are notoriously noisy, I chose to use one to explore and implement new digital signal processing techniques.
First, the raw distance data from the sensor is filtered using a low-pass filter to reduce high-frequency noise. Then, a median filter with a circular buffer removes outliers for a cleaner dataset. Finally, the system calculates the maximum deviation of recently filtered measurements using a sliding window. If this deviation exceeds a threshold, motion is detected, and a notification is sent to Discord using Webhooks and the HTTP POST method. This layered filtering approach helps prevent false alarms and ensures reliable motion detection.
This project not only expanded my understanding of digital signal processing but also demonstrated how such techniques can be applied to real-world applications. In the future, I plan to improve this project by incorporating a more reliable sensor to enhance reproducibility and accuracy.
During the 2020 lockdown, I challenged myself to create a fully portable, IoT device from scratch. With the heavy attention on Bitcoin at the time, I decided to make a wireless, battery-powered BTC Tracker. It uses an ESP8266 to fetch the live BTC price from the CoinDesk API along with a small LiPo battery, 5V regulator, and TP405 charger to provide power. I challenged my soldering, wire management, and planning skills in order to accommodate each component while keeping the form factor small and easily portable. In the end, I grew more confident in my ability to turn an idea into a product while satisfying design requirements.
Credit to ACROBOTIC Industries for inspiration.
Having just been introduced to Arduino, this was my first independent project in order to learn more about digital electronics and communication protocols. This project used 132 LEDs controlled by 3 banks of 74HC595 shift registers for a digital twist to the analog clock. Undertaking such a project was daunting at the time, but it proved to be a valuable learning experience. As a result, I strengthened my soldering skills and learned bitwise operations along the way.