Archive for the 'Technology' Category

OS X Client Software for Owon SDS7102 Digital Storage Oscilloscope

Monday, April 15th, 2013

Ever since using my first Oscilloscope in the ’80s, I’ve wanted one. Though I’m a software person by trade, my hobbies have long included electronics in many forms. Heck, I’ll take a well tuned, clean, pinball game over a video game any day (and if it isn’t well tuned and clean, I’ll do that, too). An oscilloscope has long been the ultra-expensive super tool that my hobbyist pursuits just couldn’t justify the expense.

Not any more.

Recently, I picked up a cheap treadmill to turn into a “walking desk”. It works fine, save for the annoyance that it turns off ever 30 minutes and the control box is this big, ugly, clunky thing that clearly is a whole lot dumber than the LED display indicates. In adding some extra length to the control box’s cable, I noted there were only three wires; power, ground, and a signal wire.

Clearly, given price point and lack of real communication between control box and treadmill, the “protocol” between the two is likely nothing more than a PWM signal.

Which, given that the treadmill (Confidence Treadmill) is for my health, health is vital, and the best way to explore that signal deeper, I investigated picking up an oscilloscope for the first time in 15 years.

Boy howdy. What a difference those 15 years made! I was used to seeing depressing 4 digit numbers on scopes that were somewhat slow, very bulky and had little to no means of exporting data save for snapping a picture. Now? Less than $500 gets you a multi-input ‘scope capable of handling up to 100MHz signals with lots of analysis features and the ability to dump it all to USB or, in some cases, the network.

A bit of research revealed that the Rigol DS1102E is the most popular of the sort of entry level digital scopes.

However, the Owon scope pictured at left was only $50 more, has a much larger screen, and a LAN port. Rigol’s ds2072 is similar, but nearly $400 more and is backordered pretty much everywhere. While the Owon has had some negative reviews, the latest version seems to have addressed almost all of the criticisms. That, combined with the realization that I’m not exactly going to be pushing it (and a bit of a desire for immediate gratification) and I went with the Owon.

Couldn’t be happier. The Owon SDS7102 seems to work just fine; more than enough for my needs. The user interface is pretty mediocre, but passable.

I’ll let people far more competent than me properly review the scope.


Read the rest of this entry »

Ratchet & Clank Infinite Bolt Hack (and Much Much More)

Saturday, December 29th, 2012

The whole Ratchet & Clank series of games is just fantastic (save for the last one or two that kinda lost the plot). This year, the first 3 games were remastered for the PS3; 1080p and a bunch of new content. If you like 3D platformers and haven’t played R&C, I highly encourage you to do so.

R&C features a whole slew of upgradeable weapons. You collect bolts — the in-game currency — and use those to buy new weapons (and ammo). There is one incredibly powerful black market weapon available called the R.Y.N.O. (the “Rip Ya A New One” gun). Priced at 150,000 bolts, it would take many, many hours of repetitive game play to harvest enough bolts (until you beat the final boss once and start over in challenge mode where bolt collection is 2x to 3x faster).

Photo
Photo 1

There aren’t any cheat codes that’ll get bolts any faster, but there are bugs that can be exploited. Specifically, you can exploit a flaw in the geometry engine to go through a wall, fly through a roof and then fly to a race track where the game engine rules are tuned to you being on a hoverboard. In particular, you can use “the taunter” to break boxes of bolts in a way that the boxes keep breaking for as long as you hold down the “taunt” button.

It takes about 3 or 4 hours of taunting boxes to generate the 150,000 bolts to grab the R.Y.N.O.

Now, of course, this hack — “cheat” implies a Konami-Kode, this is much more of an exploit than a purposeful feature — is well documented online. This is a pretty typical example video.

It, however, is the hard way. A much easier way to do this is to go to the room containing the two health globes (screenshot(s) forthcoming) that said video shows you flying to. Once in the room, stand in the corner behind the globes and knock yourself through the wall using the decoys. Once through the wall, walk to the left along the narrow ledge until you are between the building and a really tall wall that goes over the race track. Wall jump up to the top of the building and fly to the race track as the video shows.

Much, much easier than the video for several reasons. First, going through a right-angle corner is a lot easier than that nuttiness in the raceway plaza. Secondly, no need to fly nearly blind from way up high through the roof of the building.

Of course, the hacker in me immediately asked “Why does this happen and can we exploit this further?”

Turns out that the answer is a resounding yes. It is really easy to find flaws in the game geometry that can be exploited. Look for sharp corners and aim your decoy gun (or any gun with a target) into them. If the gun’s target jumps between planes rapidly — better yet, if there are places where it will steadily oscillate between two planes — you can almost assuredly use the Decoy trick to knock yourself through that spot into whatever is beyond.

The glitches that result can be pretty mind bending. I have yet to see the game crash, but “divide-by-zero” would be an apt description of some of the results.

I’ve now used this in a few places in the game to complete a mission without doing any of the intervening bits or to get into a secret room without bothering to find the oft-well-hidden entrance.

Roger & I now have quite a few worlds to explore!



Xcode: Sometimes a return is not a return (emacs brain damage)

Sunday, December 23rd, 2012
ExpectedExpression
Indention and Insertion Prefs

Every now and then, I’ll be coding along merrily in Xcode and I’ll get an error much like the one at left. Or “expected identifier or ‘(‘” is another variant.

Huh? That code is fine. Maybe it is an invisible character? Nope. Nothing shown.

Took a bit, but I figured out the cause; 25 years of using emacs as my command line editor of choice, along with the folks at NeXT that implemented the AppKit’s text editor.

In emacs, you quite commonly navigate about by holding down the ctrl- key and banging on various keys to go to the beginning/end of lines, etc. Many of these control sequences are honored by Cocoa’s text editing system and quite a few more are supported in Xcode’s editor.

Seemingly unrelated, ctrl-return is mapped to Insert Line Break.

Thus, if you are an emacs head and you commonly hit ctrl-e<return> to start a new line of code and you happen to hold down the return key just a tad too long, it causes the error shown (or a variant depending on where the insert happens).

The easiest way to tell if this is the case is to go to the line of code after the line reporting the error and hit ctrl-a. If the cursor ends up at the beginning of the previous line, that line is ended by a line break and not a true newline. (ctrl-n – backspace – return to quickly fix).

While it is easy enough to fix once you know the ctrl-a trick, a better fix is one that makes it such that it’ll never happen again.

To do that, go to Xcode’s Key Bindings Preferences, click on “Text”, and scroll down to Insertions and Indetions. On Insert Line Break, delete the ctrl-return (hat + u-turn arrow) key sequence. For convenience add the same to Insert Newline.

Problem solved.

3D Printing: A Tour of Stuff

Saturday, December 15th, 2012

Since picking up an Ultimaker nearly a year ago, I’ve printed many things (and wrote a very well received article for Make: Ultimate Guide to 3D Printing).

These are many of them and some lessons learned from each.

Printed Ornaments

Koch Snowflake Tree Ornament Baubles

This is Thingiverse Object #35561.

Every year, we have an annual ornament exchange in our neighborhood. Last year, I used EMSL’s Egg-Bot to create an Eichler themed ornament.

This year, I started down the path of custom designing an ornament for printing, but grabbed the Koch snowflake baubles from Thingiverse.

Lesson Learned: Design software is hard to use. 3D design software is harder. You’d think a simple circle with some stars and words extruded in 3-space would be easy to do. Still, people totally dig the unique texture and shapes of these. In hindsight, I probably should have used Inkscape (awful, but works and is what is used for the egg-bot) to do a 2D design and then extrude that.

Read the rest of this entry »

Printing the NASA 3D Models

Tuesday, October 23rd, 2012
Shuttle

Update: Thinking about it for just a moment, I realized the print quality would likely be higher if I printed in “launch position”. Doing so would greatly improve the wing quality while also, hopefully, improving tail quality in that there would be fewer really small layers (that cause the print head to slow way down, causing blobbing). The disadvantage would be a lot more support material, especially around the engines, and, thus, a potentially difficult, if not destructive, post print cleanup.

And it worked! I only lost one control jet off the back during cleanup, even!

There are more photos of the final printed piece and of the print in progress in my Flickr feed (link goes to a photo in the middle of the set).


I remember watching the first Shuttle launch way back in 1981. If you’d told me then that I’d be casually printing a small copy of the Shuttle on my own personal 3D printer 32 years later, I might have thought you were crazy. Or, at 11 years old, I probably would have have asked, “Why so long from now?”


3D Printed Shuttle

NASA has kindly dumped a treasure trove of 3D models available for free download.

Obviously, these beg to be printed. Doing so is a matter of jumping through a couple of file conversion hoops. The files start out as Autodesk 3DS files.

Meshlab can be used to import said files and then export them to STL. You might need to do some mixup after. Using netFabb, I found several errors in the model’s geometry and fixed it. I believe Meshlab can do the same, but I’m not familiar enough with the tool

Slicing for printing is tricky. The models give zero consideration, no surprise, for 3D printing. In fact, they are entirely sub-optimal for printing. For example, the shuttle’s cargo bay is empty, leading to a bit of a support mess, and it would print much better if the wings sat flat on the print bed. Thus, even the simple Space Shuttle model has a curved bottom. You’ll probably want to enable support when slicing. Some of the models, like the lunar landers, are unlikely to be able to be printed using an extruded plastic printer without support material that can be dissolved away afterwords (i.e print in PLA or ABS with PVA support material.

As a first print, I sliced using Cura with 20% infill, 0.2mm layer height, and support material turned on. It actually turned out better than expected!


Whoah! Arduino goes ARM on the cheap & Arduino AVR Gets Really Tiny (on the cheap)!

Wednesday, September 5th, 2012
B47af8930ab8a169e37c95534ab9945e large

For the Teensy Blaster, I used a Teensy v2.0 board from PJRC. It is a tiny board containing a not-so-limited AVR chip (32K of flash, >2K RAM, 1K of EEPROM, and a slew of I/O pins) and a mini-USB port with the ability to be USB bus powered. Tiny. Versatile. And cheap at $16/board! $24 nearly gets you nearly 4x the memory and nearly doubles the I/O ports.

Today, I ran across Teensy v3.0 on Kickstarter. In pretty much the same sized package, the Teensy v3.0 features a 32bit ARM Cortex-M4 board with 128K of Flash(!!), 16K of RAM(!!), 2K of EEPROM, and a slew of I/O options. If that weren’t enough, it includes support for IR, a high quality audio interface, an optional real time clock, 4 DMA channels, and support for touch sensor inputs. And more. Much more. Holy cow! Truly, a nutty amount of computing power in a 1.4″ x 0.7″ package!

And it can be used from both Arduino and C.

So, yeah, funded. No brainer.

8170026945a0f0462acf148cc38b69f5 large

Then, at the thank you for funding this project page, there is a thing you might be interested link that leads to the Digispark.

Wait. What? A board barely bigger than a USB connector that features an Arduino compatible CPU with multiple I/O pins, 8K of flash, PWM on 3 pins, ADC on 4 pins and many many different shields?!

For $8-$10 / board?!

Sign me up! (And I did!)


Arduino on Mountain Lion

Tuesday, August 21st, 2012

In my “spare” time (hah!), I hack on Arduino a bit. Mostly because there are tons and tons of 3rd party libraries that make hacking up a hardware solution mostly a bit of soldering followed by gluing together some pre-made software bits. The Arduino IDE is Java based and… well… not terribly awesome (to be fair — it isn’t awful, just quite lacking beyond the basics).

With the release of Mountain Lion, most Arduino installations were broken. Fortunately, this can be fixed by grabbing the latest bits from here and there.

  • Grab the latest Arduino.app for Mac OS X
  • Run it and it’ll insist on installing the latest Java VM. Do so.
  • If you use Teensyduino, grab the latest installer and install it. If Mac OS X (rightly) complains that the software is from an unidentified source and can’t be opened, you can ctrl-click on the installer, select “open” and it will present the option to bypass the security check. Do so, but not without a bit of misgivings.
  • Install the latest FTDI driver.
  • If all went well, you should see the device show up in /dev/ as something like /dev/tty.usbmodem12341.

    Aerogarden 2nd Run; With Custom Built Pieces

    Monday, May 14th, 2012

    After nearly 5 months, the first run of herbs in the Aerogarden were finally tired to the point of no longer useful (I started with AeroGarden Gourmet Herb Seed Kit (6-7-Pod) and it worked really well — way more than $18 worth of fresh, tasty, results).

    Pods Installed (Basil Sprouted!)

    One of my goals with the Aerogarden is to gradually replace all the pieces until I’ve effectively created a homebrew Aero-Hydro solution that will eventually integrate with our atrium’s pond (fish poo fertilizer FTW!), use LED lighting, and, hopefully, be an interesting conversation piece.

    The next obvious step was to replace the seed pods and baskets. The seed pods/baskets are the one piece that needs to be replaced with each planting. The baskets — white plastic things that fit in the holes on top of the Aerogarden — can be mostly reused, but the original design is obviously optimized for cost, not effectiveness (they don’t actually fit correctly in some of the holes!). The seed pods, themselves, are little bundles of seeds in growing medium; Aero’s are good quality, but relatively expensive and the seeds are of unknown variety (i.e. generic curly parsley and not some particular strain).

    At left is the current phase; seed pods and growing medium replaced with Basil sprouts showing some signs that it is working!

    Read the rest of this entry »

    3D Printing: Oh, The Tuning We Shall Do.

    Sunday, March 25th, 2012

    After a while with the Ultimaker, a series of notes on the various things one can do to tune the 3D printing experience.

    Some of this is specific to the Ultimaker, but most of it is not. Much of this is personal preference and, frankly, there is probably some stuff in here that is wildly sub-optimal. But, hey, it has worked for me and it worked better than it did when I started.

    I.e. feedback and corrections are quite welcome!

    First, a note on consumables. I have stuck with PLA (polylactic acid) exclusively. It is a plant derived material that requires a lower temperature and is quite thoroughly non-toxic (there are lots of articles about fume-venting ABS… not so with PLA). As well, when I screw up — which is often — the resulting garbage is biodegradable (however, I’m donating my “pile of PLA” to someone who needs input into a PLA scrap-to-usable-filament project).

    PLA also doesn’t require — though it can benefit from — a heated print bed. ABS, the other common material, seemingly really does (though one can live without).

    Thus, these tips are optimized to PLA.

    These tips are also somewhat ordered in the steps that they should be done to maximize benefit. In some cases, that is because the earlier steps have a bigger ROI than later ones. In others, it is simply that the later steps really require the earlier steps first. Read the rest of this entry »

    Teensy Based IR Blaster

    Saturday, March 17th, 2012

    Evolution of a Design

    photo

    When I started this, as can be seen in the image at left, the case was two parts that fit together in a semi-complex manner (Actually, the very first version just had a little plastic square that covered the AVR, but nothing else). It was hard to print with any quality and, frankly, the front looked awful. So I simplified it such that the IR LED could stick out a small hole, as seen in the middle. But then it dawned on my that the translucent plastics might just be transparent enough to IR that no hole was needed at all.

    And sure enough, it just worked!

    Thus, the design is now even simpler (assuming you have translucent filament).



    photo

    Both professionally and as a couch surfer, I’ve found myself interacting with a great deal of devices that can be controlled via infrared remotes. Often, remotes lost in the depths of a couch or misplaced in the fridge (it happens). Clearly, I needed an IR blaster that could be controlled from a computer to both eliminate the “losing the remote” problem and to integrate control of multiple devices into a single UI. Conveniently, Arduino micro-controllers with integrated USB ports are commonly available and quite cheap. Adding an IR LED to an Arduino is trivial, as the ever popular TV-B-Gone project demonstrates.

    Thus, the Teensy IR Blaster was born. I started with the Teensy v2.0 AVR-based micro controller that includes USB support. It unofficially supports Arduino using the Teensyduino extension. To this, I added Ken Shirriff’s IRremote library modified fro the Teensyduino environment and Read the rest of this entry »