My 3rd feature added to SkyOS is a nice little flight radar widget found at the bottom right corner of the desktop. I utilized the OpenSky API to display the number of aircraft in your area, and the callsign and altitude of the closest plane to your location. I will say the visual aspects of this feature was pretty easy to create, however is was the logic behind this that took some time to understand. Overall, I’m pretty happy about this feature! The only gripe I have is the limited amount of times you can call data from it, so I had to set the refresh rate to 60 seconds, which is a little slow.
My 3rd feature added to SkyOS is a nice little flight radar widget found at the bottom right corner of the desktop. I utilized the OpenSky API to display the number of aircraft in your area, and the callsign and altitude of the closest plane to your location. I will say the visual aspects of this feature was pretty easy to create, however is was the logic behind this that took some time to understand. Overall, I’m pretty happy about this feature! The only gripe I have is the limited amount of times you can call data from it, so I had to set the refresh rate to 60 seconds, which is a little slow.
After a little bit of playing around with js and getting some help from online tutorials, I was able to create a workspace system, similarly found on most operating systems like Windows 11 or most Linux distros. You can use this for multitasking and can have up to 5 workspaces open at once with different apps opened in each one, without fear of them closing when switching desktops!
After a little bit of playing around with js and getting some help from online tutorials, I was able to create a workspace system, similarly found on most operating systems like Windows 11 or most Linux distros. You can use this for multitasking and can have up to 5 workspaces open at once with different apps opened in each one, without fear of them closing when switching desktops!
I have added a new feature for SkyOS! Using Meteomatic’s Open Meteo API, I was able to implement a weather widget in the top right corner of the desktop workspace, so you can see the current temperature in the area you are currently in.
I have added a new feature for SkyOS! Using Meteomatic’s Open Meteo API, I was able to implement a weather widget in the top right corner of the desktop workspace, so you can see the current temperature in the area you are currently in.
PicoStream-60
PicoStream-60 is a desk wind tunnel use for analyzing drag force on
different objects, such as Hotwheels cars, scaled airplane models, or
even custom geometries made by someone! It’s powered by the Raspberry Pi
Pico rp2040 microcontroller. I designed this because as someone who is
deeply passionate about aerospace engineering, I though this would be a
good project that I could even learn from, and even use in the future.
Features
Powerful Brushless Fan PicoStream-60 features a powerful 60mm delta fan intended for server cooling, and can spin up to 12,000 rpm.
Adjustable Fan Speed: Via an ec11 digital encoder, the
fan can be adjusted for different kinds of enviornments, and items being
tested, and features around 33 indivual speed settings.
Scientifically Accurate Design: I engineered
PicoStream-60 to follow real world principles when designing a wind
tunnel, including a honeycomb mesh panel to reduce air turbulence, and
an inlet which reduces in area size to streamline airflow.
Analysis Feature This wind tunnel has the ability to
record and display live time drag force in grams on an external serial
monitor (given, that you will need your own external display) for
further drag force analysis
CAD Model
I designed the overall wind tunnel structure on Fusion360, and have
decided to 3d print the parts using standard PLA at 20% infill. The
assembly also has nice rounded curves to make it more presentable
How to assemble
Join the mesh and mesh mount together with the m3 screws
Attatch the Fan to the Fan mount using the m4 screws, and hot glue the Pico microcontroller, Switch and Rotary encoder to the Fan Mount aswell
Glue the load cell into the hole in the carriage halfway, with the end with the wires sticking out (See CAD model to locate mounting hole)
Hot glue the rest of the parts together, and make sure to line each gap with duct tape to keep the wind tunnel assembly extra air tight
Wire up! (See schematic for reference)
Now move onto “How to Flash”!
How to Flash
Press and hold the physical BOOT button on the Pico controller board.
Connect the USB cable while holding the button, then release it.
A virtual drive will mount to your operating system.
Drag and drop the sketch_jul22a.ino.uf2 binary file directly onto the root of the drive.
The device will automatically flash, reboot, and initialize as an operational device.
Please Note that AI was utilized for some basic project planning and debugging of the firmware in Arduino IDE
The i2c_pocket_scanner is a handy little testing tool built on an RP2040 chip (using a Seeeduino Xiao board) that helps you instantly find and troubleshoot electronics on your desk without needing a complicated keyboard setup. Running on QMK firmware, it constantly scans the physical wires (SDA and SCL pins) to look for connected gadgets like OLED screens, dials, or sensors. Because computers can be slow to recognize a USB device when it first plugs in, the code is smart: it uses an automatic 5-second timer to loop the test over and over again so you never miss the data. Best of all, it acts as a dual-screen monitor, sending the full diagnostic list right to your computer’s QMK Toolbox console while simultaneously updating a clean summary on your physical 0.91” desktop OLED screen.
Devlog: Building a Custom Airbus-FCU Macropad
Total Build Time: 18 Hours, 45 Minutes
Project Overview: This project was a multi-day journey to design, route, and program a custom Airbus-FCU macropad from scratch. Powered by a Raspberry Pi Pico, the board features 4 EC11 rotary encoders (with push-button functionality) and 6 Cherry MX switches. While heavily inspired by the A320 FCU for use in Microsoft Flight Simulator 2020 (via the Fly-By-Wire A32NX API), it’s also mapped to serve as a daily-driver productivity pad featuring media controls, zoom, and copy/paste functionality.
Hardware & PCB Design (KiCad): I originally planned to use an Epal Arduino Mega 2560 Pro Mini clone, but after falling down a rabbit hole trying to create a custom, dimensionally accurate footprint, I pivoted to the RP Pico.
The Routing Grind: I spent hours meticulously mapping the tracks to ensure zero intersections while matching the physical layout of the real FCU (minus the displays due to size constraints).
The “Oops” Moment: Right as I was moving to the firmware stage, I realized I completely forgot to wire the “B” pin for one of the encoders (EC8_B) to the microcontroller. I had to jump back into KiCad, route the missing pin, and re-lay the tracks to accommodate the fix.
Enclosure & CAD (Fusion 360): Autodesk Fusion 360 (an absolutely goated CAD program) was used to design the enclosure. I aimed for a minimalist aesthetic with clean, rounded edges.
Fitment: A significant chunk of time went into troubleshooting physical tolerances—ensuring the top plate cutouts, the PCB, and the input hardware all sandwiched together perfectly. I also designed a custom window cutout in the case to keep the RP Pico visible.
Engravings: I wanted neat text engravings to label each input. My initial font choice had overlapping geometry that broke the extrude tool, so I compensated by swapping to a simpler, cleaner font that rendered perfectly.
Software & Firmware: I researched both MobiFlight and QMK MSYS to handle the brains of the board. MobiFlight’s recently updated UI introduced a bit of a learning curve since they moved away from a traditional text editor to a mouse-driven GUI. Ultimately, I used VS Code alongside QMK to write the firmware.
The Code: I wrote out the keyboard.json and carefully matched the keymap.c file to handle my dual-purpose setup (Mute/Vol, Brightness, Zoom, Horizontal Nav, Next/Prev Track, and Copy/Paste).
Compiler Woes: On the final day, I hit the dreaded QMK compiler errors when trying to generate the final .uf2 file. The culprit turned out to be an outdated keycode naming scheme I was using for the horizontal scrolling. Once I tracked down the correct syntax, the firmware compiled smoothly.
Final Thoughts: Between re-routing traces, fixing geometry errors in CAD, and debugging C code, this build was a massive test of patience and problem-solving. The final result is a highly functional, dual-purpose sim and productivity tool packed into a sleek custom case!
Devlog: Building a Custom Airbus-FCU Macropad
Total Build Time: 18 Hours, 45 Minutes
Project Overview: This project was a multi-day journey to design, route, and program a custom Airbus-FCU macropad from scratch. Powered by a Raspberry Pi Pico, the board features 4 EC11 rotary encoders (with push-button functionality) and 6 Cherry MX switches. While heavily inspired by the A320 FCU for use in Microsoft Flight Simulator 2020 (via the Fly-By-Wire A32NX API), it’s also mapped to serve as a daily-driver productivity pad featuring media controls, zoom, and copy/paste functionality.
Hardware & PCB Design (KiCad): I originally planned to use an Epal Arduino Mega 2560 Pro Mini clone, but after falling down a rabbit hole trying to create a custom, dimensionally accurate footprint, I pivoted to the RP Pico.
The Routing Grind: I spent hours meticulously mapping the tracks to ensure zero intersections while matching the physical layout of the real FCU (minus the displays due to size constraints).
The “Oops” Moment: Right as I was moving to the firmware stage, I realized I completely forgot to wire the “B” pin for one of the encoders (EC8_B) to the microcontroller. I had to jump back into KiCad, route the missing pin, and re-lay the tracks to accommodate the fix.
Enclosure & CAD (Fusion 360): Autodesk Fusion 360 (an absolutely goated CAD program) was used to design the enclosure. I aimed for a minimalist aesthetic with clean, rounded edges.
Fitment: A significant chunk of time went into troubleshooting physical tolerances—ensuring the top plate cutouts, the PCB, and the input hardware all sandwiched together perfectly. I also designed a custom window cutout in the case to keep the RP Pico visible.
Engravings: I wanted neat text engravings to label each input. My initial font choice had overlapping geometry that broke the extrude tool, so I compensated by swapping to a simpler, cleaner font that rendered perfectly.
Software & Firmware: I researched both MobiFlight and QMK MSYS to handle the brains of the board. MobiFlight’s recently updated UI introduced a bit of a learning curve since they moved away from a traditional text editor to a mouse-driven GUI. Ultimately, I used VS Code alongside QMK to write the firmware.
The Code: I wrote out the keyboard.json and carefully matched the keymap.c file to handle my dual-purpose setup (Mute/Vol, Brightness, Zoom, Horizontal Nav, Next/Prev Track, and Copy/Paste).
Compiler Woes: On the final day, I hit the dreaded QMK compiler errors when trying to generate the final .uf2 file. The culprit turned out to be an outdated keycode naming scheme I was using for the horizontal scrolling. Once I tracked down the correct syntax, the firmware compiled smoothly.
Final Thoughts: Between re-routing traces, fixing geometry errors in CAD, and debugging C code, this build was a massive test of patience and problem-solving. The final result is a highly functional, dual-purpose sim and productivity tool packed into a sleek custom case!
I have finally finished making the ACP (Audio Control Panel) app for SkyOS! It features 3 songs from msfs2020 and fsx, and features a song time display, and controls to skip and go back a track, and a play/pause button ofc.
I have finally finished making the ACP (Audio Control Panel) app for SkyOS! It features 3 songs from msfs2020 and fsx, and features a song time display, and controls to skip and go back a track, and a play/pause button ofc.
Finished creating the wallpapers app, to switch the background to 3 different images, a Boeing 777, Airbus a350, or F-22.
Finished creating the wallpapers app, to switch the background to 3 different images, a Boeing 777, Airbus a350, or F-22.
At the time of making this devlog it is 12:14am. I am lwk exhausted, but just finished building my second, and so far most complicated app for SkyOS (in terms of the logic). It is a simple but functional Stopwatch cleverly called “Chrono”. I also want to mention ~1 hour out of the 3 hours logged in the second devlog, was spent building the chrono app
At the time of making this devlog it is 12:14am. I am lwk exhausted, but just finished building my second, and so far most complicated app for SkyOS (in terms of the logic). It is a simple but functional Stopwatch cleverly called “Chrono”. I also want to mention ~1 hour out of the 3 hours logged in the second devlog, was spent building the chrono app
After a bit of struggle getting the formatting of the elements of SkyOS to work properly, I have finally finished my first app! I call it FlightLog, which is a place to type anything you want, and save it. It works similar to Windows 11’s NotePad application, but simpler.
After a bit of struggle getting the formatting of the elements of SkyOS to work properly, I have finally finished my first app! I call it FlightLog, which is a place to type anything you want, and save it. It works similar to Windows 11’s NotePad application, but simpler.