Take that Babbage! A *working* mechanical computer. That’s right, I said it. Come check out the Turbo Entabulator at the upcoming NYCResistor Interactive Show this coming Saturday! This is the latest diabolical machine to come out of the labs at Fenton Heavy Industries. Its lack of speed is only surpassed by its unreliability and general mechanical shakiness. But hey, it’s probably the only computer you can print out yourself.
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.
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.
There’s nothing like a big party to force some cleaning… would you look at our toilet? I mean… I’m not even sure it was this clean when we moved in. Someone will think some magic cleaning elves descended upon it in the dead of night.
This is just so you’ve been alerted… that the facilities will be clean for our 4th Annual Interactive Party this coming Saturday June 15. We’ll have great projects, wine, a DJ and dancing under a great big LED illuminated arch.
Go get tickets now, as they are moving and we’re not sure we’ll have any left to sell at the door… http://interactiveshow2013-eorg.eventbrite.com/#
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!).
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.
It’s a little known fact that during the 1940′s the premier Twitter client was a cathode ray oscillograph vector display, such as this DuMont Labs 208B. The 15×12 character resolution was perfect for a 140 character tweet. This one has been restored, connected to the aethernet and configured to search for “I”, turning it into a time travelling view into the twitter-sphere’s narcissism. You can see it in action in this short video, or play with it in person at the 2013 NYC Resistor Interactive Party in June.
If the font looks familiar, that’s because it was inspired by the Asteroids video game, with additional characters for the rest of the ASCII subset. The source code is available asteroids-font.c for your own oscilloscope or vector display hacking. Depending on the bandwidth of your scope and the speed of the cathode ray tube, you might need to set CONFIG_SLOW_SCOPE to give the beam time to catch up with the image.
Some technologies are so direct and intuitive that they feel classic even when they’re new. Some technologies are so ahead of their time that they only find their true purpose years after they’ve been put out to pasture.
In the early 80′s, France Telecom rolled out the Minitel, a videotex system offering various online services to users across France. Subscribers were given small, semi-portable CRT-based terminals. The service was a success, and at its peak boasted 25 million users. But eventually, well, you know. The internet. In June 2012, France Telecom finally pulled the plug on the Minitel. Screens across the country went dark. Millions of little, boxy terminals, suddenly cast adrift. Widespread technology, lost and alone, in search of purpose. Purpose now, suddenly, found.
The Minitel/Tumblr Time Tunnel is a Minitel 1B US (yes, there was a QWERTY version) backed by a Raspberry Pi. Enter a few tags at the prompt, and the mighty firehose of Tumblr will be unleashed upon your tiny, 3-bit
(The asterisk after “3-bit” is due to the fact that each 2×3 block of “pixels” is actually a single character with foreground and background color attributes, so each 2×3 block only has one bit of color data, selected from a palette of 8 colors.)
As is de rigueur, all the code is available on github.
The Minitel/Tumblr Time Tunnels will be on display at this year’s NYCR Interactive Party. Be sure to come by and see the internet the way it positively demands to be seen!
Do you enjoy playing Space Team, but find that you want tactile controls? Or like the Artemis Bridge Simulator, but think it is too serious? Do you love pushing buttons, turning knobs and shouting at each other? Then you’ll really have fun playing Future Crew at the NYCR Interactive Party!
Since the theme of the party is “Digital Archeology”, all of the control stations are being built from repurposed dead hardware. There’s a patch panel, push buttons, strobe lights, more push buttons, quadrature knobs, oscilloscopes, and maybe even a teletype to keep score.
Each console will have a Raspberry Pi with Wifi to talk to the other consoles, some number of Teensys to talk to the real world, and some sort of glitchy way to communicate to the operator (like an NTSC TV or a Minitel). If things don’t work right, that’s part of the fun. And, of course the source code will be available for you to build your own Future Crew Consoles.
Coming June 15th to NYC Resistor, the 2013 Interactive Show. We’re still soliciting for a few more projects, but we’ve already got a great menagerie of really interesting & fun work lined up. This year’s theme is Digital Archeology. Expect to see the old, and the old hacked into new… Our show usually sells out far in advance, so don’t dawdle. Get your tickets here: http://
As a followup to our reverse engineering and configuration of 6DOF PUMA robot arms, we’ve updated our controller source code to have full closed form inverse kinematics support. The math is based on A Geometric Approach in Solving the Inverse Kinematics of PUMA Robots, by Lee and Ziegler (1983). Due to the configuration of prismatic and rotational joints in the PUMA arms, it is possible to derive a two part direct trigonometric solutions to the IK problem for this type of arm.
The IK solution uses the DH Parameters to compute the three joint angles for the major axes (the rotation around the stalk, the upper-arm angle, and the fore-arm angle) such that the center of the spherical joint will be placed at a given XYZ position. There are two binary additional binary parameters for this configuration: RIGHT/LEFT controls the orientation of the arm on the right or left side of the stalk, and OVER/UNDER for the configuration of the elbow pointing up or down. See figure 5 in the paper for a diagram of the four possible combinations of these two parameters.
Once the first three theta angles are known, the second phase of the IK solution computes the last three wrist joint angles given the third binary parameter UP/DOWN, and three vectors: the “approach vector” a that points in the direction of the tool, the “sliding vector” s that points in the direction of the grasping joint, and the “normal vector” n that points towards the top of the tool. Figure 4 from the paper shows the relationship of these three vectors in the hand coordinate system.
This video shows the IK iterating between two points (in RIGHT and OVER mode) and generating a piecewise linear path that holds the tool (a cheap pen) mostly level on a constant heading aligned with the X axis. It is a little jerky since the motor controllers don’t have a way to chain commands between points and my calibration on the joint lengths and angles isn’t perfect. Also note that the wrist joints are cross-coupled and require proportional adjustments based on the other joints positions, so the code has some fudge factors to try to account for this behaviour. There are also some corner cases to be sorted out when the “best” joint angles switch quadrants, which will swing the tool around in a circle.
The code isn’t super clean and can use some refactoring to move the DH parameters into a config file, but hopefully you’ll enjoy the human readable code compared to the machine generated ikfast output.
Rapid prototyping tools are great for quick hacks, but their real power lies in their ability to allow you to quickly iterate and refine a design. Earlier this week I hacked together a primitive nine-channel punched paper tape reader, but it had a number of limitations: the LEDs that I was using to read the bits were noisy and slow, the materials used didn’t mask the light well enough, the tape wasn’t mechanically aligned well, the electronics were a mess and the entire mechanism was difficult to use. This Friday, I decided to do what my third-grade teacher would tell me to do every time I half-assed something: go back and do it right.
This time I used proper phototransistors and IR LEDs I scrounged up around the space (thanks, Miria and Raphael!). Because they’re 5mm in diameter (and the spacing between channels is only 2.54mm), I had to come up with a new sensor packing. This one reads bits from four separate columns over a space of five columns, requiring an internal buffer of five columns to reconstruct a single column of data. Even so, the spacing was tight, and I had to sand down the flanges of the phototransistors and LEDs to make everything fit. I milled simple PCBs for both sides to keep things nice and neat, and used a small surface-mount potentiometer to limit the current to the LEDs in case the paper wasn’t thick enough to block enough light. The light mask is made of black acetal this time, and the spacers include runners to help keep the tape straight. There’s still no automatic feed mechanism, but we now have a reader that’s fast and reliable enough to read tapes in earnest.
The updated code, mechanical drawings, and PCB designs are all up on Github. There are still a few tweaks we’d want if we were going to scan more tapes, but this version works very well. Now we just have to figure out what to do with all these PDP-8 binaries. Any ideas?
(Note to time-travelling computer conservators: in the past/future, please do not store your paper tapes in damp basements. These programs are stinky. The Fortran compiler, in particular, is exceptionally foul. Yours truly, phooky.)