Word of the Year 2015: Simplify

For the past two years I had a word of the year to help guide the changes I wanted to make that year. 2013 was the year to “be” and 2014 was all about focus. 2015 is my year devoted to simplifying.

simplify-sheekgeek
I read this quote by Orson Welles and it cemented the word simplify as my choice – “The enemy of art is the absence of limitations.” I need limitations in my life. I have too many choices. This does not bode well for someone with such a high level of distractability such as myself. I’m looking forward to a year of simplifying my life. This includes my time, but also my possessions.

Simplifying goes hand in hand with minimalism, so I’ve been reading a lot on Becoming Minimalist. Here are a couple of resonating snippets to inspire some reading.

Purge distractions so you can focus on what is most valued.

…purging not just possessions, but, in Becker’s words, “anything that distracts me from the things I most value.” For some, this means not Facebooking after dinner or binge-watching House of Cards. For others, it’s resisting the siren call of eBay. (Source: Success – How Living with Less Can Give You More)

Place limits on yourself to increase awareness.

Start with a week of no spending, or a month. Once you start, you’ll recognize where those temptations are for you. That awareness can really help people. (Source: Forbes – The Buy Nothing Year: How Two Roommates Saved More Than $55,000)

Whether they be social, financial, or moral, boundaries provide structure and a framework for life. They promote discovery, invention, and ingenuity. Boundaries motivate us to discover happiness in our present circumstance. (Source: Becoming Minimalist – 9 Stress-Reducing Truths About Money).

Be active in your life, not a passive participant.

Watch less television…Be intentional about planning something else…Try to eliminate specific shows. (Source: Becoming Minimalist- The Single Easiest Habit Change to Improve Your Life Forever)

Seize the opportunity of every moment.

Make the most of every opportunity. Forgive who needs to be forgiven. Express love and gratitude to those who deserve to hear it. Live lives of significance. Each new day is an opportunity to make a difference. Don’t waste it. (Source: Becoming Minimalist – In the Blink of an Eye).

For me, simplifying means being intentional – intentional about my actions and habits so my time is well spent. This requires reflection, awareness, and change. I am looking forward to the growth that will result from this word. Simplify!

Jessica-of-SheekGeek

Student Engineering Portfolios

This past semester, we radically changed the curriculum for the Intro to Engineering course at the college where I teach. We are focusing more on competency-based learning via constructivism in this introductory practicum course. To track the student progress we used an online website portfolio.  We tried to base this concept on the webpages we had to make in the FabAcademy.  Here is what tools I used and what I’ve learned.

 

In the FabAcademy, students were required to make an HTML webpage each week chronicling their progress with that week’s project.  This HTML page was saved in a Mercurial repository on the students’ computers, and synchronized with the FabAcademy server.  At my college, the port for doing this was blocked, so it was impossible to synchronize the repository unless I did it at home.

Since we can’t run a Mercurial server (due to the port issue) at my campus, and I didn’t want to have to fix the problems of over 100 students creating multiple heads of the repository, I went another direction.

Instead of HTML pages, I created a multiuser WordPress installation only for students at my school.  It was available online from any computer, and students can upload any code or design files in any format they wanted as long as it was a .zip.   This worked marvelously.  I had worked with WordPressMU years ago creating this exact type of environment but I couldn’t get an audience. In fact, I used the same domain name as my first site from long ago. the concept was supposed to be something like instructables.

WordPress was great due to the very low overhead for students. They didn’t have to install any  funky toolchain, learn to use the terminal, or anything like that. They could focus on the assignments themselves.  It did take a while for them to understand the concept of  technical writing but eventually most students turned their website into a great portfolio.  That was the main objective. The students last assignment was to export their website and import it into their own wordpress.com site to continue documenting their work to create an engineering portfolio they could show prospective employers. This is similar to the concept behind InnovationPortal created by Project Lead The Way and many other services of this sort.

In the end, just like FabAcademy, I wanted to scrape the pages and create a static HTML version of each student’s website at the end of the semester. This way our future students could benefit from previous generations and build upon their ideas and projects just like in the FabAcademy. being static HTML frees up resources on the server and reduces the chances of being hacked by reducing the number of live users and database entries. The static HTML copy of all the websites didn’t seem to be a hard task. I had found a plugin called Really Static that does exactly what I needed. I tested it on my own old senior project website.

While testing this plugin on a single site on our server, I accidentally activated it on all 100 blogs.  This was a disaster!  I’m still trying to figure out how to fix this issue.  I emailed the support page and even emailed the author who stated he has used it on many multiuser sites, but I got no replies for help.  I don’t really know PHP, just enough to hack on it to glue code snippets together (if I am lucky) so there’s no way I’d figure out how to fix it.  Also the comments of the code for the plugin are in German, which I’m not great at.

A new solution appears

After this mess, I decided to look more into Static Site Generators (SSGs).  This is a system that creates static HTML pages from the get-go. Users write pages and posts in a markdown language of some type in a plain text file, then the site generator turns this markdown language into a static HTML site. Some common ones are Jekyll and also Hyde.   There are several large lists of Static Site Generators on google as it is the new fad in webhosting.  The issue with almost all of these systems is that it is not user-friendly. For instance, a new post on wordpress is literally as easy as writing an email or word document.  To use most of the systems I’ve seen for SSGs, you have to install a compiler (Ruby or python for instance) then some libraries, then you have to write your code in a text file, compile it into HTML, then manually upload these files to the server or to Github pages.

There is no way my students can handle doing all that without asking millions of questions, even if I make a how-to video showing each step (heck, they asked enough about wordpress as stupid-proof as it is…)

There are some relatively simple solutions out there already. Most notably is Dillinger which seems to be fully featured except missing a toolbar to help complete noobs. Having more features scares me since I’m not great at javascript. I just came across this one and had to mention it because it does integrate dropbox, googledrive, Microsoft onedrive, etc. I like it, but there are some drawbacks:

  1. it is too complicated for me to work on until I learn javascript enough.
  2. There doesn’t seem to be an index page that updates automatically (like Simple below) which is needed
  3. There doesn’t seem to be multiple templates. you get what you get, though it does look quite nice.
  4. There are no buttons to help noobs like I mention below in the RES.

While searching the list of SSGs, I found one solution I think is workable and stripped down enough that I might be able to wrap my heard around it somewhat.  It is called “Simple”  and it uses Github pages.   It is very easy to set up and use and it has a web-based interface with a live preview of the generated HTML from the markdown language.  Markdown is a very simple language to learn and is intuitive enough for freshman students to pick up quickly.  So I forked Simple so I could hack on it.  It has an MIT license, so it is fully manipulable.

While it has a simple interface, I wanted to make it easier for my students to use the Markdown language. I’m taking my cue from the Reddit Enhancement Suite (RES) Chrome plugin.  When you make comments on Reddit using RES, there are little icons almost like a rich text editor.  You have an icon for Bold, Italic, Strikethrough, quote, link, etc.

redditIcons

These icons make it dead simple to use markdown language, and especially if the user can see a live preview of the results using the “Simple” interface.

The template for Simple is currently hardcoded, but looks clean and easy to use.  There are only a couple of issues:

  1. Students must get their own Github account and host their site there, making it a bit tricky to scrape the content at the end of the semester…
  2. Students must link images that already exist online somewhere.  This means they will either have to upload the files to Github (yeah right, like I want to get 1M questions about using the sync app)  or use their google drive from their school account. I’m almost 100% on them creating a folder in google drive to host the pics as long as I can guarantee I can scrape the images well enough. I haven’t tested this yet.
  3. They cannot directly embed youtube videos into the markdown language. I can skirt this by making a button that links to the video with a screenshot of the video pretty simply. I have seen other people extend the Markdown language to be able to embed youtube and vimeo videos, but I’m not savvy with javascript, which is what Simple is written in.
  4. There is currently only one template, and it is hardcoded.

Otherwise, it seems pretty darn good. I expect that it could be extended for use completely in google drive, but I’m not sure.

It is going to take me quite a while to implement the RES-style buttons due to my lack of javascript skills.  If anyone wants to help, check me out here

 

Another strong contendor already has a simplified button interface and can be connected to google drive.  This is called StackEdit. It has a great editor, fast previewer, and can export to several options as well.  Since the buttons are a must, this is a good solution. It is too cocomplicatednot even sure if itis open source) for me to modify in any way, like Dillinger, but we can see how it goes.  I haven’t played around with it enough to see if there is a variety of templates to use.

Adam-Atom

Shapeoko Software Adventures

I finally got a little time to work on the Shapeoko V1 to V2 conversion.  I made a video to document for my future self what settings I used for things with explanations of why I used those. I hadn’t previously made many notes so I had to basically start from scratch and I lost a lot of time redoing things. I tested some software and did a quick comparison.  Details of my experience and links to the software are below. I also had a bit of trouble from the top software choice, Chilipeppr that I hope someone could shine some light on.

Software:

1.  http://chilipeppr.com/grbl

UPDATE: John Lauer, maker of Chilipeppr , showed me the error of my ways and addressed most of my concerns with it.  He made an update feedrate modification update that I have yet to test.

Chilipeppr seems to be the best interface by far with full 3D display, code simulation, and lots of neat widgets and macros.  While testing my first milling job, however, I ran into some trouble.  I haven’t really watched all the tutorials on this so it is probably something I’m doing wrong, but when I used the feedrate multiplier on the Gcode widget, I typed a value in by hand and hit “enter.”   I entered 0.15 into the feed rate window, hit the enter key, and tested it out.  This did not work at all.  You can only modify the feed rate by clicking the up and down arrow buttons on the Gcode widget in Chillipeppr. You can verify the feed rate change by watching the lines in the Gcode change when you click the buttons. I noticed that if I watched these values while typing an input, they don’t change, unless I mouse over the Gcode line.

I ran a simulation to verify it would work.  The simulation was slow as expected since I was only going 15% of the full speed. Simulations do not take into account feedrates. When I went to run the real job, I broke a bit almost immediately.  The very first line it cut was at the feed rate I specified (15% of the default speed)  but immediately on hitting the next line command in the Gcode, the speed went back to 100% breaking my bit.

Something I loved about this app was the ease of modifying the positions, zeroing and such.  A couple of improvements might be to add options to only zero one axis at a time, and to add a custom offset to each axis if needed. This can be done manually by entering the appropriate G92 code with the wanted offset, but a button similar to the “Move By” would be nice.  You can zero a single axis by clicking the little triangle next to the axis name (ie X, Y or Z) and select “Zero Out Axis”.

I would also like the “Move By” to default to 0 when you change from one axis to another. I mistakenly drove a bit 10mm into my workpiece after adjusting my Y axis first. I had used 10mm for Y, but meant to change it to 0.1mm on Z.  That was totally my fault, but a “stupid-proof” option would be nice for that.

2. Gcode-Sender Chrome plugin

This neat little app is a chrome browser plugin. It is very basic. (this link is that video cued to exactly the point I’m testing this software). It autodetects and connected to my GRBL device instantly. I didn’t have to install any executable alongside this.  An issue is that there is no visualizer for the gcode so you can’t really see what it is going to cut or graphically how far along it is in the cutting job.

3. Universal Gcode sender

You can see in the first video of this post (this link is that video cued to exactly the point I’m testing this software)that I detail this app.  I couldn’t get to display correctly. I have java 1.8 and for some reason, none of the buttons or objects display correctly. I also couldn’t get the visualizer working at all. I tried version 1.04 and 1.07 with no joy. I was able to manually move the machine, but I couldn’t trust it with a cutting job since I couldn’t really see what the button said and couldn’t get the visualizer working.

4. Grbl Controller

Here is the video cued to this software.  This is the software I ended up using in for my first mill job after I couldn’t get the chillipeppr feed rates to scale with its default Gcode.  I created my own code quickly in easel.com and threw it into GRBL Controller to mill.  I liked the simplicity of the  interface.

I have a few gripes:

The serial terminal portion is really slow on my machine and I don’t know why. it takes 5 full seconds to connect to the serial port and print the GRBL stats.  When I send commands manually, there is a definite delay of a couple of seconds before the machine moves.

The visualizer is good, and I love that it prints the extents of the design.  I dislike that it is a 2D only viewer. While it is a good viewer overall, if it was 3D, that would make this tool much better.

The GRBL Settings under the “advanced” tab really messed up my settings.  Since I am running GRBL0.9g, when I loaded this window, it populated the window with my GRBL settings, but when I changed a value ($110 for instance) in this window, it actually wrote it to the OLD GRBL setting number for that setting.  This really confused me for a while. I’m not sure why this happened.  I fixed it in a serial terminal and decided not to use that option again.

 

Other CAD/CAM tools I surveyed

Easel.com is the CAD/CAM software package from Inventables designed for their machines.  It only works with GRBL 0.8c directly, but there’s a way to export the Gcode so you can use any gcode sender.

I ran a job I created in Easel. I had to make sure I selected the correct bit size and on Machine–>advanced I created, then exported the Gcode.  I brought the Gcode into “Grbl Controller” to send the job.  Since I milled with a 0.5mm bit, and I wanted to go 1.5mm deep, that takes 3 passes (rule of thumb is to only cut as deep on a single pass as the width of your bit).  This worked pretty well because Easel generated the multiple passes without telling me anything about it.  I had manually entered 30mm/minute as a feed rate into Easel.com, but it seems to have automatically calculated the feedrates based on either the Gcode it exported, or used the GRBL defaults for each axis because it cut much faster than that.  I would have really liked to have some kind of stats or a note about the number of passes or the approximate mill time based on traveled distances and feed rates.

MakerCAM.com is kind of a precursor to easel. It allows you to import SVGs and do things like pockets or outlines. It then generates toolpaths based on your entered tool values.  It is really easy to use and what is great is that you can download the whole things so you can use it with a device not connected to the internet. There are some great tutorials here.

GRBLweb is another browser-based gcode sender. I didn’t try it out, but the video on the webpage makes it look like a good tool.

JScut is a tool that GRBLweb and Chillipeppr use. JScut is a browser-based CAD/CAM package that helps you create toolpaths. It is similar to Makercam but being JS-based, other browser-based tools can interface and use it.

 

 

Miscellaneous notes about my setup and justifications:

I’m using GRBL 0.9g as I wanted to take advantage of the 4th axis in the future. this has a different pinout than version 0.8c.  0.8c Is what Easel.com uses when you click the “Carve” button on their interface (they use a server app to send the gcode to the machine from the browser, for some reason, I couldn’t get this to register correctly, even when I had 0.8c and the website kept telling me to download and install the server app. The settings I used for the 0.9g setup and justifications for these values are at the bottom of the post.

 

Grbl 0.9g [‘$’ for help]
$0=30 (step pulse, usec)
$1=50 (step idle delay, msec)
$2=28 (step port invert mask:00011100)
$3=2 (dir port invert mask:00000010)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.050 (junction deviation, mm)
$12=0.100 (arc tolerance, mm)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=100.000 (homing feed, mm/min)
$25=250.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=5.470 (x, step/mm)
$101=5.470 (y, step/mm)
$102=320.000 (z, step/mm)
$110=300.000 (x max rate, mm/min)
$111=300.000 (y max rate, mm/min)
$112=50.000 (z max rate, mm/min)
$120=250.000 (x accel, mm/sec^2)
$121=250.000 (y accel, mm/sec^2)
$122=50.000 (z accel, mm/sec^2)
$130=290.000 (x max travel, mm)
$131=290.000 (y max travel, mm)
$132=100.000 (z max travel, mm)

Here are the justifications for these settings:

Note: GRBL 0.9g runs at 115200 baud.

I needed to change the X and Y steps/mm based on the following:
Motors have 1.8degrees (200 steps/revolution)
MXL belt has 2.03mm pitch
My belt pulleys have 18 teeth on them
I’m single-stepping my stepper motors
I used these values in the following calculator: http://prusaprinters.org/calculator/#stepspermmbelt
= 5.470 step/mm for both X and Y

To test this, enter the following code
G01 Y-10 F300
Which means “Move Y axis -10mm at a speed of 300mm/min”
I confirmed this motion with a micrometer
My Z axis seems fine using the values from the shapeoko website (I meanured about 1mm when I sent it the command to move 1mm.)

I’ve had to invert my direction on a couple axes:
https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9 ctrl+f “$2 – Step port invert mask:binary”

 

Adam-Atom

My Shapeoko Version 1 to Version 2 Conversion Adventures

whole machine Forgive this messy rant….

After obsessing over CNC machines for about 10 years, and having some misadventures from time to time designing my own hardware and software, I jumped at the chance to order the original Shapeoko CNC mill mechanical kit as soon as it came out. It took me a year to find time to put it all together. After it was assembled, I connected up my old HobbyCNCPro Motor driver board to it. This driver board is for Unipolar motors, so I searched for some that would work.  I found these NEMA 17s from pololu <<LINK>>

 

On a previous attempt at making a CNC machine, I used Mach 3, but this time I went with LinuxCNC.  The main reason I wanted the machine was to mill PCBs. The workflow was EaglecAD–>pcb-Gcode–>autoleveller–>linuxCNC.<<LINK>>  I made a few really horrible PCBs with the machine before realizing it simply wasn’t the tool for the job. The gantry had way too much play.  The eShapeoko community was constantly updating and improving on the designs, so I waited it out until the V2 came out before the obsession hit me again when I saw how they doubled the gantry slides to improve strength.

 

After a year of V2 being on the market, I searched forums for a conversion pack but none was to be found. So I spent a while trying to define the differences between the machines. In the end, I spent probably just as much as buying a whole new mechanical kit, but here’s my process.

First, instead of buying all new motor mount plates, I only bought 2.  I then modified a couple of my plates from my original machine.  IN the image below, you can see the original plate on the right, the new plate on the left, and the modified one in the middle. I basically just had someone with a drill press line up the new plate with the old and drill out a two holes at the top that could attach the 70mm machine screws through to make the carriage assembly (pictured further down.)

plates1

The V1 Y rails became my new gantry, leaving me with something like 375mm in that dimension. After I mounted the carriage assembly, I saw that the Z axis had no holes to mount to.  To remedy this, I simply used the V1 Z plate as an interface between the new Z axis and the carriage.  In the image below, you can see the bolts I had to extend with short nylon spacers so they could mount the old Z plate and line up with the original eccentric nut circled in green while the four 70mm long spacer screws are circled in blue. (I had to buy 4 70mm M5 bolts on amazon as inventabes doesn’t sell them for some reason).

plates2

Zplate

Below you can see the spacers and everything inside the carriage assembly. This is a “bottom-up” view after the Z axis has been mounted.

Carriage1

I was able to use the belt and the belt standoffs from my V1 on the gantry with no problem, but the lower profile of the new motor mount plates that became my new Y axis required the belt to be clipped to the slide itself.  Instead of buying them, I just laid my V1 standoffs for the belt flat and mounted them that way. This reduced cutting area, but the first thing I will cut will be smaller belt clips.

I ordered a 1000mm piece of Makerslide and cut it directly in half, leaving me with about 500mm rails.  I mounted these up with new end mount plates and some 80 X 20 aluminum.  I was disappointed to see that I couldn’t use readily available half-inch MDF as spoilboard on top of the extrusion, so I just mounted the entire machine on a 500mm X 500mm piece of half-inch MDF.  This gives me a bit more Z depth.

I was not very excited when I saw that my cutting area is less now than it was with the V1. I’m contemplating ordering more makerslide if I need to in the future.

Another change I made was to get a unipolar stepper with the shaft sticking out of the back for my z axis, and used a 3d printer to print a thumbwheel to attach to it. Now I don’t have to struggle to adjust the Z axis by hand anymore. I hadn’t used this company before, but <<LINK HERE>  stepper world?  was cheap, shipped fast and packaged everything great. The only problem I found with the datasheet they included is that they had labeled the brown wire “BLW”  for some reason.

 

If I can find another NEMA23 aound the house, I will replace my Y axis motors with NEMA23s for added power.

 

I’m also hacking on the electronics. I added the 4th axis motor driver to the HobbyCNC Pro board and would like to use it to drive a 3d printer extruder. Since the HobbyCNC Pro board interfaces with a parallel port, it isn’t very practical for my laptop, so I decided to slap an arduino on there running GRBL to simplify the entire process. After seeing a demonstration of chillipeppr for GRBL, I’m thinking of using that.  I kind of dig the browser-based tools available for controlling the machine for their simplicity.I don’t wanna use my PhD to make PCBs I just want to click a button and be done with it. It shouldn’t be such a pill to make things on the CNC. For using GRBL with 4 axes, I’m looking at using the spindle speed control as my extruder, or using a slave ATmega328, or even just getting the timing set for strapping my 3doodler onto the thing.  The interfacing of the driver and the arduino should be pretty straightforward, I just need to wire X direction on one to X direction on the other, etc. for the most part.

My tool tip wobbles as the Z goes up and down, which sounds to me like I have a bent leadscrew somehow. I’ not sure about this and will have to hack on it later.

Anyway, that’s my progress so far. Any more info and I’ll post it when I get the chance.

 

Adam-Atom

Zooming in on LabVIEW (and fixing Windows Magnifier)

My students keep complaining about not being able to see the connections and icons in LabVIEW.  I decided to write a post with some solutions to this.

  • Using Window’s Built-in magnifier:  Windows 7 and up has a built in magnifier installed.  Simply hit the start button and type “Magnifier” and run it.  By default, mine was in “Docked” mode and I couldn’t get it out of that mode which basically made the program useless.  I found a tweak to the registry to fix it  at this site  but it did not work with my version of windows. I decided to write a short fix for it.
    1. My regedit was at the same path, but my options were different. Open the start menu and type” regedit”  then click “continue” or whatever at the next nag screen to actually open the registry editor.
    2. Navigate to Computer/HKEY_CURRENT_USER\Software\MicrosoftScreenMagnifier
    3. Doubleclick “Classic Doscked” and change the number from ‘1’ to ‘0’. 
    4. Open Magnifier again and you should now have a non-docked window.
    5. For fun, play with the key called “CLASSIC DOCKED POSITION” to make the dock appear to the top, left, right, bottom, etc of the screen.
  • Download a windows app called Zoom It, which has a bit more options then the built-in software.
  • For taking good screenshots of your code, you can use the LabVIEW Code Capture tool. This will be useful for student reports or webpages.

That’s it, hope this helps!

via NI forums

Adam-Atom