Coasty Controller Setup and Use Instructions


I have receive a lot of requests to sell Coasty laser cutters. It just is not practical for me to do this at this time, but the parts are easy to buy and/or print yourself. The only part that is difficult is the custom controller. I have about 10 extra ones and will sell them. If they go quickly I may buy more. They are here in my Tindie Shop.

What you get with the controller.

  • Fully assembled PCB
  • Arduino Nano programmed with Grbl and setup for the Coasty
  • An HC-05 Bluetooth module programmed with the proper settings baud rate.
  • (2) TI DRV8825 stepper motor drivers with heatsinks and the current set to a recommended value
  • (2) Fans with wires trimmed and connectorized.
  • A cable for the laser module
  • A door switch switch with proper length wires and connector.

These are the only electronic items you need to provide.

  • Laser Module: It is designed for the Eleksmaker 3.5W LA03-3500. Most other types probably won’t fit in the tight size of the Coasty or bolt properly to the PCB
  • 12V Power Supply: I recommend about 5A of current. They can be found on Amazon for less than $10. Make sure it has a standard barrel connector end.

Default Calibration

The controller will come setup with settings that work for me. You can fine tune the settings later, but these should get you started. Here are the settings you see if you send the $$ command to Grbl. The setting codes are listed here.


The homing switches locate the edge of the coaster and the left extent of the laser travel. This is not the X,Y zero of the work area on the coaster. That is set by the G54 work offset. The G28 and G30 locations are also set so they can be used as a coaster eject command. Here are the offsets you will see if you send the $# command.


Note: If you want to reset the G54 to the value above send this command  G10 L2 P0 X-186.500 Y-245.000 Z0.000 For more information regarding work offsets see this video. You could also manually jog the machine to the exact position you want the 0,0, to be and send this command G10 L20 P0 X0 Y0 Z0


I will pre-test every controller, but there are many machine dependent things that need to be tested before safely operating the machine. You should only need to run these tests once.

  1. Watch this video completely before testing anything. You will get a general overview of the machine that will help you understand and successfully test it.
  2. Remove the Bluetooth Module. It will be easier to test with USB. Never use USB with the Bluetooth Module installed.
  3. Do not connect the external power supply until advised.
  4. Make sure the little power push button switch on the controller is in the off (out) position. This switch controls the laser and fans only. Other circuits remain on regardless of switch position.
  5. Connect a USB cable.
  6. Open a serial terminal connection at 115200. The terminal should be setup to send a carriage return at the end of each line. The Arduino IDE Serial Port Monitor is an easy terminal to use.
    1. It should reply with Grbl 1.1f [‘$’ for help] and  [MSG:’$H’|’$X’ to unlock] when connected
  7.  Send a question mark ?
    1. It should replay with some status like <Alarm|WPos:186.500… , but not have any switch status like Pn:…
  8. Send the $$ command.
    1. The values in the response should match the values listed in the calibration section above.
  9. Send the $# command
    1. The replied values should match the values listed in the calibration section.
  10. Connect power to the controller, but do not turn on the controller’s power switch. Be ready to pull the plug if anything goes wrong. The machine might make some motor noises as the motors engage for brief period.
  11. Open the door.
  12. Manually slide the laser carriage to the left to activate the X home switch.  While it is activating the switch send ? again.
    1. You should see Pn:X in the response.
  13.  Block the IR detector with a coaster and send ? again. Note: The IR detector requires external power and will always register as “on” when there is not external power.
    1. You should see Pn:Y in the response
  14. The next step is to test homing. There is a chance that it will home the wrong way, so be ready to disconnect power. You must pull the plug at the controller to fill power. Watch for the laser to move to the left and the coaster to move in.
  15. Send the $H command at the serial terminal.
    1. As soon as the motors start, watch for the laser to move to the left and you should feed in a coaster.
    2. If either go the wrong way, pull the plug.  See fixing direction errors below.
    3. The machine will only try homing for a few seconds. If you were unable to get it started in time, try $H again.
    4. If the coaster does not run smoothly you might need to sand the track a little.
  16. After a successful homing, send G1 X0 Y0 F400
    1. The machine should move so the laser is over the lower left corner of the coaster.
  17. Send G28 to eject the coaster. Remove it completely from the machine.
  18. Close the door and screw it shut.
  19. Turn on the laser with the push button. You should hear the fans turn on, but the laser should not fire.
  20. You will now test fire the laser. You only want to test fire it for a should period of time at low power.  Send the following commands. While the power will be low, do not leave it on for more than a second or 2.
    1. $X (this will make should the machine is not in alarm mode)
    2. G91 (this will allow you to move it in incremental mode)
    3. S10 (This will set the beam power to 1%. Full power is S1000)
    4. G1 X3 F400 (This will move the laser 3mm to the right. The primary purpose is to put the controller into g1 mode where we can turn on the laser)
    5. M3 (should turn on the laser. It will not be very bright.
    6. M5 (turn it off)
  21. Assuming all tests passed, the machine should be ready to use.

Fixing motor direction Errors

The easiest way to fix direction errors is to rotate the connector for the problem motor by 180°. The upper motor is for the X (the laser carriage) and the lower motor moves the coaster.

Rev 2.0 PCB Issues

  • There was one mistake on the PCB due to net naming issue. The 12V input did not get connected to the 12V to 5V DC power supply.  A small rework wire has been added on the back side of the PCB.

Source Files

Use Instructions

See this blog post … [Coming Soon]

If you want to be notified of future blog posts, please subscribe.

Share and Enjoy:
  • Print
  • Digg
  • StumbleUpon
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks

14 Responses to “Coasty Controller Setup and Use Instructions”

  1. Bob

    I would like to buy one of your extra controllers.

  2. Bob

    Thank you, Bart, for taking the time to write up these instructions, and for offering Coasty as an open source build. I greatly appreciate it!!

    I assume these are forthcoming also, but will be CAD files for the chassis be made available as well?

  3. Bob

    Leaving this link here for a 12V 5A PSU in case anyone needs it:

    (Please let me know if this isn’t compatible with the controller)

    I went for a $13 PSU that is UL Listed, but I did find others on Amazon for a couple bucks cheaper that aren’t.

  4. Bob

    Any recommended make and model info for the stepper motors themselves, by chance?

  5. Kevin O

    I’ll buy a board if they are still available. Fabulous project. Thanks for all tour brilliant work!

  6. bdring

    Update: They are now for sale. See the blog post for a link

  7. Bob

    Bart — While I await my 3D printed parts, I thought I’d check the PCB source files you so graciously provided to make sure I could get a replacement controller printed on my own if I ever needed to do so. is telling me:

    “The board does not contain outer bounds. It can’t be manufactured like this. The outer bounds should be on the dimensions (EAGLE) or Edge.Cuts (KiCad) layer.”

    Here’s the link if you’d like to take a look:

    It renders the other gbr files just fine, and that appears to be the only missing piece. Help?

  8. bdring

    Oops, sorry about that.

    It looks like I left out the outline gerber. I updated the zip file. Please download it again.

  9. Bob

    I tried uploading the new file that includes the outline but Aisler doesn’t align them properly. Do you think that might just be a problem with Aisler’s parsing of the files?

    You can see what I mean here:

  10. Bob

    Hi Bart,

    My life finally slowed down enough to allow me to assemble my Coasty. I have some assembly feedback notes I’ll email you, but during testing, I’m running into an Alarm: 9 when trying to issue a G28 to eject the coaster. Not sure why, and the docs don’t appear to contain a list of Alarm codes with corresponding troubleshooting tips. Might you be able to write something up, or at least assist me with this Alarm: 9?

    The coaster feeds in fine, it just doesn’t eject it when commanded.

    Thanks in advance!

  11. Bob

    Slight correction. It doesn’t say alarm: 9, it says error:9. Sorry for any confusion.

  12. bdring

    Error 9 means gcode processing is locked due to alarm mode.

    Check if it is in alarm mode and if there is an alarm reason before sending G28.

    We need to figure out why it is in alarm mode.

  13. Bob

    Ahh thanks. I figured out the likely cause… my pulley didn’t come with a set screw, and I thought I’d actually tightened it. Turns out I don’t actually have any spares laying around, so a fresh set is on order and will arrive in the next day or two.

    I’m getting the alarm because my X axis can’t move, so it times out waiting for the end stop to trigger.

    While we’re waiting though, I’m noticing that when I move the X axis by hand that the action is quite stiff and it feels like it requires slightly more pressure to move than it should. I may just be fighting the motor, but I suspect I’m not. The pulleys appear to be aligned okay, and my motor is positioned in the closest possible position to the chassis, there is no slack but it doesn’t feel egregiously tight either.

    Do you traditionally lubricate linear rods? I have some white lithium grease for my 3D printer’s Z axis leadscrew, but I didn’t want to chance trying it without asking first. The firm motion here might just be normal, after all. 🙂


    PS: I’ll update again once I get the setscrew installed and I’ve retested.

  14. Bob

    Okay. Good news and bad news. Good news is, my set screws arrived, I got it installed fine, and that solved my problems. Bad news is, even though power is running to my laser module (the fan spins up and down when the lid switch is toggled), my laser isn’t firing. Not sure why, or how to troubleshoot. Thoughts?