After the release of Mortal Kombat X, [Zachery’s] gaming group wanted to branch out into the fighter genre. They quickly learned that in order to maximize their experience, they would need a better controller than a standard gamepad. A keyboard wasn’t going to cut it either. They wanted a fight stick. These are large controllers that look very much like arcade fighting controls and include a joystick and large buttons. [Zachery’s] group decided to build their own fight stick for use with a PC.
[Zachery] based his build around the TeensyLC, which is a 32 bit development board with an ARM processor. It’s also compatible with Arduino. The original version of his project setup the controller as a HID, essentially emulating a keyboard. This worked for a while until they ran into compatibility issues with some games. [Zachery] learned that his controller was compatible with DirectInput, which has been deprecated. The new thing is Xinput, and it was going to require more work.
Using Xinput meant that [Zachery] could no longer use the generic Microsoft HID driver. Rather than write his own drivers, he decided to emulate the XBOX 360 controller. When the fight stick is plugged into the computer, it shows up as an XBOX 360 controller and Windows easily installs the pre-built driver. To perform the emulation, [Zachery] first had to set the VID and PID of the device to be identical to the XBOX controller. This is what allows the Microsoft driver to recognize the device.
Next, the device descriptor and configuration descriptor had to be added to the Teensy’s firmware. The device descriptor includes information such as USB version, device class, protocol, etc. The configuration descriptor includes additional information about the device configuration. [Zachery] used Microsoft Message Analyzer to pull the configuration descriptor from a real XBOX 360 controller, then used the same data in his own custom controller.
[Zachery] programmed the TeensyLC using the Arduino IDE. He ran into some trouble here because the IDE did not include the correct device type for an Xinput device. [Zachery] had to edit the boards.txt file and add three lines of code in order to add a new hardware device to the IDE’s menu. Several other files also had to be modified to make sure the compiler knew what an Xinput device type was. With all of that out of the way, [Zachery] was finally able to write the code for his controller.
Payphones used to be found on just about every street corner. They were a convenience, now replaced by the ubiquitous mobile phone. These machines were the stomping grounds for many early computer hackers, and as a result hold a place in hacker history. If you’ve ever wanted to re-live the good ol’ days, [hharte’s] project might be for you.
[hharte] has been working to make these old payphones useful again with some custom hardware and software. The project intends to be an interface between a payphone and an Asterisk PBX system. On the hardware side, the controller board is capable of switching various high voltage signals required for coin-line signaling. The controller uses a Teensy microcontroller to detect the hook status as well as to control the relays. The current firmware features are very basic, but functional.
[hharte] also wrote a custom AGI script for Asterisk. This script allows Asterisk to detect the 1700hz and 2200hz tones transmitted when coins are placed into the machine. The script is also in an early stage, but it will prompt for money and then place the call once 25 cents has been deposited. All of the schematics and code can be found on the project’s github page.
Moore’s law is the observation that, over the history of computing hardware, the number of transistors on integrated circuits doubles approximately every two years. This rapid advancement is certainly great for computing power and the advent of better technology but it does have one drawback; otherwise great working hardware becomes outdated and unusable. [Dave] likes his flight simulators and his old flight sim equipment. The only problem is that his new-fangled computer doesn’t have DA15 or DE9 inputs to interface with his controllers. Not being one to let something like this get him down, [Dave] set out to build his own microcontroller-based interface module. He calls it the Multijoy_Retro.
Continue reading “Multijoy_Retro Connects Your ‘Wayback’ to your ‘Machine’”
We’ve featured loads of IR Arduino projects and they are all exciting and unique. The projects spring from a specific need or problem where a custom infrared remote control is the solution. [Rick’s] double feature we’re sharing in this article is no exception, but what is interesting and different about [Rick’s] projects is his careful and deliberate tutorial delivery on how to copy infrared remote codes, store the codes with a flavor of Arduino and then either transmit or receive the codes to control devices.
In the case of his space heater an Arduino was used to record and later retransmit the “power on” IR code to the heater before he awakes on a cold morning. This way his room is toasty warm before he has to climb out from under the covers, which has the added benefit of saving the cost of running the heater all night. Brilliant idea if you don’t have a programmable heating system. Maybe he will add a temperature sensor someday so it doesn’t have to run on strictly time.
A more complicated problem was controlling DVD playback software on his computer remotely. [Rick] says he sits at a distance when watching DVDs on his computer but his computer doesn’t have a remote control like a normal TV. Arduino to the rescue again! But this time he pulls out a Teensyduino because of its added feature of being able to emulate a keyboard and of course the computer DVD playback software accepts keyboard commands. Once again he used the “IRremote.h” library to record certain button codes from an old remote control before adding the retrieved codes to a Teensyduino setup and programmed to receive and decode the remote’s IR signals. The Teensyduino then maps the IR codes to known keyboard shortcuts and transmits the simulated keyboard shortcut commands to the computer via its USB cable where the DVD playback software recognizes the key commands.
As always [Rick] shares all his libraries and sketches on his blog so follow the above links to download the files. You will not miss a single step if you follow his excellent videos below. Plus, here are some other ways and other tools for using an IR remote with your Arduino and cloning an infrared remote.
Continue reading “Primer Tutorials for Arduino IR Remote Cloning and Keyboard Simulation”
As an avid gamer, [Pat Norton] uses Teamspeak with his friends when playing World of Warcraft. [Pat]’s friends were annoyed with the voice-activated option for Teamspeak and the constant squeaking of dog toys, and [Pat] was annoyed with the questionable usability of a push-to-talk key. Dissatisfied with his options, [Pat] built footswitch-controlled teamspeak button using a Teensyduino and a broken tattoo machine foot switch.
The Teensyduino is an incredibly small Arduino compatible board that was perfect for this project. Since the teensyduino can operate as a USB Human Interface Device, it’s very easy to have the board appear as another keyboard to the computer. After borrowing some code from the hardware button of a DIY photobooth, [Pat] hooked up the foot switch to two pins of the board. From there, it was very to adapt the code so the foot switch would act as a third ‘Control’ button. The results look very professional, like a factory-made game controller. We’ve seen a few foot switch keyboard devices before, and while this probably isn’t the most efficient way to have a foot switch button control something on a computer, it’s certainly the smallest we’ve seen.
Sometimes it’s apparent that there is no practical use for something featured on Hack a Day, but we don’t know if [Andrew Filer]’s Apple ][ USB keyboard qualifies for this.
After reading through the very thorough documentation available in electronic and dead tree formats, [Andrew] decided that Apple ][ would make a great USB keyboard. Unlike modern keyboards, vintage computers like the TRS-80, Commodore 64, and the Apple ][ return the 7-bit ASCII value of the key instead of a scan code. The ASCII codes generated by the keyboard were sent through a Teensyduino running [Andrew]’s keyduino sketch.
Modern PS/2 keyboards use MAKE and BREAK scan codes sent from a microcontroller that reads the keyboard matrix. For example the MAKE code for the letter ‘A’ is 1C, while the BREAK code is F0 1C. There is a reason for this design, but for the DIYer, interfacing a keyboard becomes a challenge without a separate microcontroller. We’re thinking [Andrew]’s keyduino could be a great way to put a keyboard in a project, but we’re not about to tear up our Apples and C64s to get a keyboard.