Saturday, April 22, 2017

DeWalt 20V Max 6.0Ah Pack Teardown & Analysis

It's been a little while since I've had a shiny new tool battery to tear down!  This one showed up in the mail for some analysis and evaluation - so analyze and evaluate it I shall!

As of the time of posting, you can get 2 for $150 (shipped) on eBay - which almost certainly beats your local hardware store by a lot.  But, only if they're good.


This is a notable pack in that it's (supposedly) using 20700 format cells - the first non-18650 based tool pack I've had the opportunity to rip into.

What's inside?  Is it any good?  Read on to find out!

Saturday, April 15, 2017

Doing the Math: 2016 California Autonomous Vehicle Disengagement Reports

Self driving cars.  The imminent future of on-demand and super cheap transportation - or still a long development slog ahead, depending on who you listen to.  Earlier this year, California released the 2016 Autonomous Vehicle Disengagement Reports - which are reports of times that the human driver had to take over from the computers (either because the computers handed off control, or because the human wasn't comfortable with what the computer was doing).


When the reports came out, quite a few sites covered them - at the year granularity.  They just did some quick aggregation of the numbers for a whole year, perhaps made a graph, and (as is common in the media today) published a quick article about it.

I haven't seen anyone delving deeply into the data by using the month-by-month numbers - which are provided.  So, I did.  And some very interesting trends showed up for a few companies!

Interested in how everyone did in the month-by-month data?  Read on!

Saturday, April 8, 2017

Ural Gear Up: Oils Change

I've been talking about Urals for the past three weeks, and this week finishes my (current) Ural series with a post on a task that every Ural owner should be familiar with - oil changes.


The recommended oil change interval for the engine and gearbox (at least on the older model I own - 2005 and similar) is 2,500 km (1550 miles), with an oil filter change every 5000 km, and a final drive oil change every 10,000 km.

What an awful lot of people do instead is to just change everything (oils and filters) every 2500 km.  The bike doesn't make much power, but it runs an older and looser air cooled engine design hard - 40hp if you squint at the dyno sheet and a bike with the aerodynamics of a sheet of plywood make for a hard working engine!  The engine doesn't hold much oil either - only a hair over 2 quarts.

In any case, oil is cheap, metal pieces and labor are expensive.  It's cheap(ish) insurance, and regular oil changes are a good way to catch problems before they get bad - both from the oil and from the time spent around and under the bike, paying close attention to things.  Fine metallic powder/flakes in the oil?  Annoyingly, normal.  Metallic chunks?  Time to dig in deeper...

Plus, it's insanely easy to change the oil on this bike!  It could be a KTM...

Saturday, April 1, 2017

Assembling and Installing a Ural Sidecar Windshield

A Ural without a sidecar windshield is like... a Ural without a sidecar windshield!  Great for dogs, less-than-ideal for kids, and an awesome cargo hauler.  But, if you want something that's still great for dogs, becomes great for kids (or wives, siblings, etc), and is only slightly less awesome as a cargo hauler, you really, really want a windshield.


Unfortunately, if you order a Ural Sidecar Windshield (I got mine from Ural NE), what you get is a box of parts.  There are no instructions or anything useful like that, and internet advice on assembly is sparse, so you get two items in one - a windshield, and a puzzle!

If you find yourself in this situation, fear not!  I've done some puzzling for you, and have a guide for turning your box of parts into a shiny installed Ural windshield on your sidecar!

Saturday, March 25, 2017

Ural Gear Up: Cracked seat post repair and doubling up rubber supports

I've got a 2005 Ural Gear Up - and I noticed towards the end of last fall that my seat was getting really, really soft and bouncy on rough gravel roads.  On top of that, I was having to hold myself forward or I'd go sliding off the back.  Clearly, this isn't how things are designed to work - so I investigated!


What was the problem?  My seat support cracked, and was allowing far more movement than intended.  On top of that, the rear rubber support ("spring"?) was old, and simply didn't offer as much resistance to movement as it once did.

How bad were things?  Well... here's how far the support had cracked.  It wasn't completely through, but it was getting there in a hurry.


Time to fix this!  Fortunately, I know someone who is quite good with a welder.

Saturday, March 18, 2017

Uraling Through the Winter

In October 2016, I bought a Ural.  Specifically, a 2005 Ural Gear-Up.  This is one of the 2WD models, and it comes with pretty much all the various gizmos - shovel, spotlight, fluid container, machine gun mount, spare tire, rear rack... just about everything you could need!


I rode it all the way through the winter this year (which was a particularly rough winter for the area), put a few thousand kilometers on the clock, have done some work on it and added a sidecar windshield, and at this point I think I have a decent feel for this particularly obscure and unique form of transportation that is the source of endless questions from, well, everyone.

Why do I own a Ural?  Partly, I've wanted one for years.  However, it's mostly because a Ural is a motorcycle that can carry my daughter in the sidecar while my wife & I ride (we both ride).  So far, my daughter loves it, and we're planning on quite a bit of riding this year.

But... Ural?  If you're curious, read on!

Saturday, March 11, 2017

I2C LCDs: Reverse Engineering the I2C Converter

If you need a basic LCD display for an Arduino or Raspberry Pi, it's hard to beat these I2C LCD kits you can find for about $5 on eBay.


Some of them come soldered, some require you to solder things together - but they're cheap, they're I2C, they work... and they are incredibly frustrating when you didn't write down the magic incantation to initialize the LiquidCrystal_I2C class, and cannot manage to get the silly things working again!

Fear not!  With a bit of time, a bit of knowledge, and a cheap multimeter, you can figure out exactly how to set one of these up, starting with nothing but the adapter module!

Read on, if this particularly arcane corner of tech interests you.  But you're probably here from a search engine...

Saturday, March 4, 2017

Fixing Fake FTDI FT232RL Adapters (SSOP-28 rework with an iron)

The FTDI FT232R chips are an incredibly well supported and common way of building USB to serial adapters (usually 3.3V or 5V TTL levels).  The chips have built in drivers on all major OSes, they're easy to find - and almost all the cheap ones adapters there are using fake chips.

But, with a bit of time and patience, you can replace the fake FTDI chips with legitimate ones!  If you like the form factor of your preferred cheap adapter, but need the performance of a real FTDI chip, it's quick and easy to swap them out!

My first attempt (on the left) failed, but I then knocked out 4 functional replacements (on the right).


I'm talking about these adapters - you can find them for about $2, shipped, on eBay.


The chips aren't fake in the "Oh, the factory ran an extra few shifts off the books" sense.  They're fake in the "The fake chips are actually a microcontroller programmed to behave (almost) exactly like the FT232R" sense - and, they do a pretty good job at low speeds!

Zeptobars did some analysis and demonstrated that the fake chips are completely different under the hood, and then of course FTDI messed with their drivers to either brick the fake chips or insert garbage data if you're using one on Windows.

I have a bunch of these adapters laying around (purchased before I realized just how common the fake chips were), and while they work just fine at 115200 baud, they don't work reliably at 3M baud.  I spent a while troubleshooting some connections - things just weren't working right and an awful lot of garbage was coming across my link.  I eventually discovered the problem with fakes, and set out to both fix my problem and learn some surface mount rework skills.

So read on!

Saturday, February 25, 2017

LiteESP8266Client: AT Command library on 100 bytes of SRAM!

Two weeks ago, I grumbled about the state of Arduino libraries (they use too much SRAM for stupid reasons).

Last week, I presented a zero-global-SRAM serial logging library.

This week, I'm offering an ESP8266 AT client library that uses 100 bytes of SRAM (if you use my zero-SRAM serial library for serial output) - almost entirely used within the Software Serial library.

More importantly, I'd like this to show off how to do a fairly complex library without using nearly as much SRAM as the alternatives!


If this is something that interests you, read on!


Saturday, February 18, 2017

LiteSerialLogger: Zero SRAM Serial Logging

Last week, I talked about Arduino library memory use - and pointed out that the Serial library, in particular, is entirely wasteful for the purpose of simply writing log messages out to the serial port.

What's one to do about this?  Well, one can do many things, but what I chose to do is to write my own serial logging library - that uses zero SRAM except when actually writing messages to the serial port!

This isn't the first time I've written something along these lines.  Every few years, I seem to find myself writing yet another serial output library for some reason or other, and serial UARTs are pretty boring to bang bits into at this point.  They're slightly more exciting if they have a FIFO bolted on and a high speed clock, but not by much.

In any case - take a look at this!  A basic Arduino sketch uses 9 bytes of dynamic memory or SRAM (for the millisecond timer), and with an awful lot of serial logging, I also use a mere 9 bytes!


What's this library?  How did I write it?  And how can you use it?  Read on!

Saturday, February 11, 2017

Common Arduino Library SRAM Use

I've been playing with Arduino for a few months now, and one of the things I've found incredibly frustrating is just how much dynamic/global memory (SRAM) most of the common libraries use - the standard Serial library uses nearly 200 bytes of precious RAM, always and forever, just to print a single log message, and a lot of others aren't that much better.

Further, advice about Arduino memory pressure tends towards the handwavy "Well... don't use globals, and use the F() macro..." side of things - which, while accurate, is missing some very important information for understanding what is happening and how you can resolve the issues.

Here's a particularly bad example of what I'm talking about.  With literally nothing done but some libraries initialized, this code is using 1101/2048 bytes of RAM - 53%, and I haven't done a single useful thing yet!


I'm going to dive into library memory use in some depth, look at a few examples, and profile some commonly used libraries!  Read on if you're interested!

Saturday, February 4, 2017

Building a Button Box: Technical Discussion

My daughter (23 months old) likes pressing buttons and anything involving lights ("yight!").  I had some time off this winter - and some parts to build something I call a "Button Box."  And what, realistically, is both a toy that can grow with her, and a subtle way to teach low level programming when she's older (if she's at all interested).  Because nobody is learning C in schools anymore, and C still matters.

This box contains an Arduino Uno, a 20x4 LCD, a few NeoPixel strips, a bunch of buttons, some LEDs, a battery and power supply, and the supporting wiring mess to make it all work - entirely hand soldered, and certainly one of a kind!


I'm doing two posts on this.  You've found the "highly technical discussion" post - this will be useful if you happen to want to build something similar, or find out what I did, in rather substantial detail.  This post also includes lessons learned - places I wasted time, had to rework things, or would just do things differently if I were to do it again.

If you're simply interested in what the build process looked like, you may be more interested in my other post, which is a (somewhat) shorter description of the build process.  This post includes that content as well, so there's no real point in reading both unless you want to.

In any case, if you want the gory technical details, read on!

Saturday, January 28, 2017

Building a Button Box: Overview

I have a daughter (not Cindy Lou Who, but she is slightly less than 2) who loves buttons and lights ("yight!").

If something looks like a button, or looks like it could be a button, she'll press it.  Repeatedly - especially if it clicks!  Clicking buttons are the best, and I'm glad things like dishwashers come with button locks now.

She's also learning colors and letters.  I had some time off over the winter, so I built her a button box that's useful for all of these things!


This is the non-absurdly-technical description of my build.  If you're looking for the gory technical details with an awful lot of advice about how not to do things, you'll want to check back next week for a radically longer post.

Otherwise, read on for how I built her button box!

Saturday, January 21, 2017

Progress vs Decline: What to expect going forward

What on earth just happened?  Donald Trump is now our president.

For quite a few months now (since early in the primaries), I've been saying that, while I don't support Trump, I saw a viable path for him to be elected President.  I caught a huge amount of flak for that.  Even the week before the election, pointing to the closing 538 probabilities and extrapolating out, I got accused of being ignorant of math, clueless about polling, and generally a complete moron for saying, "Folks?  Don't be so sure of a Hillary victory just yet."

Why?  And what does this mean?  I'll try to explain.

Something happened that wasn't supposed to happen.  Donald Trump is the new President of the United States of America.  This wasn't how the story goes.  Following eight years of Obama's Presidency, Hillary Clinton, who is, by the way, a woman, was supposed to Fight the Good Fight against the Evilly Evil Forces of Mordor (represented by none so vile as Donald Trump), triumph in a landslide, and rule over America, representing the fluttering flag of Progress.

That didn't happen - and the howling was incredible.  Trump wasn't supposed to win.  Trump was most assuredly not supposed to win with 304 electoral college votes (which would have been more, except for the faithless electors - of which there were only 2 from Trump, but 5 from Clinton).

Why wasn't Trump supposed to win?  What happened?  And what can we expect going forward based on this?

Saturday, January 14, 2017

Charging a Tesla S/X at 350kW: Plausible!

In late December, Elon Musk tweeted something interesting about 350kW or faster supercharging - and there has been a lot of talk and speculation since then.

Some people think he's talking about trucks - which would make plenty of sense.  Trucks need large battery packs which will require a rapid charge rate to be useful - there's definitely a good fit there.

But... what about a current Model S or Model X?  Could you actually charge one at 350kW with the current hardware?


I didn't know, and I couldn't find anyone who'd actually done the math - so, working with some basic back of the envelope calculations, I decided to find out!

Read on to join me and see what happens if you try to charge at this high rate - but I'll tell you up front - it seems entirely plausible to me!


Saturday, January 7, 2017

No Actual Post Today, Sorry.

I have plenty of posts nearly ready to go - but none fully ready this weekend.

Unfortunately, my wireless ISP and I have been having... conversations since about Thursday, over the extreme lack of internet they've been providing.  This poses a problem for my normal schedule of polishing a post on Friday and Saturday - and going elsewhere isn't worth it with all the snow and ice.

I've learned many things with a packet sniffer (including my radio's IP address), and learned that their level 1 techs are utterly full of shit about a wide variety of issues.  One particularly annoying one is the claim that a 5Ghz AP will interfere with their radios - which are operating in the licensed 5.4/5.7Ghz band - not the unlicensed 5.2/5.8Ghz spectrum 802.11 APs operate in.

Along with almost everything else they've said.  Yes, restarting my AP did temporarily resolve issues, but this is only because the normal IP lease is 60 seconds, and the "We can't talk to the real server, here's a 10. IP address" lease is 40,000 seconds or so.

Not entertained...

Hopefully, back to your regularly scheduled posts next weekend.