Enclosures and a joystick

Hello everyone,

here are some news for you – fresh and hot!

Acrylic enclosures for the miniEngines

The first news is that Sascha Henke worked hard the last months to be able to provide nice looking enclosures for the miniEngines. The material will be acrylic glass – more precisely Lexan for easy customizations (e.h. drilling extra holes) if needed. His shop is online now and you can order them here: http://shop.epsh.de

I helped a little bit with the development and am also selling these enclosures for the miniEngine v1: shop.airiclenz.com
The ones for v2 will probably follow later.


3D Joystick maybe?

I also started working on some other possible features for the v3. The final product is still far away but I thought you might be interested in some of the development steps.


I bought a Nintendo Wii Nunchuck and will start experimenting with it as a possible 3D joystick. These things are dirt cheap (around 10€ on eBay) and thus a good and simple solution if they turn out to be usable. As this controller has a proprietary connector I thought I can simply use the PCB itself as socket. The test PCBs for verifying this arrived today so that I can start prototyping.


You’ll hear about the test result and other updates in later posts.


Update on the next v2 release

Hello everyone,

I just committed the current development state to GitHub. This is not yet the next release but contains a lot of bugfixes and also new features.

miniEngine v2 Update

You’ll find the software here: https://github.com/airiclenz/miniEngine2
The following changes are already included in this pre-release:

  • Bouncing functionality which allows to loop the moves in Video mode.
  • Multiple Language support. You can now add your own language to the system. German is already included in this update (Thank you Sascha Henke!)
  • Added Camera Focus feature to allow a separate focus phase before the exposure phase.
  • Fixed a bug that caused prevented correct saving of the settings to the SD card.
  • Basic Daisy-Chaining functionality is already included but not all features are in there yet.

In case you want to test this pre release, don’t forget to update the libraries as well! If you find bugs or error, please let me know. The final release will be ready in a week or two.

miniEngine v1 Release 1.2

I also released a new version of the version 1. It is just a minor update but it includes some improvements regarding the motor speeds. The miniEngine v1 is from now on hosted on GitHub:



White screens and an update

Hello everyone,

this a the first update in a long time. For those of you wondering why – I needed a little distance from the software development to gather new energy (this does not mean that nothing happened but see for yourself…)! It’s as simple as that. What matters most is that I am currently working on the next release and also have some other great news so let’s get to it!

White screen issue

The white screen issue was solved – finally. As it turns out, there was an update on the hardware of display which is used for the miniEngine version 2. This update was done without any recognizable information to the public (thanks for that ITEAD!). This basically meant that they updated the hardware of the display without updating the documentation. The new display uses a new driver chip and this is was what causes the white screens. I guess ITEAD produces the displays with the driver chip that is available very moment without worrying about their customers… Here is the result.

White screen issue

Anyways, here is how you fix the white screen issue – Open your miniEngine v2 code and change the lines 319 and following in the file miniEngine2.ino

// Display: 

to this one:

// Display: 
UTFT tft(TFT01_24_16, PIN_TFT_RS, 

Upload the new software and you should have a working miniEngine!

Next software release

The next release is in the works and will be published within the next 30 something days. This release will bring the following two major updates:

  • Bouncing functionality that will repeat a shot in reverse direction until one presses the START / STOP button to abort it.
  • Daisy chaining – You will be able to connect multiple miniEngine v2. One will be the master and control the connected clients. This will allow you to add more axes to your move or shoot simultaneously from different angles with 2 or more cameras.

Version 3

some time ago I started working on the next version. That included gathering ideas and requirements for a “next level” miniEngine and sorting all of that. I started developing the hardware and so some fist hardware prototypes are being tested by me to make sure that the final miniEngine works as flawlessly as possible. Here is a photo of a little 4-layer test PCB that was tested recently.

v3 prototype 1

This next version version will be entirely surface-mount-technology (SMT / SMD) and readily assembled so that there is no (or almost no) need to solder. It will support 3 instead of 2 motors and most likely have another display than the current version 2 (for obvious reasons 😉 ).


Update to version 2 beta 6 (stability update)

Hello everyone,

here comes an update that fixes quite a lot of bugs and brings some new features as well. As version 2 beta 5 was a bit flakey, I spent about a week dedicated to debugging for finding as many errors as possible. Well I succeeded and found some that were pretty nasty (e.g. buffer overflows). This release will be a lot more stable than the previous one and hopefully satisfy all of you.

Other than that I improved the overall performance of the system. Ad-hoc moves (like moves to the home position or all moves during SMS shots) are now smoother and more consistent in their behavior. I also added a new feature that lets you set your motor calibration from the miniEngine Studio. The new version of the Studio will be released in the coming days.

There are also 3 new features in this release which I implemented after some longer test-tours. These are the ones that I missed the most out in the field and decided to just add them:

Timelapse Preview

This was the feature that I wanted so much. Now you can run a Preview with which you will see the camera move as it will look like after the timelapse-video is fully rendered. It basically just speeds up the original move so that the total duration equals your playback-time. It can be started from the pop-up menu (which now can also be started via a long press of the menu-button).

Set Start / Stop point

These two functions were also added to the pop-up menu. now you can move your motors to your start-position and simply select the function “Set Start” for defining where to begin. Then you can move all your motors to the end-position to define where your move should end. Then simply select “Set End” and the parameters move-distance and direction are set automatically.

Max Speed Check

The system now precisely determines the max speed of any move to be done and checks it against the defined max speeds of the motors. If a defined move exceeds the max-speed limit, the move will not be executed and a warning will be displayed. If you are 100% sure what you do, you can disable it in the motor settings.


I also developed an enclosure for the miniEngine v2 which can be 3D printed on even the smallest printers. It is build up from 4 separately printable parts (plus the buttons) and assembles like this:


It was designed using Google Sketchup and all files are now in the repository as well.


I also added the Acrylic-Enclosure from Eddy Hasby (thank you for developing and sharing this wonderful enclosure!!) which can be build via Laser-cutting. The files are in the Repository and here is a link to the forum thread as well: http://forum.airiclenz.com/showthread.php?tid=6675

When you update to this release, don’t forget to update the libraries as well!

Here is a detailed list of all the changes:

  • fixed a bug that causes the initial move in SMS to be wrong
  • fixed a bug in the painting routines that sometimes caused memory overflows
  • fixed some bugs in the core motor routines that under some conditions caused instable behavior
  • added core functions for analyzing the curves max speed
  • added warning and abort if the motor-max-speed for a started action exceeds the defined limits
  • activating the pop-up menu now also on a menu-button long-press
  • added new pop-up menu functionalities:
    • Set start – Defines the new start position for a move (equals “set home for all motors”. This updates move-distance as well as move direction)
    • Set End – Defines the new end position for a move (updates move-distance as well as move direction)
    • Preview – Runs the timelapse setup with real-speed (with preview duration = playback time) to get a feeling for the planned moves.
  • Increased Uplink functionality (for new minEngine Studio features)
  • changed edit-granularity for the option “record time” to 1 second for all values below 1 minute
  • changed the FPS setting to be settable to any value between 1 and 255
  • optimized code for ad-hoc curve generation (e.g. one move in SMS; move to home) for smoother moves and more consistent behavior)


Update to version 2.0.5 beta

Here it is – the next release – packed with new features and functionalities. The biggest is surely the all new Windows client (with its final name) miniEngine Studio!

miniE Studio splash

The new miniEngine Studio can be found on GitHub: https://github.com/airiclenz/miniEngineStudio

The miniEngine software is also on GitHub: https://github.com/airiclenz/miniEngine2

Here is a list of all major updates and changes to the system:

  • Added the minEngine Studio
  • Added minEngine functions for the the minEngine Studio software
  • Added new “Keyframes Mode” which is dedicated to (currently) only work together with the miniEngine Studio
  • Added a function that updates settings to the new version during a software update (no configuration gets lost any longer)
  • Improved dashboards to show only relevant data
  • Improved settings menu-header
  • Optimized system modes and run styles for easier use
  • Fixed a bug where the motor was not moving when motor sleep was enabled
  • Fixed a bug that not saved the keep powered status.


The new Windows client has no documentation yet but should be pretty self explanatory as all button have a tooltip to guide you as much as possible. I also tried to make the user interface as clean and straight-forward as possible. If anyone of you still is not able to figure out how it works, please contact me via the forum. I will help you as good as I can to make it work together with your miniEngine!

If you have any suggestions or find bugs, please let me know. This is the very first release and there is surely lots of space for improvements!

…but mainly I just hope it is of any use for you guys!

miniE Stusio mainForm

Here are some limitations to the functionality which I am aware of:

  • The defined curves can not yet be stored on the miniEngine. After a reboot everything is gone and needs to be sent to the miniEngine again (this will surely some later).
  • The communication between the Studio and and miniEngine might not work 100% in any case. If something is not working, try pressing the button again.
  • The system is not yet “water-proof” and might have some unexpected behavior. I highly recommend using it with care, common sense and limit switches to not destroy your hardware.
  • It does not work together with the miniEngine v1.


I also added a big portion to the documentation which should explains the system-assembly in much more detail.

Link to the documentation….

Have fun with the new stuff!



path Designer

Hello everyone,

I want to let you know what the current status fo the project is and on what I am working on. So let’s get started…

path Designer

The major development that is ongoing right now is a Windows based client software for editing and testing Bézier-based curves – in other words: you’ll have full control over all axes and thus will be able to define when your motors should be where. The software will connect to your miniEngine via the USB port. The curve / graph editor is basically done and it is already possible to create, save and load setups. Even the basic communication with the Arduino is working.

Here is a screenshot of the client in its current development state:


In the screenshot above you can see a setup with 2 axes (the second axis is the gray one in the background). The currently selected axis is using just 2 curve-segments (see below for an explanation what a curve-segment is). You can fill up your miniEngine with setups up to 25 curve-segments in total. This means that all your axes can together use 25 curve-segments. And here is a little graphic that shows what a curve-segment actually is (for the ones that want to know it in more detail – one curve-segment is one quadric Bézier curve):


Here is another screenshot showing that a curve does not need to be curved. The 2 last curve-segments are simply flattened to a linear segments (there is a button for doing that)


The client supports selecting multiple points and moving them all together as well as numeric point placement for very precise setups where every mm / ms counts.

The connection to the miniEngine will be initialized by simply choosing its COM-port:


The next steps will be to finalize the communication part of the software so that the the paths can be send to the miniEngine and the program can be started.

The software will be released as open Source under the GPL license. It is being developed in .NET Visual Basic. Please contact me if you want to port it to Mac or Linux (I simply don’t have the time to take care of the miniEngine as well as 3 different  computer-clients thanks to the need to sleep regularly)


The other place where things are happening is the documentation. I received some valuable feedback regarding the assembly of the BED-board. The next release will also contain some additional details about how to assemble the BED-board. There will also be explanations about different variants for connecting the Big EasyDrivers to the BED board and for connecting the BED board to the main Board of the miniEngine.

I am looking forward to the next release and hope you too!

Have fun!

Update to version 2.0.4 beta

Hello everyone,

the new version is out and we are now in the Beta state. Here are the changes:

  • Added the external trigger input system for starting, stopping and shooting the camera. This will be extended in the future with additional triggers.
  • Added a Dashboard that is displayed when the miniEngine is running. This will make it clearer to recognize if the system is running or not.
  • Added a messaging system. This allows messages to the user so that the system can tell what it is actually doing.
  • Added a new system font. Now there are 3 choices for the ones that want to tweak their user interface for optimal readability.

The biggest and most versatile new feature is the trigger system. This allows the execution of core commands with external signals. Right now there are 3 functions implemented:

  • Start the engine
  • Stop the engine
  • Trigger the camera

This means that you can now start multiple miniEngines simultaneously with one signal. You can also start / stop the miniEngine or trigger the camera on certain events  which could come from anywhere (‘want to play with a light sensor?). This is the current menu for the trigger setup:

Trigger  menu

The easies way to implement this new feature is this:

Bildschirmfoto 2014-02-19 um 21.17.37

Please keep in mind that the trigger inputs are directly connected to the Arduino processor! This means you need to keep your signals between 0V and 3.3V – otherwise you might destroy your Arduino! If you use the above circuit and the trigger type “Falling”, it works without any external voltages and just a simple switch. In this case you can ignore the red text above.

Triggers are only active if the miniEngine was started by pressing the “Start” key. when you defined a “Start” trigger, the system will wait until it actually starts until the trigger signal arrived.

The next big new thing is the Dashboard. This is what you now see when the engine is running:

Here is the new font…New font

…and here the new message system in action:

I hope you like the new features and also that they allow more versatile setups and thus to boost your creativity.

Have fun and post some of your thoughts in the forum!

Motor calibration


Here is a little manual describing how to find the correct motor calibration value for your setup – the mathematical and most precise way. This can now also be found in the documentation:

The miniEngine 2 offers the possibility to calibrate the motors you are using. This calibration takes the motor and its specifications itself as well as the rig it is driving into account. This chapter is aiming at helping you finding the correct calibration value for your motor(s). The calibration values needed, should be given with the following units:

• steps per centimeter for linear movements
• steps per degree for radial movements

As stepper motors come in a variety of form factors and specifications we need to add the most important of these specs to our calibrations. This is the degrees been moved by one full motor step. The most common one is 1.8°. This means that such a motor needs 200 full steps to do one full revelation:

\frac{360^{\circ}}{1.8^{\circ}} = 200

Because we are using multi-stepping to achieve a finer resolution, we need to multiply this full-step-value with the amount of sub-steps done. In this example we are using 1/16th stepping (which is the default for the recommended Big Easydriver):

200{\times}16 = 3200

..or if you prefer the full version

\frac{200}{(\frac{1}{16})} = 3200

Ok – so we need 3200 steps to do a full revelation with the stepper motor in micro- stepping-mode. Now let‘s add the rig that this motor is driving to the calculation. For now we are assuming we are driving a toothed belt with the stepper. The gearwheel has a circumference of 3.5cm. This means that 1 stepper revelation moves the belt 3.5cm. Here is how we get how much steps are needed for 1cm – which is also our final calibration value:


Now we can enter 914.29 steps / cm as the calibration value into the system.

If we had a motor that would do a radial move, the calibration-calculation would just differ in the last step. Assuming you are not using the motor to rotate your axis 1:1 but with a reduction of 1:4 (four revelations of the motor rotate the axis one time) , the final calculation-step would look like this:


The final calibration value for the radial setup is 35.56 steps / degree.

I hope someone finds this useful.

Have fun!

Software update to 2.0.3

Thank you all for submitting feedback and bugs! This allowed me to improve the software and here it is: alpha version 2.0.3! This release fixes some bugs and even adds some new stuff. I highly recommend updating to this release (Don’t forget to update the libraries too)! These are the changes:

  •  updated the documentation (added small system-user-manual)
  • added some information about updating the software
  •  fixed a bug which started moves from the wrong position if not moved to home before
  • fixed a bug that moved the motor in the wrong direction when using the function “Move home (all)”
  • fixed a bug which caused the motor direction to change sporadically during motor jogging
  • added a new menu font and a font-option to the settings
  • Minor user interface changes
  • added all needed libraries into the repository

The biggest change, which you will see immediately, is the new font. I thought it might be nice to have a more readable and clear option. There is a new option for choosing the font so that you can go back to the old one if you like:

new font

I also started working on a Windows client for creating keyframe-based moves. This is in the very early stages but I hope to be able to release it before the summer. Main focus will be defining the bezier-curve based moves and then either save them as a files or directly submit the data to the USB-connected miniEngine.

…and as always – Have fun!

Documentation update

Hello everyone,

I finally managed to write a short section for the documentation which explains how to use the system. The biggest problem until now was that there were no pictures or other explanations what the different buttons actually do. I tried to make everything as self explanatory as possible and hopefully succeeded (because I never received a singe question on how to use the new miniEngine). Anyways, here is a picture with a description of the different button functions. Some more info can be found in the updated documentation.

[click to see the full resolution]

I also added all needed libraries into the GitHub repository, where you can download the whole project files, so that you have all you need in one download.

One more thing I’d like to post is a short but beautiful video by radixi, done with the new miniEngine 2 in some great Finnish winter (moon-) light.