hudson

I like to take things apart. Sometimes they work when I'm done. I've been a member of NYC Resistor since 2010 and you can see more of my projects at trmm.net.

Dec 082013
 

Adafruit FLORA and Neopixel ring

Next weekend at NYC Resistor we are teaching a class on the Adafruit FLORA and Neopixel. These round Arduino compatible controller boards are a great base for wearable projects like watches, jackets and neck ties, as well as holiday decorations. Bring your laptop and we’ll teach you to make the LED ring blink with patterns of your own design. No prior programming required. The class fee includes a FLORA board, batteries, cabling, 4 RGB LED pixels and a 16 RGB LED ring.

Nov 182013
 

AVR RFID with extra capacitor

Last year we wrote about building HID Proxcard RFID tags with attiny85 microcontrollers (based on Micah’s avrfid.s code). The C version only supported classic 26-bit cards, but I recently needed to support the “secure” HID Corporate 1000 35-bit format.

Based on Daniel Smith’s writeup on the format and some digging around, I figured out that the MFG_CODE for this format is 10-bits long with the value 0x005. He also pointed out that the 26-bit firmware had the wrong code — it is not the 20-bit code 0x01002, but is instead the 19-bit code 0x0801 and the bottom bit is part of the parity computation for the card id. If you’re using a HID branded Proxcard reader, the value that it outputs is the entire data portion, including all of the parity bits, but does not include the MFC_CODE part. If anyone knows of a table of these codes, please let me know!

I’ve updated my firmware with these changes and it works great. Emulating a 35-bit card takes 846 bytes of flash (nine more than the 26-bit cards since the state machine stores one bit per byte), so it might be possible to port this to the attiny10. I’ve also found that the tags work much better with a small capacitor across the two clock pins, as shown in the above photo.

Octoscroller

 Uncategorized  17 Responses »
Sep 122013
 

Octoscroller temporary installation

Hexascroller has been a central fixture at NYCR for the past few years, with a few ups and downs. It’s replacement, Octoscroller, improves on our classic message alert polygon by having two more sides and two more colors of LEDs.

The userspace application renders images into a shared memory frame buffer, or in this case receives UDP packets containing video images from the Disorient Pyramid transmitter. The PWM algorithm can do between eight and sixteen levels of brightness for each color, producing approximately 12-bit color.

See it in person at MakerFaire in NYC this year and read on for details of how to wire up a driver for the panels, as well as a walkthrough of some of the PRU code.
Continue reading »

 Posted by at 9:41 pm
Sep 052013
 

Party at the Disorient Pyramid

This year the Disorient Camp at Burning Man built a 7m tall pyramid with over half a kilometer of LED strips. Several artists developed patterns for the panels, including Disorient founder Leo Villareal and Jacob Joaquin from Fresno Idea Works. Every night there was a party in front of the pyramid, with bicycles blocking the entire Esplanade.

The pyramid was visible from just about everywhere on the playa and served as a great beacon for finding the camp after a long night out. Read more for the technical details of how it was constructed and links to all the source code.
Continue reading »

 Posted by at 11:07 pm

Oscilloscope class

 Uncategorized  1 Response »
Aug 042013
 

Diagnosing EL wire with a DSO Nano v3

One of the most powerful tools in debugging circuits is the oscilloscope — it allows you to visualize your analog and digital signals at millisecond or microsecond time scales. This 18 August class at NYC Resistor will teach you basic operation of a handheld oscilloscope: topics include how to setup different time and voltage scales, how to configure the trigger modes to capture fleeting signals and how to use the cursors to measure various qualities of the signals. We’ll also show how to use the ‘scope to trace a signal through a circuit to identify some common problems.

Multimeter amperage measurement

The other most valuable tool in your electrical test equipment toolbox is a multimeter for measuring the instantaneous values of three important electrical measurements: voltage, amperage and resistance. This class covers all three of these as well as the very important “beep mode” to check for electrical connectivity.

Get your tickets here! The class fee includes both a compact multimeter and a DSO Nano v3, an Open Hardware design that is a great getting started oscilloscope. With these in your toolbox you’ll be able to diagnose all manners of circuit issues.

 Posted by at 3:12 pm

LEDscape

 Uncategorized  19 Responses »
Jul 272013
 

LEDscape test

Are you building a giant LED display for your hackerspace or Burning Man and need a way to control multiple kilometers of LED strips? Are you tired of running massive USB hubs of Teensys for each row? Then you might be interested in my LEDscape code for the BeagleBone Black to drive up to 500 meters of WS2811 RGB LED strips at 30fps.

On the Teensy 3, Paul’s OctoWS2811 makes very clever use of three DMA engines to generate the bit-train for the WS2811 LED strips, but only supports up to eight strips. Beth’s FadeCandy improves on Paul’s work and has a great frame rate with beautiful interpolation (and a custom USB protocol to pump pixels fast enough to keep up with the frame rate), but the temporal dithering and expanded colorspace features run into frame rate and memory limitations at strips beyond 64 pixels.

The BeagleBone Black has far more memory than the embedded AVRs (512MB versus 16KB) and the AM335x ARM Cortex-A8 has a killer feature: two built in PRU (“Programmable Realtime Units”). These are embedded real-time microcontrollers built into the ARM core with full DMA to main memory and control over all of the IO pins. This afternoon I hacked up a quick proof of concept in PRU assembly that use one of the units to drive 32 of the WS2811 strips at full speed with zero CPU load and easy double-buffering of the image. The best parts of writing for the ARM instead of the AVR is that there aren’t any issues with running out of memory for image processing and there is built-in ethernet for OSC or other visualization libraries.
Continue reading »

 Posted by at 11:39 pm

Future Crew

 Uncategorized  3 Responses »
Jun 212013
 

Last month we introduced Future Crew, and at the 2013 Interactive Show we finally unveiled the fully mostly operational game stations. There were five stations in the final design, and in keeping with the show’s “Digital Archaeology” theme, each was built from repurposed ancient hardware. The brains of each console was a Raspberry Pi (to connect to the network and draw OpenGL graphics) and some number of Teensy microcontrollers to interface with the real world. Of course, the source is available for you to build your own Future Crew stations!

Future Crew Game

A discarded video edit console and RF TV became the Timeline controller. Since the Pi can turn the composite video on-and-off, one of the modes glitches out the TV occasionally with real static! This one had some of the more imaginative tasks like “disable all blinking buttons” in addition to the normal tasks like “advance the timeline!”.

Future Crew Game

A rackmount data acquisition analog-digital converter and three NTSC TVs became the Blender control unit and Technobabble patch panel. The labels were printed on our large format plotter and then the BNC holes were cut on the laser cutter. The teensy++ firmware can handle arbitrary cross connects and even multi-way connections. This was one of the harder stations to play — there are eight switches, twenty verbs and twenty nouns. We ended up disabling all the verbs except “MODULATE” since it was much too difficult to find the right ones. As a todo item we plan to ramp up the difficulty as the game goes on.

Future Crew Game

A 1930′s Model 15 Teletype and some random video switcher served as the slowest output console. It’s amazing that the teletype functioned nearly perfectly for the entire eight hour show — perhaps the fresh quart of oil during the previous servicing helped keep it working. The source for this console is one of the simpler ones — it just prints to a file descriptor to write to the teletype.

Future Crew Game

One of the hardest consoles was made from a toy piano. Even with the song book, playing “Row Row Row Your Boat” under duress is not easy.

Dial James Bond!

And a last minute entry was a rotary phone. Quick! Get the President on the line! This time the handset just had a recorded loop, but future games will incorporate text to speech.

We have a whole list of things to fix and improvements to make before Makerfaire 2013. Stop by NYCR to play it during Craft Night on Thursdays and give us your suggestions!

 Posted by at 11:54 am

Space Rocks

 Uncategorized  3 Responses »
Jun 082013
 

Space Rocks on the oscillograph

Cathode ray oscillographs weren’t just used for reading tweets in the 1940′s, they were also used as vector displays for serious astronomical simulations and training systems like “Space Rocks”. You can play it at the 2013 NYC Resistor Interactive Show!

While the Delta-V of the simulator space craft was optimistic for its era, the basic acceleration, velocity and position model is reasonably accurate. If the ship passes too closely to one of the space rocks, it is destroyed and the simulation restarts. Once the ship runs out of fuel (measured in hexadecimal in the upper left corner since the CPU can’t perform a DIV/MOD operation fast enough to display decimal numbers), it is stranded and unable to continue its mission.

Space Rocks joystick interface

We were not able to locate an original controller, but the interface is similar enough to more modern analog joysticks that we could wire it in. Have your own vector display? spacerocks.c is the source for the Teensy to drive it.

 Posted by at 10:07 pm
Jun 062013
 

Model 15 rear view

The Teletype Corporation Model 15 “typebar page printer” is a beautiful piece of equipment from the 1930′s. While the interface has much in common with modern serial communication standards – start bits and stop bits, asynchronous clocking, idle-high conditions — in the teletype all of these are implemented purely mechanically. The mainshaft looks like something out of an automobile instead of a piece of computing. Just like a car, you have to keep it well oiled, check the gaps for proper clearances and be very wary of the spinning pieces while working on it.

The 5-bit Baudot words are clocked in synchronously with the mainshaft’s rotation rate at 45.5 baud (22 ms per bit). This slow speed is difficult to generate with modern computers and serial ports, so many users bit-bang the port with Heavy Metal, which itself requires somewhat older machines to run. The 5-bit word has only thirty two entries, which is insufficient to simultaneously represent the entirety of the twenty six letters A-Z, ten digits 0-9 and punctuation. Instead there is a reserved code to switch to Figures and another code to switch to Letters. Space, carriage return and line feed are present in both the Letter and Figure sets. The interface must track which rail is currently selected and insert the correct shift sequences on the fly.

In slow motion the holding magnet can be seen pulling the selector during one-bits and not attracting it during the zero-bits. Each bit is latched via the “sword” mechanisms onto one of the rails, which select one of the twenty-eight hammers. During the fifth bit an extra gear cocks the mechanism and a latch lets the hammer fly during the stop bit. The coils are designed for 60 mA, but have a very high inductance (on the order of 4 Henries according to John Nagel). Most approaches to interfacing with the system use a large 100 VDC power supply and a current limiting resistor (that must dissipate 6 W of power!).



Teletype Model 15 USB interface board

Both the high voltage and the custom baud rate issues are a bit cumbersome, so I thought there must be a better way. USB ports will output about 5 W, so I figured that would be close enough to drive the magnet if I could produce sufficiently high voltage. Using Adafruit’s boost converter calculator, I came up with some rough numbers and built a circuit that handles both the slow baud rate and voltage required to interface with the teletype. It shows up as a normal USB serial port and handles the 7-bit ASCII to 5-bit Baudot translation, including tracking which of the two rails is selected, outputs the bits at the correct baud rate, and runs the PWM charge pump to generate the high voltage with the inductor. A second MOSFET is used to switch the high voltage through the current loop, allowing the holding magnet to turn on and off.

It’s fully self-contained, fits in an Altoids tin and works with any software you want to run on the interface computer. If you want to run it with a Raspberry Pi, be sure to use a powered hub to avoid overloading the Pi’s weak USB power circuitry. The schematics and source code are posted to 45baud.net and you can see it in action as part of Future Crew at the digital archeology themed 2013 NYC Resistor Interactive Party.

 Posted by at 7:53 pm