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.
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.
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
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.
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.
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 😉 ).
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…
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!
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:
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.
after some weeks of vacation and some more weeks of coming back to work it is time for another update. This time it will be focused less on the hardware or the user interface but on the core functionalities of the engine. This means that I am currently working on the keyframes engine which will then be used to control the motor movement.
But first let me explain what I am aiming for and why. The motor control-engine of the older miniEngine version don’t allow precise planning of the moves. This means for example that I can precisely define how far the motor should move but I have no real power over its timing. There are possibilities to tweak the speed with which the motor moves but this is far from intuitive and precise. To overcome this issue, I am currently working on ways to have a better control.
The basic idea is to base this new motor-move-management in curves as in the following picture:
This is a screenshot of a small test-application I wrote in Processing 2. It shows a cubic Bézier-curve which would be the perfect solution for defining motor moves. Out of many of these curves side by side, one could create highly complex moves. Here is an example for 2 motors:
Unfortunately are these Bézier-curves pretty processor intensive which is bad because I am using an Arduino. Have a short look at the Wikipedia page of Bézier-curves and you will understand why. For being able to control a stepper-motor with such a curve (or something similar but function-based), I need to calculate the curves y-position (= motor position at this time) based on the time that has elapsed since the program started. The Casteljau’s algorithm can solve this. After I have the y- and thus the motor-position, I can move the motor to that spot. Then I do another calculation based on the new time and so on… All this needs to be done for the two motors + the handling of the cameras, triggers, communication, …
My current main-task is to find a way to do this whole loop that way so that the motor movement is still smooth. To do this I need to find a performant way to do the calculations, pre-calculate as much as possible or use timer-interrupts and time-fragments of constant speeds. I am following different approaches for this and hope to find a good and solid solution.
When this basic technology is developed, I can go ahead and implement a first ready-to-use version which will be based on this new core… This will then be made public to all of you. It will just contain a basic set of features but I know you are waiting to start playing with the new version!
On the hardware side I can tell that the main-PCB is final. I received Revison C and tested it. On the picture below you can see an updated version (Revision D) which just has a nicer silkscreen: