Category Archives: Electronics

Posts about electronics. Usually meaning electrical gadgets smaller than a proper computer.

N8x0 PowerVR Drivers!

Since the N800 came out there has been a lot of rumbling in the community about the unutilized hardware present in the device (and it’s sibling/successor, my beloved N810). The piece most complained about are the PowerVR MBX 3D accelerator and 5MB SRAM included on the OMAP2420 SoC the device is built around. The explanation has always been a mixture of licensing issues for the drivers, and that the external Epson S1D13745 display controller was better suited to the 800×480 (still unusually high for mobile devices) resolution, despite being rather slow and devoid of 3D-capability.

With the advent of the N900 and it’s non-backward-compatible Maemo 5 OS, there is some fear in the community that the N8×0 devices will be abandoned. The N900 looks like a very cool device, but like many tablet owners, part of the appeal of my N810 was that it wasn’t designed to have a >$50/month cellular data plan. Nokia’s offical (and seemingly very classy) stance is that they will provide support for continued community developed FOSS software for the platform, which currently mostly means Mer, a community firmware/ partial Maemo 5 backport. There are also several other linux-based OS ports to the N8×0 platform, and a burgeoning effort to produce a binary-compatibility-maintaining system software update like the ones Nokia used to produce for Maemo 4 which will hopefully all cross-pollinate sources and keep the platform alive. One only has to look at how long the OpenZaurus (later merged into OpenEmbedded/Ångström) community held on, and how much they accomplished to be hopeful.

The combination of these thoughts? Nokia (and the various other relevant IP owners) announced they will be supplying drivers for the PowerVR to the community in the immediate future. With a little luck the Mer hackers will get them integrated into a release soon, which may contribute to tipping to Mer as the predominant OS for n8×0 devices over the OS2008/Maemo 4 stack Nokia provided.

I depend so much on my n810 I haven’t really been into OS hacking on it, but as it ages and the community firmwares come to the fore I suspect I’ll get more into it (if I have time). Maybe as they get cheap I’ll even end up with one of the “knockoffs” to use as a test platform in the same primary machine/beaterbox setup as my bigger machines.

Posted in Computers, DIY, Electronics, General, OldBlog | Tagged , , | Leave a comment

XMOS

I ran into an ad for development boards from XMOS the other day, and, being generally curious about unusual little processors, read up on them. The architecture they are using sounds like a really good idea to me, and I hope it’s as well executed as it is clever. Some of the cool stuff:

Programmable hardware – they call it “Software Defined Silicon”, it appears to be FPGA-like programmable switching setups between the cores, and some programmable features in the IO blocks.

Static scheduling – This is my bet for the way to solve the memory latency problem that continues to be my favorite candidate for “the next big problem in computing”. Caches and parallelism can only hide so much, and caches are responsible more than their share of uglyness.

LLVM-based tools- I’ve been working with LLVM for LARs, and there is a lot of similarity to the designs. I’m pretty well convinced now that LLVM is a Good Thing and the programming environment they built with it sounds promising; it appears to be C, extended with features to better support thread concurrency and the programmable I/O stuff.

The biggest worry is they don’t seem to actually have their chips in any high profile devices, which may just mean they haven’t been around long enough, and may mean there is some hidden problem with their products that I haven’t caught on to yet.

I don’t have enough free time and energy to think its a good idea to drop $100+ on a dev kit which will sit unused on my shelf “until I have time”, nor do I have a project for which it would be appropriate, but I’d love to to sit down and play with one of their dev kits (the little credit-card boards are cool, but the one with the QVGA touchscreen is way cooler…) and see if it really is as good as it looks (One of the many cool project ideas I doubt I’ll ever get to: I’d love to try to port a conventional(ish) OS to these things in a way that actually took advantage of the architecture (I’m thinking tricks with a microkernel across threads), both for the porting experience and because it would be a good (predicted) future of parallel programming playground. There is a review of the fancy kit with the screen above, and it sounds like the software tools (at least at the time of the review) and documentation are still a little rough, but they seem to agree its a promising idea, and do note that XMOS seemed to be aware of the issues and showed signs of moving to solve them. Definitely a product to watch.

Posted in Computers, Electronics, General, OldBlog | Tagged , , | Leave a comment

Barrel #2: Away

barrel2guts.jpg
The 12-note barrel is away. I’m pretty sure everyone from Collexion involved is well and truly done with this particular stunt, but it was a neat project with some great results. This one went through the School of Music’s benefit gala to benefit the School of Music Service Organization. It only pulled in $750, but with the lower materials cost that still represents some income for the benefiting organization. The picture above is (almost) all the guts for the barrel, before being assembled and installed.

Posted in Announcements, DIY, Electronics, Entertainment, General, OldBlog | Tagged | Leave a comment

Musical Barrel #1

One of my hobby projects just came to fruition earlier tonight. A team from Collexion has been working on building a pair of musical Bourbon barrels to support local charity auctions. The first one (6 notes from an internal glockenspiel, triggered by capacitive touch sensors on the rings, with an excellent paint job by Sam Wilson) sold earlier tonight at Spirits of Giving, bringing in $1500 to be split between Collexion and the Nash Brigthon Project. It’s great to be doing technological art, and it’s great that it can be used to support good causes. I forgot to bring my camera, but as soon as I get sent pictures from the people who did have them I’ll throw at least one up.

Edit: I don’t have pictures, but here is a video of the demonstration.

Posted in Announcements, DIY, Electronics, General, OldBlog | Tagged | Leave a comment

HDL Testbenches

After three classes (EE281, EE480, EE585) where I should have been taught how to write real, procedural testbenches for my digital circuit simulation instead of clicking in inputs on ISE’s (ISE is the subject of much swearing and hatred) waveform editor, there was a nominal effort to demonstrate it in EE685, and between that example and the Verilog book I bought for my own edification some time ago (It’s an OK book: I’m yet to find a HDL text I really like), I finally managed to get it down. This is important for three reasons: First: NO MORE CLICKING! I can write little procedural blocks to generate counting-order covering inputs, or other arbitrary stimulus. Second: Automatic Testing! For simple modules, I can simply write two logically equivalent but stylistically different versions, and, barring any design-level fuckups, determine that they both work by telling the simulator to compare the two version’s behavior and alert me if they differ. Third (and most signifigantly) it allows me to do my check/test/verify my modules without dealing with ISE. There are a number of free Verilog tools, most significantly Icarus Verilog, a Free (GPL) synthesis/simulation suite which seems to be well liked (and builds and installs easily on my machine), which allow me to have a whole toolchain without the hassle of maintaining my own ISE installation, or putting up with the glacially slow (despite being very, very powerful; bad configuration) lab machines for longer than is required to generate a test run to turn in for class.
Icarus looks to be an interesting challenge; it definitely doesn’t go out of it’s way to be user friendly, it requires an external tool like GTKWave to display waveforms, and it’s got some features and switches that I’m not even sure what are for, but it is documented and seems to be quite reasonable.
One feature Icarus doesn’t (AFIK) have is the ability to synthesize to the various programmable chips (which are all very, very proprietary). I do have my own FPGA board, which I got in a burst of excitement after first being exposed to FPGAs, and have never had a chance to play with as much as I’d like. Somewhere deep, deep down on the list of projects is to get a decent programming cable for it (my current one is an old parallel model), and spend some quality time playing around with it, I clearly wouldn’t be alone.

Posted in Computers, DIY, Electronics, General, OldBlog | Leave a comment

Stepper Drivers

3492483015_e33027182a.jpg?v=0
I got a set of RepRap Stepper Driver v.2.3 kits to use for my CNC project, and was having no end of trouble with them, but finally had a breakthrough that has two of the three working…and one definitely, definitely dead; the magic smoke escaped from #3. The trick: the SOIC packages were ever so slightly bent in shipping, and I was a little too conservative in the application of solder paste, so some of the contacts around the IC were intermittent. After I finally found it, which was a little difficult because the pressure of a test probe temporarily fixed the problem, all that was needed was punching down a couple pins with a hot soldering iron. With two boards working I’m now in business to finish off the XY table.

Because I’m getting proud of it, a picture of the framing and drive for the XY table in the state it was in the other night.
3493302894_b1f2a8277b.jpg?v=0
All it (just for the table) really needs mechanically now are the bolts attaching the lower lead nut assembly to the middle crossbar, and the table itself to be attached to the rails and lead nut assembly on top (need to pick up some short flathead screws to countersink in for that). To be safe it should probably also have the bearing assembly/leadscrew protector/encoder mount tubes installed where the floating brass nuts are in that picture.
The workspaces in both images are noticeably horribly, horribly messy; both pictures were taken at the end of a couple hours of work, right before cleanup. I (unsurprisingly) tend to keep my workspaces compulsively clean.

Posted in DIY, Electronics, General, OldBlog | Tagged | 1 Comment

SmartPixels

ColorSample.jpg
One of those things I’ve been playing with intermittently just came to fruition: SmartPixels. Cheerful little LED+Microcontroller widgets which light up in interesting ways. All the code is written in a modular way so it is easy for me (or anyone else) to add sensors to the two remaining pins, or modify the behavior in other ways. Full source is available at the page above.

The biggest holdup in completing this little project was not actually the result of a difficult problem, but me forgetting, AGAIN, that when writing code for AVRs, any variable accessed inside an interrupt service routine MUST be marked volatile , or it will be treated as invariant by the compiler.

If I can figure out a convienent way to post video I will, even the simple color fade behavior I currently have loaded is mesmerizing.

Posted in Electronics, General, OldBlog | Tagged | Leave a comment

CNC Beginnings

The beginnings of my CNC project, in the form of parts for the XY table, and associated tool pile:
XYParts_sm.jpg
The motion capability will be 9” in the X dimension and 6” in the Y direction, the Z axis is on hold until after the semester is over, there just isn’t time to design it in now.
Drives:
Each axis will be driven by a 130 oz-in NEMA23 Stepper (Lin Engineering 5618S-58-01)
The lead screw to run the axis is a 3/8” coarse threaded rod, cut to length
The travel nuts are 1.125” coupling nuts (long, to help with backlash without spending money)
One remaining problem is couplers for attaching the lead screw to the drive shaft, there are lots of options, but they all seem to cost at least $10/axis. I suspect unless something better appears I’ll end up with lovejoy couplings.

From aluminum square tubing (1” OD, .062” walls):
8”x8” (outside) square frame for Y axis
6”x12” (outside) rectangle for X axis
The framing will be assembled with bolts, tabs cut from 90deg angle stock, and a bit of epoxy to make it easier.

The next big fuss is figuring out the driver circuits. The motors are rated for 2A at any practical voltage, and only show about 2.6Ohms/coil of resistance, so its going to require proper current-controlled drivers, which may be expensive.

The thing I’m liking most about this project is that I’m learning a huge amount of practical, hands-on knowledge about metalworking and mechanical devices in a hurry, in a low-investment environment so I can experiment and really get a feel for things. I’m not sure if I’ll ever do much more metalwork, but its a good skill to have.

Posted in Announcements, DIY, Electronics, General, Objects, OldBlog | Tagged | 1 Comment

AVRs are Amazing

To add to all the other reasons I love AVRs (cheap, featureful, good development tools, beautiful assembly language), they are now also to be considered almost impossibly resilient: I just made a mistake and reverse biased an ATTiny13 micro (swapped Power and Ground wires), causing it to heat up until it was too hot to touch… I just popped it back in the programmer after it cooled down, and it is completely fine. Win, atmel, win.

Posted in DIY, Electronics, General, OldBlog | Tagged | Leave a comment

IEEE Robot

My extra timesink for the surrounding few weeks has been helping out with UK’s IEEE Southeastcon Competition Robot.
I spent a lot of time last semester making a never-quite-working (but very educational) vision system as a senior project; we opted not to use it (the “never-quite-working part) a few weeks ago, but the rest of the robot isn’t (wasn’t?) really in order to compete, so there have been lots of little things to take care of. This year’s robot “recycles,” it has 4 minutes to gather Coca-Cola empties (conference is in Atlanta, GA this year, of course its Coke) off of a 10×10 astroturf field, and sort them by material (glass, aluminum, plastic). Full rules are available here. The current state of the robot looks as follows, and has at least a rough software framework to drive the pictured hardware.
IEEERobot1.jpg
I don’t have an awful lot of time to dedicate to it, so I’ve been trying to take care of little things; soldering jobs, little pieces of glue code to make the software work, passing information around the group to make sure everyone stays synchronized. Hopefully it’s been useful. Indications are that there will be a reasonably competitive robot in a week, there has been a lot of a lot of people’s time and effort (not to mention a fair chunk of the UK IEEE Student Branch’s money) invested in this year’s robot, so I certainly hope so. I may even get all the OTHER things that the time spent on the robot and going to the conference proper is pulling time away from.

Posted in DIY, Electronics, General, Objects, OldBlog, School | Leave a comment