Skip to content

Posts from the ‘Software’ Category

17
Dec

Slic3r, Mercy Me

I’d seriously love to say that every 3D print I do comes out absolutely perfect. The actual truth is that some come out superb, and some come out sub-perb…

Which, as you might imagine teases me into holding my nose and diving into the 3D printing pool. Again.

A few days ago, while working on some modifications to the Marlin firmware that I’m currently testing, my 3D Benchy test prints were printing a little different. Specifically I had some gaps in the outside perimeter wall.

Ah…something new in the firmware to contend with.

Except, in this case, it wasn’t the firmware. Took me about 30 seconds to figure out but the give away is that the firmware controls the printer. It doesn’t tell the printer where to go and drool filament all by itself, the GCODE file does that. The firmware merely does what it’s told to do.

This is akin to writing computer software. For example, a software program will tell the CPU what to do. This can be completely different than what you want it to do. Thus two completely different things. Take a moment to emblazon that into your mind and you’ll be the better for it. Especially when you’re troubleshooting.

Slicers

There are any number of slicer programs for 3D printers currently on the market. Some are paid, free (as in open source) and proprietary. The only thing they share in common is they will slice an STL file into layers. Some will work better in some cases, some have better support abilities, and some will promote the early on set of baldness.

My poison is Slic3r that is being developed by PRUSA.

As of this writing they are up to 1.38.4 and with each release they manage to fix many bugs, add new features, and of course include the bugs they didn’t expect. The winner of course is the end user. If you’re travelling along this uncharted off road trail, the loser is also the end user.

When you’re slicing an STL, my strong suggestion is that you examine the layers, one at a time to preview any “problems” than might reward you with more recycle than cycle…

In Slic3r there is a LAYER tab. When you get a good design, it pays to just kind of glance through the layers to see what a good design looks like. Then when you print an example of “oh good grief”, you can look at it and compare the two…

Example

I’ll take the same Benchy STL, slice it in 1.34.1 and 1.38.4. I have exactly the same settings/option selected in both of the slicers.

The mind says they should be the same. Don’t listen to it…

First up, the slicer version 1.34.1 I normally use. Take a look at the outside wall of the boat. When you see a gap that big, that’s going to print exactly the same. With a big. Frigging. Gap. You might be able to fix it with an option, like “detect thin walls” or “ensure vertical shell thickness” or not. But if you don’t look at the layers, you’ll never know. Until it’s too late.

Slic3r1341 Benchy

Now we open the same STL, with the 1.38.4 version of Slicer and whoa. Something changed. Big time. Not only is the outside perimeter of the boat filled in, the honeycomb infill looks COMPLETELY different. And no, it’s not, it is the same 36% setting as the first one.

Slic3r1383 Benchy

The Ah Ha Moment. Not

Immediately I’m “assuming” that I should not use the older version because it messes up the walls. Keyword there? Assuming.

What you don’t see is that later on, the box behind the wheelhouse starts to get gaps in the wall for no apparent reason. So initially, it looked like the problem was “solved” when in reality it just moved someplace else.

And yes, every slicer I’ve used, between versions, will exhibit these odd, sometimes really odd, changes.

This confirms what I’ve found in working with the innards in Marlin. There are always trade-offs or compromises to be made. In Marlin this is particularly true with respect to Delta style printers because Marlin is trying to be the kitchen sink of 3D printer firmwares.

Summary

If your prints are coming out strange, or there is a design that isn’t working at all, don’t be too quick to blame the printer. It’s doing what the slicer told it to do.

This can be completely different what you expected (or wanted) it to do.

Trust me.

3
Jun

3D Printing Slicers

Having been down the somewhat unpaved road of 3D printer slicers over the past couple of years, I’m always on the look out for something that improves a 3D print without having to resort to sacrificing a spool of filament in an open fire pit on a full moon. At the stroke of midnight.

Let me preface this by stating I’m a delta printer guy. I’ve used cartesian’s but my go to printers are both Kossel styles. Built by me. So I know them well.

Slicing Software

There are those who seem to be able to make anything work, either right off because the software “works” like they do, or they stick with it long enough to learn all the nuances of it and master it.

I gave CURA a fair shake, kind of got it working, but while it felt pretty with it’s GUI, mining down to the settings I wanted to adjust with got annoying. I got the feeling it wasn’t designed for delta style printers in spite of the fact that many are using it on delta printers.

Venturing even further down the path, I bought Simplifry3D. Advertised as the be all and end all for slicing. Plug and play. Easy to use. Excellent documentation. Yeah, my experience dictates that would be four strikes against them. Make it five if you want to include the absolutely pathetic tech support.

Still, honestly, you have to try these things because what works fabulous for you may not work for others. Or vice versa.

After the roads I travelled down, it was nice to get back to Slic3r, even if there’s some pot holes in the road that need fixing. Or as someone said, “Better the devil you know than the one you don’t”. Thus I kept going back to Slic3r.

Slic3r

Slic3r hasn’t changed from the 1.2.9 version since June 2015. In software lifespans, two years is an eon. Mind you it is open source so you take what comes.

Slic3r is working on a 1.3.0 version and I suspect in time it will appear since they are pouring a lot of hours into it.

PRUSA Slic3r

Last year PRUSA forked Slic3r with the intention of making it work better with their own brand of printers. This got my attention since the work that PRUSA stated they’d be doing would be fixing up the various parts of Slic3r before adding in all their own bells and whistles to better suit their own printers.

With every release PRUSA has done, I’ve downloaded and run to see how it works with my Kossels. I’d be the first to admit this is not exactly what I would ever advise anyone to do. Me, I’m curious. Just a darn good thing I’m not a cat.

Some of the releases were, ah, how to put it, scary. The print head moving like a spasmodic hummingbird, or moving at the speed of the next ice age. Oh yeah, some issues for sure.

However, over time, each release got a little bit better. I’d check the forums to see what others would experiencing and see that would relate to anything I’d be doing and in most cases, nope. Delta printers are different.

Since the first week in April I’ve been using PRUSA’s 1.34.1 version exclusively. The quality that I am getting out it exceeds what I can get out of the 1.2.9 version of Slic3r. Admittedly some of the settings in the PRUSA version are different than the settings I used in Slic3r.

First off, the download link for the PRUSA 1.34.1 version.

Next the simple settings changes are in 3 areas, assuming you’re using the Expert settings in Slic3r like I am…

Preferences

Preferences

The USB serial connection is if you want to print from Slic3r via USB. I haven’t tried it, no idea if it works or not. I use Octoprint so everything is wireless here.

Layers

The only settings I needed to change here is in the “Quality” section. Specifically the “Avoid Crossing Perimeters”. Thin wall works sometimes, not others, much the same as vertical wall thickness. Normally I leave them unchecked and I’ll check the Plater–>Layers view to see how things look, maybe toggle them on or off and recheck.

A very nice edition is the SEAM position. If you want the seam hidden at the back of the print, just select REAR for the seam and it’s done. Works very nicely.

PS 1 Layers

Infill

For the infill, again, the only change I made was where it says, “Only retract when crossing perimeters”. I have it checked.

The rest are merely the stock settings I used all the time in the 1.2.9 version of Slic3r.

PS 2 Infill

Summary

One thing I would suggest if you want to travel this road, save your PRUSA settings with a unique name so you know they are specifically for PRUSA version not the 1.2.9 version of Slic3r.

I started to name mine like PRUSA_50403…shorthand for 50 infill speed, 40 perimeter speed, .3 layer height. Works well.

PRUSA has since released two more revisions but the current one is working so well, I haven’t felt the urge to try either of them out. Like they say, you can’t fix it if it’s not broken. Then again, maybe I’m just not trying hard enough…

7
Apr

Octoprint WIFI Hotspot

Having extensively used both Astroprint and Octoprint, I’ve been using Octoprint for the last few months for the extra features it has. Like telling you how much space is left on the SD card, being able to send directly from Slic3r to the printer and so on.

Astroprint could do the same things since it’s really nothing more than a pull of Octoprint with a beautiful GUI and limited controls. However it’s also targeted at a completely different audience so…who knows.

Until today, one of the things that annoyed me about both of them is their inability to create a WiFi hotspot should their normal WiFi network be absent.

I tend to bring my printer to demo’s and the only way to connect it is via USB. Which works, kinda, but Repetier Host and Pronterface are somewhat dodgy on the Mac so there’s starts and stops in communication. Whereas connections with both Octoprint and Astroprint never miss a beat.

As I said, today that changed…

I found this complete step by step description of how to do it:

Painless Wi-Fi for OctoPrint

In short, you create a list of ALL the known WiFi spots that your printer might encounter in a special file. When Octoprint starts up it tries all of those links and if none of them are found, it then creates it’s own WiFi hotspot.

You do need to download a more recent stable image of Octoprint that is configured to use the special list of Wifi hotspots, but that’s not hard to do.

You connect to the printers hotspot, and talk to the printer with an IP address of 10.0.0.5 in your browser. It works perfect. The best thing is that it’s a password protected WiFi hotspot so just anyone can’t connect to your printer during demo’s and create havoc with it.

Kenneth gave credit to the original creator of method here. This information was available last May, but in all my Google searches I never found it.

I’ve since downloaded both pages and saved them as PDF’s.

Just a little nugget of info…certainly the individuals have my sincerest thanks!

10
Jul

ESP8266 Breakout Programming

Last year I sourced a bunch of ESP8266’s for programming but wasn’t excited about them enough until the Arduino IDE was expanded to support them. Then suddenly all of these inexpensive WiFi things became extremely versatile and useful.

This is the first one I started with, but of course I did some modifications to it. Like rip the battery box off and replace the battery wires with pins.

Esp8266 development board esp 12 er dp8266esp12

The result of the simple modifications was a voltage divider on the RX input because the USB to Serial adapter is tossing out 5V and the ESP8266 is a 3.3V denizen. Two resistors (1K and 2.2K) are used to do the job.

On the PCB’s, the terminals for RX and TX are labeled in reverse. In other words they tell you where the signal is supposed to go on the Serial adapter, not what’s coming out of the 8266.

The second mod was a NC push button on the Vcc line. The 8266 board has its own 5 to 3.3v regulator but in order to program it from the Arduino you need to put it into flash mode in a specific way. If you omit the normally closed push button, just disconnect Vcc at the pin.

ESP8266 Connections

Programming Step 1 – disconnect Vcc at the breakout. Place the jumper on the two pins on the bottom of the breakout.

ESP8266 Step1

Programming Step 2 – Connect Vcc to breakout board. Remove the yellow jumper from the PCB.

Esp8266 Step2

The ESP8266 breakout is now really for you to program it.

Programming Step 3 – in the Arduino IDE the setting for the breakout is the Adafruit Huzzah one. The port will be whatever USB to Serial board you have plugged in.

ESP8266 BreakOut Programming

And that’s it. Open an ESP8266 sketch, compile it and you’ll see the little blue LED on the ESP8266 flashing away like crazy. When it’s done the ESP8266 will automatically start running the code you sent it. It doesn’t reset when you connect the serial monitor to it like the Arduino’s do.

If you have the same breakout board, here’s a sample sketch for you to send to the board. It will sort of simulate the old Knight Rider bar graph and if you cover the photo cell it will change the speed of the cycle.

Knight_Rider

3
Jun

Simplify3D – Delta Printer

Having logged over 1700 printing hours on my delta’s means that I have more than just a passing glance and familiarity with the operation, firmware and supporting software.

Having said that, I’m always on the watch for something that works better than what I currently have/use. Be it a firmware, mechanical part modification, or support software upgrade. It was with that in mind that I decided to try Simplify3D. Since there is no “trial” version, the only way to get it is to pony up the $149USD and buy it. Which I did.

The whole premise being that whatever GCODE Simplify3D spit out would be vastly superior to anything from Cura, Kiss Slicer or Slic3r. I know Slic3r extremely well so this sort of advertising statement should not be taken lightly.

Keeping all this mind, this is my opinion of the software, from strictly a delta printer users point of view. Cartesian printers could be a completely different kettle of fishes. I don’t know, I only own delta’s.

Buying and Installation

Once you PayPal the rather princely sum for the software, you’re given a link to download the software and you set up a cloud account with Simplify3D. Mainly for updates as I read it so you don’t need a full time connection to the net to use the software. I did need a connection initially to get the software registered so I could use it.

All in all, straight forward and painless.

Setup

When you first run the software you’re given a choice of printer profiles to choose from. And it’s NOT a small list by any stretch. At least until you start to count the Deltas in the list. Then the list is very small indeed.

To put this in perspective, one needs to remember that delta printers are not the printer of choice. The last “stat” I saw was that delta printers were the #1 choice for a kit and satisfaction but still only occupied less than 20% of the total printer market. In Simpilify3D’s printer support list, this is reflected.

Simplify3D’s software, which I’ll refer to as S3D after this, when running sort of resembles a mash up between a typical slicer and something Autodesk would do for a UI.

Simlify3D UI

S3D refers to your printer settings, which is actually more than just printer settings, as processes. You know, maybe because they didn’t know how to spell profile. Or processes sounded more impressive. The quick start guide implies that you can even select multiple “processes” when you slice. The quick start guide also completely ignores telling you just what might happen should you do this.

The model list is merely the bunch of STL files you are going to print. But yeah, models sounds more impressive than “objects” or “Tessellation”…

The toolbar is S3D’s nod to Autodesk.

S3D’s whole claim to fame is based on the processes as noted, and this is the first red flag that went up in my mind. I have custom built delta’s, not a Kossel MINI, Kossel MAX, or Rostock.

I selected some of the “prebuilt” processes for the delta’s and it was pretty obvious from the get go, those were token gestures at best and if something was actually printed it was more good luck than anything else. None the less, I did try printing with the various processes. I have the failed prints to show for it.

Custom Process

About 4 hours into seeing what S3D could and couldn’t do, and I decided the only way to make it do something is start and create a custom process (profile). Five hours later I was still working and testing. Because I’m slow? Nah, because the documentation that explains all the settings is so poorly written that it’s two points below a joke.

And there are TAB’s of settings, more so than Slic3r. And not exactly arranged in any logical manner. Plus some programmer decided that numbers were evil so you need to enter “percentages”, like for the first layer start height. Want it to start at .34mm, enter in 113%. Like that’s intuitive.

In the Preferences you can change the mm/m to mm/s and spend a lot of time trying to figure out where Slic3r settings might fit into the S3D settings. Because, there’s no import or conversion from a Slic3r configuration to S3D. Big oversight there to my programmers mind.

Even using the built in processes, when the print job was done the head didn’t home. It just sat on the print. And oozed. I have no idea why all the delta processes would ever want to do that.

Eventually I threw up my hands in surrender. 11 hours of trying to get a decent print and no soap. I emailed the S3D folks and asked for a refund.

Tech Support

I didn’t get a refund, what I got was a reply email that asked me what printer/kit I had and that they would create a “process” custom designed for my printer. All I had to do was provide them with my Slic3r config file and they’d transpose it for me. I sent them links to my delta’s specs and Slic3R config and within the day I had a profile back. They said that they have built a number of deltas and were familiar with them so

Sorry guys, but after looking at your “process” attempt I have to call BS on it. Anyone who owns a delta with a bowden tube knows that retraction is extremely important. The process I was provided gave a 1mm retraction at 30 mm/s. Bowdens want 3-5mm of retraction and 60-80mm/s.

Extrusion is set at .9 by default. Which made no sense at all. Extrusion width at .4 and on and on the goofy settings went. I seriously wonder if they even looked at the Slic3r config file.

Oddly, no one who responds to you via email from S3D tech signs their email so, I’m just going to call him, Blobby. Because that’s what the prints looked like. So Blobby, you get a fail. Time to work on your resume.

A Spaghetti Western

This is what S3D reminds me of.

The Good: opens any STL, repairs where need be, easy positioning. Slices any model in under a second. Creates GCODE files in seconds. Nicely done.

The Bad: stupid settings that should be numbers not percentages, lousy user manual, poor delta support.

The Ugly: Every print made from the generated GCODE.

In spite of the fact I set 3 perimeters for a prime, S3D decided, on its own, that I only needed two. And if you think Slic3r has sporadic moves, S3D is like a deranged hummingbird.

You can see from the first layer, the infill doesn’t meet the outline (and I have the overlap set to 34%), I’m using the “Blobby” process, and it’s going to be a fail from the start.

Outline Fail First Layer Fail

Looking at the finished print with the tech designed process:

First Layer Fail

Yeah on the top is the primed perimeter that is still attached to the main body of the print. Retraction is a big issue, and yes, that’s an easy fix. Less easy to fix is the fact that the infill doesn’t hit the outline. And this is caused by either under extruding, or a speed that’s too fast.

Of course when the extrusion defaults to .9, yes, then that could be a possibility. Dumb. Da. Dumb. Dumb.

For the speed, it’s interesting to see that outlines are variable speed. The inner most outline is done wiki wiki. When S3D gets to the outer most it slows down to what is in the “process” setting. I saw no way to get it to do all the outlines at the same speed.

S3D also fails miserably on bridging. Look at the top and you’ll see the infill doesn’t work. It doesn’t touch the outlines. So you have to print a couple of layers to get it to bind.

Bridging Fail

Blobby retraction settings are abysmal. 1mm at 30mm/s is pathetic. The gold one is a Blobby setting, the red one is from Slic3r with my settings. Notice the head is attached to the fin. That’d be wrong.

Clear Slic3r Superior

Finally Refunded

After three days hounding them I finally got a refund. So to their credit, they stand behind their “if you aren’t happy within two weeks we’ll refund your purchase.” promise.

I’ve uninstalled the software, tossed it in the trash. I miss it about as much as a root canal.

My Thoughts

So, exactly who or what market is S3D aimed at? One look at their web site and this graphic should give you all the info you need to answer that question.

S3D Printers

Yep. Main stream Cartesian printers that, should they become any more plentiful, we’ll have to develop a spaying program for. For the delta crowd and out of the box thinkers, nah, not so much.

If you’ve spent time and learned the nuances of Slic3r and tweaked it (which really isn’t that hard either), I saw that S3D had one advantage in that it allowed you to place custom supports where you want them. You know, if you don’t want to run MeshMixer and do the same thing.

Granted S3D did slice anything I threw at it in a heart beat, but none of the GCODE it created resulted in a useful print. Which kind of negates the slicing speed.

Essentially the way it’s marketed it’s for the plug and play end user, who is so fed up or frustrated with other slicers that just about anything short of a Craigs List ad for their printer would be an improvement.

20131008 004953

Now I’m sure you’ve all seen a lot of examples of failed prints, and for me, I have a fair number of my own that I can contribute as well. But even with the simple mode set in Slic3r I was getting better results than anything S3D was able to generate.

Lastly the CNC tool paths aren’t optimized in S3D. It looks like it’s playing “Whack A Mole” on your design because it’s all over the place. More so than Slic3r and that really surprised me. If you ever want to see what an infill should fill like, head over to ANY tee shirt shop where they print custom crests/logos and watch an embroidery head lay down stitches. The software avoids filling back on itself, jumps (called jump stitches) are kept to a bare minimum because they have to be manually cut out when the design is done. And yes, embroidery designs are multi-layer. You lay thread on top of thread in many places.

My dream is that someday a programming in the 3D print world will be able to replicate what’s been going on in the embroidery industry for a couple of decades when it comes to optimization and fills. Until then, we will just do the best we can with what we have. For Delta printers, S3D sure makes Slic3r look great.

30
Dec

Octoprint, Astroprint and Wireless – Oh My!

One of the not so nice things about owning a 3D printer is the fact that it’s tethered to your computer. With a USB cable. Probably a short one. And if your computer goes south as you’re working on it at the same time as you’re doing a print job, well, it does tend to expand ones vocabulary.

In some cases a tethered 3D printer means you need to clean your stuff off the table so dinner can have a place to be served. Providing your have an understanding spouse. Who wishes you had a faster printer. And to save you the time, no, this will not work as a ploy so you can BUY a faster 3D printer. Nice try sparky. Don’t ask me how I know this.

According to the USB 2.0 specifications the cable length can be 6ft 7in to 16ft 5in.

My experience with cables is that unless the cable is well made, i.e. properly shielded and decent sized wire inside, you want to stay with shorter cables. But, I’ve seen a 10 foot cable with a USB extension cable jammed together to make a 20 footer plus in some cases. Followed by a question of why the printer “seems” to have an issue printing. Hint, it’s not speed, it’s noise and signal degradation.

I see a lot of long USB cables that would serve better as jump ropes than for reliable data transmission.

If your printer setup is in that particular kettle of sardines and you need a longer cable, do yourself a little favour and look for an ACIVE USB cable. I have a 20ft active cable that works just peachy.

Of course the dream of many is to get the printer released from the computer altogether. As in wireless. And that’s the gist of this article.

When I started down this rather 4×4 rocky road, I had a great a mythical vision and a tankful of dumb. A dangerous combination to be sure but since when did that ever deter anyone?

I started by looking at the problem. Wireless. I have lots of plain RF and RF UART modules. We’re talking short range for the most part. Should be a snap. The Arduino MEGA in the Kossel has spare serial ports so I could shoe horn into the USB port one (TX0/RX0) or I could use some of the unused pins on the MEGA for raw RF.

I modified the Marlin software and stuck these in.

433Mhz

Insert first rude awakening here. The modules I used are one way only. Turns out that the software in Marlin sends an OK after it processes each line of G-Code. When the host that’s sending the GCode doesn’t get the OK, it waits. You know, like forever. While I was burning some of the dumb from my tank, I also found that these things can manage 4KB per second.

To put that speed in perspective think dial up modem speeds. From about 1982. Good. Got that out there.

The Kossel wants 250,000 baud. Time to look for something that will do that. Next up, I tried Bluetooth (HC-05) and I actually got the thing working. Course there was no way in the real world it was going to work at 250K so I started to crank the speed down.

Two new problems reared their ugly behinds. The first is when you get a speed that the Kossel will run at, you find that there’s a delay in the transmission rate in Bluetooth. So you send GCode, the MEGA immediately (it seems like it anyway), sends back OK. The HC-05 does not like to be pestered this fast. Better for slow speed mice and keyboards. Secondly, there’s a buffer in the HC-05 of 20 bytes.

Rude awakening number 2. But I’m on a roll and really burning through the dumb fuel now!

To make this short, after trying numerous other RF “things” I came to the conclusion it is like the engineering triangle. You have cheap, fast, reliable. Pick any two.

Abandoning RF, I decided to tackle a 3D print server idea. Repetier has host software that you can run on a computer that is connected to your 3D printer but it means you are tossing a full desktop/laptop computer at the problem. Fail.

Which led me to the Raspberry pi.

An all in one Linux based SBC (single board computer). Dreamt up by some guys in the UK as a solution to a problem that they seen. I mean all you have to do is connect up a keyboard, monitor, power supply, and a powered USB hub. Heck, a second hand computer has to be in the same ballpark for cost and a heck of a lot more friendly than Linux/Python and Scratch. It’s like “instant water!”, just add water, stir and you’ll have….wait for it…water.

I picked up a Rasp pi B+ Model 1. I didn’t even know there was a model 2 with double the ram and faster speed.

Try to imagine what happened when I put Octoprint on the lowly pi and watch it stutter PLA. Now apparently this combination works for some, but at the same time trolling through the various forums it certainly doesn’t work for a lot of people. I am one of those.

Jason, one of our fellow FVMakers, was kind enough to loan me a Model 2 Rasp pi to try out. Stuck Octoprint on it and was printing in a matter of minutes. Admission, Linux is for nerds, I am a nerd.

See, at this point, I was down to less than half a tank of dumb. Things were indeed looking rosy. Ah ha. I thought I had the solution. Nah, just setting myself up for the next head banging session.

I ordered a couple of Rasp pi’s MODEL 2’s from Adafruit, along with various Wifi adapters.

Then I got a WooToo powered USB 3 hub from Amazon so I could power everything. You read that correctly.

The pi runs off 5V input but cranks it down to 3.3V internally. The USB ports on the pi are severely underpowered and I’m told there is a fuse on the input to the pi that makes sure you don’t draw too much current via the USB ports. I don’t want to find out.

So how do you know you’re sucking too much power? Turns out the pi, if you plug it into an HDMI monitor and boot it up, will show a colour rainbow icon towards the top right of the monitor. I had a Wifi adapter, USB keyboard plus mouse and I was seeing this “blinkin'” icon during my tests.

The Raspberry pi only has 600ma of current available and that is shared for it’s four USB ports. So the design team on the pi made some rather goofy choices since USB standard is 500ma per port. But hey, it’s Linux. So hackable. You can modify the pi’s boot up config to give you 1.2A. Course at this point you just might need a fan. To cool the pi’s voltage converter because I don’t think it was ever designed to handle that amount of current.

Finally down to a reserve tank of dumb, I finally sat down and started to read specs. Because the internet is full of such accurate information.

If wireless 3D printing is your goal, here’s what I found works, reliably. And fast. Notice which one is missing? Good.

There are other Wifi adapters for the pi. I tried several different ones, all of them a LOT smaller than the Ourlink one. First thing I found was they drew more current and the range on them was pathetic. Great if your router is in the same room, not so good otherwise. And really, these dongles all cost about the same anyway.

The Kossel doesn’t plug into the PI’s USB ports. It goes into the powered hub. I found when I had the Wifi dongle and Kossel plugged into the pi, the LCD display on my Kossel would flicker. I don’t see this as a good sign.

Now that I finally had all the hardware, it was time to try out the software. First I tried Octoprint. Download it from a precompiled IMG (image), dumped it onto a microSD card and good to go.

Right. In an alternate reality.

See the catch is the microSD card. Although some SAY it will work on as little as a 4GB card, forget it. Get a 8GB card and make darn sure it’s a CLASS 10 card. The Rasp PI site says class 6 is a good trade off, but I found the class 10 cards work better than the class 6 cards do. The main difference is the class 6 card works slightly better when dealing with lots of small files. Whereas the class 10 handles larger reads and writes better. GCode files aren’t all that small…

Some class 10 cards also sport UHS-1 (3) as in ultra high speed. I had a lot of trouble with some of these cards and I can’t find any info from Rasp themselves that say they even support this higher speed card.

The next order is an SD card formatter. No, not the one that’s built in your computer. One from the SD manufacturers. And if your card supports it, use the option to optimize the card format.

Good the card is formatted. Now you need the downloads:

Octoprint
Read the text on the site, if you’re using Wifi you need to edit a file on the SD card after you write it.

or

Astroprint (astrobox)

Oh wait, how do you get those images on the SD card? Right you need more software…

For Windows – Win32DiskImager

For Mac users – ApplePIBaker

Essentially select the image, select the card, write. Make a coffee while it’s doing it.

If you wrote Octopi and you need Wifi you’ll need to edit a file on the card.

In my case the easiest one to get running is Astroprint. It starts up as an open access point, you connect it to, configure it to connect to your Wifi router, reboot it. Do a few settings, good to go.

Octopi, not so easy. Lots more settings, not mobile or tablet friendly. But there’s vids on setup works a lot like Repetier Host.

I’m not going to review the two packages, but I’ll tell you that Astroprint is a fork of Octoprint. The main difference is in three areas. Complexity, control, and features. If you want MAX control and feedback from your print job, Octoprint. Hands down. Octoprint will even do time lapse videos of your print job, not to mention realtime video streaming of your job (about 5 or 6 seconds lag).

If you want to send a GCODE file, start the printer, then go about doing something else. Astroprint. Hands down.

Both of them are easy to access via your LAN or WAN if you want to open up a tunnel in your router and use an access password. They use Apple’s Bonjour (zeroConfig, mDNS). This is built in every Mac out there, but you need to install it in Windows. If you use iTunes in Windows you probably have it already installed. Or you can download it directly here

Running your browser and typing in astro.local or octopi.local will bring up each servers control pages. So you can control the printer, upload files to the sd card to print, or directly to the SD card in the Kossel…well, Astroprint doesn’t always like the SD card in the Kossel so I don’t have one in mine.

It’ll take a few seconds to connect to the pi server, if you need it faster, I don’t know what you’d do to speed it up. If Octoprint is busy with a print job, I found I can make it stall for a split second when I connect. I have a hunch that because it’s streaming live video that sucks all the CPU power up from the pi.

Astroprint does no do live streaming but offers you the option of plugging in one of those old USB cameras like Logitech makes and selecting to do a still capture at that moment.

A popular feature of Octoprint is the time lapse photo ability. It takes a series of photo shots as your print is happening. These look great on YouTube when compiled into a video but beyond that I don’t really see much of a use for it. Plus the jpeg streaming that the pi does tends to tax it’s wee little processor. Even the PI 2. Enter overclocking for the PI. I don’t do it.

Using either server via a browser is simple, but Astroprint is far better designed for mobile browsers. Octoprint doesn’t have the same capability. Thus controlling your printer from a phone or tablet is easier with Astroprint.

One of the better reviews I found online for Octoprint vs Astroprint is this one. The thing to keep in mind that it’s more like an arms length review. There’s no lifting the hood to see what makes it tick, nor any real world tips or techniques. Or things to watch out for. I like to kick the tires on these things and see what rattles.

I ran each one for a month and put both through their paces. In my humble opinion neither one of them is perfect. Both have flaws in different areas. Therefore you have to examine each to figure out exactly what the most important parts are for you and then use that setup.

In addition I found that you really don’t want to leave them running 24/7. I have my PI 2 setup along with the Kossel on a power bar. When I want to print, I power them all up at the same time. Both Octoprint and Astroprint work more reliably for me that way. In not doing that, I found the Octoprint would lose it’s connection via USB to the Kossel, and Astroprint would screw up the controls if I cancelled a print job. REBOOT….:-)

There are still things I am trying to figure out, one is the amount of SD card space left when you send a design to print. Octoprint makes this easy, Astroprint I have no clue. It says nothing about available space that I have found.

Lastly, for whatever reason, printing from the computer via a USB cable is faster than having the PI with the servers to do it. It makes zero sense at all to me why this should be, but timing the same print job always takes less time coming from the computer. Just weird.

There are other 3D print servers that run on a PI as well but not free of cost. Like PrintToPeer. While the software appears to be open source, you need an account with PrintToPeer so need an internet connection where you send your STL file, they slice for you, then send it back to your printer for printing. Judging from the web site it looks to be aimed more at commercial applications than home users.

Setting aside the cost of whatever a PrintToPeer account is, connecting to the internet so I can control a LAN based 3D printer sitting 10 feet away me means they must have found my empty dumb tank and possibly a few others and overfilled them for their own use. Words “self reliant” have been lost on these guys. I just don’t get it. But they aren’t the only ones doing this net/cloud based stuff for your local control. Honeywell and Accurite do as well. They should pay you for doing their market research.

Hopefully you got something from all this info, because I’ll tell you straight out that the water’s pretty murky when it comes to print servers. There’s a lot of time when you feel like your row boat only has one oar. Hence when you see the caption that says, “Untether your 3D printer for $35”, you want to do a oar count.

28
Dec

3D Benchy – Netfabb – Printer Torture Test

Apart from replacing a nozzle on my Kossel, recalibrating it, testing PETG (which is weird stuff) and doing a LOT of PLA printing, I’ve also been testing wireless printer control options. Specially AstroPrint and OctoPrint. But I’ll leave those for another day.

Today, it’s once again, Benchy time. Benchy, for those who have never heard of it, is a 3D printers worst nightmare. It’s small, complex and shows any weak areas in your printer setup/calibration in a heartbeat. Frustratingly so.

I printed one, ages ago when I was cutting my teeth learning the in’s and out’s of 3D printing. It printed, but it wasn’t nice. It’s out at the FVMaker space if you want to see it. Take a look at the photo and you can see the bow has some areas where the PLA shrank and you can see the bridging is a mess.

IMG 0366

Keep in mind I’d done a lot of 3D printing up to the point when I first printed the 3DBenchy. So I assumed that the print would be a walk in the park. Nope. More like a stumble in the dark.

First thing I found was Slic3r didn’t like it. For some reason I couldn’t fathom, other than Slic3r, like most open source software, isn’t perfect and makes its own limitations fairly obvious. Secondly it showed me that there is a direct correlation between printing speed, PLA brand and PLA temp. Every printer I have looked at will get to some point where it does the best job it can given its current settings. Go above or below those and quality becomes an issue. My Kossel is no exception.

At the time I thought I could slow the print down because laying hot PLA over hot PLA was part of the problem. So that was about as wrong as one can get. What you really need is cooling somehow. My Kossel kit like everyone else’s has no provision for cooling. Thus, on small quick prints you are doomed before you even start.

Second, but only slightly less important is the PLA brand I print with. Some brands flow fabulous. And some don’t. You need to find the temp they work well at and remember it. Some brands will print and flow well, but tend to ooze every time you get near a border jump. Strings are the indicator. Thus the secret is, which is not brain surgery, find a brand you want to stay with and tweak the daylights out of it for your printer.

I’ve done numerous software (Marlin) tweaks for accuracy and trust me, you can tweak Marlin until you’re blue in the brain and it still won’t be perfect. For example, tweak the Z setting, it will affect the X, and Y. And vice versa. It would be super nice if there was a way where it could tweak itself sort of like a marble in a funnel concept so it would be 100% accurate. But it’s a delta printer, pendulum swinging plastic squirter. Be happy if you get close to accurate.

Anyway, back to Benchy. I’d just replaced the nozzle in my Kossel. No, I didn’t wear it out, the PLA broke off inside the printer head and I had to take the whole thing apart to get it out, just as easy to replace the nozzle. I spent a little more time than usual re-calibrating the printer to get dimensional accuracy. So when 3DBenchy appeared on Thingiverse, I thought what the heck. I’ll try it. Again.

Just checking on Thingiverse, 386 people have printed the little brute out. Wander through some of the prints made and you’ll see some good, not so good and prints (where the person is pretty happy) but it’s a good thing that plastic floats because Benchy wouldn’t hold out the water.

Screen Shot 2015 12 28 at 10 47 48 AM

Or:

Screen Shot 2015 12 28 at 10 48 54 AM

Or:

Screen Shot 2015 12 28 at 10 52 11 AM

Only this time, I changed one thing. I added a fan. No, not on the print head, a big 100mm fan off to the side of the bow so it was blowing right down the bow line of the boat.

IMG 0866

And then I just let the chips fall where they may… for printer settings… this is what was suggested:

  • Scale: 1:1 (unmodified in size, from bow to stern #3DBenchy.stl measures 60.00 mm).
  • Layer height: 0.2 mm
  • Infill: 10%
  • Print speed (extrusion): up to 50 mm/s
  • Print speed (travel): up to 150 mm/s
  • Print nozzle diameter: 0.4 mm

The Benchy web site gives you the dimensions that your finished print should be. Pull out your digital micrometer and prepare to drive yourself nuts. If you’re so inclined…

My only variations were that I set the infill to 25%. It’s my default infill I just left it. The speed I left to what I normally use for print jobs. I didn’t slow it down or speed it up.

I first tried slicing the 3DBenchy.stl file in the download but Slic3r had some issues with it. Like 3,000 errors that were “fixed”. I never understood what this error was so I figured it was time to figure it out.

I have a group of friends who live in this 3D world and they said it’s that some of the triangles in the objects overlap. Slic3r has trouble dealing with that so it tries to repair them. They also strongly suggested that if that happens, don’t let Slic3r fix them, use a piece of software called NetFabb to do it.

So….. off to find Netfabb. I downloaded the BASIC version. Ran it, did some registration that was required and then opened the Benchy file. It takes about 5 mouse clicks to fix an object:

1. Click on the + icon.

Screen Shot 2015 12 28 at 4 42 10 PM

2. You’ll see some results show up in the dialog, some in RED. Click the UPDATE button to fix those.

Screen Shot 2015 12 28 at 4 42 29 PM

3. You should now see 1 shell as you see below. If you see more than 1, well, don’t use the file…

Screen Shot 2015 12 28 at 4 42 41 PM

4. At the bottom right corner, you’ll see an Apply Repair button (skip the auto repair button). Click it:

Screen Shot 2015 12 28 at 4 42 50 PM

5. A new dialog will appear asking you what to do with the old design. Toss it:

Screen Shot 2015 12 28 at 4 42 59 PM

6. In the “parts” list right click on the “part” and a submenu will appear. Select Export as STL.

Screen Shot 2015 12 28 at 4 43 19 PM

Netfabb will use the same name as the file you loaded but will add (repaired) to the name. I see this as a good thing. Oh, Netfabb might also pop up one more dialog to ask about the “accuracy”, just click the okay button to have it fix that too. Usually only happens on some STL files.

Open this new repaired file in Slic3r or whatever you use for slicing and there should be no repair error messages generated.

I have used Netfabb now a number of times to fix Thingiverse files or files that I have modified that give the slicers fits. The basic version has worked perfectly every time on those troublesome STL’s.

Here’s the old Benchy (hard to see the mess of the bow):

IMG 0365

And the new Benchy with the fan running:

IMG 0870

While they might appear similar in the photos, when you physically look at them in your hand, it’s day and night.

So there you go. Small prints benefit from cooling. You don’t always need to mount some uber fan on the print head, and NetFabb can be your best friend.

4
Nov

IoT – ESP8266

IoT or Internet of Things has been gaining momentum for a while now. The first I’d heard of it was last year when I was introduced to a Spark Photon. A 3.3v Wifi enabled controller with some I/O and a cloud based programming software solution.

My initial reaction was disappointment. First off, 3.3V, my world revolves around 5.0. A new “language” or “script” to learn and being tied to a cloud for developing for it. So with three strikes against it, it wasn’t something that I was getting any warm fuzzies from. Another solution looking for a problem to solve.

Then along came the Photon, Spark Core and a plethora of Wifi things for Arduino (well, micro controllers in general). The Wifi things caught my eye since most could be a access point or client. I think I ordered almost every variety of them that came out.

Thus everything from the USR-232_WIFI, CC3000’s to ESP8266-01. They all shared pretty much the same communication route. That being of Hayes modem AT style commands. Yeah, Hayes. From the early 1980’s. I got the feeling we’d come full circle on that dog and pony show. Ugh.

However the ESP8266 was so economical that guys would devise all kinds of circuitry to restart them to maintain connections, or spend hours to make them more reliable. Finally adding a LUA interpreter because reliable the early ones weren’t. But they were cheap. You just knew folks would keep hammering at them.

As it turns out the ESP8266 is a fairly powerful micro controller with WiFi capability. So from the first sign of it in August 2014 until now, there’s been a LOT of people beating this thing into submission. For them, my hats off to you because we are now at a point where I can actually use them without spending time and energy debugging them.

So what’s the specs on the 8266?

  • 32-bit RISC CPU: Tensilica Xtensa LX106 running at 80 MHz
  • 64 KiB of instruction RAM, 96 KiB of data RAM
  • External QSPI flash – 512 KiB to 4 MiB
  • IEEE 802.11 b/g/n Wi-Fi
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • WEP or WPA/WPA2 authentication, or open networks
  • 16 GPIO pins
  • SPI, I²C,
  • I²S interfaces with DMA (sharing pins with GPIO)
  • UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2
  • 1 10-bit ADC

There are two devKits 0.9 and 1.0 that make connection and programming MUCH easier! Starting with version 1.6.4 of the Arduino IDE you have the ESP8266 core libraries built in. You program the 8266 just like it was an Arduino, even the blink sketches.

GitHub has instructions and information…really once the IDE boards manager has installed the ESP8266 and its variants, using it is pretty simple.

I’ve built a couple of projects now where at one time I’d have an Arduino, ethernet board, Wifi dongle just to get WiFi. Now I do the whole thing with the single devKit 0.9 or 1.0.

I’ve connected LCD’s, DHT sensors, RTC’s, switches, and even NeoPixels. All work flawless. If there’s one area that you can get caught with, it’s that it’s still a 3.3V chip and jamming it with 5V signals is not good if you want longevity from the board. Use a level shifter or voltage divider if need be.

In closing, now that I have used the ESP8266 12 and 12E devKits, I can’t imagine using Wifi any other way. I feel we finally have a product that’s worth of the tag, IoT.

19
Sep

3D Design

Discovery. It’s a fun thing. Sometimes rather eye opening as well.

As a long time Mac user; since 1985 if anyone really wants to know, I’ve watched as the Apple OS matured, bloated, got better, changed directions, and fell off the tracks more than once in all those years. They aren’t perfect by a long shot, after all authoring a complete OS with all the supporting apps is more that a few lines of code to get right.

However having said that probably the number one usage of any computer is a web browser and email. Thus those would be the areas where if you’re going to make a difference and show off what you can do, that’d be it. To the point there’d be no use anyone developing anything similar.

Sadly, Apple is a ball dropper when it comes to both of those. Safari and Mail are the weakest “links” in their software app chains. Both run like an under inflated tire on the 30 year old family sedan. However just like that tire, they’ll get you there, but it’s not a warm and fuzzy experience.

Now the precursor to all of this was that I was designing in 3D for the Kossel. While I could use a native app, it was actually easier to use Tinkercad. A free online service for designing 3D widgets…so to speak. Open an account, design, download STL, slice, print, repeat….

Tinkercad runs in a web browser and uses, what else, WebGL. As do a lot of online web game engines. You’d think Apple would be on top of this since they seem to be more in the entertainment field than useful tool arena, but, nope. Turns out a 3rd party browser blows their doors off.

To illustrate the difference, I used a online service called Unity and their WebGL test online. In a browser, just like Tinkercad uses.

The computer in this case is an iMac, late 2014, 27 inch, i5 3.5GHZ, 8GB of memory. Here’s the results in Safari:

WegGL Safari

I have been using Safari with Tinkercad all the time and while I noticed a few hiccups, performance was still pretty respectable.

For fun I ran the same test with the latest Firefox:

WebGL Firefox

The numbers clearly indicate that Firefox is the browser of choice for Tinkercad, even if you never use it for anything else.

When I was using Firefox the whole design experience was buttery smooth.

But admittedly Safari did work. My thought then turned to my older MacBook Pro. A MID 2012, i5 2.5GHz, 13″, 4GB.

First off Safari:

WebGL Safari MBP

Then Firefox:

WebGL Firefox MBP

Ah yep. Safari on the 2012 MBP, Tinkercad was unusable. With Firefox, it was definitely usable.

Rather than just take my findings, here’s the link to the WebGL test I used at Unity. Run it in your own various browsers and see what performance differences you find. When you find the best, use that with Tinkercad.

Unity WebGL Test

I’ve never owned a Windows computer but perhaps there is differences there as well. Might be worth checking out too if you’ve found dodgy performance in Tinkercad.

1
Aug

OpenSCAD Bezels

One of the things that got me interested in 3D printing was the ability to make faceplates or bezels for some of the Arduino projects that I construct.

I’d found some LCD 2004 bezels on Thingiverse and while they did print out, I could see there was room for improvement.

Thus, I decided I needed to learn how to design my own stuff. I downloaded a number of 3D drawing programs that advertise as being intuitive. Perhaps I’ve been in a 2D world too long, or been a programmer for too many years. Whatever the case, I found none to which I would even remotely attach the word intuitive. More like “steep” learning curve. Steep as in the case of a cliff.

What I wanted was something where I dropped an object, clicked on it, entered all the measurements and carried on to the next object. Apparently CAD has never been done that way. Not exactly out of the box thinkers I’m assuming. Hence if you never grew up with that mindset, trying to wrestle control of it would be frustrating. Exactly what I experienced.

There are some commercial software packages, SolidWorks was one that was suggested. Still, it didn’t appear to work the way I wanted it to. The remaining free ones I tried and tossed just about as fast.

One of the members of the FVMakers, while listening to my 3D lament, suggested I try something called OpenSCAD. Essentially it’s a programming environment where you use shapes to build what you want to design. The catch is, you need to understand programming.

Fortunately for me, I do understand programming. So I downloaded and took a look at it. At first glance it didn’t look any more “friendly” than the other GUI 3D design programs. I was a little disappointed by this. It did obviously plant a seed though because some of it made some sense and stuck with me. Over the next couple of days (about 3 or 4 hours) I found some examples, looked at a fair bit of code and suddenly the light went on. Dang. It made some sense.

Honestly in a bit of a goofy way though. They way they do it is not exactly straight forward but once you get about half dozen of the commands figured out and how the union/difference works, you can use it.

I have a current project that uses some seven segment digits. Typical size…20 x 27mm x 10mm.

Seven Segment

With openSCAD you build the design more or less the way it prints. In layers, starting with the bottom first. In each layer you position and then combine or subtract or whatever with the previous layer (or object). The numbers you use are mm so making stuff to size is a piece of cake.

Plus OpenSCAD does math. You can resize, scale, well, pretty much whatever you want.

My first design was basically three objects (or layers if you like to think of it in simple terms). The face with smaller cut out, a second face with a different size cut out (full size of segments) and then a box to hold the digits.

I hard coded everything first, which means I had numbers every where. Not a good way to do it but I was learning.

The outcome was pretty exciting! Here’s the first one with a single digit in it. There’s a lip so the digit can’t fall out the face.

IMG 0304

I was pretty excited at this point but I could see all the stuff I did wrong. Those digits were SQUEAKY tight. The reason is the segments are square but the 3D print isn’t exactly a perfect square corner. There’s some gusseting going on. I could file it out so it wasn’t wasted.

The other issue was that I didn’t have the border around the digits quite right. Cause I’m learning. Time for version 2…

IMG 0305

And the back:

IMG 0306

I made the frame (cube) to hold the digits 1mm wider and .5mm taller and they fit easily. To hold them in a dab of silicon and that’s all you need.

Of course as a programmer, I started to mull over how I’d get the code to do more than 2 digits. Say I wanted, 4 or 6? What would I have to change. Maybe I could create different versions of the code for different digit counts.

That’s the point the programmer in me returned. Variables. Let the code calculate the size based on the digits. Yeah. As it turned out, pretty darn easy to do. For me. Probably not for non-programmers.

I re-did the code like so:

OpenScad Code

Whip out the digits and a digital micrometer, edit the values, render and presto:

OpenScad 3D View

Export as an STL file, slice it, print it and for four digit counts:

IMG 0307

And six digits:

IMG 0308

The openScad code follows. Next up, I plan designing some bezels for push buttons and some TFT displays.

And this, is exactly what I got the 3D printer for.

10
Jun

It’s a Sign – Parola

The Makerspace group that I’m involved with, Fraser Valley Makers, got to setup a booth this year at Vancouvers Mini Maker Faire on June 6 & 7. I was asked if I could lend them a few of my finished projects to display in their booth. And I happily obliged.

The group had made a rather large wooden sign advertising them at the faire but they remembered my matrix displays that I use when I build my scrolling clocks and asked if I could put a little sign together for them.

Any one who knows me, well, is aware that I don’t half do things. So I grabbed 24 of my little matrix displays, routed out a pine plank to fit them, installed them in it and it was hung at the booth for the show.

Parola FVMakers

The modules all use the Arduino Parola library.

There are three messages for the sign display. Each of them cycle 5 times before going on to the next.

Parola FVM Sign

The third message in the sign I decided to make programmable so they could change it what ever they wanted. The kicker was trying to figure out the best way of changing it. Of course the simple method would have been just connect up a USB cable from the Arduino to a nearby computer, change the sketch and re-upload it.

True, that would have been simple, but also a pain in the rump because the computer was going to be 15 or 20 feet away. And then they had to have the sketch and so on. So my mind started to think wireless thoughts. Could be simple RF with via a serial link from the computer to the sign, but then I started to think “access point”.

I briefly entertained the ESP8266 but for all the accolades I read about them my experience is they are cheap for a reason. And not exactly easy to use (like an AT command set from a bad 80’s movie). I understand this is changing but the steps for putting whatever firmware they require to make them “friendly” is not exactly documented in any easy to follow step by step method that I can find. Nor are they Mac friendly when putting firmware on them. Thus until such time as that changes, to me, they are still just junk. Destined to sit in my parts bin.

Then I remembered I had a couple of USR232 WIFI-T’s in the parts bin.

Parola FVM CTRL

Setting them up as an access point is stupid easy. Because I didn’t want to screw around with HTML coding, I decided I’d use plain old TCP to send messages to the sign.

On my Mac’s, that was easy. Change my wireless to the sign’s AP, then fire up the Terminal, type in Telnet 10.10.150.254 8899 and presto. Worked perfect. Anything I typed showed up on the sign instantly.

Thus Mac control was simple. However, for all the makers in our group there’s only two of us with Macs. All the others are Windows. Took me about 10 seconds to research enough about Windows to find it essentially has nothing like Terminal built in. Actually, someone told me the only thing Windows did have built in was obsolescence. Since I know beans about Windows, I don’t think I’d put much stock in that statement. After all, all computers are designed to be short lived. Nature of the market and all.

At any rate, I set off to find a Windows TCP client and I ended up with puTTYtel (TCP Telnet). After changing the “session” from active to passive, it worked perfectly as well.

The sign ran perfectly for the entire faire but the funny part was that the other makers who looked at it, assumed it was a commercial sign and not one that someone had hacked together with Arduino control. Talk about hiding in plain sight…

27
Sep

Bluetooth HC-05 Mac Programmer App

After spending time writing a sketch for the Arduino so I could program the HC-05 Bluetooth modules, I had a mind tweak that the same should be able to be done with the Mac here. And since I’m a Macintosh programmer by nature, why not.

That’s right, there’s now an App for that.

I tried a couple of different USB to Serial (TTL) adapters and the one that worked the best and most reliable was the CP2102 from Silicon Labs. The 2102 is a USB to UART bridge chip. You can find these littered on FleaBay for a couple of bucks.

I used some Dupont jumpers to connect the HC-05 to the adapter:

IMG 4125

Wiring wise it’s this:

  • CP2102 —> HC05
  • 5V ——-> 5V
  • GND ——> GND
  • TX ——-> TX
  • RX ——-> RX
  • 3.3V —–> KEY

There are no connections on the CP2102 RST or the HC05 STATE lines.

Notice the TX–>TX and RX–>RX. If you’re thinking that’s not quite right, in the real world it’s probably not. In the fantasy world where the Bluetooth modules are made, the labels indicate where the signal is SUPPOSED to go. So the TX pin silk screen on the HC-05 means it’s supposed to GO to the TX on the UART adapter. Apparently some not so terribly bright engineer thought this might be a simpler concept for the unwashed masses to grasp. News flash for them, if your IQ is higher than an Alaskan winter temperature, this is dumb labelling.

Thus, be aware that if you use different Bluetooth modules, you MAY find the labelling is different. Just saying…

A close up of the connections:

IMG 4126

If you’re wondering why the KEY connection has 3.3V going in it, it’s because in order to get the HC-05 in command AT mode, you need to make the KEY line HIGH when the HC05 powers up. Since there’s a 3.3V output on the USB to Serial adapter, it’s easy to do that.

The Macintosh program to program the HC-05 can be downloaded from THIS link. Unzip the file, put it in your Applications folder, wire up the modules, plug in the USB to serial adapter to the Mac (install the SLAB drivers if you haven’t already) and then run iBT.

Note, when you plug in the USB to Serial adapter and the HC05 powers up in the AT mode, the LED indicator will blink, slow. Very slow. About every two seconds, on, then off.

In the Preferences tab, just match your settings to these, and then click the Bluetooth ON button.

IBTScreenSnapz001

Switch to the Bluetooth panel and the information should fill in for you. If it doesn’t, “sum ting wong”. Recheck the wiring. Once properly wired you’ll see the window values change, as the carnival barker used to say, “Before your very eyes!”.

IBTScreenSnapz002

Change what you want and click the SET button beside that option to update the HC05. iBT will write JUST that data to the HC05 for you. If you get an error, iBT will report it.

The UART setting is the Bluetooth wireless connection speed NOT the programming speed via USB. With USB these modules are always 38400,N,1.

A lot of these modules come with a passcode of ‘1234’, but the Mac’s normal default is ‘0000’, so you might want to change that.

The Set Default button will reset the HC-05 to this:

  • Device Type: 0 (Class)
  • Inquire Code: 0x009e8b33
  • Mode: Slave
  • Serial (wireless): 38400,1,N
  • Passcode: 1234
  • Name: H-C-2010-06-01

So there you have it. HC-05 programming from your Mac made simple. iBT written by Mel Patrick is NOT public domain, but freeware. It may be used by anyone but may not be sold or hosted on any other site.

24
Sep

Arduino Bluetooth HC-05 Revisited

Arduino Bluetooth modules have to be the cheapest way to get two way wireless communication within 30 feet or so that there is. I paid less per HC-05 than I did for a burger, fries and a Coke. Plus I know which one is better for me…

As far as I’m concerned the HC-05 is the Bluetooth module to get. It’s very programmable, can be a master or slave, and the darn thing is 100% reliable. That’s a welcome change from a lot of wireless modules I’ve used in the last year.

There is a difference in these HC-05s though and it largely depends where you get them from and if they have a backplane (some call it a breakout board). While you can indeed get one without a backplane, I’d suggest that you might save yourself some time and headache if you get one that’s already mounted on a breakout board.

For the six pin version, these seem to be one of the more popular ones on eBay:

JY MCU

The ones I got didn’t have the “arrows” on the TXD/RXD lines so I, incorrectly assumed that the pins denoted the function of that pin. Nope. The silkscreen was meant to tell you where to connect those pins. Once I got over that little snafflegrab, everything progressed nicely.

The second type of HC-05 were the 4 pin versions. Vcc, GND, TXD, RXD. With these, you’ll have to find where the AT jumper is to put them into programming mode.

For the JY-MCU versions, you need Vcc, GND, TXD, RXD and KEY. Wire the KEY pin to VCC and then power up the module. It will be in programming mode (slow blink on indicator LED).

I decided I needed a board to help program these and since I had a few prototype boards around, I built a sort of Lego style plug board. Which could be used for other things than just programming Bluetooth modules.

IMG 4117

I tend to work with Arduino MEGA 2560’s more than the smaller UNO’s so the board was kind of designed with that in mind and the sketch in this blog reflects that. I have some 20mm headers that will plug into the Arduino sockets and then protrude through the prototype PCB. I have scads of Dupont female jumpers that I prefer using instead of the male jumpers most people use. So that’s what I use.

You can see the 20mm plugs extend up a fair bit. Perfect.

IMG 4118

Next I solder in all the headers I want (there’s a number of power pins on these boards and I put a header in them). At the bottom of that row, I solder in a SMD LED and resistor to tell me when the board gets power.

IMG 4119

From the underside of the board, I bend over the pins from the female header so I can make a bridge to the male pins:

IMG 4120

If I needed more female headers, I’d solder those next to the headers than go into the Arduino board itself. Thus, lots of room for expansion.

I grabbed one of my Bluetooth 4 pin modules and put it on the protoboard, put the jumpers to where they had to go:

IMG 4121

After programming it, I took it out and put in one of the JY-MCU boards to program it:

IMG 4122

Pretty easy to do really.

The Sketch I use for programming the HC-05 is written for the MEGA, if you want to modify it for the UNO, use software serial to do it. The change all the “Serial1” to that bt reference you created. Again, not that hard to do. I normally use pins 2 and 3 for the Bluetooth serial.

If you read the documentation on the HC-05, which I might add is fairly extensive, you’ll find that you can actually program a “class” definition for the device. Why would you want to do this? Two reasons. A number of the modules I bought seem to come with a Class=1F00, which is “uncatagorized”. This shows up in your computers Bluetooth setup as “unknown”. This may actually be correct depending on what you’re doing with the module, but I found I change the name, password and the class to reflect what the module is used for.

However, you get a 32 bit number to program into the module so, here’s a link to a COD (class of device) generator or (checker) so you can create a meaningful class and program it in with my sketch:

Bluetooth CoD Calculator

And finally, there’s the sketch itself. As noted, written for MEGA, using Serial1 on the Mega.

5
Aug

Arduino Programming

I tend to read the Arduino forum on a semi-regular basis. As such, I find that there’s a lot of interest in the Arduino from people who obviously don’t have the first clue about what it takes to write software, let alone wire up an Arduino. “Blink” is about their limit.

Interestingly enough, a lot of interest is from “school”. Someone has a class project and stumbles across an Arduino and jumps in. To the deep end. Without a life line. And they can’t swim.

Thus a common thread runs something like, “I wanna do this or that and I need help on how to do it”. Generally speaking the “this” or “that” is so vague anyone short of the Great Carnac can in no way answer the question. To most of their credit, the savvy of the Arduino forum do give it their best shot anyway sometimes, but also they don’t suffer fools all that well should it become obvious the person is way out of their depth.

As an Arduino newbie myself not all that long ago and in spite of the fact I’ve been writing software since 1978, I found the documentation for the Arduino typical of a lot of “open source” material. In my opinion, about two cuts above pathetic. Not to mention the scads of libraries and variations thereof that can drive you nuts and poorly or not documented as well.

I was looking through the forum messages and I spotted one about using a temp sensor to control one of those PWM (pulse width modulation) computer fans. Since I’d just finished building one for myself, I decided to read the topic.

And there, it all it’s glory was the best answer I’d ever seen. You might think it’s a little nasty, but really some people actually want you to do all the work for them rather than Google and educate themselves on how it could be done (there’s always examples for Arduino stuff).

So this had me laughing so hard I hurt…

Arduino Truth

12
Jun

LCD Display

I’d picked up a display off eBay a little while back from “WIDE.HK”.

LCD 23008

The display was a standard Arduino 1602 style with an I2C interface. The reason I bought it was because it offered GREEN LETTERS on the BLACK background. And I will be the first to say, it delivers on that aspect. Using it though, not so much.

The big stumbling block was that the display didn’t use the same LiquidCrystal_I2C library that my YWRobot displays used.

Wide.HK uses a MCP23008 expander to drive the LCD display. I scanned around a bit and found a couple of places that sported a similar type display with an 23008, but unfortunately they were wired differently. Those Arduino libraries didn’t work.

I asked for, and received an Arduino library from Wide.HK to make the display work. Wide.HK supplies a library called “LCDI2C4Bit” and it won’t compile on the Arduino 1.0 or newer. So I knew it was old. I managed to fix that quickly enough but the library was basically limiting. Two hard coded print commands, some goofy keywords for moving the cursor and that was it.

I’ve never written a library or even modified one for the Arduino before. But I liked the display so much I decided to invest some time in working on the library. After six failed attempts at it, I finally had a library that worked almost exactly like the Liquid Crystal library I was used to. I even posted it on the Arduino forum and another user tested it out and reported it worked perfectly. I felt pretty good considering.

For those who have a WIDE.HK LCD display, you can download my Arduino Library from here:

LCDI2C4Bit MCP23008 Library

While I was checking out some of the other offerings of Wide.HK, I found they sold the backpack as a standalone item:

IMG 3757

If you look closely, you’ll see that the edge of the board has “half holes” and not the full holes we normally see on these backpacks. On the end are the Vcc, GND, SDA, SDL solder pads. When you get an LCD like this from WIDE.HK they piggy back the board right on to the back of the LCD. This makes for a thin installation for sure. It also means you can’t use that backpack on anything else.

IMG 3760

I’d decided a while ago to make any new backpacks I bought removeable. So might as well start here and solder a male header right on the LCD display and a matching female connector on the backpack:

IMG 3762

Of course with this connection method, the display is significantly thicker:

IMG 3765

Which as it turns out is not a deal breaker for me. The backpacks were selling for around the $6 US mark off eBay and that’s not a bad deal either because if I remember correctly I was paying more than that for the YWRobot ones.

Really, if you wanted to make your own I2C backpack, it’s not that hard to do. Plenty of wiring schematics around to help out.

After attaching the backpack to my LCD, I powered up the Arduino and had a moment of “oh-oh” because the display was blank and then I remembered the contrast pot. A quick adjustment and..

IMG 3767

Works like a hot darn. According to Wide.HK, the backpack will work with a 1602, 1604 and 2004. I’m going to have to find some other ones to test my library with since I only have a 1602 right now.

None the less, it’s sure nice being able to run a full LCD display via and I2C thus leaving a lot of Arduino pins freed up.

21
Oct

House Address – NTP update

After running the house address since the middle of September I’ve came across some interesting things.

The first was that the internet time server I was using apparently doesn’t like to be abused. While I could “ask” for the correct time once every four to six hours, once you add a few more Arduinos that also ask for the time, the server would send incorrect data.

I did a fair bit of searching and from what I could find, yep, that can happen. Matter of fact, they can even simply stop sending to your IP and that happened as well. I couldn’t get an update.

Which of course lead to the fact that there are a limited number of NTP servers in the world and with everyone banging away at them it of course would overload them. A suggested action was to use the pool of NTP servers:

http://www.pool.ntp.org/en/

In their words:

The pool.ntp.org project is a big virtual cluster of timeservers providing reliable easy to use NTP service for millions of clients.

The pool is being used by millions or tens of millions of systems around the world. It’s the default “time server” for most of the major Linux distributions and many networked appliances (see information for vendors).

The idea of course is that the load of serving up the time gets spread around. And I can say it works great. For the Arduino it’s one simple line change (the IP is for the US time server pool):

One thing of note is that you should use the pool of servers that reside in your country. I tried using other IP’s for the pool servers around the world and have trouble with some of them. Once I found the IP for my country, presto, worked like a champ. I also changed the time check to once a day.

The second thing I found was that while my sunrise and sunset routines worked fine, I’d forgotten about testing for Daylight Savings Time when setting the clock. Doh.

I modified the original NTP setting code “ntpAdjustRTC” for the DS1307 since I didn’t need all four of the time setting info it gave, just the current time. At the end where it shoves the time back into the RTC, I adjusted for DST based on my DST check (also found someplace on the net; I didn’t write it so credit goes to whomever did).

Thus the house address is back in operation, updating it’s time, working out sunrise and sunset correctly and glowing that soft blue glow throughout the night. The only change I probably should have added while I was in there working on the code was a hard override to turn on the address. I have a soft override one via a web server built in, but a hard switch would have been a better idea…

Oh well, House Address version 3…maybe

4
Feb

LED Tester Software

While looking for circuit drawing software, I happened across an app that I’d gotten for the iPad a while back (and promptly forgot about having)…

It’s called iCircuit and talk about slick. While it still doesn’t have ALL the bits and pieces for doing schematics, it’s got a good deal more than Fritzing plus it does allow you to “run” the design. You can scope various points so it’s very much like the old Circuit Maker.

LED Run.PNG

It’s in RUN mode on the iPad 2, you can see the switches that are closed, the current draw at that point. To open or close a switch you just click on it.

The plain schematic looks like this and you get a parts listing out of it too. I was pretty impressed with it.

Constant current.png

2
Feb

Led Test Schematic

Finally found a piece of software that allows me to at least do some basic drawing of a schematic. The software is called Fritzing.

This is not a review of the software, just my personal impression of it.

I think it’s designed for taking a circuit that you’d build on a strip style board, which creates a schematic (of sorts) from what you lay down. From there you can create a PCB and save it as a Gerber plot. A high percentage of the examples of it in use show it coupled with the Arduino devices. I suspect that’s a lot of it’s background and judging from the lack of “core” components you can work with on a schematic, it seems to bare that out.

When I design circuitry, I don’t normally work on anything overly complex, I start with a schematic. From that point, I can almost always turn that into a PCB by hand without too much work. When you do it this way with Fritzing, you get some interesting results because that’s not the way it was designed. But then I’m old school too. I was designing PCB’s before there was software to design PCB’s and “auto routing”….

So here’s what I managed to “draw” in Fritzing. First off, you’ll see that I have switches S3 thru S8. Actually in my circuit that’s a rotary switch. But there’s no rotary switch in Fritzing. Matter of fact in Fritzing the “input” section is pretty skimpy. DPDT? Nope. Pushbutton? Nope. And on it goes. While you have the option of defining your own parts, one look at the multiple steps required to do this and it pretty much cures you of that idea.

Which is not to say that Fritzing isn’t useful, it’s remarkably good at what it does. However, if you’re schematic based like me, you’ll find it lacking in a lot of areas. So keep in mind that it’s free.

LED Constant Current Tester.jpg

Ages ago (we’re taking in the early 90’s) I used a piece of software called “Circuit Maker” from Microcode Engineering for my Macintosh systems. Not only could you draw a work schematic but you could “run” your schematic and put scope points on it to watch logic signals change. Of course resistors or capacitors didn’t affect the circuitry for “simulation” it was just logic gates. But you could set propagation for those gates. I built a lot of digital circuits in those days with that little program. I still miss it.

Eventually, Microcode dropped the Apple Mac support and continued to develop for Windows. I think they’re up to version 5 now.

After that I ended up using Canvas from Deneba Software and I had an electronics symbol library that I could draw schematics with. It wasn’t bad either. Course if you started to move parts around the wires came apart pretty quick because there weren’t any real points. Then Deneba got tired of Canvas and flogged it off to ACDC who didn’t give a squirt about the Mac clients. The software was let lapse and one of my most used drawing programs went the way of the DODO bird. If Lion would run Rosetta I’d still be using Canvas 8. But in another Apple’s infinite bouts of “we know what you want more than you do”, Rosetta is gone.

Finally I used OmniGraffle and its electronic symbols to draw schematics. And it worked, but I never seemed to get really comfortable with it to continue using it.

Softwares nature is to be a good revenue generating machine and if it’s not, it’s dead pretty fast. There’s scant few hobbyists like myself that program for fun and little to no profit. Unlike many, money has rarely ever been a motivator for what I do. Regardless of what it is. I write software that I need. Turns out other people seem to need it too, but writing for profit is something I only did once, a long time ago and I never did it again.

Any way, I’d love to see something like Circuit Maker for the Mac again….hey, I can dream can’t I?

So then, probably like a million others, my schematics are drawn on the back of a coffee stained napkin in an all night donut shop…

8
Dec

Sqwerl Lives…

I’ve been working a new application to program the Highly Liquid MIDI decoder (MSA-R). The new MSA a substantial upgrade over the previous unit and it’s the main controller in my iPatch unit. Working on both the Mac and Windows versions (which makes me really appreciate the look and simplicity of the Mac) I have it about 90% done. There’s still some firmware bugs in the MSA-R K version (3.0) that need to be ironed out (or flattened, depends on how you view software bugs)…

But firmware bugs aren’t my issues. That’s up to Highly Liquid to fix and publish a some update code. Which, incidentally isn’t happening as timely as perhaps it should. The MSA-R have been available for over a month and there’s no word on a time line for the firmware fixes. So I made some work arounds in my code to compensate and it’s not pretty but it partially works.

This brings up an interesting thought too. When software/firmware is released, just how fast should bugs be addressed and fixed. In the case of my own software, I developed Mels Bug Fixing Axiom:

“The amount of time it takes to fix a bug is inversely proportional to the amount of time it took to find it”

I found the problems with the MSA-R shortly after starting to write the code to program it. Thus, it’s anyones guess as to when the update is coming…

At any rate, here’s a sneak peek at Sqwerl. Why Sqwerl? Simple really. The previous MSA-R version was programmed using “Moose” and anyone who knows TV history from the 60’s knows that you can’t have Moose without Sqwerl…

Sqwerl
3
Dec

iPad blog update

Testing out a new client for the iPad to see if it works better than the Word Press one…actually anything that worked would be better…

Amp probe bench meter. Not too bad.


– Posted using BlogPress from my iPad

3
Dec

Blog Wars…

In the great scheme of things blogging from the iPad is just so handy…from the desktop, not so much. For the desktop, “ecto” is the choice I made to get the job done. While not the best there is, it works reliably, and it’s quite simple to use.

Going back to the iPad for a second here, the blog apps for it are just plain horrible. Even Word Press HD for the iPad is bug ridden and if it actually works, it was due to more good luck than anything else. Thus there is a serious void here that some developer needs to fill. Its patently obvious what’s out there now doesn’t work worth beans.

16
Nov

Programming my MSA

I got the latest MIDI control board from High Liquid and started programming it over the weekend. Today, I found several bugs in the firmware on the bug that will need to “adjusted”…and that will give me some time to finish off the rest of the build. Those empty holes in the back aren’t really supposed to be there…:-)

This is what it looks like on my test bench…

IMG_1712

19
Aug

The Moose is loose

I finished up the Midi control software today for the Highly Liquid Midi relay controller I built. Also managed to find a willing soul to help me beta test it. At the end of the testing phase I’m just going to give the software away any way.

The main Moose window:

As it happens I am also getting a Midi Cpu from Highly Liquid. This is a programmable Midi message generator. I’ve got an idea that with this and the MSA I can also make a standard and Midi controller looper pedal. Now that would be slick.

15
Aug

TV, Benefit or Bane

After having satellite tv for almost a year and finding next to nothing on, we finally broke down and bought a bunch of packages to get more selection. And of course, spent the day watching the PGA Tour event at Whistling Straits.

Then we watched some movies that we haven’t seen in forever.

Our conclusion, yes you can order the basic channels and service, but the channels that are worth watching are placed in specific groups and sold that way for a reason. Clever little guys those media providers…

However the saving grace of the day was the PVR. You can record what you want, watch it when you want and skip all those crappy commercials.

Thus I managed to almost finish my latest software project for programming my Midi controller. There’s a little bit left but not much. I called it Moose or Mels Object Orientated Sysex Environment. Whew, took me a while to think up that one….

5
Aug

Journal…

I spent the entire day doing a make over of my Journal program. I added functionality to sync with iCal both way, with some caveats, but it does work and looks a heck of a lot better than it did.

Here’s a before and after photo:

4
Aug

Linear thinking in an objective world

I’ve discovered the secret of getting things done when you get over whelmed. Do them all at the same time!

My brothers laptop needed to be completely reformatted and set up again, our DSL connection is being upgraded, the router isn’t connecting properly and needs new settings, I need to finish the software update for two of my programs, I have to lay down a track for a new song that I wrote, have to do a sample reverb a/b track for a friend, need to set up two 500GB hard drives and install OS X10.4 on them in a Raid 1 array, build the MIDI controller for my studio, and probably a couple other things I missed.

Considering that I am retired, I’m trying to figure out how I ever managed to get all those things done when I was working. Maybe it just took longer…

So let’s see, what was I doing again? Oh yea, reformatting the router, putting a MIDI controller in the laptop, tracking a song with blank hard drives, spraying Raid on the software and put DSL on the reverb.

Amazing how the logical mind gets all of these things in order!

2
Aug

Now when was that…

A long time ago, like twenty plus years ago when I was in the active work force, I was a shift worker. Something I never minded doing, but if someone asked you what you were doing on such and such a date, you generally had no idea.

So I wrote a shift workers calendar, made a web version so other people could use it and gave it away to the world. You could see at a glance when you were working, what shift it was for any date you wanted. It was slick but a one trick pony.

Along came Apple with iCal and people started to use it. As a generic application it worked, but it was ugly to setup shifts. Some improvements have been made to it over the years but it’s still not what I’d call user friendly.

Any way computers progressed and I’ve updated my program any number of times over the years. Around 1998 I decided to add a personal diary to it and enhance the calendar portion. Thus Journal was born out of the digital bits and pieces. I put it up for sale, but never really cared if it made money or not. I needed it for me. Although my goal was to write in the Journal, I never really did it much. So that part languished.

Carol started using it at some point (2003 I think), more than me actually, and uses it as a day timer, which it’s not, and types a daily diary entry. Where she finds bugs or problems, I fix them. She’s good at finding things…

Since we are both getting a iPhone, she said it would be really nice if I could write the same app for the iPhone. But the iPhone is a different market, everything goes through iTunes and I have no idea how to write for it, nor the costs in volved.

Which leads me to the gist of this rant and rumble. What if I could read and write to the Macs iCal and that could be viewed on the iPhone? If you added an event on the iPhone, Journal would pick it up and vice versa. So two days and about 14 hours later, I had it working. True you don’t get the Journal diary entries but the calendar was hers and mine main interest anyway.

Apparently retirement has completely killed my programming skills…here’s the results from Journal, iCal, and the iPad (don’t have the iPhone yet…)