The USB interface is being increasingly used as a power supply and charging port for all kinds of devices, besides data transfer. A meter to measure the electrical parameters of devices connected to a USB socket or charger would be handy on any hacker workbench. The folks at [electro-labs] designed this simple USB power meter which does just that.
The device measures voltage and current and displays them, along with the calculated power, on the small 0.5″ OLED display. The circuit is built around an ATmega328. To keep the board size small, and reduce component count, the microcontroller is run off its internal 8MHz clock. A low-resistance shunt provides current sensing which is amplified by the LT6106 a high side current sense amplifier before being fed to the 10 bit analog port of the ATmega. A MCP1525 precision voltage reference provides 2.5V to the Analog reference pin of the microcontroller, resulting in a 2.44mV resolution. Voltage measurement is via a resistive divider that has a range of up to 6V. An Arduino sketch reads voltage and current data on the analog ports and displays measurements on the display. The measured data is averaged to filter out noise.
The OLED display has a SPI interface and requires the u8glib library. The project uses all SMD parts, but is fairly easy to assemble by hand and could be a nice starter project if you want to wet your feet on surface mount assembly techniques. It’s designed using SolaPCB EDA software, and the source files for schematic and board layout are available as a ZIP archive. Download the BoM and Arduino code and you have everything needed to build this nifty device.
Thanks to [Abdulgafur] for sending in this tip. And if you are looking for a more comprehensive solution, check the awesome Friedcircuits USB Tester which we reviewed earlier and is available in the Hackaday Store.
We’re not using 9 Volt batteries to power our projects anymore; the world of hobby electronics has moved on to cheap LiPo batteries for most of our mobile power storage. LiPos aren’t the best solution, evidenced by hundreds of YouTube videos of exploding batteries, and more than a few puffy cells in our junk drawer. The solution? LiFePO4, or lithium iron phosphate cells. They’re a safer chemistry, they have low self discharge, and have more recharge than other chemistry of lithium cells.
LiFePO4 cells aren’t easy to deal with if you’re working with breadboard electronics, though. Most of that is because there aren’t many breakout boards for these cells. [Patrick] is working on changing that with his LiFePO4werd USB charger.
The concept is simple: use an off-the-shelf part for LiFePO4 batteries – in this case an MCP73123 – and make a board that charges the batteries with a USB port. It’s exactly the same idea as the many USB LiPo chargers out there, only this one uses a better battery chemistry.
[Patrick] is using a 550mAh battery for this project, but there’s no reason why it couldn’t be upgraded to a 18650-sized cell with more than 2000mAh stuffed inside. Add a boost converter to the circuit, and he’ll have the perfect power source for every portable electronics project imaginable.
When you’ve got a scanning electron microscope sitting around, you’re going to find ways to push the awesome envelope. [Ben Krasnow] is upping his SEM game with a new rig to improve image capture (video link) and more easily create animated GIFs and videos.
The color scheme of the SEM housing gives away its 80s vintage, and the height of image capture technology back then was a Polaroid camera mounted over the instrument’s CRT. No other video output was provided, so [Ben] dug into the blueprints and probed around till he found the high-resolution slow scan signal.
To make his Teensy-LC happy, he used a few op-amps to condition the analog signal for the greatest resolution and split out the digital sync signals, which he fed into the analog and digital ports respectively. [Ben] then goes into a great deal of useful detail on how he got the video data encoded and sent over USB for frame capture and GIF generation. Reading the ADC quickly without jitter and balancing data collection with transmission were tricky, but he has established a rock-solid system for it.
Continue reading “Scanning Electron Microscope Images and Animations Pulled By Impressive Teensy LC Setup”
Modern computers are rubbish. Why, they barely have a switch or a blinky light on them. What’s the point in having a computer if you don’t have the thrill of throwing a switch or eight and watching lights blink in response? [Smashcuts] obviously agrees because he built a control panel filled with heavy-duty switches and blinking wonderfulness to augment his battlestation. This piece of mechanical wonderment has buttons for useful features such as typing several levels of derisive laughter in chat windows, playing odd sound effects and a large red panic button that… well, I won’t spoil the surprise. The whole thing is hand-wired and fronted with laser-cut panels that make it look really authentic. [smashcuts] built it “because it didn’t exist and I felt like it needed to”, which is a perfect justification for this piece of industrial scale awesomeness.
It does have some more practical uses, though: he has set several of the switches to trigger actions in Photoshop and other programs, so this could be easily adapted for those who have the odd belief that things need a practical use to exist. He used USB controllers from Desktop Aviator, and a Mac program called Controller Mate to set up the sequencing for the blinkies. Unfortunately, [smashcuts] didn’t produce a how-to guide for this panel, claiming that “I don’t really have blueprints or schematics. I REALLY didn’t know what I was doing, so all the notes I do have wouldn’t make sense to anyone. It’d be like reading an owners manual to a car written by a caveman”. Either way, it is an impressive build, and you can find more details from the creator on this reddit thread.
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.
[Bbraun] has an old Macintosh SE computer. He was looking for a way to view the video output from the SE on a newer, modern computer. He ended up working out a pretty clever solution using a stm32f4discovery board.
First, the SE’s logic board was removed from its case and placed onto a desk for easier access. The discovery board was then hooked up to the SE’s processor direct slot (PDS) using normal jumper wires. The discovery board acts as a USB COM port on a newer Mac OSX computer. The discovery board watches the SE for writes to video memory. When it sees that the R/W pin goes low, it knows that a write is occurring. It then waits for /AS to go low, which indicates that an address is on the bus. The discovery board reads the address and verifies that it falls within the range of the video frame buffer. If it does, then the discovery board writes a copy of the data to a local buffer.
The OSX computer runs a simple app that can make a request to the discovery board via USB. When the board receives the request, it sends its local frame buffer data over the USB connection and back to the host. The OSX computer then displays that data in a window using CGImage. The demo video below was captured using this technique. Continue reading “Viewing A Macintosh SE’s Video On A Modern Computer”
[pmf], like most of us, I’m sure, spends most of his days on a computer. He also has a smartphone he keeps at his side, but over the years he’s grown accustomed to typing on a real keyboard. He came up with the idea of making a USB switch that would allow his keyboard to control either his computer or his phone, and hit upon a really neat way of doing it. He’s using a BeagleBone Black and a Teensy to switch his keyboard between his computer and his phone with just a press of a button.
This homebrew smart KVM uses a BeagleBone Black for most of the heavy lifting. A keyboard and mouse is connected to the USB host port of the BeagleBone, and the main computer is connected to the device port. The BeagleBone is set up to pass through the USB keyboard and mouse to the computer with the help of what Linux calls a ‘gadget’ driver. This required an update to the Linux 4.0 kernel.
With the BeagleBone capable of being a USB pass through device, the next challenge was sending keypresses to another USB device. For this, a Teensy 2.0 was connected to the UART of the BeagleBone. According to [pmf], this is one of the few examples of the Teensy serving as a composite USB device – sending both keyboard and mouse info.
There are a few neat features for [pmf]’s build: the keyboard and mouse don’t disconnect when switching, and thanks to a slight modification of the USB OTG adapter, this will also charge a phone as well as allow for the use of a keyboard. Because the BeagleBone Black has more than one UART this build can also switch keyboards and mice between more than two computers. For those of us who invest heavily in keyboards, it’s a godsend.