A few weeks ago in Finland [Oona] discovered a radio data stream centered around 76KHz in a FM broadcast and she recently managed to decode it. This 16,000bps stream uses level-controlled minimum-shift keying (L-MSK) which detection can be quite tricky to implement. She therefore decoded the stream by treating the received signal as non-coherent binary FSK, which as a side effect increased the bit error probability. [Oona] then understood that the stream she was getting was the data broadcast by Helsinky buses to the nearby bus stop timetable displays. She even got lucky when she observed a display stuck in the middle of its bootup sequence, displaying a version string. This revealed that the system is called IBus and made by the Swedish company Axentia. However their website didn’t provide the specs for their proprietary protocol. After many hours of sniffing and coding, [Oona] successfully implemented the five layer protocol stack in Perl and can now read the arrival times of the nearby buses from her apartment.
A friend of [Michael]‘s said his company was getting rid of some old lab equipment and asked him if he wanted a very large and very old digital storage oscilloscope. A ‘hell yes’ and we’re sure a few beers later, [Michael] found an old Gould 200 MHz four-channel scope on his bench. Even 20 years after its production it’s still a capable tool, but the serial ports on the back got [Michael] wondering – would it be possible to plot the screen of the scope on his computer?
The scope has three ports on the back – GPIB, miscellaneous I/O, and RS423. The latter of those ports is similar enough to RS232 that a USB to Serial converter just might work, and with the help of a null modem cable and a terminal, [Michael] was able to connect to this ancient scope.
In the manual, [Michael] found a the serial commands for this scope. The most useful of these is a command that prints out the contents of the scope’s trace memory as a series of 1-byte integers. With a short bit of PERL programming, [Michael] can create a PDF plot of whatever is on the scope’s screen. It’s formatted perfectly for Gnuplot, MATLAB, or even Excel.
Awesome work, and especially useful given these old scopes are slowly making their way to a technological boneyard somewhere.
Writing a paper in LaTeX will always result in beautiful output, but if you’d like to put that document up on the web you’re limited to two reasonable options: serve the document as a .PDF (with the horrors involves, although Chrome makes things much more palatable), or relying on third-party browser plugins like TeX The World. Now that [Todd Lehman] has finally cooked up a perl script to embed LaTeX in HTML documents, there’s no reason to type e^i*pi + 1 = 0 anymore.
For those not in the know, LaTeX is a document typesetting language that produces beautiful output, usually in PDF form. Unfortunately, when [Tim Berners-Lee] was inventing HTML, he decided to roll his own markup language instead of simply stealing it from [Don Knuth]. Since then, LaTeX aficionados have had to make do with putting TeX snippets into web pages as images or relying on the [; \LaTeX ;] generated from the TeX The World browser extension.
[Todd Lehman]‘s perl script generates the PDF of his LaTeX file and pulls out all the weird font and math symbols into PNG files. These PNG files are carefully embedded into the HTML file generated from the normal text pulled from the LaTeX file. It’s a ton of work to get these document systems working correctly, but at least there’s a reasonable way to put good-looking LaTeX on the web now.
If you’re going to freeze your butt off smoking in the middle of winter you might was well have company while you’re out there. [Zach's] company wanted to crunch some data about smoking breaks and worker productivity. Instead of just meeting the bland data collection needs he decided to add functionality.
He took time to explain the different parts of the system. Above you can see the web interface that lets you know which of your coworkers are smoking right now. It also lets you click to check in and out from your breaks. After this was up and running he found that often the smokers forgot to ‘clock out’ before a break. As a backup system he build a physical interface on the way out of the office. Each smoker has their own button with a corresponding LED. If the light’s on you’re having a break and when it’s off you’re working. This controller is Arduino based and uses a Perl script to monitor the input and sync both that physical display and the web interface. [Zach] posted a few pictures if you want to take a look at the rest of the system.
Here’s an analog bandwidth meter made to look like an old pressure gauge. It’s actually new, but the paper showing the graduated scale was stained in a bath of black tea, then dried in an oven to give it an aged appearance. We think it’s quite effective.
The dial itself is a volt meter driven by an Arduino in much the same way as the multimeter clock. Bandwidth data is pulled from a Linux router, filtered down to the target data using ‘grep’, and sent over the serial connection by a Perl script. Since the meter itself is just waiting for serial data, alterations to the router’s scripting make it easy to represent a count of unread emails, tweets, or whatever data your code can scrape.
Here’s a study in sprite animations that [Travis Goodspeed] put together. He’s working with one of his favorites, the pink IM-ME device that he’s been hacking on for a while now. But if you don’t have this hardware that shouldn’t discourage you. There’s a lot to be learned from his methods which will translate to any microcontroller working with a graphic LCD.
He starts with a 24-bit PNM sprite that includes three frames of his desired animation. From there he needs a way to store the data for use with 8-bit microcontrollers. He chose to write a Perl script that will translate the image format into a 1-bit map. Each frame of the animation takes up a column width that is a multiple of 8 for easy retrieval by the processor. This translation into a C array, and the accompanying code that translates it into data for the frame buffer is the key to the animation process. What is he shooting for? A sprite-based video game on the handheld.