USB Comes To The ESP32

Since the ESP8266 came on the scene a few years ago and revolutionized the way microcontrollers communicate with other devices, incremental progress on this chip has occurred at a relatively even pace. First there was the realization that code could be run on the chip itself. Next the ESP32 was released which built more on that foundation. The next step in that process of improvement may be here now as well, with this project which turns the ESP32 into a USB host.

USB is not a native feature on all microcontrollers or even Arduino-compatible boards. While some do have it built in like those based on the 32u4 for example, most either don’t have it at all or rely on a separate on-board chip to do some form of translating. The ESP32 is lacking this advanced feature so the USB needs to be cobbled together from scratch if you want this specific board to be able to interface directly with peripherals. This project does just that, allowing for four USB 1.1 devices to be connected directly to the ESP32 without a separate dedicated chip.

If you’ve been waiting for USB on this tiny, capable microcontroller this might be your chance to try it out. All of the project’s code is available on the project page. And, while it is limited in scope, it’s easily able to handle a keyboard or mouse. This might be a more cost-effective way of doing something like a KVM switch rather than doing it with three Arduinos.

 

Remove Security Issues From Untrusted USB Connections

USB has become pretty “universal” nowadays, handling everything from high-speed data transfer to charging phones. There are even USB-powered lava lamps. This ubiquity doesn’t come without some costs, though. There have been many attacks on smartphones and computers which exploit the fact that USB is found pretty much everywhere, and if you want to avoid these attacks you can either give up using USB or do what [Jason] did and block the data lines on the USB port.

USB typically uses four wires: two for power and two for data. If you simply disconnect the data lines, though, the peripheral can’t negotiate with the host for more power and will limp along at 0.5 watts. However, [Jason] discovered that this negotiation takes place at a much lower data rate than normal data transfer, and was able to put a type of filter in between the host and the peripheral. The filter allows the low-frequency data transfer pass through but when a high-frequency data transfer occurs the filter blocks the communication.

[Jason] now has a device that can allow his peripherals to charge at the increased rate without having to worry about untrusted USB ports (at an airport or coffee shop, for example). This simple device could stop things like BadUSB from doing their dirty work, although whether or not it could stop something this nasty is still up in the air.

Hackaday Links: July 25, 2010

Radio Receiver

If you never got the chance to build one as a kid [JoOngle] takes you through the steps to build your own radio receiver. Details are a bit scarce but it’s nothing your friend Google can’t help you out with.

Fixing a Blackberry trackball

If your Blackberry trackball stops working well you can try this non-technical fix. Remember when mice used to have a ball in them and you would need to clean out the gunk from time to time? Forcefully skidding your Blackberry across a piece of paper does a similar service.

Linux time lapse

Open source can be a great help to small businesses. Here’s a way to use a Linux machine to make time-lapse movies from surveillance camera feeds. We especially enjoy the use of a desktop wallpaper that has the terminal commands necessary to start recording.

Host a webpage with Dropbox

Here’s a way to host a simple webpage using Dropbox. It’s one of those easy ideas that you wouldn’t come up with yourself. When you place an HTML file in your Dropbox you can get a public URL which will be built as a webpage when visited with a browser.

Inline splicing

To round out the weekend here’s [Osgeld’s] tips on inline wire splicing. We laughed as he recounted spearing himself with stray strands. This is pretty simple stuff but he’s explained it well and who’s to pass up a good tip?

Mouse Controlled Manipulator Arm

[Oleg] worked out a way to use his USB mouse to control this manipulator arm. Using a Lynxmotion AL5D (we’ve seen the AL5A previously) he drives the six servos with an Arduino servo shield. A USB host shield handles the HID end for connecting the mouse. The video after the break says it all, [Oleg] has no problem picking up that figurine quickly and accurately. Sliding the mouse controls horizontal movement in all directions. The scroll wheel moves the claw up and down. And holding the left or right buttons what using the control wheel closes or rotates the claw. All we can say is: Bigger, BIGGER!

Continue reading “Mouse Controlled Manipulator Arm”

USB Host For Propeller Micros

[Micah Dowty] has implemented full speed USB host control on a Propeller microcontroller. He’s motivated by the thought of using USB based WiFi and Bluetooth dongles in his projects as ready-made solutions.We’ve seen USB host control with the Arduino and it really opens up the flood gates for advancing your projects through storage, wireless connectivity, and user interface.

So far his work is fairly preliminary but the results seen from other participants in the Parallax forums are very positive. Check out his code from the subversion repository and lend a hand with the development.

[Thanks Stefan via Adafruit]