A lot of people can bake a cake. Sort of. Most of us can bake a cake if we have a cake mix. Making a cake from scratch is a different proposition. Sure, you know it is possible, but in real life, most of us just get a box of cake mix. The Raspberry Pi isn’t a cake (or even a pie), but you could make the same observation about it. You know the Raspberry Pi is just an ARM computer, you could program it without running an available operating system, but realistically you won’t. This is what makes it fun to watch those that are taking on this challenge.
[Deater] is writing his own Pi operating system and he faced a daunting problem: keyboard input. Usually, you plug a USB keyboard into the Pi (or a hub connected to the Pi). But this only works because of the Linux USB stack and drivers exist. That’s a lot of code to get working just to get simple keyboard input working for testing and debugging. That’s why [Deater] created a PS/2 keyboard interface for the Pi.
Even if you aren’t writing your own OS, you might find it useful to use a PS/2 keyboard to free up a USB port, or maybe you want to connect that beautiful Model-M keyboard without a USB adapter. The PS/2 keyboard uses a relatively simple clock and data protocol that is well-understood. The only real issue is converting the 5V PS/2 signals to 3.3V for the Pi (and vice versa, of course).
Gaming on a PC is obviously superior and you would be a fool to argue otherwise. The keyboard and mouse is the obviously superior input device, but there are times when you just want to play games on a couch. [Gabriel] has an interesting solution to this input problem in the second version of his KeyBall Controller. It’s a controller, but it leverages the superior layout and precision of the keyboard and mouse combo, without making any compromises.
[Gabriel]’s KeyBall Controller began its life as several generic console controllers. The main body of is mostly a clone of the original Xbox S controller. Inside, there are parts from a clone SNES controller, a PSX controller, a generic USB trackball, and an iPazzPort USB handheld keyboard.
The construction of the KeyBall follows in the tradition of the best case modders we’ve ever seen: cutting plastic, gluing plastic, applying epoxy putty, and lots of sanding. The electronics for the controller also follow in the most hallowed traditions of case modders: perfboard, hot glue, and many fine strands of wire. Inside the controller is a USB hub to connect all the different USB devices.
It’s a great device that finally solves the problem of putting a traditional keyboard and mouse layout in the palms of your hands.
You’d think just about all the permutations of adding a hub to the Raspberry Pi Zero were done. But you’d be wrong. [Daniel’s] approach is to put the Zero inside the existing case for the hub. The LogiLink hub used is in a nice metal case with mounting flanges on the side. It looks robust and not much like a typical consumer hub. This hack would serve well where the Zero and hub might take a few wacks.
It took some fiddling with the hub components but he made it work. The easy part was wiring the the power and USB test points on the Zero to the hub.
More challenging were the mechanical aspects to physically fit the Zero into the case. Four LEDs were removed since their only purpose was indicating if a cables were plugged into the hub. There are four electrolytic capacitors standing upright that occupied the space needed by the Pi. [Daniel] repositioned them to lie horizontally to provide room for the Zero.
With the Zero able to fit inside the case the next steps are to create mounting holes in the USB board and cut holes in the case to access the HDMI and USB ports and the SD card holder. Some finicky work with a Dremel provided the holes and the cutouts. Fortunately, the mounting holes on the Zero aligned with some open spaces on the USB board. If they don’t, some glue and standoffs might be sufficient.
The only aspect [Daniel] left for you to hack is access to the GPIO port. That would require another cutout to bring out a ribbon cable for controlling your world. After such a nicely detailed writeup with a plethora of pictures, he had to leave something for other hackers to do.
[Steve]’s big realization was that he could send the digital data that the Neopixels needed by carefully selecting a resolution and clock rate for the VGA to match the timings that the WS2811 modules wanted. A resolution of 840×1000 at 28MHz produces 70 pixels per WS2811 bit, or 12 bits per line. This means two VGA lines need to be sent for the RGB triple for each LED, hence the 1000 rows.
There are some further tricks before [Steve] got around to writing a custom OpenGL shader that converts regular graphics to his strange black-and-white bit pattern to drive the LEDs, but you’re going to have to read [Steve’s] blog for all that. If you’re waiting for a full code write-up, [Steve] says that one’s pending.
We’re just stoked to see the computing power that lies within a video card used for other purposes. Once you think of the VGA output as a general-purpose high speed (analog!) output, it opens up a whole bunch of possibilities if you can write the corresponding video software. As [Steve] points out, he’s only using the red channel right now — he could trivially add another 1000 LEDs just by tweaking his video code.
If you need to reverse-engineer a USB protocol on a computer running Linux, your work is easy because you control everything on the target system — you can just look at the raw USB data. If you’d like to reverse-engineer a USB device that plugs into a game console, on the other hand, your work is a lot harder. Until now.
serialusb is a side-project by [Mathieu Laurendeau], alias [Matlo]. His main project, GIMX is aimed at gaming and lets you modify your gaming controller’s performance by passing it first through your PC and tweaking the USB data before forwarding it on to the target console. Want rapid fire? You got it. Alter the steering-wheel sensitivity curves? Sure.
GIMX is essentially a USB man-in-the-middle between your controller and your console, with the added ability to modify the data along the way. For hardware that’s not yet supported by GIMX, though, either [Matlo] would need to borrow your controller, or teach you to man-in-the-middle your own USB traffic. And that’s what serialusb does.
The hardware required is very modest: a USB-to-serial adapter and an ATmega32u4-based Arduino clone. Many of you could whip this together with parts on hand, and it’s the same hardware you’d need to run GIMX anyway. Data goes through your computer, is usbmon’ed and wireshark’ed, and then passed over serial to the ATmega which then converts it back into USB, plugged into the console. A very tidy little setup.
[Neil Movva] is not your average college student. Rather than studying for exams or preparing to defend a dissertation, he’s working on a project that will directly help the disabled. The project is Pathfinder, a wearable haptic navigation system for the blind. Pathfinder is an ambitious project, making it all the way to the semifinals of the 2015 Hackaday Prize. Haptics, the technology of providing feedback to a user through touch, lies at the core of Pathfinder. [Neil] was kind enough to present this talk about it at the Hackaday SuperConference.
Back in the day, we had smartphones with physical buttons. Not just power, volume, and maybe another button on the front. Whole, slide-out QWERTY keyboards right on the underside of the phone. It was a lawless wasteland, but for those who yearn for the wild-west days of the late 2000s, [Liviu] has recreated the shortcut buttons that used to exist on the tops of these keyboards for modern-day smartphones.
There were lots of phones that had shortcut keys on their keyboards, but [Liviu] enjoyed using the ones that allowed him to switch between applications (or “apps” as the kids are saying these days) such as the calendar, the browser, or the mail client. To recreate this, he went with a few NFC tags. These devices are easily programmed via a number of apps from your app store of choice, and can be placed essentially anywhere. In order to make them visible to the phone at any time, though, he placed the tags inside a clear plastic case for his phone and can now use them anytime.
If you’ve never used or programmed an NFC tag, this would be a great project to get yourself acquainted with how they operate. Plus, you could easily upgrade this project to allow the tags to do any number of other things. You can take projects like this as far as you want.