HAL2Arduino 0.3 released.

Ok, per popular request I have uploaded the initial framework release of HAL2Arduino. I have a busy semester and my time is tight right now. It’s not going to run anything out of the box except until you mod it.

There is no readme file no doc’s just raw code. Play with it at your own risk!

You can read more about it here and download it here.

Finally, just to be clear… This code won’t run a CNC machine as is. It’s just a wiring breakout interface to expose LinuxCNC’s HAL interface pins to an Arduino. So one may easily add there own Arduino code to make or add on to an existing CNC machine.

Teachers, this would be a challenging project for students as the actual “make it move code” will need to be entered by the students.

Hack it, Branch it, Share it.


9 Responses to HAL2Arduino 0.3 released.

  1. DonaldVH says:


    I have taken a brief look over the different architectural blocks, first thing that comes to mind is : major overhaul comparing to emc2aruidno (I was just getting used to the flat structure 😉 !

    I like the part where the communication has a basic form of data resending in ‘HAL2Arduino_0_1_base.ino’ by adding all values of a command, such that it re-requests data when the sum of rx data 0,1,2 should equal also rx data 3…

    I am kind of confused how the multi arduino part would work multiple physical instances of arduinos at this glance of looking at the code. At the moment I believe the ino files are now meant for 1 arduino, but because of the splitting up of parts more generically the possibility to split it up is easier comparing to 0.7b.

    For now I am building my machine / ball screws, so will first try to get around actually milling something ( as 0.7b supports homing + limit switches).

    I do have the ramps1.4 board + lcd so eventually I will be moving to HAL2ARDUINO.

    I have to re-ask the following question : – on your end – did you use (physical)
    – and min limit switch
    – and home switch
    – and max limit switch
    –> the reason I ask is :
    Trying to map your setup you have been testing so far is for me difficult to picture in my mind.
    I do can appreciate linuxcnc providing the ‘http://www.linuxcnc.org/docs/html/common/User_Concepts.html’ @ the bottom picture.
    Before I started trying emc2arduino I didnt even know what a ball screw was, but the best way to learn is to either have a good wall to smash the forehead upon and reference pictures / work. Just saying…

    I am a dad with a wife and 2 kids, and too many hobbies (to try to forget the 1.5year and 3year old kids once in a while), if you don’t mind I will test what I can and feedback what I see when I establish a time window to be able to look into stuff, like now.

    In the mean time, thanks already for all your effort and making your code available. In the end it is a hackers job, a required one, to tune it to the machine @ hand, so happy hacking!

    • dewy721 says:

      : Like I mentioned, its just a bare protocol, I plan on keeping a maintained (but still bare) protocol around so others can build it up just as they like it. It makes life easier for modders to update their branches/builds.
      If any modders read this, I WANT YOUR MODS, SEND THEM TO ME! The best ones I will be happy add to the latest releases. Perhaps I’ll setup a mod library for HAL2Arduino.

      Multiple Arduinos are supported on the server side. Have a look into the aahal7.py HAL2Arduino-###.py file. It creates a separate thread (and connection) for each Arduino then creates a message pool and thus effectively a messaging bus.

        EMC2Arduino 0.7b (My personal config)

      : I used physical Min switches for X and Y, virtual for everything else. All I have is an old plotter at the moment so I can’t actually crash my Z axis, so that I set as a virtual.

      Good luck with it. My plotter’s Z-axis won’t crash, but an actual CNC could without it.

      Now go play with the kids! They will be all grown up before you know what hits you. [Like a long lost Wife, needing some extra help.] 😉

      Have fun.

      On Sat, Jan 19, 2013 at 12:24 PM, Emc2Arduino

  2. robtp says:


    Really like your effort!!!!
    I am adding an extruder to my mill and want to use hal2arduino to control/set temperatures.
    Got your configuration set up for testing, but getting errors back:
    – it finds my arduino, connects, creates the pins, command handler starts
    – seems it that a custompanel.xml is missing: IOError:[Error 2] no such file or directory: ‘custompanel.xml’

    Can you help/advise?

    • dewy721 says:

      HAL2Arduino doesn’t make any calls for a “custompanel.xml” or any .xml for that matter.

      Rather it just consists of a background python script (on the computer side) and a small handful of sketches on the Arduino side.

      LinuxCNC runs the python script prior to opening the GUI. However, the GUI often makes use of .xml files to draw custom control panels and applets and such.

      Take a look at the my-mill.ini file.
      Change PYVCP = custompanel.xml
      to #PYVCP = custompanel.xml

  3. robtp says:


    The above is actually happening when LinuxCNC tries to start DISPLAY axis.
    It reports: wating for s.axes (7 times) and shuts down LinuxCNC

  4. robtp says:

    Missed that one and neeeded to also comment out the POSTGUI_HALFILE.

  5. Nila says:

    Thanks for sharing your thoughts on CNC machine operator training.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: