Category Archives: blog

Laser cutter continued … (PT2.)

This is probably going to end up being as long as my first rant on the laser cutter, if you’re considering buying one or having problems with overheating MOSFETs, tuning your motors or just a long rant about getting to a comfortable functional state, you’ll probably want to read that first.

So not much has changed since I last updated the previous article, the laser cutter is working well, I’ve cut a few more adventurous objects this week and done plenty of engraving. also cut two mounting plates for the relay board and the control board both of which I’ll add to the downloads page when I get chance. I’ve been running a mix of hatching jobs figuring out what works well and how to produce tones using the relay board. Cutting needs refining, currently running between 175-200mm/s cut rate and 35 to 40 passes (4mm ply), Engraving is also working well running at 1000mm/s with a single pass works very well with wood, still yet to test any plastics, but pleased to say I’ve got some primitive extraction sorted. (120mm extraction hose and 12v fan mounted inside.)  Whilst this works surprisingly well currently, when I make an enclosure, I’m pretty sure the fan will be 100% effective (which is a very good thing :0D ).

The new control board has arrived, it features a much bigger transistor (F540NS), the board is much more capable than the last, with a lot of IO, support for x / y / z limit switches, x / y / z motor support each axis has independent drivers. The arduino nano is opto isolated from the twelve volt supply and the circuit board is black, which yes looks nice, but makes it remarkably more difficult to follow the traces, maybe that’s just me? There’s also an i2c header and support for reset / abort and hold switches. Everything else is rather self explanatory four connections for the motors, two terminal blocks one for the twelve volt supply the other for a fan / laser, complete with matching JST sockets.

There are four connections on the board I’m currently unable to identify S_EN (which I think is spindle enable.) DIR (Spindle direction?) and C_EN (not sure) and E_S (emergency stop?)  These aren’t that important at the moment, but they’d be nice to know.

Procrastinating a little, I’ve grown quite fond of the current set up.

Plus what little documentation I’ve located (and translated images + text) it would appear (i hope) that the board supports lasers up to 10w, but recommends installing benbox (argh nope), this may however indicate the PCB is 100% GRBL compatible (meaning all the settings and configuration I have will work 1st time or … I’m back to square one.). I’m not going to flash the included board just in case  I need to revert to for some reason. Meh.

Less procrastination more action, as long as I don’t damage the laser or motors I can always revert to my current set up. Time for a hot beverage and then some cable swappage.

BTW. I’m sitting here writing this whilst the storm is raging outside.

This tea however is fantastic.

Progress!!! GRBL working! Motors working! More tea needed before I test the laser. Taking this opportunity to flash the device and update all the default GRBL settings to my preferred defaults. NB: The settings are contained in c:\users\uname\Documents\Arduino\libraries\grbl\defaults.h

My current settings are as follows …

#define DEFAULT_X_MAX_RATE 6000.0 // mm/min
#define DEFAULT_Y_MAX_RATE 6000.0 // mm/min
#define DEFAULT_Z_MAX_RATE 6000.0 // mm/min
#define DEFAULT_X_ACCELERATION 75.0 // 10*60*60 mm/min^2 = 10 mm/sec^2
#define DEFAULT_Y_ACCELERATION 75.0 // 10*60*60 mm/min^2 = 10 mm/sec^2
#define DEFAULT_Z_ACCELERATION 75.0 // 10*60*60 mm/min^2 = 10 mm/sec^2
#define DEFAULT_X_MAX_TRAVEL 600.0 // mm NOTE: Must be a positive value.
#define DEFAULT_Y_MAX_TRAVEL 500.0 // mm NOTE: Must be a positive value.
#define DEFAULT_Z_MAX_TRAVEL 100.0 // mm NOTE: Must be a positive value.
#define DEFAULT_SPINDLE_RPM_MAX 1000.0 // rpm
#define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm
#define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled)
#define DEFAULT_STATUS_REPORT_MASK 1 // MPos enabled
#define DEFAULT_ARC_TOLERANCE 0.02 // mm
#define DEFAULT_REPORT_INCHES 0 // false
#define DEFAULT_INVERT_ST_ENABLE 0 // false
#define DEFAULT_INVERT_LIMIT_PINS 0 // false
#define DEFAULT_SOFT_LIMIT_ENABLE 0 // false
#define DEFAULT_HARD_LIMIT_ENABLE 0 // false
#define DEFAULT_INVERT_PROBE_PIN 0 // false
#define DEFAULT_LASER_MODE 1 // enable
#define DEFAULT_HOMING_ENABLE 0 // false
#define DEFAULT_HOMING_DIR_MASK 0 // move positive dir
#define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min
#define DEFAULT_HOMING_SEEK_RATE 1000.0 // mm/min
#define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
#define DEFAULT_HOMING_PULLOFF 1.0 // mm

Well currently I’m ecstatic the 540N / new control board is doing a great job, the laser currently works using MOSFET when performing line drawings with the gate fully open. I’m just looking for a bitmap to start some rastering tests. Running some more line drawings and hatching then on to some raster work, all systems nominal, everything is running beautifully so far. (fingers crossed.)

Sleep was needed will pick this back up in an hour or so need to sort a few orders out and tidy my space.

Rastering results so far, it works, but, to get the laser down to an acceptable power, without the MOSFET getting ridiculously hot, I’m having to defocus the laser, which in turn causes fidelity issues with the final burn. So … more testing will report back soon.

Observations, I think this time around the MOSFET under rastering is getting too hot because of the 8khz PWM rate, I’m not really able to generate a good range of colours when rastering unless the image is just black and white not grey scale. The 8khz PWM rate (I think) is having an effect on the amount of operations per second the arduino is processing. So going to reflash the existing firmware but try the default PWM setting and a few more raster operations.

To change the PWM rate you need to edit cpumap.h
Earlier in this guide I tried to change the PWM rate to 8khz, which didn’t have the desired effect so I’m just changing it back to GRBLs default which is 0.98khz

That section of my file currently looks like this …
// Prescaled, 8-bit Fast PWM mode.
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // Configures fast PWM mode.
// #define SPINDLE_TCCRB_INIT_MASK (1<<CS20) // Disable prescaler -> 62.5kHz
// #define SPINDLE_TCCRB_INIT_MASK (1<<CS21) // 1/8 prescaler -> 7.8kHz (Used in v0.9)
// #define SPINDLE_TCCRB_INIT_MASK ((1<<CS21) | (1<<CS20)) // 1/32 prescaler -> 1.96kHz
#define SPINDLE_TCCRB_INIT_MASK (1<<CS22) // 1/64 prescaler -> 0.98kHz (J-tech laser)

So altering the PWM rate has had an effect on the speed off the rastering operation but similarly still having issues with temperature and unable to get a good range of colours without the MOSFET getting too hot.

Altered the GRBL x/y/z acceleration value to 75 on the control board with no noticeable negative effects on the motor drivers.

Will update this blog article as I go as I know a lot of people are having similar problems.

18/01/2018 – Adding pictures.

‘Mastering’ inkscape for makers …

Things you should know. These are a few tips I’ve learnt from the last twelve months of using inkscape on a daily basis. Practically every piece of art work I process using open source / free software. Mainly Inkscape, sometimes GIMP, sometimes Scribus and laugh all you like mspaint.exe, useful when I quickly need to crop or annotate an image.

Before you rage quit my article and storm off muttering under your breath ‘what a newb! WTF is he going on about.’ … well I started out using Hardvard Graphics in dos and Deluxe Paint on the Amiga, when I upgraded to windows (3.0/3.11) I moved to Corel graphics v3.0 for scanning, tracing images and compositing etc. (I can still to this day remember the evening I got the disk, bought an official copy second hand. This was before the age of CD writers and copied CDs weren’t easily available, this came with all the official documentation, manuals and the clip art book!!) Mid-nineties I took a bespoke course taught at local university on web design (the first of its kind in the country.) which was really what started my interest in design work, the internet and programming, the lecturer introduced me to Macromedia (awesome company that Adobe practically consumed and now lives off its glory, not to mention they absolutely ruined the nice simple / low overhead / easily navigable interface.) So I spent many years working with Macromedia products, Dreamweaver, Fireworks, Flash and Director. I’ve worked extensively with 3D Studio Max, Maya, Truespace and still use Blender (but not as much as I should do.) Had a brief experience with Solidworks, spent many hours using Autocad making files for water jet cutting. Down to specialist bespoke product design software, aimed at manufacture (I’ll post a link later the name escapes me at the moment). I’ve also a degree in design and applied arts, spent over 20 years in the IT / digital graphics world and the last five years of my working life programming robots. Right less about me waffling on about old software, I’ve used a lot of packages, you might notice I’ve neglected one, yes I have used Photoshop for many projects / years, at one point it was my go to design program (probably around version 6) especially useful for digital composition and photo manipulation, but, I’m going to say it, bloated to hell and the most over-rated design tool out there. If Oracle made design software it would probably be called Photoshop. I’ll save that for another post. The above is merely scraping the surface.

So now you have a little background on some of my software experience, I hope you might listen a little more intently. Inkscape is a fantastic tool. Firstly it’s 100% free. (Really dude you’re starting here … YUP) This is for makers. Makers are usually on tight budgets / constraints so its important to consider this. 100% free no cost, no subscription, no hidden code, no shady CEO milking your bank account. All updates 100% free. Available 100% of the time to run on older hardware than the kind of pc you need to handle the amount of bloat that Photoshop / Illustrator rolls with. Inkscape takes up less resources and memory than most design packages / ‘solutions’. Means you can do more faster with older hardware. (I promise that’s my last dig at Adobe.)

Inkscape is also cross platform, meaning it really doesn’t matter what hardware you’re running it on you’re always presented with a familiar interface. Which is really handy if you’re a maker, you might require a specific vector file format for a project on a linux / windows / osx box, Inkscape is only one trusted download away. No cracks, keygens, viruses / malware. If you’re really paranoid you can build from source or checksum the download.

The program itself is open source but also allows users to independently develop plugins via a well documented API. Python the language of the maker, free, open source and right now, there’s an incredible amount of python development going on, meaning modules plugins and code is pretty much readily available all over the web. Inkscape also supports Perl, the language of the internet and regular expressions. Advanced programmers are encouraged to implement their plugins natively in c++. If there’s some kind of graphical automation you require its likely Inkscape will be able to provide or give you the grounds to develop your own solution.
Click here to learn how to create your own plugins.more about pythonmore about perl,

Existing plugins? Yes there’s a lot, because there’s already a large user base for the package. Many that help extend the programs functionality from simply a graphics program to a production tool or service. Examples? One that immediately springs to mind is the laser cut tabbed box designer plugin. Not only useful for producing your own tabbed boxes but these boxes are extremely popular on auction sites. Makers and crafts people are buying them by the bucket full for their own projects. A few clicks and numbers to set the dimensions and amount of compartments you require, something that would manually take quite a while to produce. There are plugin’s for HPGL plotters, 3D printers, gcode senders, jigsaw creators, all great plugins for makers.
Click here to browse the full list of plugins on the inkscape site.

I’ve talked about how great the software is and the plugins but you came here for useful tips.

Continue reading

Uncovering the biggest scam in modern history … printer cartridges.

I’d never really paid much attention to printing or print materials till early this year, never had a need to print much out. Since starting out with the plotter I get some requests, a lot of which I have to turn down for labels and printed contour cut stickers, which is really annoying. The entry level for UV / solvent based printers is still rather high, a basic printer will set you back anything from £3k to around £5k depending if you just require a solvent printer or one with a contour cutting head. The latest and greatest roland cutter/printer could set you back as much as £24-28k. Maybe I’m understating what these machines are capable of ie. the above machine will print photo quality 6ft+ wide and has an incorporated cutting head for printing and cutting stickers options include take up rollers on the front of the machine etc. absolutely amazing machines but way out of my price range.

Saving my pennies till I can afford a decent solvent printer cutter combo. (Yes im aware there are some workarounds, but the longevity of inkjet printing and water proofing / UV protecting the stickers is rather and involved process something I could mitigate all together with a better printer, unfortunately the solvent inks are far to aggressive to attempt modifying an existing inkjet.)

I had a few old inkjet printers knocking about so thought I’d attempt restoring them to working order whilst having a play around with inks and refilling the old cartridges. Simple, obviously I just put more ink in the cartridges and place them back in the printer and continue to print putting some old hardware to good use.

Well that’s how I thought it worked. NOPE.

Continue reading

The &%$%ing laser cutter …

Yup, I bought a cheap Chinese laser cutter, not a CO2 one but a diode based banggood/A3 clone (5.5 watts 50x60cm bed). It seemed like such a good idea at the time. I couldn’t sleep knowing I’d finally got my hands on something I could use to create physical objects from work on the computer. I could use the laser cutter to build a simple CNC machine and expand my range of products. We’ll that’s what I thought.

Continue reading

OMG It’s been too long …

10 minutes after surgery.

So you lot its been way too long, let me just bring you up to speed, in May this year I had a pretty big operation on one of my kidneys (a problem that I’ve had since I was sixteen). This put me completely out of action for at least twelve weeks. If there’s anything I learned from the whole experience it’s to stay the term in hospital until you’re one hundred percent recovered and avoid MMORPGs like the plague. I checked out two days after the operation and was not in the best of states and very uncomfortable. (Skipping out all the gross/disgusting/painful details.)  I spent the twelve weeks recovering playing a stupid game on the internet that im not going to mention either. So all this in the first year I’m trying to start a business. Meh. I don’t feel guilty at all for sessioning on a computer game, there wasn’t much I could do apart from sit in the most (un)comfortable position I could muster and pass the time till I felt better. Gradually I recovered and managed to start getting back to business. I didn’t list any sales in May so basically missed a whole month of trading, this put me behind a little and also gave the motivation to start improving monthly on my production and sales, things still aren’t brilliant but month on month things are getting better.

So what’s this thing I’ve been doing? Since early this year I started a business making vinyl sticker, signs and fitting shop windows / car decals / graphics. Every project / sticker I’ve produced has been created from scratch, no auto-trace, manually drawn and produced as vector files (SVG format / DXF), the learning curve for the vinyl cutter I’d expected to be pretty simple as there’s not much to the machine but as I discovered there are a lot of variables and techniques when working with the materials to give the best results. Small settings that are sometimes overlooked and techniques and skills you can only learn from practice and understanding the material you’re working with, what it’s capable of and what it is not. What design considerations you must make prior to production based on material and size. Knowing your machine, when its functioning correctly and when it’s not. Over the last ten months or so, I’ve learnt a hell of a lot to do with signage and sign making.

Ill save the rest for another post b/c I think it deserves it and have a feeling the next topic is going to be some what revisited over the next twelve months.

Hakology Blog (D90) – Things and stuff …

Well first of all happy new year to all! … Today marks the start of a new journey for me, I quit my last job in September last year, I needed a change something new, over the last three months I’ve been gathering all the tools to upcycle old objects, make old new again etc. I’ll hopefully get chance to start incorporating bigger projects in the vblog and you lot will see my mini workshop! Still have a lot of work to do, I’ll write another blog when I have some free time. Once again happy new year and have fun hacking!

Hakology – How to grab openweathermap data using python.

I’ve been playing with the openweathermap api thought i’d share a little code, the following pulls the json and constructs a string containing the location, temp, tax temp, min temp and humidity. You will need to sign up for an API key and free user account 1st. The free account at the time of writing this allows 50k calls a day so if you’re writing for a small personal project 50k calls should be fine.

Copy the code below to a file

chmod the file if needed …
sudo chmod +x

run the file using …

import requests
r = requests.get('')
data = r.json()
mystring = ""
mystring = mystring + data['city']['name'] + " "
mystring = mystring + "Temp:" + str(int(data['list'][0]['main']['temp'] - 273.15)) + "C "
mystring = mystring + "Max:" + str(int(data['list'][0]['main']['temp_max'] - 273.15)) + "C "
mystring = mystring + "Min:" + str(int(data['list'][0]['main']['temp_min'] - 273.15)) + "C "
mystring = mystring + "Hum:" + str(data['list'][0]['main']['humidity']) + "% "
print mystring

Click here to download the file.

Hakology Day 82: Digistump … rickroll all the things.

Well merry crimbo, I hope you had a great day whatever you spent it doing. So i’ve been really busy the last few weeks but I’m starting to have a little more free time now … and thought I’d take this chance to start writing up a little code and project for the digistump.

What is a digistump?

A digistump is a small USB development board that emulates a HID (Human interface device (Usually a keyboard or mouse but there are other variants)). The digistump allows the user to flash up to 6k of code to the device which when plugged in to a computer after programming will execute the code on the device as if it were a keyboard and/or mouse.

Why would I use one?

Its very handy for automating small tasks such as downloading a file and running an install or just editing settings on the pc that remain consistent across operating systems. eg. You could use the digistump to run a command in the command window or run a specific application with certain options automatically. All you need to do is plug the device in after programming and it will start executing the pre-programmed keypresses.

What operating systems does it support?
The digistump is cross-platform this doesnt mean one script works for all operating systems. This means the device is capable of running and executing code on Win/Linux/Mac but due to difference across the various operating systems scripts would need to be customised for each. The digistump has no way of reading data or accepting any feedback from the PC it just blindly presses keys. Your scripts will rely heavily on intelligent timing. Some commands will execute and finish on modern PCs faster than they would on older hardware, this has to be taken in to consideration when writing code.

Where can I get one?
The digistump is available from you can also find them available on ebay and similar sites. I bought mine from ebay for £1.50 each which is a tiny amount when compared to similar devices.

The install procedure is pretty straight forward, download arduino IDE, install drivers and add digistump examples and templates. Which is all detailed on this page here … Getting started with the digistump
The setup is relatively straight forward.

So why am I reading all of this?

Well b/c the digistump is a relatively new product there’s not a lot of reference material on the internet so I started developing a small framework to make it easy to deploy and develop code very quickly. I’ve been busy working on my first little project for the device and right of passage to rick roll any windows 7 users. Although this project is a harmless bit of fun it’s helping me to develop a lot of standardised functions for running applications, opening web pages creating and saving files.

Rickroll notes …
I spent the first few nights tearing my hair out with this device. Here are some of the issues I encountered and how I mitigated them or formed some workarounds.

The first major issue I had was the backslash. The digistump by default outputs US scancodes, as I live in the UK this was an issue. So after much googling and head scratching I figured out that the scancode for the backslash on a UK keyboard was 0x64 yet the digistump was sending 0x31 the US scancode for the backslash.

Whilst I couldn’t figure out where the digistump library resided on the PC I wrote a small function to swap out the 0x31 for 0x64 which seems to have remedied my backslash issues. This is not the correct way to do things.

Eventually I found the library location last night (c:\Users\Username\arduino15\… ). I’m still yet to look through the code and figure out a conversion table for 101(UK en-gb 32) keyboards. Given a little more time I’ll get this fixed and not have to use any functions for string processing.

Another related problem was the saving of files using the %USERPROFILE% environment variable. Full filenames containing this variable were not being parsed properly ie. the environment variable was being read as %USERPROFILE% and not the actual users name. To mitigate this I broke the file string down in to sections and type each part of the save file string in separately. ie. C:\ [ENTER] Users\ [ENTER] %USERPROFILE%\ [ENTER] etc which allowed me to use the %USERPROFILE% variable when saving files.

I’m not going to upload all the code yet as its still messy and I have some functions that need more calling parameters adding so if I released the code now it’ll probably change before the final release and I want everything nice and polished before I release everything.

A great big shout to advancednewbie who’s been working on a special script for the digistump (More on that very soon.) his research and project helped me greatly in trying to figure out the key mappings for most default buttons and some of the UK differences. Given some more time im sure we’ll have this working seamlessly between countries and keyboard layouts.

Even though these issues don’t directly relate to the rickroll project I thought I’d include them just in case anyone else is having similar issues.

Download digispark digistump stumpyroll source code

Hakology Day 55 : Blog Entry

Quick blog, had a nice weekend relaxing, I’m going to be busy over the next few weeks starting up a new business so videos, projects and code will be a little thin on the ground. I’ll try my best to keep you up to date with progress and hopefully everything will tie in together nicely. BBS hakologists.

Hakology Day 52 : Blog entry

Finally finished putting it all together …

I have my lounge back in order now, have moved the unit to my landing, still not tested but everything is ready to go just waiting for a couple of friends to come and help me move it downstairs. Oh and its Friday so im going to take a few hours off from the hacking spree.