Busting GPS Exercise Data Out Of Its Garmin-controlled IoT Prison

If you take to the outdoors for your exercise, rather than walking the Sisyphusian stair machine, it’s nice to grab some GPS-packed electronics to quantify your workout. [Bunnie Huang] enjoys paddling the outrigger canoe through the Singapore Strait and recently figured out how to unpack and visualize GPS data from his own Garmin watch.

By now you’ve likely heard that Garmin’s systems were down due to a ransomware attack last Thursday, July 23rd. On the one hand, it’s a minor inconvenience to not be able to see your workout visualized because of the system outage. On the other hand, the services have a lot of your personal data: dates, locations, and biometrics like heart rate. [Bunnie] looked around to see if he could unpack the data stored on his Garmin watch without pledging his privacy to computers in the sky.

Obviously this isn’t [Bunnie’s] first rodeo, but in the end you don’t need to be a 1337 haxor to pull this one off. An Open Source program called GPSBabel lets you convert proprietary data formats from a hundred or so different GPS receivers into .GPX files that are then easy to work with. From there he whipped up less than 200 lines of Python to plot the GPS data on a map and display it as a webpage. The key libraries at work here are Folium which provides the pretty browsable map data, and Matplotlib to plot the data.

These IoT devices are by all accounts amazing, listening for satellite pings to show us how far and how fast we’ve gone on web-based interfaces that are sharable, searchable, and any number of other good things ending in “able”. But the flip side is that you may not be the only person seeing the data. Two years ago Strava exposed military locations because of an opt-out policy for public data sharing of exercise trackers. Now Garmin says they don’t have any indications that data was stolen in the ransomware attack, but it’s not a stretch to think there was a potential there for such a data breach. It’s nice to see there are Open Source options for those who want access to exercise analytics and visualizations without being required to first hand over the data.

RGB Minecraft Sign Isn’t Just For Looks

This laser cut and LED illuminated version of the Minecraft logo created by [Geeksmithing] looks good enough to occupy a place of honor on any gamer’s shelf. But it’s not just decoration: it can also notify you about your Minecraft’s server status and tell you when players are online by way of its addressable LEDs.

In the first half of the video after the break, [Geeksmithing] shows how the logo itself was built by cutting out pieces of white and black acrylic on his laser cutter. When stacked up together, it creates an impressive 3D effect but also isolates each letter. With carefully aligned rows of RGB LEDs behind the stack, each individual letter can be lit in its own color (or not at all) without the light bleeding into either side.

Once he had a way of lighting up each letter individually, it was just a matter of writing some code for the Raspberry Pi that can do something useful with them. Notifying him when the server goes down is easy enough, just blink them all red. But the code [Geeksmithing] came up with also associates each letter with one of the friends he plays with, and lights them up when they go online. So at a glance he can not only tell how many friends are already in the game, but which ones they are. Naturally this means the display can only show the status of nine friends…but hey, that’s more than we have anyway.

We’ve been seeing people connect the real world to Minecraft in weird and wonderful ways for years now, and it doesn’t seem like there’s any sign of things slowing down. While we recognize the game isn’t for everyone, but you’ve got to respect the incredible creativity it’s inspired in young and old players alike.

Continue reading “RGB Minecraft Sign Isn’t Just For Looks”

Custom Weather Camera Feed With Software Tricks

With a gorgeous view of the Italian seaside, we’re not surprised [Danilo Larizza] had a couple IP cameras set up to pull in real-time views. But using a Raspberry Pi, an environmental sensor, and some software trickery to overlay the current (and naturally, perfect) weather conditions over the images? Now he’s just teasing us.

Whatever his motives are, we have to admit that the end result is very nice. Especially when you find out that there’s no complex hardware or software at work here. An original Raspberry Pi is doing all the heavy lifting by pulling a frame from the external IP camera using ffmpeg, polling the I2C-connected BME280 temperature and humidity sensor with a Python script, and then producing a final snapshot with the environmental data laid over top using ImageMagick.

[Danilo] gives the exact commands he’s using for each step of the process, making it easy to follow along and see how everything comes together in the end. That also makes it much easier to adapt for your own purposes should you feel so inclined. Once you see how all the pieces fit together, where the data and images come from is up to you.

We’ve previously shown how some simple Python code can be used to turn your raw data into attractive images, and combining that with real-world photographs is an excellent way of turning a text file full of values into a display worth showing off.

Gaming In Different Languages

One of the perks of using older hardware is its comparative simplicity and extensive documentation. After years or decades of users programming on a platform, the amount of knowledge available for it can become extensive. This is certainly the case with the 6502 microprocessor, used in old Apple computers and some video game systems from the ’80s. The extensive amount of resources available make it a prime candidate in exploring various programming languages, and their advantages and disadvantage.

This project looks into those differences using a robot game, which has been programmed four different ways in three languages. [Joey] created the game in Python first and then began to port it to the 65C02, a CMOS variant of the 6502. The first iteration is its assembly language, and then a second iteration with optimized assembly code. From there, he ports it to C and then finally to Forth. Each version of the game is available to play in a browser using an emulator to run the 6502 hardware.

Since the games run in the browser, other tools are available to examine the way the game runs in each language. Registers can be viewed in real time, as well as the values stored in the memory. It’s an interesting look at an old piece of hardware and of its inner workings. For an even deeper dive into the 6502, it’s possible to build a working computer on breadboards using one.

Rotary Phone Takes You Around The World And Through Time – With Music

Purposely choosing obsoleted technology combines all the joy of simpler times with the comfort of knowing you’re not actually stuck with outdated (and oftentimes inferior) technology. The rotary phone is a great example here, and while rarely anyone would want to go back to the lenghty, error-prone way of dialing a number on it on an everyday basis, it can definitely add a certain charm to a project. [Caroline Buttet] thought so as well, and turned her grandma’s old rotary phone into a time-traveling, globe-trotting web radio.

The main idea is fairly simple: a Raspberry Pi connects via browser to a web radio site that plays music throughout the decades from places all over the world. [Caroline]’s implementation has a few nice twists added though. First of all, the phone of course, which doesn’t only house the Raspberry Pi, but serves both as actual listening device via handset speaker, and as input device to select the decade with the rotary dial. For a headless setup, she wrote a Chromium extension that maps key events to virtual clicks on the corresponding DOM element of the web site — like the ones that change the decade — and a Python script that turns the rotary dial pulses into those key events.

However, the phone is only half the story here, and the country selection is just as fascinating — which involves an actual world map. An audio connector is attached to each selectable country and connected to an Arduino. If the matching jack is plugged into it, the Arduino informs the Raspberry Pi via serial line about the new selection, and the same Chromium extension then triggers the country change in the underlying web site. You can check all the code in the project’s GitHub repository, and watch a demo and brief explanation in the videos after the break.

Sure, listening radio through a telephone may not be the most convenient way — unless it’s the appropriate genre — but that clearly wasn’t the goal here anyway. It’s definitely an interesting concept, and we could easily see it transferred to some travel- or spy-themed escape room setting. And speaking of spying, if [Caroline]’s name sounds familiar to you, you may remember her virtual peephole from a few months back.

Continue reading “Rotary Phone Takes You Around The World And Through Time – With Music”

An Open Source Tool To Document Your Wiring

Most of us are familiar with the tools available to create circuit diagrams, as generally that’s the first step towards producing a custom PCB. But that about the cables and wiring harnesses that don’t live on your board? How do you easily document the rat’s nest perfectly logical wiring of your latest and greatest creation?

That’s precisely the question that led [Daniel Rojas] to create WireViz. This open source Python tool takes human readable input files and turns them into attractive and functional visualizations of where all the wires in your project are going. It can even be used to generate a Bill of Materials that documents the lengths of wire required and types of connectors needed to hook everything up.

If you’re still using pre-made cables to connect all of your components together, than you might not immediately see the benefit of a tool like this. But as we’ve talked about in the past, the creation of custom wiring harnesses is something that serious hardware hackers should become familiar with. Yes it takes more effort, but the end result is worth it. With a tool like WireViz, the creation of a bespoke harness for your next project just got a little bit easier.

[Daniel] has done a fantastic job documenting this project, providing not only a tutorial on how to feed and care for your WireViz, but a gallery of examples that shows off the kind of complex wiring the tool can help make sense of. But there’s plenty more to be done, and he’s happy to get feedback or code contributions from anyone who wants to get involved.

OTA ESP32 GUI Makes Updates Simple

One of the disadvantages of having cheap WiFi-capable boards like those based on the ESP32 is that you have to update them. If you have even a few in every room of your house, it can be a pain to pull them out and connect them to a cable for programming. Over the air programming is a great answer, and [Kevin] shows how you can control the update via a simple GUI. You can see a video demonstration of how it works below.

[Kevin] uses a ready-made OTA library to do the work, but creates a GUI configuration and downloader tool. There is a manual step to force the board into the OTA mode, which might be a mild inconvenience, but it improves security since you need physical access to the device to do an update.

Continue reading “OTA ESP32 GUI Makes Updates Simple”