Sunday, July 5, 2020

Small shepherd's sundial

Some time ago, I made a simple wooden shepherd's sundial.  It's crude and doesn't work well, but I set it on a lanyard and occasionally use it.  When I decided to use it recently, my wife asked for a small one as a necklace.  Commissioned artwork time!

Since I wanted the sundial to be stylish as well as functional, I thought a bit about materials.  I ended up with a simple design that uses 3/8" copper tubing.  It's the same stuff that you can get at the hardware store for various plumbing jobs, but it's small enough for the task.  I traced out the hour lines using a short python script, and printed them out for use as a guide.


The gnomon is held in a steel cylinder with a slight lip to retain it inside the copper tubing, which has a matching (reverse) lip bored in the end.  You slide the cylinder in from the bottom of the sundial.  Boring the copper was a bit of a problem until I got the boring bit set properly.  I also ended up bursting through the side of the first cylinder because I didn't correctly account for the thickness of the tubing. 

I cut the tubing with a jeweler's saw and filed it to final shape for the noon curve.   The cylinder has two drillings: an axial drilling for the hanging loop and a radial drilling for the gnomon.  The hanging loop is just a piece of brass wire bent into a loop at the top.  I thought of soldering it in place, but decided not to.  I hammered the bottom end of the wire into a small rivet, so the loop is free to turn. 

Here is a trial assembly.


I spent considerable time polishing the copper, the pin, and the cylinder.  The machining was not too arduous, though it did take a few tries, but the engraving was much more tricky.

Here's the final product.


I did not use a watchmaker's square graver (too unwieldy on the round surface) nor the more usual round graver (difficult to get it to bite consistently) to do the engraving.  After a bit of trial on a scrap piece of copper tubing, I found that a very small screwdriver that I had previously sharpened to a narrow cutting blade worked much better for engraving.

To keep everything aligned, I taped the printout to the surface of the copper, and cut through the paper.  This got the copper marked in roughly the right places.  Then I removed the paper and finished the engraving under the microscope.  This took about an hour, and was a bit nerve-wracking because every slip-up is visible.  I'm not too proud of how the engraving came out -- many slips, wiggles, and other awful mishaps are visible if you look closely.  However, it doesn't look embarrassingly bad if you don't use a microscope. 

The sundial certainly looks nice enough on its own, but I am not sure how practical the shiny surface will be in use.  It's cloudy now, which might be for the best!

Saturday, June 27, 2020

Fixing a violin bow ferrule

The ferrule on my son's violin bow snapped open.  This is the little metal piece near the end of the frog...  You can see the split along the edge.  I'm holding the two pieces together in this picture.


This not being a particularly expensive bow, I decided to try my hand at repairing it.  I am not a luthier -- any more than I am a watchmaker or clockmaker; that doesn't stop me -- and this is not a usual repair...  That said, it's not particularly difficult either.  I was inspired by the instructions on this page.

These are the parts that need to be removed to access the ferrule.
 


The idea is that ferrules are typically soldered together from two pieces: a flat piece and a round piece.  This video explains the process, which reminds me of many jewelry soldering tasks.

But since this bow was not that expensive, I think the ferrule was assembled as one piece.  From looking inside the break, it looked like the ferrule was brass plated with something shiny.  It is slightly magnetic, so perhaps it's stainless steel? 

In any case, I can solder brass with a little flux!  So apply flux wherever you want solder... and don't put it where you don't!


The task is basically a soldering job and a jewelry job.  For that, I like to use fairly soft, lead-free silver solder.  It's easy enough to slice off a small chip to use with a chisel.


Bind the works up with soft iron wire.  This holds the ferrule together as you solder, and gives you a handle that is far from the flame!


If you're careful, you can plant the solder chip in the blob of flux.  Then, when you heat the joint, the flux melts, and then the solder follows the flux into the joint.  Be very careful to apply heat slowly, so that the flux doesn't splatter and knock the solder away!  Also, if you overheat the joint, the flux will burn away, leaving oxidization everywhere, and then the solder won't stick to the joint.  Worse, it will probably stick somewhere else...

I didn't photograph the soldering process itself because I didn't have enough hands free.  Once the soldering is done, there is some scaling, oxidization, and flux.


I like to dissolve most of the flux in isopropyl alcohol.


Then you can file away the excess scaling and solder (gently!)...


Try the fit of the ferrule on the frog. 


File until it slides on with some friction, but not too much.  It's difficult to describe what you're after, but it's very easy to feel what "too tight" feels like.  I also interleave the job of polishing with the job of fitting, since polishing the inside of the ferrule adjusts the fit to the frog.  Because the solder made a bit of a fillet, which I wanted to retain, I also filed the frog a little bit.  You wouldn't want to do this to an expensive bow, but this bow had a plastic frog, and didn't seem to mind the offense.

To start the polishing, I start with sandpaper.  Things were clean enough that I could start to sand with 600 grit


... and then move to 1500 grit


... and finally polish all surfaces.


I like to use premade polishing paste in a stick.  Even though it's intended to be used on a powered buffing wheel, I just scrape the stick onto a piece of fabric and polish by hand.  You have better control of the polishing of small parts that way.


Keep trying the fit of the ferrule on the frog as you polish, until it fits perfectly and is polished.

Slide the ferrule onto the bow hair.  Make sure it's oriented in the right direction!


This bow has the hair anchored by a screw...  Slide the cover on...


Slide the ferrule on..


And press the spreader in place.  The spreader may be a bit tighter than before, since the solder joint takes up some space.  Don't force it!  I did force, and was rewarded with a split solder joint.  I had to start back at the beginning!  If it doesn't fit, carefully file the spreader so that it does....


And finish the job by reassembling the frog.


Monday, June 8, 2020

Antiques and heirlooms

Among amateur watch repairers, it is good advice refuse to work on antiques or valuable heirlooms.  Doing so without sufficient experience can lead to frustration!  Old watches also have non-standard parts and other oddities that can trip up the unsuspecting would-be repairer.  I have followed this advice until recently... and ended up in a bit of an adventure.

What tempted me down this path was an antique heirloom watch that was in very poor shape.



It was apparently my great grandmother's watch.  It is quite pretty, but when I received it, it had not been well kept by its owner.  Furthermore, it had been to some very poor watchmakers!  Slowly, over the course of three years, I made a number of repairs, none too difficult:
  1. I replaced the missing glass with an acrylic face.
  2. The case wouldn't close because it was slightly out of round... I put it back into the round, so the case opens and closes correctly.
  3. I remade a case screw that someone had snapped the head in half (!). There are marks on the plate where the screwdriver skidded off after snapping the screw, so clearly way too much force was involved.  Ouch!
  4. The winding stem that was acting up, because a brake was tensioned incorrectly.
  5. I put the hairspring back in order because it was twisted badly.
  6. Finally, recently, I took the movement apart and cleaned it.  This was completely uneventful.
It now runs reliably, but gains about 5 minutes per day.  That's terrible, of course.  But given that I don't have a replacement hairspring and given the age of the watch, it's well within what I'm willing to tolerate.

I had a very different experience -- and it's not over -- with a watch from my wife's family.



This watch wouldn't run, but didn't have anything visibly wrong with it.  Upon disassembly, I found that the lever fork cock was ever so slightly bent and was pinning the fork down.  Since it couldn't move very well, that kept the train stuck.  That wasn't the only problem...

As I was reassembling the balance, I was a bit less careful than I should have been.  I noticed the balance was not able to turn freely in both directions.  The balance was simply on the wrong side of the fork, and needed to be carefully lifted over the fork.  Unfortunately,  I couldn't visualize what was wrong.  Instead of the correct move, I gave the balance a sound push the other way.  That was not a good plan, and I really did know better!  Disaster!  The impulse pallet jewel was shattered!

After carefully sizing the missing pallet (seems to be about 19/1000"), I realized that it would be useful to make the pallet out of blued steel.  It should have nearly the same characteristics, and it should "just work."  (I also ordered a ruby impulse pallet, but I'm not confident of my measurements...)

It took five tries to make and install the impulse pallet, because I lost the first three pallets I made, and although the fourth worked, it was very poorly made.  The fifth looks nice enough and seems to be working. 

Of course, the first step was to disassemble the balance.  I removed the old pallet by heating the roller table with a soldering iron with a fine tip at roughly 250 degrees F.  Using a needle, I cracked off all the old shellac.

First, I trued up the end of a 0.5mm blued steel rod, using an arkansas slip.


After truing, I rounded and burnished the end.  Next, under the microscope, and on a soft piece of wood, I ground a flat surface using the arkansas slip.  In the picture below, the flat is visible as the slight smear at the end of the rod.  (The flat is about 1 mm long.)


This made the rod into a D shape.  I kept grinding the flat until the rod barely entered the hole in the roller table.  Then, I burnished the flat surface.

Unfortunately, the rod was too large to fit the slot in the lever fork.


So, I ground a fine taper to the rod by hand, by eye, under the microscope until the rod would just barely bind in the lever fork as I rotated it with the tip in the fork.

Then I switched to a steel burnisher to smooth the surface of the rod.  After burnishing, the rod freely fit the lever fork, with the base of the taper still fitting the roller table.

To cut the pallet off the rod, it's important to cut it to the precise length.  Since I ended up making five pallets, I was able to zero in on the correct length by comparing with an earlier attempt.  But in any case, I reversed the rod in the pin vise, and then used a narrow file as a saw to slice off the pallet.


Once again, I switched back to the arkansas slip to true the end, and then polished it with the burnisher.  Even though this cut end is completely invisible, this was an important step because the cutting raised burrs.  Burnishing removed those burrs.

OK, now the pallet was small!  It's the apparent "grain of sand" on the left of the frame in the balance cock in the picture below.


Getting the impulse pallet into the hole in the roller table was... irritating.  The pallet is slippery by design, and rounded... which means that holding it too tightly (or gripping the wrong surface) with tweezers will launch it across the room.  I lost three attempts irretrievably and lost another one for a very long time.  Eventually I got it pressed in place.

To anchor the pallet, I gripped the balance in surgical clamps and applied shellac.


Someone before me was way too liberal with the shellac and glued together several turns of the hairspring.  I was able to knock them apart, but if it impacts timing, I may have to immerse the spring in alcohol.  I'm loathe to do that because the spring has a nice overcoil and is very, very delicate!

Here is the balance reassembled with the new impulse pin installed in the roller table.


And a zoom-in:

 
But the balance reassembly did not entirely go well the last time...  I bumped the attachment point with the tweezers, and snapped the spring at the balance attachment point.  Previously, I had thought it nice that there was a removable clamp that made removing the balance easy.  However, that clamp was installed very permanently onto the hairspring.  It took a good two hours to remove the old pin (brass, extremely tightly fit; I think it was staked in place at the factory!), fashion a new pin (I used soft copper, and much longer, since I wanted be able to get it out in the future if needed), and get everything back to working order.  As wooden clockmaker Clayton Boyer says, "Mistakes take a lot of time. I spend some of my best woodworking time making them."  Yeah, I agree.

Still, after all that, the watch still would not run.  What!?!  No visible trouble... actually, not.  I had never worked with a watch with an overcoiled hairspring.  It can happen that the overcoil turn can foul on both the balance cock and the main turns of the spring.  That was the problem.  A very slight touch on the spring attachment point fixed the overcoil's path, and the watch sprung to life!

The movement is now running, which is a relief!  It sounds different from the other movements I've repaired, because it's quite a bit lower frequency (around 2 Hz) than other movements of the same size (typically 4-6 Hz).  Assuming it all goes back together, I wonder if it will keep reasonable time?

One final thing, though.  The winding works for this watch is not the usual Swiss mechanism.  It's a bit simplified, which seems elegant at first.  Here it is when correctly assembled.



However, should the stem get loose and you simply try to reinsert it, you will likely knock the cylinder gear assembly off its retaining spring.  This is rather subtle.  In the picture below, the lower retaining spring is supposed to be running in the cylindrical groove right below it.  All you need to do to repair it is slip the stem back in, and push the spring down gently.  It reseats easily, and then you can carefully withdraw the stem, leaving everything in place.


This process is extremely annoying, because although fixing it takes mere seconds, to access this mechanism you have to uncase the movement, dismantle the hands, and dismantle the dial.  Reassembling the movement into the case involves reinserting the stem, which has a tendency of knocking the winding mechanism out of order... so you need to back up, disassemble everything and try again...

Sunday, April 12, 2020

Astrolabe cases

Two sets of friends are getting married, and as both couples are intellectually curious, I thought an astrolabe would be a nice gift.  But astrolabes alone require some kind of protection... so I decided to make cases for them.

I started from a block of black walnut cut from a tree we had taken down earlier this year.  Since I had previously split it, the wood had been drying all summer in the back yard.

Mostly, the woodworking needed for the boxes was nothing particularly special.  The steps I did were:
  1. Rough cut the block of wood into blocks, each about 2 inches larger than my intended final size.  I used a chainsaw for this, and did the work outside.
  2. Power planed the blocks so that the edges were square and partially smooth.  Since my power planer makes an enormous mess, I also did this outside.  (The chips from the chainsaw and power planer go in my compost...)
  3. Using a large hand crosscut saw, I sliced off the lids of the boxes.  This is a somewhat delicate operation -- even though it requires lots of force -- as you must ensure that the cut is perfectly planar and parallel to (at least one of) the faces of the block.  I don't have a large enough power saw blade, so this is also a manual step!  In all honesty, this is a ripping operation, so I should have used a rip saw... but I don't have one.  My crosscut saw works well enough.
  4. I did an initial sanding of the cut surfaces and did a little bit of squaring up of the other faces.
  5. I recessed the parts of the box that receive the astrolabe.  This involved tracing the outline of a (disassembled) astrolabe to where the recess needed to go on both the base and the lid of the box.  I then used a router in 1/16" depth increments to cut the recess.  For the base, the recess is stepped since the thumb ring is supported in a more shallow recess than the rest of the astrolabe.  This also gives room for the pointers.  I also recessed the lid.
  6. Power belt sanding.  Lots of it!  Starting with 60 grit, I got all faces parallel and square and cleaned off all the cut marks from the saws and planes.  I also rounded the edges where I wanted them round.  Then I repeated the whole process  with 80, 100, 150, and 180 grit.
  7. Since I wanted a very fine finish, I then hand sanded the entire box with 220, 320, and 400 grit sandpaper.  Walnut will polish nicely with finer sandpaper if you're planning for an oil finish, but that wasn't necessary for this project.
  8. Five coats of polyurethane with plenty of time for drying, and 400 grit hand sanding between each coat.  I made sure that the recesses were left unfinished, since I wanted to adhere a velvet lining.
I wanted to line the inside of the boxes with velvet to protect the astrolabe.  Since the cast acrylic I have been using recently for astrolabes is actually fairly sturdy, a velvet-lined box is surely overkill.  (I did accidentally drop my larger astrolabe, and that shattered the thumb ring.  Since super glue is actually an acrylic, it was a simple matter to fix the crack.  Super glue leaves a mostly invisible joint on acrylic and bonds almost instantly.)

Velvet is a fairly troublesome material for lining.  To make it adhere to a flat surface inside the box, you must support it.  The usual way this is done is to glue the velvet to a sheet of cardboard first, and then glue the cardboard to the box.  Since velvet frays badly, you need to roll the velvet around the back of the cardboard (a second gluing) so that no cut edges show.  Finally, since the boxes have a circular cutout to fit the astrolabe, I had to figure out how to manage that joint.

In the end, I glued the cardboard to the velvet, rolled and glued the edges, but left the circular bottom edge alone.  After the glue dried, I hand stitched the circular bottom edges together.  The result was a stiff velvet "cup" that fits tightly inside the box.


Once the velvet was glued in place, I added hinges and a front clasp.  While hinges and clasps aren't difficult to install, they require precision.  You must be especially careful since you don't want to harm the finish.  I held the box in the vice, but lined it with soft paper towel so that the finish wasn't marred by the vice.  I sharpened (under a microscope) my 1/16" drill bit before starting.  To install the tacks for the clasp, I didn't strike the tacks with the hammer directly, but rather used a recessed punch to ensure that I didn't slip and damage the finish.  When setting the tacks, I also held them in brass tweezers. 



Wooden equatorial sundial

I had a laser cut sundial in our garden, but it was destroyed.  No matter, it didn't work well in autumn.  I made a wooden replacement sundial.  Equatorial sundials are easy to lay out, since all of the hour lines are separated by 15 degrees.  You can quickly draw the plans directly on a piece of wood, as I did, with a compass and protractor.


One small point is that the dial itself will be semicircular.  To ensure that I got everything aligned first, I drilled the center of the circular arc. Even though the center will be cut out later, this way I can sight through the gnomon to ensure that everything is in alignment first.


Then I cut out the pieces,


and traced the hour lines.
 

To ensure that the hour lines are visible, I filed them into the dial.


I also woodburned them so that they are clearly visible. I also traced a vertical line so that I can install it on its mounting pole correctly.


Here is a test fit.


Once I was happy with a tight fit, I installed the gnomon, which is a 1/16" brass wire.


Finally, I put a single nail to join the two pieces.


And installed the completed sundial in the garden!


Thursday, March 5, 2020

Fluidyne experiments

A fluidyne is a piston-driving heat engine whose only moving part consists of a column of fluid (usually water).  It is a kind of Stirling engine, and it seemed like a neat idea to try to make.  The initial design was invented by C. West, and is described in a nicely written report.

Rather than starting with the "easy" standard design, I tried making a 3-piston version described later in West's report, after describing his initial design.  Here's my rendition.


I did some analysis of this design.  My model sets a displacement for each piston (water column) and temperature for each cylinder (air column).  Half of each cylinder is hot, and half is cold.  The engine is driven into oscillation because the cylinder isn't centered between these two sides, so sometimes it's heating and sometimes it's cooling.  The weight of the pistons acts as restoring force, so assuming they're all of the same length, they have the same resonant frequency.  Surprisingly, the cross sectional area of the cylinders and the length of the cylinders doesn't matter in the analysis.

Here is a typical plot of running frequency as a function of the length of the pistons and temperature difference. 
The engine seems to stall below a certain temperature difference between hot and cold sides, and the stall temperature depends strongly on the coefficient of temperature flow into/out of the cylinders.

The way the engine is supposed to run is that you point a heat gun at the three copper tubes on one side.  These are the hot sides of the cylinders, while the others are cold.

The sad part is that while this engine runs beautifully in theory, I could not get mine to start.  Keeping the temperature of all cylinders the same is critical or the pistons get out of order, and even with that managed, it never started. 

Just to verify that I wasn't completely crazy, I decided to modify the plumbing to make a more standard single piston machine.


I didn't do the analysis of this engine, but it also seemed very unwilling to run unless I flooded the hot cylinders with the pistons. 


Under this condition, the tops of the pistons boiled, which raised the pressure substantially.  Since the water vapor then condensed on the other (cold) side, the piston didn't boil away completely! 

Just to make sure that the fluidyne plumbing wasn't superfluous, I disconnected the plumbing and flooded the hot cylinder on its own. 

Here is a video of this test. 


You can see the top surface of the cold side of the piston oscillating slightly, but much less than when plumbed.  So the fluidyne was "running", even though the boiling seemed very wrong, at least from the original report's description.

However, at this point I recalled reading a rather different design by Morris Dovey.  He described a simple prototype that seemed worth trying, at least by modifying the materials I had at hand.  Although he claims that his design does not depend on resonant frequencies to run, that is dubious at best.  Forced or loaded resonances can vary a bit from their natural frequencies anyway.

I disconnected most of the pipes, added the cold cylinder just hanging off to the side of the hot cylinder, and plugged the cold cylinder with a small screwdriver.


This machine really runs!


It even (sometimes) starts nicely...


But I ran into temperature problems all around, as the clear vinyl tubing is not really able to take the heat from the heat gun.  After a minute or so of running, the tubing invariably springs a leak and the machine stops.

I tried flipping the positions of the hot and cold cylinders -- basically just plugging the end of the hot cylinder and leaving a big air bubble below it -- but this did not work.  I have not done the analysis of Dovey's design to get a more analytical handle on its operating regimes, but it is still definitely a resonant device.  You can feel it try to start running once the heat is sufficient, which is a sure sign that there's a forced resonance.

Sunday, September 15, 2019

Misadventures with an ESP-01 board (ESP8266 wifi module)

To add wifi capability to an electronics project, the ESP8266 chip is apparently a popular choice.  It is a microcontroller with a wireless ethernet stack built in.  We got three ESP-01 boards that feature this chip, an antenna, and some flash memory (1 MB).  They are very small!


The tutorials on this board are generally quite confusing, as you can incorporate it easily into a project of your choosing in many ways.  Many makers are familiar with the Arduino platform and are comfortable with its development tools, even though this isn't entirely necessary.  Also, there appears to be a tradition of "hello world = flashing LED" tutorials for Arduino.  This tradition extends to ESP-01 boards in a somewhat unfortunate way. 

The ESP-01 board ships with an old-school Hayes-modem "AT" command interface.  It talks to a host via serial at 115200 baud out of the box -- though with 3.3 V signaling instead of 5 V or RS-232 levels.  (Nearly everyone warns you that 5 V will kill the device, but that actually seems a bit suspect.  I imagine RS-232 levels would really toast it, though!)  In any case, if you hook up a serial terminal, you can talk AT commands and pretty easily connect the board to a nearby access point.  The commands are

AT+CWMODE_CUR=3
AT+CWJAP_CUR="<ssid>","<pwd>"

If you want to see what access points are visible, use

AT+CWMODE_CUR=3
AT+CWLAP

If you want to see what IP you've been assigned once connected, use

AT+CIFSR

The documentation for all the commands is located here. a nice short listing of commands is here.  It's essentially like a cross between old-school modem commands and sockets programming.

Since modern computers don't have a hardware serial port (and most old hardware serial ports don't support 115200 baud), you typically use a USB-to-serial converter.  There are many of these available -- I have several -- but for a quick hack you can coerce an Arduino into helping.  Actually, "coerce" is the right word, because what you do is hold the Arduino in a reset state (it's effectively disabled) while you hijack its USB-to-serial chip.  Here's the circuit that I used.  The resistors form a voltage divider that brings the Arduino's 5 V signaling down to 3.3 ish volts.  (It didn't make much of a difference when I hooked the RX lines directly together, though that is apparently ill-advised...) 


Since I am using an Arduino Mega held in reset, it seems that plenty of 3.3 V is available for the ESP-01, contrary to the many tutorials warning that a separate power supply is required.  I imagine you might have problems if you allow the Arduino to boot up.


OK, back to the unfortunate part of the story.  Since the tradition is to make an LED flash as your first project, there are many tutorials explaining how to make an ESP8266 flash an LED.  This involves -- naturally enough -- overwriting the flash memory with a program that simply toggles one of the GPIO pins.  However, this means that the modem firmware gets overwritten!  If you're a newbie (or even if you're not), this means that the ESP-01 board is now useless as a wifi dongle!  Putting the original firmware back is not exactly a trivial task.

I was faced with the task of reflashing 2 of the 3 ESP-01 boards we have.  (The remaining one was fortunately unharmed, so I was able to figure out how it was supposed to work!)

First of all, you need special software that understands how to flash memory on the board with the ESP8266 chip.  Fortunately, the right tool for the job is an open source python script esptool which has minimal dependencies.  Starting this up was no problem, and I started by re-using my existing circuit.  I figured that I would start by clearing the flash memory, since I already knew it to be useless...

$ python esptool.py --port /dev/ttyACM0 erase_flash

Sadly, this just hung while "connecting".  I hooked up my logic analyzer to the TX and RX lines, and was able to verify that data was getting transferred, so it looked like the chip was merely ignoring the commands.  After digging some more, I found that the right course of action was to ground the GPIO0 pin first.  This puts the ESP8266 chip into a "flash mode", which is required for programming it.  To start programming, you briefly pulse the RST pin to ground to reset the chip.  Then it happily started flashing the memory, or so I thought. 


However, as it turns out my board has a flash chip that doesn't like the default SPI settings.  Unfortunately, they appear to work just fine, and the files I flashed even verify correctly through esptool.  But they are wrong!  There are some dark words in Amazon reviews for the ESP-01 about defective boards, but that didn't seem to add up.  The boards were indeed talking -- I could watch the data transfer both directions on my logic analyzer -- so I didn't think they were defective. 

After a bit more poking, I found the solution.  The problem is that the default setting in epstool optimizes runtime, using the fastest protocol to write the flash.  Apparently this isn't supported by all flash chips, and it silently causes problems with some of them.  There's a detailed explanation of what's going on in the esptool documentation and on the Wikipedia page for the Serial Peripheral Interface

OK.

Let's flash the board correctly!

You can use the stock firmware, by following detailed instructions about the flash map in their documentation.  But there is also an enhanced version of the firmware that adds a few additional AT commands.  It's a little easier to flash the enhanced version since it's all in one contiguous block starting at address 0x00000 rather than several separate files flashed into different addresses, which is how the stock firmware is distributed.  In any case, the command to do the job is

$ python esptool.py --port /dev/ttyACM0 write_flash 0x00000 AiThinker_ESP8266_DIO_8M_8M_20160615_V1.5.4.bin --flash_mode dout

This set things right, and the boards once again respond to AT commands!