[William Osman] and [Simone Giertz] have graced our pages before, both with weird, wacky and wonderful hacks so it’s no surprise that when they got together they did so to turn Simone’s car into a computer mouse. It’s trickier than you might think.
They started by replacing the lens of an optical mouse with a lens normally used for a security camera. Surprisingly, when mounted to the car’s front bumper it worked! But it wasn’t ideal. The problem lies in that to move a mouse cursor sideways you have to move the mouse sideways. However, cars don’t move sideways, they turn by going in an arc. Move your mouse in an arc right now without giving it any sideways motion and see what happens. The mouse cursor on the screen moves vertically up or down the screen, but not left or right. So how to tell if the car is turning? For that, they added a magnetometer. The mouse then gives the distance the car moved and the magnetometer gives the heading, or angle. With some simple trigonometry, they calculate the car’s coordinates.
The mouse click is done using the car’s horn, but details are vague there.
And yes, using the carmouse is as fun as it sounds, though we still don’t recommend texting while driving using this technique. Watch them in the videos below as they write an email and drive a self-portrait of the car.
Continue reading “Turning A Car Into A Computer Mouse”
Taking a dive into VR or augmented reality — once, dreamed-of science fiction — is not only possible for the average consumer, but crafting those experiences is as well! Hackaday.io user [kvtoet]’s HandHolo is a homebrew method to cut your teeth on peeking into a virtual world.
This project requires a smartphone running Android Oreo as its backbone, a Bluetooth mouse, a piece of cardboard and a small mirror or highly reflective surface. The phone is slotted into the cardboard housing — prototype with what you have! — above the mouse, and the mirror angled opposite the screen reflects the image back to the user as they explore the virtual scene.
Within Unity, [kvtoet]’s used a few scripts that access phone functions — namely the gyroscope, which is synchronised to the mouse’s movements. That movement is translated into exploration of the virtual space built in Unity and projected onto the portal-like mirror. Check it out!
Continue reading “HandHolo: A Homebrew ARG”
Plenty of PC games rely on the mouse for input, and browser games are no exception. Unfortunately though, this isn’t always the most intuitive controller. [Nathan Ramanathan] combined a couple hacks to get the controller he wanted for playing browser games like Agar and Slither. No rodents were harmed in this project.
The games he wanted to dominate were top-down view so there was no need to move the mouse far from the center of the screen. For a more intuitive interface, a Wii nunchuck with its integrated joystick was selected. Nunchucks were notoriously hackable. An Arduino converted the nunchuck’s data into mouse movements. Inside the computer, Autohotkey kept the mouse pointer reined in where it was useful. Autohotkey was a scripting tool for executing keyboard and mouse macros.
The result was a joystick which controlled these browser games exactly the way you would expect a joystick to control a game. Mouse functionality, including standard and fast scrolling, was an added bonus so games like Minecraft aren’t left behind. The ergonomics of the nunchuck make us wonder why it hasn’t been seen in more wearable hacks.
Custom game controllers are no stranger to Hackaday readers. We’ve seen them built from LEGO blocks, automobiles, and even a decorative rug.
Continue reading “Digital Mouse Trap”
When did you last buy a mouse? Did it have a little adapter in the box? There was a time when if you bought a USB mouse, in the box was also an adapter to allow it to be used with the older PS/2 interface. And if you were to go back a few more years into the past, you’d have found when you bought a mouse with a PS/2 connector fitted, it may well have come with an adapter for a 9-pin RS232 serial port. Those mice from a decade or more ago would have contained the software to recognise the interface into which they were plugged, and emulate it accordingly. It is unlikely then that you could take a modern USB-only device and an unholy chain of USB-to-PS/2-to-serial adapters, and have it work as a serial mouse. Want to run Windows 3.1 on a 386DX? You need a serial mouse.
Happily, [matze525] has come along with a solution for those of you with a need to drive an ancient PC with a serial mouse. He’s created a PS/2 to RS232 mouse converter, and it takes the form of a little PCB with an AT90S2313P microcontroller to do the translation and an RS232 level converter chip.
It might sound like a rather unexpected device to produce, but we can see it fills an important niche. In the early 1990s mice were not the reliable optical devices we have today, instead they had nasty mechanical connections inside, or if you were extremely lucky, optical encoder wheels. The supply of still-reliable RS232 mice must therefore be dwindling, and if you have a Windows 3.1 PC to keep alive then we can see the ability to use a more modern pointing device has a lot going for it.
If you have one of those machines from that era that came with proprietary interfaces, maybe you can make use of a USB to quadrature converter.
A mouse with malfunctioning buttons can be a frustrating to deal with — and usually a short leap to percussive maintenance. Standard fixes may not always last due to inferior build quality of the components, or when the microswitch won’t close at all. But, for mice that double/triple-click, will release when dragging, or mis-click on release, this Arduino-based hack may be the good medicine you’re after.
Instructables user [themoreyouknow]’s method cancels click malfunctions by latching the mouse’s controller switch trace to ‘on’ when pressed, keeping it there until the button normally closed contact closes again completely. Due to the confined spaces, you’ll want to use the smallest Arduino you can find, some insulating tape to prevent any shorts, and care to prevent damaging the wires this process adds to the mouse when you cram it all back together.
Before you take [themoreyouknow]’s guide as dogma, the are a few caveats to this hack; they are quick to point out that this won’t work on mice that share two pins between three buttons — without doing it the extra hard way, and that this might be trickier on gaming or other high-end mice, so attempt at your own peril.
Speaking of gaming mice, we recently featured a way to add some extra functionality to your mouse — cheating optional — as well as how to stash a PC inside an old Logitech model.
[Jarunzel] needed a device that would automatically click the left button on a mouse at a pre-set interval. For regular Hackaday readers, this is an easy challenge. You could do it with an ATtiny85 using the VUSB library, a few resistors and diodes, and a bit of code that emulates a USB device that constantly sends mouse clicks over USB every few seconds. You could also do it with a Raspberry Pi Zero, using the USB gadget protocol. Now, this mouse-clicking gadget would be connected to the Internet (!), programmable with Node or whatever the kids are using these days, and would have some major blog cred. If you’re feeling adventurous, this mouse clicker gadget could be built with an STM32, Cypress PSoC, or whatever microcontroller you have in your magical bag of hacker tricks.
Then again, you could also do it with a 555 timer.
The reason [Jarunzel] couldn’t use any of the fancy hackertools for this build is because the system wouldn’t accept two mouse devices. No matter, because Maplin has a neat kit with a 555 timer and a relay. The relay is wired up across the microswitch in the mouse, and setting the values correctly makes the mouse click about once per second, with a click duration of about 100ms. Good enough.
With the kit built, wired into the mouse, a small app built to test the device, and a nice project box constructed, [Jarunzel] had exactly what he needed. There’s even a video of this mouse clicker in action. You can check out that riveting footage below.
Continue reading “Someone Finally Did It With A 555”
Here’s a DEF CON talk that uses tools you likely have and it should be your next hacking adventure. In their Saturday morning talk [Mark Williams] and [Rob Stanely] walked through the process of adding their own custom code to a gaming mouse. The process is a crash course in altering a stock firmware binary while still retaining the original functionality.
The jumping off point for their work is the esports industry. The scope of esporting events has blown up in recent years. The International 2016 tournament drew 17,000 attendees with 5 million watching online. The prize pool of $20 million ($19 million of that crowdfunded through in-game purchases) is a big incentive to gain a competitive edge to win. Contestants are allowed to bring their own peripherals which begs the questions: can you alter a stock gaming mouse to do interesting things?
The steelseries Sensei mouse was selected for the hack because it has an overpowered mircocontroller: the STM32F103CB. With 128 KB of flash the researchers guessed there would be enough extra room for them to add code. STM32 chips are programmed over ST-Link, which is available very inexpensively through the ST Discovery boards. They chose the STM32F4DISCOVERY which runs around $20.
Perhaps the biggest leap in this project is that the firmware wasn’t read-protected. Once the data, clock, and ground pads on the underside of the board were connected to the Discovery board the firmware was easy to dump and the real fun began.
They first looked through the binary for a large block of zero values signifying unused space in flash. The injected firmware is designed to enumerate as a USB keyboard, open Notepad, then type out, save, and execute a PowerShell script before throwing back to the stock firmware (ensuring the mouse would still function as a mouse). Basically, this builds a USB Rubber Ducky into stock mouse firmware.
There are a few useful skills that make taking on this project a worthwhile learning experience. To compile your custom code correctly you need to choose the correct offset address for where it will end up once pasted into the firmware binary. The vector table of the original code must be rewritten to jump to the injected code first, and it will need to jump back to the mouse execution once it has run. The program flow on the left shows this. Both of these jumps require the program counter and registers to be saved and restored. The ARM stack is subtractive and the address will need to be updated to work with the added code.
The talk ended with a live demo that worked like a charm. You can check out the code in the MDHomeBrew repo. In this case the PowerShell script adds keyboard shortcuts for DOOM cheats. But like we said before, the experience of getting under the hood with the firmware binary is where the value will be for most people. With this success under your belt you can take on more difficult challenges like [Sprite_TM’s] gaming keyboard hack where the firmware couldn’t easily be dumped and an update binary was quite obsfucated.