USB On The Teensy 3 From The Ground Up

When implementing USB on a microcontroller, most people are going to reach for V-USB if they’re using an AVR, one of Microchip’s USB libraries if a PIC is involved, or any number of the USB libraries for various ARM processors. [Kevin] had a different idea. As a challenge to himself, he wrote a USB device driver for the Teensy 3.1 microcontroller board, getting as close to the bare metal as he could get.

Writing a USB device driver first required a literature review. There are a few peculiarities in the Freescale K20 family of microcontrollers – the one found in the Teensy 3.1 – that dictate the need for a specific memory layout, using several clocks, and handling all the USB descriptors. [Kevin] started with the clocks, every last one of which must be enabled. The clock is generated by the Multipurpose Clock Generator from a 16MHz crystal, PLL’ed to the frequencies the USB module needs, and sent out over the System Integration Module.

Following the flowcharts and sequences found in the Freescale reference guide told [Kevin] exactly what needed to be done with the startup sequence, and offered a few suggestions on what needed to be done to set up all the interrupts. [Kevin] spent an incredible amount of time documenting, programming, and smashing his head against the keyboard for this tutorial, but he does give everyone a great opportunity to learn from his struggles.

While [Kevin] has a mostly complete USB device driver, his work is far from done. That’s alright, because this project wasn’t meant to be a full-featured driver; it’s still missing real error handling, strings in the configuration, and a real VID/PID. That’s alright, it’s still a great exercise in building something from scratch, especially something that very few people have built successfully.

Oh, blatant Hackaday Store plug for the Teensy 3.1.

2014 Advent Calender Of Circuits

Every day this month and until Christmas, [vk2zay] is (has already been!) posting a simple but useful hack in his 2nd sort-of-annual “Advent Calender of Circuits” that many of you will want to be bookmarking. For those already saturated with the season of holiday hacks, don’t worry – other than being festively generous of him to tutor and demo a new hack every day, the hacks themselves have nothing to do with Christmas. Though he missed the last couple years we here at Hackaday covered his first month of hacks back in 2011 (now in playlist).

The daily hacks posted so far cover a wide variety of useful projects (leaning towards HV) for the electronics hobbyist who might not have all the fancy tools in their shop: DIY high voltage probes, a 1-hour tesla coil from junk, measuring RF power, a stud detector, how to test an  unknown transformer’s saturation, and many others. We cannot predict what will be posted the rest of the calender (the author hints to be making them up as he goes), but by now it is safe to say that they will not disappoint.

We would be stealing his thunder to cover them all, so, we will just pick our favorite for now:

The 1-hour tesla coil is a delightful all-shortcuts-taken hack project. If one were to listen to aficionados, teslacoiling is a highly precise hobby to get into. It appears to require careful planning, much calculation, special-ordered or soviet-surplus parts, custom jigs, fine tuning, etc. [vk2zay] shows otherwise.

Every single component of the assembly is itself a hack.

No fancy tungsten-infused grade 8 copper being water-cooled via heat pump here – the spark gap is just the bent leg of a capacitor hovering near the start of the primary winding. The power supply is a backlight inverter with a chain of Cockcroft-Walton voltage doublers. The high voltage resistor is a bunch of series-chained resistors shoved into a silicone tube. The topload is a couple cheap pie tins masking-taped together to “resemble something like a sphere.” The primary is a loose, unsupported spring of copper wire. The secondary was calculated to be whatever the height of the tube he had handy and coiled only as smoothly as a first attempt would allow. He does not even bother using wires or a switch – the circuit is completed by clipping a couple of test leads.

After all this hodgepodgery the circuit was then carefully tuned to optimize how little time it took to build (additional time used: zero). Since the frequencies do not match (1.7 vs. 2.6 mhz – 35% apart) the only thing this circuit resonates with is a hacker’s appeal for making do. Does not matter, still works. The streamers easily reach 2 inches and the author claims double that in dark lighting.

In the just 6 minute video he also manages to explain roughly what is going on theory-wise and suggest the time-effective things to considering upgrading. Almost a dozen hacks in the bag and over a dozen more to come before Christmas.

Continue reading “2014 Advent Calender Of Circuits”

Robot Vision: Detecting Obstacles With FPGAs And Line Lasers

Somewhere down the road, you’ll find that your almighty autonomous robot chassis is going to need some sensor feedback. Otherwise, that next small step down the road may end with a blind leap off the coffee table. The first low-cost sensors we might throw at this problem would be sonars or IR rangefinders, but there’s a problem: those sensors only really provide distance data back from the pinpoint view directly ahead of them.

Rest assured, [Jonathan] wrote in to let us know that he’s got you covered. Combining a line laser, camera, and an FPGA, he’s able to detect obstacles that fall within the field of view of the camera and laser.

If you thought writing algorithms in software is tricky, wait till to you try hardware! (We know: division sucks!) [Jonathan] knows no fear though; he’s performing gradient computation on the FPGA directly to detect the laser in the camera image at a wicked 30 frames-per-second. Why roll up your sleeves and take the hardware route, you might ask? If we took a CPU-based approach at the tiny embedded-robot scale, Jonathan estimates a mere 10 frames-per-second. With an FPGA, we’re able to process images about as fast as they’re received.

Jonathan is using the Logi Board, a Kickstarter success we’ve visited in the past, and all of his code is up on the Githubs. If you crack it open, you’ll also find that many of his modules are Wishbone compliant, so developing your own projects with just some of these parts has been made much easier than trying to rip out useful features from a sea of hairy logic.

With computer-vision hardware keeping such a low profile in the hobbyist community, we’re excited to hear more about [Jonathan’s] FPGA-based robotics endeavors.

Continue reading “Robot Vision: Detecting Obstacles With FPGAs And Line Lasers”

Air Hoverboard

A Simple Hoverboard Everyone Can Understand

To be honest, we were wondering when we would see someone try this…

[Ryan Craven] has successfully built a working hovercraft that looks like a skateboard. It floats on two pockets of air generated by four Black and Decker leaf blowers — and by golly, it certainly looks like it works!

Ever since the HUVr hoax earlier this year, [Ryan] has had the goal to make a real, working hoverboard. Hendo may have beaten him to the punch with their $10,000 eddy current inducing halbach array board, but alas, it only works on copper or aluminum floors. [Ryan’s] can be used anywhere a normal skateboard can be. It’s far from sleek, but it’s only just the prototype — though we’re curious to see how far this could actually go.

Which is precisely why he’s shared it over on Hackaday.io and is hoping to draw some support and ideas from our wonderful community here.

What do you guys think? Is it worth continuing the pursuit of a hovercraft style hoverboard? Can we shrink the technology enough to make it feasible? It’s come a long way from the classic hover craft using a giant shop vac…

Continue reading “A Simple Hoverboard Everyone Can Understand”

Reverse Engineering Capcom’s Crypto CPU

There are a few old Capcom arcade titles – Pang, Cadillacs and Dinosaurs, and Block Block – that are unlike anything else ever seen in the world of coin-ops. They’re old, yes, but what makes these titles exceptional is the CPU they run on. The brains in the hardware of these games is a Kabuki, a Z80 CPU that had a few extra security features. why would Capcom produce such a thing? To combat bootleggers that would copy and reproduce arcade games without royalties going to the original publisher. It’s an interesting part of arcade history, but also a problem for curators: this security has killed a number of arcade machines, leading [Eduardo] to reverse engineering and document the Kabuki in full detail.

While the normal Z80 CPU had a pin specifically dedicated to refreshing DRAM, the Kabuki repurposed this pin for the security functions on the chip. With this pin low, the Kabuki was a standard Z80. When the pin was pulled high, it served as a power supply input for the security features. The security – just a few bits saved in memory – was battery backed, and once this battery was disconnected, the chip would fail, killing the game.

Plugging Kabuki into an old Amstrad CPC 6128 without the security pin pulled high allowed [Eduardo] to test all the Z80 instructions, and with that no surprises were found; the Kabuki is fully compatible with every other Z80 on the planet. Determining how Kabuki works with that special security pin pulled high is a more difficult task, but the Mame team has it nailed down.

The security system inside Kabuki works through a series of bitswaps, circular shifts, XORs, each translation different if the byte is an opcode or data. The process of encoding and decoding the security in Kabuki is well understood, but [Eduardo] had a few unanswered questions. What happens after Kabuki lost power and the memory contents – especially the bitswap, address, and XOR keys – vanished? How was the Kabuki programmed in the factory? Is it possible to reprogram these security keys, allowing one Kabuki to play games it wasn’t manufactured for?

[Eduardo] figured being able to encrypt new, valid code was the first step to running code encrypted with different keys. To test this theory, he wrote a simple ‘Hello World’ for the Capcom hardware that worked perfectly under Mame. While the demo worked perfectly under Mame, it didn’t work when burned onto a EPROM and put into real Capcom hardware.

That’s where this story ends, at least for the time being. The new, encrypted code is valid, Mame runs the encrypted code, but until [Eduardo] or someone else can figure out any additional configuration settings inside the Kabuki, this project is dead in the track. [Eduardo] will be back some time next week tearing the Kabuki apart again, trying to unravel the mysteries of what makes this processor work.

We’re Hiring A Full-Time Hackaday Prize Mythical Creature

On occasion we advertise jobs for Hackaday but this time around is an exceptionally big deal. The Hackaday Prize was an amazing adventure this year, and we’re already hard at work on the plans for the 2015 Hackaday Prize. To realize our vision for the movement we need someone who will live and breathe THP. We need to find the Hackaday Prize Mythical Creature.

This person will hold in their mind all things Hackaday Prize. The HPMC will gallivant across the land (both digital and real) heralding the message of grass-roots, high-level hardware development. Obviously this involves recruiting highly skilled Hackers, Designers, and Engineers to compete for the prize. But the HPMC will also make sure that the amazing creations competing for the Prize get the widespread recognition they deserve.

There are a lot of nuts and bolts to the job. The HPMC will lead the planning of all live events. The many talents of the Hackaday and Supplyframe crews will be fully and efficiently tapped thanks to the legendary organizational and people skills wielded by the HPMC. Can you see why we’re calling this job candidate a Mythical Creature?

The point is, we are going to accomplish great things in 2015 and beyond. We need the perfect person to make sure it happens smoothly. Mythical Creatures, sharpen your CV’s and apply now.

Hacklet 26 – Arduino Projects

Arduino is one of those boards that has become synonymous with hacking and making. Since its introduction in 2005, over 700,000 official Arduino boards have been sold, along with untold millions of compatible and clone boards. Hackers and makers around the world have found the Arduino platform a cheap and simple way to get their projects off the ground. This weeks Hacket focuses on some of the best Arduino based projects we’ve found on Hackday.io!

drawingbot[Niazangels] gets the ball – or ballpoint pen – rolling with Roboartist, a robot which creates line drawings. Roboartist is more than just a plotter though. [Niazangels] created a custom PC program which creates line drawings from images captured by a webcam. The line drawings are converted to coordinates, and sent to an Arduino, which controls all the motors that move the pen. [Niazangels] went with Dynamixel closed loop servo motors rather than the stepper motors we often see in 3D printers.

tape[Peter Edwards] is preserving the past with Tapuino, the $20 C64 Tape Emulator. Plenty of programs for the Commodore 64, 128, and compatibles were only distributed on tape. Those tapes are slowly degrading, though the classic Commodore herdware is still going strong. Tapuino preserves those tapes by using an Arduino nano to play the files from an SD card into the original Datasette interface. [Peter] also plans to add recording functionality to the Tapuino, which will make it the total package for preserving  your data. All that’s missing is that satisfying clunk when pressing the mechanical Play button!

infinity

[Dushyant Ahuja] knows what time it is, thanks to his Infinity Mirror Clock. This clock tells time with the help of some WS2812B RGB LED. [Dushyant] debugged the clock with a regular Arduino, but when it came time to finish the project, he used an ATmega328 to create an Arduino compatible board from scratch. Programming is easy with an on-board Bluetooth module. [Dushyant] plans to add a TFT lcd which will show weather and other information when those power-hungry LEDs are switched off.

alarm2[IngGaro] built an entire home alarm system with his project Arduino anti-theft alarm shield. [IngGaro] needed an alarm system for his home. That’s a lot to ask of a standard ATmega328p powered Arduino Uno. However, the extra I/O lines available on an Arduino Mega2560 were just what the doctor ordered. [IngGaro] performed some amazing point-to-point perfboard wiring to produce a custom shield that looks and works great! The alarm can interface with just about any sensor, and can be controlled via the internet. You can even disarm the system through an RFID keycard.

Want MORE Arduino in your life? Check out our curated Arduino List!

That’s about all the millis()  we have for this weeks Hacklet. As always, see you next week. Same hack time, same hack channel, bringing you the best of Hackaday.io!