palago tiles

Palago is a simple-enough game that’s like Go but hexagonal instead of a grid pattern. It includes 48 identical tiles with a light/dark theme. Players vie to create closed shapes in their selected color.

I decided to design and 3D print a set. I’ve got the first tile now and I like it. I managed to create in one version a beautiful tile which prints nicely in two colors (on a single extruder printer). Both colors are at the same height which was a challenge…

What was interesting about the design is trying to allow the bevelled nozzle on the printer enough close access to lower layers in order to print this in multiple jobs. The base white part prints as the first job and finishes at 4mm in height; the next two print jobs are in a second-color of filament like blue in this case and start at the 2.4mm height layer and continue from there.

Screen Shot 2019-09-15 at 3.22.41 PM

It was necessary to manually edit the 2nd/3rd print job’s content for the sake of safety and to disable bed autoleveling (which could have caused problems). I was excited and nervous to push the Print button in OctoPrint and wincing a little as it begin. These things either work or they can go spectacularly wrong. Fortunately, it worked perfectly, the tolerances were exact and it produced a great-looking Palago tile.

new phone, new e-waste

I really enjoyed my iPhone 5S, to be honest. I liked that it was small enough to fit into any pocket I had. Part of Apple’s business plan appears to be to force older products into landfill by prematurely making them obsolete. And one aspect of that plan seems to be to strong-arm carriers like Comcast to not allow transfers of service onto older phones like mine. It’s too bad, really, because the phone otherwise works well for me.

The reason behind the carrier switch

I’ve recently moved and my Metro PCS (now T-Mobile) service is terrible here. And at $45/month that’s just not something I intend to keep.

Comcast’s up-sell attempt

So in Comcast’s retail store, the guy’s telling me that they can’t won’t transfer my phone number to an iPhone 5. “So how much is your used iPhone 6?“, I ask. (They want $450 plus tax which is so not going to happen.) He then gives me the hard-sell by suggesting that he could only give me the $100 transfer rebate by the end of tomorrow.

Somewhat-frantic used phone search

The next couple of hours involved me trying to find a local business which would sell me a used or refurbished iPhone 6 (noting of course that the iPhone X is the current model). I managed to find that Fry’s Electronics at the local branch had a refurbished one. And of course the sale ends by the end of that same day.

The purchase

So in this world-wind period I immediately jump into my car and visit Fry’s. Indeed, the sale ends on the same day so I’m reasonably forced to make the purchase on-the-spot. Of course, the phone has zero charge so I can’t even really verify that it’s not bricked. The price tag out the door is something like $180, less than half what Comcast would have charged me.

Metro PCS

I get the iPhone 6 home, charge it up (“100%”) and the next morning visit Comcast Metro PCS. You’re probably wondering why I didn’t just go straight over to Comcast. Because Comcast won’t just help me in this situation; they insist that the iPhone 6 be provisioned by my losing carrier first. So the Metro PCS people must be told by me that I’m innocently just upgrading my phone on the day before my new payment is due. I’m charged $15 for the changeover.

Comcast

Next stop is Comcast again and they can transfer the phone number. While the number is transferring, the iPhone dies from lack of battery charge. Er, what? It was 100% when I left this morning and I’ve barely used the phone. The iPhone 5S would go days before needing a recharge.

Research time

Back home—and with the phone on the charger again—I discover that Apple had a recall and a class action lawsuit regarding this particular phone with respect to the battery. I contact Apple Support to determine whether or not I can get the battery replaced for free. They indicate that they won’t pay for it but they can assist getting me into the service queue for the local store.

Apple Store

So I arrange the support visit at Apple only to find that I and many other people will be sitting here waiting to be helped for some time. I took the option to drop off my phone and to pick it up the following day.

The next day arrives and I find that I and many other people will be waiting some more to be helped for quite some time. I find it odd that a simple pickup like this took well over an hour. What I find even odder is that Apple would replace a battery and not charge it; the phone arrived with literally 0% charge and no way to determine whether the battery’s health was verifiable. The overworked support person—holding literally four products at once to deliver almost simultaneous to four customers—essentially put me on “ignore” when I indicated that it would be nice to know if my phone was working after the service-related activity. I think I paid $45 plus tax to get out the door.

New phone

So, now I have a new, working iPhone 6. Honestly, I didn’t need a new phone. I felt coerced into the upgrade to be honest.

Of course, then, I designed a new-and-improved holder for this one using Autodesk Fusion 360. It will clip onto the shoulder strap of my laptop bag and suitable for playing music while walking somewhere. I’ll print it on the 3D printer as soon as I get that unboxed and back in action.

Screen Shot 2019-07-05 at 11.29.29 AM

What next? (a.k.a. Combating e-waste)

I really have a hard time with this disposable-technology mentality. If we’re tied to a single operating system like iOS and it’s under Apple’s Machiavellian business plan then we’re left with two viable options: throw it away or change the operating system.

Having searched the Internet, I see no solutions in which someone has replaced iOS on an iPhone with anything like Linux. In theory, an older phone could be hacked as an amazing IoT device of some kind since the camera technology, RAM, processor and storage is killer compared to a Raspberry Pi, for instance. The street price two years ago for a used iPhone 5S was a mere $100 as I recall. So today, the street price of an iPhone 5 should be sub-$100. (I’ve just reviewed an eBay iPhone 4 ad which asks $7 as the price!) Imagine the supercomputer which you could build from a boxful of discarded iPhone 4’s and 5’s.

[Assuming that we’ve replaced iOS on each…] imagine the supercomputer which you could build from a boxful of discarded iPhone 4’s and 5’s…

  • I’m sure the average phone retailer has a stash of these in their back office and would be delighted to remove them from the playing field.
  • You wouldn’t need it to be a phone anymore or to have a carrier.
  • At it’s heart, the average (old) smartphone is a very fast computer with lots of RAM and an amazing camera and hard drive.
  • In the average supercomputer scenario, you wouldn’t worry about batteries since it would be tethered to power. Most battery-related issues could then be ignored.
  • In theory, you could create low-cost projects which involve sending multiple old phones up into the stratosphere via a helium balloon, collecting a 360° views and transmitting them back.
  • Similarly, you could create a drone submarine with a dedicated old phone at every porthole to capture and forward live, streaming video.

I’ll continue to look into this as an option. There has to be a way of hacking these phones. Just imagine the possibilities if you could.

Screen Shot 2019-07-05 at 12.06.42 PM

old-fashioned milk bottles meet iot

If you remember from my last post on the subject, I’m into those old-school glass bottles of various sizes. Here’s the typical size and lid type that I’ll be talking about:

quart

The lids seem to come in a variety of colors and are probably made from ABS plastic—they work well and last a while. Everything cleans up nicely and I’ve had quite a few of these in my pantry for the last five years now.

Identification

There are times, though, when I wished that it were easier to tell what’s what. I honestly have a variety of things which kind of look the same: masa, ground corn meal, pancake batter, semolina flour, etc. They’re all vaguely yellowish. The same is true for the many flours which I buy.

My usual routine is to put a small Post-It type of note of some kind on the front of the bottle. But sometimes these fall off. I have been known to tape them on.

It would be nice if I had a way of easily identifying the contents of the bottle as well as preserving things like nutritional information or the instructions that you might find on the back of a Cream of Wheat box. I could also record the date of purchase and/or the expiration date but I’m not that fussy.

High-tech version

Today’s creativity involves the idea of self-identifying bottles. I’ve just purchased some tiny RFID tags which I hope to embed inside my own self-made bottle caps. I’ve just spent an hour designing the cap in Autodesk Fusion 360 and it’s now getting a test print to see if it fits. When the tags arrive I’ll carefully measure one and then design an internal cavity to accommodate the tag inside the cap. Given that the tag is completely embedded, it should be waterproof as well and should stand up to being repeatedly washed.

 

The usual tactic with respect to printing these with an embedded object is to create two jobs out of the part (1st half, 2nd half) and then insert the tag in between the print jobs. My own GetToDahChoppa project would be the way of chopping that. For this project it will be easier to just insert a pause command at the magic moment in the gcode file so that the printer pauses, alerting me to insert the tag and then I’ll manually resume. As long as I don’t include internal supports, this technique should work fine.

I thought I’d create a NodeJS-based server which sits on a Raspberry Pi computer which minimally includes an RFID reader. It would host a database of the RFID numbers and their corresponding information for each bottle in service.

The system should include a mechanism for simply reporting which bottle is being held up to the reader as well as several convenience features to include fetching the nutritional information given a UPC symbol. I’m guessing it would be nice to have something which actually scans UPC symbols but that’s not strictly necessary since it doesn’t take much to just type them in.

I guess I’ll have to type in the instructions or include a photograph of the box’s instructions.

Interface choices

I guess now, I’ll need to determine what kind of interface this will have. I could include a TFT panel. I think this would be the normal way of communicating things back to the user. In this way, you could click tabs on the screen if you wanted more information. I would assume that this would use Kivy as the graphical interface. It’s possible but I’d have to have somewhere near the pantry with power and the correct orientation, distance and lighting for the panel. And it must also work out with respect to the distance of the reader.

At the moment, though, I’m thinking that it might be interesting to push the report information to an Echo Dot that’s in the same room. In theory, you would hold the bottle’s top to the horizontally-mounted reader. There would be a delay of perhaps three seconds and then you’d hear Alexa say “Cream of Wheat”, having initiated an Alexa Skill of some kind. I’m guessing then that I might have to say “Alexa, read the instructions” to have her then read from another topic.

Given the way Amazon’s Lambda functions work, it feels like it will be problematic unless I host the database in the cloud otherwise the function wouldn’t easily have access to that information. I dunno, but I kind of like the idea that the database just lives on the Raspberry Pi itself.

I could use a simpler text-to-speech project from earlier, requiring a speaker on the Raspberry. The sound quality is basically similar to listening to Stephen Hawkins reading your panty list. I’ve also been successful using the Snips home assistant interface for doing something Alexa-like without the cloud. The quality of the output voice isn’t as slick as Alexa but it’s good enough.

Hot off the printer

While I’ve been thinking about all this, the first draft print has finished. It’s very nearly identical to the hand-measured original lid only that inner insert seems to be slightly too wide for the bottle. The PLA plastic I’m using is more rigid or I’ve made that wall too thick; it will need a slight adjustment and another test fit before I advance to the next step. It lacks subtle details that aren’t actually necessary on the original lid like central spokes and outer ribs.

FirstVersion

I’ll tweak the design and reprint it. And I guess I have to wait for those RFID tags to arrive in the mail before the next phase of this.

recycle, re-use, re-purpose – part ii

Continuing with the work to re-purpose a computer mouse as a filament movement detection device, I designed and printed some parts for this. The bottom part is perhaps 5mm in height from the spool itself and is reasonably a good distance to see changes.

I’ve edited the earlier Python script which originally detected the scroll wheel button; it’s now detecting movements of Y as if the mouse were being moved on a mousepad. It will only do this if I take the white assembly and move it around on a patterned surface, however.

To help the mouse detect movement better, I’ve tried using both grid paper and a polar version of same. I don’t love the feedback loop that’s going now. I’m sure there’s a better way to get this movement detected all the time, though.

IMG_0115

IMG_0116

IMG_0118

recycle, re-use, re-purpose

This week’s project involves dealing with filament-delivery problems on my 3D printer. Out of the box, the filament runout detection never worked. Frankly, it was a terrible design to begin with from the manufacturer and I’m convinced that someone at the factory just turned off that behavior anyway.

As a result of this, I’ve lost a few print jobs over the last year. In only two cases, I simply ran out of filament for large parts. In all the remaining cases, a number of problems contributed to the loss of filament delivery to the printed part:

  1. simple end-of-roll loss of filament
  2. spool sticking to manufacturer’s poorly-designed spool holder
  3. cross-threading of the filament on the roll
  4. hot-spooling the filament at the factory which resulted in filament which sticks together
  5. filament like carbon fiber—infused which likes to stick to itself
  6. old filament which is now brittle and breaks as a result
  7. overall poor design of the spool (boxy) shape itself, resulting in cross-threading
  8. overall poor design of the filament delivery path itself, resulting in too much force needed to extrude
  9. filament thickness quality issues as combined with PTFE feed tubing, resulting in stuck filament in the tube
  10. too-flexible filament as combined with any of the conditions above, resulting in filament notching at the bowden gear
  11. z-offset too close to the bed, resulting in hotend jamming
  12. poor first-layer adhesion, leading to a build-up of filament and ultimate hotend jamming

Now granted, the bowden drive for this printer is one of the beefiest NEMA 17 style of stepper motors I’ve seen. And yet the number of filament delivery—related problems is just too high to continue to ignore. So I’ve decided to finally deal with the issue rather than working around it.

Ideas & inventions

Remove the stock holder, add bearings to its replacement

I designed, printed and assembled a very good dual-spool filament delivery system which worked much better than the stock filament holder. I sometimes still use it.

DSC_0062

Dual runout switches

Perhaps six months ago, I designed, printed, sourced parts for and assembled a very good dual-spool filament runout detection block to replace the stock part. I have yet to install it since I’m not in love with the idea of the filament path beginning at the table level. Time has taught me that the spools need to be higher than the printer for this to be optimal. As designed, though, it works in principle to detect loss of filament from both spools.

DSC_0211

And yet, this entire concept does not directly address the problems associated with cross-linked filament. It only addresses the loss of filament as seen in a switch.

Parabolic spool guides and re-purposed monitor stand

Additionally, I designed, printed and assembled parabolic spool guides to better deliver filament (especially for hot-spooled or otherwise sticky filaments like carbon fiber). This I combined with a designed/re-purposed dual-monitor stand to move the spools above the printer rather than below.

SpoolHolderOverhead

SpoolHolderWithBracket

Remove the temperature gradient

First-layer adhesion was aided by adding a foam enclosure/door and a temperature-monitoring Raspberry Pi 3B to the inside (opposite the internal webcam). The latter helps to heat up the print volume area, keeping things from 90-100 degrees Fahrenheit.

foam

Remove the PTFE tubing

Filament diameter inconsistencies resulted in filament getting stuck in the PTFE tubing. I now rarely route the filament through the tubing, having removed the awkward bottom-to-top filament delivery path from earlier.

And finally, a filament movement detection mechanism

This weeks work then revolves around fixing the underlying problem. The solution isn’t filament runout detection. The more accurate problem and better solution is actually loss of filament movement and its detection.

When I began to think of solutions, in my head I was adding black/white encoder rings to the sides of the spools themselves. I would need to add those to all spools of course. I’d also need to design something which reads those as ones and zeroes.

I decided that a roller/follower which is turned by the spool is also a solution. I then envisioned writing drivers and creating a small circuit board for all this so that it could talk to Raspbian, the operating system which OctoPrint runs on.

Mouse to the rescue

Finally, it hit me that a standard computer mouse does this naturally. The older style of ball mouse has a follower which detects when the ball is moving. Even the newer style of mice still have a scroll wheel which is covered in rubber and would do nicely. In my imagination, the first iteration of this had the filament trapped against that rubber wheel. In today’s version, the wheel merely comes in contact with the side of the spool itself for the win.

As a bonus, the computer mouse already has the serial communication and Linux driver built-in. It was trivial to write a small Python script to detect scrolling events.

no mice will be harmed … in the making of this gadget.

The mouse should fit nicely and without any modifications to a 3D-printed holder. The serial connection goes to the Raspberry Pi and is then detected in an OctoPrint plugin. During a print job the scrolling events will be monitored; any loss of scrolling over the sampling period will then pause the job and alert the operator with a sound event.

rat on computer mouse

file management for 3d printers

I use the software OctoPrint to control my 3D printer. It’s an excellent web service with a rich collection of methods in its REST API. The software was designed, coded and is maintained by Gina Häußge.

I’ve just created my first plugin for OctoPrint. It should allow those who need version control to pull their sliced files from a github repository as selected. The interface and concepts are simple enough: identify the repository and press the button to pull the latest from that repository.

settings

 

buttonfiles

Update:

My new plugin is now listed and published on plugins.octoprint.org. Yay, me.

plugins.octoprint.org

quadcopters and me

[Apologies for my infrequent posts here lately but this should explain why.]

On the day I purchased my 3D printer, I also bought a print-it-yourself quadcopter kit. It was technically a mistake on my part because the designs in the kit aren’t compatible at all with the 3D printer which was literally kiosk’d together and a mere foot from each other, suggesting otherwise. So the kit’s been sitting here for a full year now.

Rawr…!

I design things. I should be able to design a quadcopter myself. Having been a former software development contractor for the actual company which sells and distributes these kits I can say with 100% transparency: they have no evidence of one of these quadcopters ever successfully taking to the sky. It never worked as designed.

So I’m designing a radically-new quadcopter. I knew a few things about flying since I was in the Air Force once upon a time. It took a few iterations for the propeller mounts but that part is now perfected and the four printed/assembled.

Next up, the enclosures for each propeller had to be created. I spent a fair amount of time on this stage and have the sixteen related parts all printed; they look great.

Sourcing Parts

I may need to source and replace the underlying controller board which would normally go into the copter itself. I note that the “new” part in my kit shows signs of having four strands of LEDs soldered, then summarily clipped off at the board. This is not a new part at all. Initial testing shows me that it doesn’t respond to the remote. I must assume that the vendor who sourced the parts to the aforementioned company just packaged in used/refurbished materials. They must have assumed that nobody would be the wiser.

I note that the “new” part in my kit shows signs of having four strands of LEDs soldered, then summarily clipped off at the board. This is not a new part at all.

Step by Step…

All in all, it’s coming along well. It’s a sexy beast and I’ve got things modular enough to be able to tweak it later when the need arises.

Sorry that there are no pictures but I’m in stealth mode on this one.

a level playing field

I still haven’t chucked the original Robo C2’s plastic print bed. You’d have thought that I’d changed that out by now since an uneven print bed is a recipe for poor adhesion. But I did just make a very good upgrade and still stayed with that stock part: manual leveling in each of the corners.

IMG_0063

For this upgrade, there’s more than meets the eye. There are actually 36 new parts here on this one. At least you can see two of them from this first photo.

IMG_0062

I designed/printed the two blue pieces (per corner) and other than the aluminum hex bolt, the rest came from Ace Hardware. I made all the springs by cutting down a longer one of the correct diameter.

IMG_0059

Both sides include a spring to keep everything tight. The acorn nut is stainless steel so that it can attach to the stock print bed’s magnets. Tolerances are exacting since there’s a mere 8.6mm space below the platform before hitting the chassis itself and the z end-stop adjustment is impossible on this printer.

IMG_0056

I’ve just combined this upgrade with a new Manual Bed Leveling plugin by jneilliii, for the win. Having just manually leveled, followed by the printer’s standard IR-based auto-level routine, it’s now much better than before. Fortunately, today’s upgrade doesn’t get in the way of the Cantilever Stability Upgrade from before. They both coexist in the same space.

I designed a test part to fill the printer’s available space and when it started, was able to tweak the settings again for perfect adhesion of that critical first layer. Normally, I’d accept poor quality of a raft’s first layer as just part of this printer. But it’s behaving now and I’m glad I put the work into it.

Screen Shot 2018-07-16 at 3.14.41 PM

and one button to rule them all

The project from yesterday and today is something called a “dash button”, an IFTTT or an IoT button. Push the button and some activity gets invoked (usually, remotely). Amazon’s take on this is for you to be a consumer, press the button and something gets ordered.

dash

My own take on this is to add a big red button (BRB) as a remote panic switch for the 3D printer. Press it, magic happens and the print job is paused. It’s useful when something bad starts to happen and you need to make it stop quickly.

IMG_0034

There’s not a lot of room inside the printed plastic for this. Whatever electronics it uses, it will need to be small enough to be self-contained.

IMG_0049

I’m currently accomplishing this with a nifty Adafruit Huzzah ESP8266 board, a charging module and a 3.7V battery. I’m using the Arduino software to “flash” (upload) code to the tiny processor as well as a full directory of files to support the webserver which runs when it’s in configuration mode.

By strapping a pair of header pin connections and pushing the reset button, it now boots up in wi-fi hotspot mode and serves up a configuration website. Submitting to the form then re-configures the device and resets it again.

Booting up now in the standard mode, it then connects to the local wi-fi and attempts to then connect to the URL that you’ve given it. Once it does all this (perhaps ten seconds’  worth of activity), it promptly goes to sleep. Press the BRB again, it wakes up and goes through its routine again.

If you think about it, it’s now a reconfigurable dash button and much more useful than those one-trick-ponies as provided by Amazon.

Repository

adafruit 2.8″ capacitive tft screen

Today’s review is on the small TFT touchscreen for the Raspberry Pi computer. At $45, it’s not the cheapest screen you could add onto a single-board computer but the capacitive touchscreen and the four accompanying tactile pushbuttons along the side make it worth the extra money, especially if you’re adding it to a 3D printer for the sake of control.

IMG_0042

TFT

IMG_0047

Installation

As usual, the Adafruit documentation was more than adequate to get this done. They provide an installation script which makes the process easy.

Observations

The touchscreen works wonderfully, much better than the typical/cheaper resistive TFT that we’re most familiar with.

I’ll need to determine which GPIO pins those four pushbuttons go to. It will be nice to use those in some sort of interface.

I reviewed both the OctoPrint-TFT and TouchUI interfaces for OctoPrint on this. I’m not convinced that either are a perfect fit, given the size of the screen. Both required the Desktop to be installed on Raspbian. In the case of TouchUI, it required the use of a local browser on the Pi (Chromium) but I was able to get this to go into the full screen mode.

Other than as a control interface for a 3D printer, I’m not quite sure what projects would be a good fit for this. The timelapse rail kit would be good for this setup, perhaps. It’s a little bulky for a cryptocurrency cold wallet. It would probably make a good streaming music player, given the positioning of those buttons.

Adafruit makes some very attractive enclosures for this, unfortunately they’re out of stock at the moment.

  • Size: 2.8″ (board matches form factor of Raspberry Pi 3B)
  • Screen dimensions: 50mm x 69mm
  • PCB dimensions: 56mm x 85mm
  • Brand: Adafruit
  • Model: 2423
  • Name: PiTFT Plus 320×240 2.8″ TFT + Capacitive Touchscreen
  • Cost: $45
  • Resolution: 320×240
  • Touchscreen type: capacitive
  • Feature: extra 40-pin header underneath board
  • Feature: four tactile pushbuttons