[Tim Caswell] has been using gamepads and joysticks to demonstrate his node.js hacks for a long time. The thing is, he has been relying on C++ bindings to handle the hardware while trying to herald the praises of node.js. Why not cut out the middle man and write a joystick driver in node.js? It turns out to be so simple anyone can do it.
Granted, this is not a kernel driver. He’s relying on the Linux kernel to recognize the hardware and provide him with the customary /dev/js0 file which he can then work with. As you can see in the snippet above, he’s looping through code in order to constantly read from the hardware. To get this far he dug through the documentation for joystick packets (yay for open source!) to find that each is made of a 32-bit timestamp, a 16-bit value, and two 8-bit numbers identifying the event type and button or axis.
Once he has the packets, it’s off to the races. Each data type is parsed into an appropriate variable which you can use in the logic of your own program. Don’t be nervous, this will make a great weekend project!
What good is a moat if nobody is guarding it? We suppose that depends on what beasties lurk beneath the surface of the water, but that’s neither here nor there. The members of LVL1 continue their quest to outdo each other in augmenting the building’s automated features. The latest offering is this security camera which is operated with an analog thumb stick.
These are the people who are building a moat (which the city things is a reflecting pool) in front of their main entrance. Now they will be able to see and sense if anyone is trying to get across the watery hazard. The hack marries an ultrasonic rangefinder and camera module with a pair of servo motors. The brackets for the motors allow a full range of motion, and the signal is translated by an Arduino and Video Experimenter shield to put out a composite video signal. That’s not going to make streaming all that easy, but we’re sure that is just one more hack away.
We see a pretty steady stream of projects that use Xbee modules. They’re one of the more reliable and popular ways to add a wireless aspect to your project. But we don’t often see them used to their full potential. Since there’s a microcontroller onboard, many simple tasks can be accomplished without the need for an addition microcontroller. [Stephen’s] showing how this can be done, by reading the stick and button data from a game controller using only an Xbee module.
His test setup uses an Arduino to drive servo motors on the receiving end of the hardware. You can’t do everything with Xbee, but the sender is where this concept comes into play. [Stephen] grabbed an older gamepad which is meant for use with a PC game port. The joystick uses potentiometers to measure position data, and the buttons simply complete a circuit. He altered the joystick by adding voltage dividers to the pots, and pull-up resistors to the buttons. From there he just wired it up to the Xbee and set up the module’s firmware to package and transmit the data. It’s a nice way to do more with less.
We had a little discussion here at Hackaday about Xbee modules which seem to be in short supply. Some of us think it’s due to the flooding in Thailand. If you’ve got some info on the situation, or just want to share your own conspiracy theory, let us know in the comments.
Don’t get your dirty fingers on the glass
[Poke] sent in a video of him using Android devices with a wiimote and PS3 controller. The build uses the Joystick2Touch and the USB Joystick Center app. Root is required, but this will be very useful when tv-sized Android devices start showing up.
Wonderful restoration work
[John] sent in an Instructable on restoring an ancient typewriter. It’s almost beautiful seeing all those delicate metal parts so finely cleaned and reassembled.
Proof of the Big Bang is in one of these articles
[Paleotechnoligist] has been reading the technical journals from Bell Labs. These people were the Google of the 20th century and did some amazing stuff. Here’s the math for getting to the moon and a thing about “cellular telephony.”
Oooohhh extruded aluminum
[Richard Sum] sent us a pic of his new 3D printer kit he’ll be offering soon. Very professional looking.
Flying like a three dollar bill
[Yannick] and [SaakNeMah] sent in this video of a guy strapping on bird wings, running down a field, and then flying for about 100 meters. The project is Human Birdwings and it’s gotten an amazing amount of press coverage. We’re calling fake on this for three reasons: the wings didn’t produce lift, the camera angles are all wrong (only applicable if there was a single flight), and this guy would be a gazillionaire if his wings actually worked. Argue amongst yourself in the comments; we’d love to be proven wrong.
[Marcus Gritsch] wanted to do his retro gaming using retro hardware… or at least using some retro hardware. Although he was playing his Commodore 64 games in an emulator, he figured that using an original controller would boost the nostalgia quite a bit. This is a vintage Competition Pro joystick that has buttons and a joystick of a similar quality to arcade hardware and a DE-9 connector. He managed to connect new to old by building his own USB to C64 joystick adapter.
His project started out by breadboarding a circuit based on a PIC 24FJ64GB002 microcontroller. This does all of the work, having native USB support, and no problem reading and translating the signals from the old hardware which are simply conductors for each internal switch that pull to ground when actuated. Once working, he soldered everything to some protoboard; a connector at each end, the chip itself, a voltage regulator, and some passive components. It’s a, robust build that should give him years of emulated fun.
[Jamie] built his own USB connected arcade controller. We’ve been seeing a lot of these lately, and they usually involve soldering buttons to a keyboard PCB. But [Jamie] decided to go a different route and use his own microcontroller. This method always gets a bit hairy when it comes to deciding how to connect it to a computer. Dealing with the USB stack used to be quite tricky, but the LUFA project is slowly taking the pain out of the process.
The Lightweight USB Framework for AVRs is an open source project that handles the hard work associated with USB capable AVR microcontrollers. [Jamie] knew that they already had a sample implementation of a hardware joystick. He’s not using one of the supported boards and so wasn’t able to just compile and go. But porting the code to work with his minimus board was simple enough. With the code in place, the physical build was quite simple. The buttons and joystick were mounted on the surface of an overturned drawer. Each is connected to one pin of the controller board and to ground. LUFA makes sure that the device enumerates as a joystick, and [Jamie] was gaming in no time.
[Alex] wanted to play video games with an arcade stick and buttons, but got sticker shock after seeing the price of commercially available controllers that connect to a computer via USB. He set out to build his own and ended up with the controller-in-a box that you see above.
At first he tried using an mbed microcontroller board but was unhappy with the latency built into the system that detected a button press, sent it via USB as a keyboard press, which was then interpreted as input by the game. He ditched the microcontroller completely and picked up a couple of 4021 parallel-to-serial shift registers. He had previously used this method to make his own SNES controller. The SNES uses two 8-bit shift registers to generate an 16-bit serial packet to send to the console. [Alex’s] reused that system, adding an SNES controller plug to his arcade box, and using the SNES to USB converter he already had to connect to the computer. Now he’s got a portable controller for the cost of three buttons, the stick, and two IC’s.
He explains the project himself in the clip after the break.
Continue reading “Arcade controller in a box”