Tearing Down a Cheap External USB Battery

[cpldcpu] recently received an external USB battery as a promotional gift and thought it would be a good idea to tear it down to see its insides. At first glance, he could see that the device included a USB micro-b socket used as a 5V input (for charging), a USB-A socket for 5V output, a blue LED to indicate active power out and a red one to indicate charging.

Opening the case revealed that most space was taken up by a 2600mAH ICR18650 Li-Ion battery, connected to a tiny PCB. A close inspection and a little googling allowed [cpldcpu] to identify the main components of the latter: a battery mangement IC, a 2A boost converter, a 3A Schottky diode, a few 2A N-Mosfets, a 300mA 2.5V LDO and an unknown 6-pin IC. It is very interesting to learn that every last one of these components seems to be sourced from China, which may explain why this USB battery is given for free. Do you think they designed it in-house and outsourced the manufacturing, or is this a product Digi-Key simply bought and put their name on?

Editorial Note: Digi-Key is an advertiser on Hackaday but this post is not part of that sponsorship. Hackaday does not post sponsored content.

[Read more...]

Bitbanging USB On Low Power ARMs

M0

With the Adafruit Trinket, the Digispark, and some very clever work with the smallest microcontroller Atmel offers, it looks like the ‘in’ thing to do for embedded software developers is to bitbang the USB protocol on hardware that shouldn’t support it. There are a lot of very small ARM chips out there without USB support, so it was only a matter of time before someone was able to bitbang USB on the ARM Cortex M0+.

The board above is based on an Energy Micro EFM32ZG, a very small 24-pin QFN device with up to 32 kB of Flash and 17 GPIOs. As with all the bitbanged USB hacks, the differential data lines are attached directly to the microcontroller. A 24 MHz crystal is needed, but the team behind the project is working on using the internal RC oscillator instead.

The code is portable with minimal changes between other manufacturer’s Cortex M0+ chips, and with a little work, this could become a very, very cheap USB-programmable ARM dev board, something the community could certainly use.

Don’t Just Go Sticking That Anywhere: Protect the Precious With a USB Wrapper

Oooh, look, a public charging station. Should you trust it? You might get juice jacked. Oh wait, you’ve got a USB Wrapper designed by [Scasagrande] to deny access to your datas.

This project was inspired by the USB Condom, but the problem with those is that they completely cut out the data lines and limit the charge rate to USB 2.0 (500mA). The data lines are used to communicate information about the charger’s power sourcing capabilities to the device. Many manufacturers short D+ and D- together, but Apple applies specific voltages to those lines.

[Scasagrande]‘s USB Wrapper gives you options. You can set it to Dedicated Charging Port, Sony, Open Circuit, or Apple. The super-cool part of this hack is for you Apple fanboys. The bottom slider lets you emulate any Apple charger and use any USB cube (including one you may have made) as long as you have that funny cable in your messenger bag.  The hardware is open source and available at [Scasagrande]‘s repo.

Make the jump to see [Scasagrande]‘s nicely detailed video about the project.

[Read more...]

USB On The ATtiny10

tiny10

Atmel’s ATtiny10 is their smallest microcontroller in terms of physical size – it’s an SOT-23-6 package, or about the same size as surface mount transistors. The hardware inside this extremely bare-bones; three I/O lines, 1kB of Flash, 32 bytes of RAM, and a reduced AVR core with 16 registers instead of 32. With such a minimal feature set, you would think the only thing this micro would be good for is blinking a LED. You’d be right, but [cpldcpu] can blink a LED with the ‘tiny10 over USB.

The V-USB interface usually requires about 1.5kB of Flash in its most minimal implementation, and uses 50 bytes of RAM. This just wouldn’t do for the ‘tiny10, and although [cpldcpu] is working on a smaller, interrupt-free V-USB, there were still some hurdles to overcome.

The biggest issue with putting code on the ‘tiny10 is its reduced AVR core – on the ‘big’ 32-register core, direct memory access is two words. On the ’10, it’s only one word. AVR-GCC doesn’t know this, and no one at Atmel seems to care. [cpldcpu] worked around this problem using defines, and further reduced the code size by completely gutting V-USB and putting it in the main loop.

It’s not much, but now [cpldcpu] can blink an LED with a ‘tiny10 over USB. If you’re wondering, 96.4% of the Flash and 93.8% of the SRAM was used for this project.

USB-ify your Old Cell Phone Chargers

phoneChargerUSBd

If you’re like us, you probably have a box (or more) of wall warts lurking in a closet or on a shelf somewhere. Depending on how long you’ve been collecting cell phones, that box is likely overflowing with 5V chargers: all with different connectors. Bring them back to life by doing what [Martin Melchior] did: chop off the ends and solder on a bunch of USB jacks.

You’ll want to use chargers rated for at least 500mA (if not 1A) for this project, or you may be wasting your time considering how much current devices pull these days. Get your polarity right, solder on a USB jack, and you’re finished. Sure, it’s a no-brainer kind of project, but it can clean out some of your closet and give you a charging station for every room of your home and the office. [Martin] glued the USB jack directly onto the adapters, so there are no tangled cords to worry about. iPhone users will need to do the usual kungfu if you want your Apple device to charge.

Interrupt Free V-USB

resync

[Tim's] new version of Micronucleus, Micronucleus 2.0, improves upon V-USB by removing the need for interrupts. The original Micronucleus was a very small implementation of V-USB that took up only 2KB. Removing the need for interrupts is a big leap forward for V-USB.

For those of you that do not know, “V-USB is a software-only implementation of a low-speed USB device for Atmel’s AVR® microcontrollers, making it possible to build USB hardware with almost any AVR® microcontroller, not requiring any additional chip.” One tricky aspect of using V-USB is that the bootloader requires interrupts, which can lead to messy problems within the user program. By removing the need for interrupts, Micronucleus 2.0 reduces the complexity of the bootloader by removing the need to patch the interrupt vector for the user program.

With the added benefit of  speeding up the V-USB data transmission, Micronucleus 2.0 is very exciting for those minimal embedded platforms based on V-USB. Go ahead and try out Micronucleus 2.0! Leave a comment and let us know what you think.

USB Keyboard And Mouse For The PS4

pcb

If you’d like to play BattleCallSpaceMarine on the Playstation 4 with a keyboard and mouse – and have an unfair advantage over everyone else playing on a console – you’d normally be out of luck. Sony implemented a fair bit of software to make sure only officially licensed controllers are able to talk to the console. It took a while, but [Frank Zhao] has figured out why keyboard and mouse doesn’t work on PS4, and created a device to enable these superior input devices.

Sony engineers decided – or were told – that the PS4 shouldn’t be able to connect to any old USB device. To that end, they made the console issue challenges to a DualShock controller to make sure the official controller is always connected over Bluetooth.

[Frank]‘s device solves this problem by taking the USB output from a keyboard and mouse, doing the CRC calculations, and sending them out over Bluetooth. Because the PS4 constantly issues challenges and responses of the authentication procedure, a real DualShock controller needs to be connected to the device at all times. Still, if you want a keyboard and mouse on the PS4, this is the way to do it.

All the sources and layouts are up on [Frank]‘s github where you’re free to create your own. This isn’t a finished product quite yet; [Frank] still needs to do a redesign of the circuit. Judging from the response of his earlier attempt at keyboards and mice on the PS4, though, this may be a successful product in the works.