The group consists of one student from Fab Lab Hornafjordur, Birkir, and two students from FabLab Spinderihallerne in Denmark, Ana and Ola. Birkir has a part time job that takes most of his time in the evenings and Ola has a full time job during the day. So it has been hard to combine schedules, but we managed to meet! :)
This topic (Machines that Make) is divided into two weeks. On the first week, the focus is on Mechanical Design, where the assignment is to make a machine, including the end effector, build the passive parts and operate it manually. On the second week, the focus is on automating the machine.
In our first meeting via videoconference, we agreed on a few guidelines:
We all came up with different suggestions for machines and what machines could do, but Ola took a great initiative by uploading her sketches to the Facebook group.
On the second meeting, we:
Our project is a Light Painting Machine, based on 2 linear stages. The end effector is light (one or multiple LEDs). In order to capture the light paintings, a camera needs to be set up on a tripod, in a dark(er) room, for long exposure (narrow aperture, slow shutter speed).
We thought we had a very original idea, but we found out that a group of students at CBA has done one. See here.
The work was divided, so that:
When all parts were designed, tested, re-designed and we were satisfied, we started glueing them together. We used hot glue for setting the x and y stages together, and to set them together with the support structure. The hot glue was stronger, and kind of “”sealed” the cardboard joints together. However, using it on the assembling of singular stages would have compromised its precision/fit, by making the cardboard layers considerably thicker, so here we chose the wood glue.
We proceeded to operating the machine manually, everything was working smooth.
Then, we made some tests on capturing the light painting, using a camera and a tripod. The camera was manually set to a narrow aperture and slow shutter speed. (for more detailed info, check Ana's documentation)
At the moment, we are using thick LEDs, with high transmittance, which results in very thick light lines. We will play with smaller LEDs to test how refine the painting can be.
We are also considering to design a circuit board, with 3 LEDs and a microcontroller, where we are able to control blinking intervals as an extra parameter in the light paintings.
It has been very productive (and FUN!!) to work in group, we can clearly see we don’t get stuck in problems for long, ideas are better filtered before being put to practice, and the workflow is somehow smoother. We had great discussions together, but it’s a shame Birkir is working alone in Iceland and our schedules for working in the lab are hard to match… We are all really happy Birkir is travelling to Denmark for the second part of the assignment.
We were all in FabLab Spinderihallerne Sunday after class, setting up the machine to work with mods, the Gestalt nodes and making sure there were no shorts before powering the machine and giving a try to the fabnet module. After that, we divided work:
We milled Bas’ fabnet board. You can find the files here.
As we agreed from the beginning, we would use Mods to automate the machine. So we started by looking into Nadya’s documentation on Github and followed the steps on the READ ME file (cloning the repo, installing all necessary dependencies, generating virtual machine and running fabnetserver.js)
Before running the fabnet_xyaxes.py we needed to connect the Gestalt nodes and power them. We used a multimeter to check for continuity between the ground pin in the fabnet board and the cables connected to ground on the DC power supply . It turned out we didn’t connect it correctly. When all cables were connected correctly (meaning having continuity between ground on fabnet board and ground on DC power supply and having continuity in current pint on fabnet board and current on DC power supply; and NO continuity between ground on fabnet board pin and current on DC power supply and NO continuity between current on fabnet board pin and ground on DC power supply), we connected the fabnet board to the computer and turned on the DC power supply. Before turning on output, we set the Voltage to 12V and the current to 0.1A. We waited a few seconds. Since there was no sign of shorts, we increased the current to 2A.
We were then ready to generate the virtual machine, by running “$python fabnet_xyaxes.py”. We created our virtual machine, by identifying the x and y node. and checked there was a new vmp file in the folder. (NOTE: whenever you need to generate a new virtual machine from the same fabnet_xyaxes.py file, you need to delete the existing amp file!!).
Then we opened Mods, loaded the local module fabnetclient.js, connected to server and tried to send a coordinate to our nodes, but nothing happened! There was no error on the mods insterface or in Terminal, and the Gestalt nodes were lighting up.
During the machine assembling, we had o substitute a motor connector, so we suspected that the problem might be there. To troubleshoot it, we connected other motors to the Gestalt nodes and sent a new coordinate. It worked!!! So we checked if the problem was with both motors or just one of the them. The problem was with the motor on the vertical stage (this was also the motor we previously had broken the plastic connector and had to substitute it…). Before making a whole new stage with a new motor, we decided to re-check the cables, re-enter them in the plastic connector case making sure they would be sticking more out and able to touch the board pins. We were not really expecting that it would work, but it did!!! YEAH!! :)
So everything was working! All we needed now was to create a module that could read our drawings and create a path for the machine.
We have run this process in 2 different computers, one running Mac OS and another running Ubuntu. The only thing you need to be aware of is to change the usb port name in fabnet_xyaxes.py. To do it in the Mac, we started by finding out the name of the usb port, by typing in terminal “$ls /dev/tty*” and looked for something that was like “usbserial…”. After that, you can open the fabnet_xyaxes.py file in a text editor, search for the actual usb port name and substitute by the Mac usb port name. See images underneath.
Creating the code to automate the machine the way we wanted was the most challenging. None of us is very experienced with programming. We started by looking into the existing modules. Since our machine is 2 axes, we took a closer look at the vinyl cutter program.
We opened the code and edited it in Mods. To edit it, we first analysed how the fabnet module was sending a path and communicating with our machine. Fabnet sent values like [[x,y]], so we applied that to the code on the vinyl cutter program.
We also added a fabnet module to be able to talk to the Gestalt nodes in our machine.
We saved the entire program, by clicking on programs>save local program. This way, the next time we need to use it, we can load it directly from our computer instead of having to do all the updates.
So it worked!!!!! A couple of inconsistencies and debugging, but at this point we started having a lot of fun just testing out different PNGs and trying to draw conclusions.
What we have learned, that is important:
We could keep working with it eternally!! There is plenty of debugging and improvements to be done, but we reached a point where we were satisfied.
The next step would be to connect a RGB led board, to be able to turn on/off the light (now the drawings are a bit limited, we cannot “lift the pen from the paper”).
Another update we could like to work on is making a js module that can read colours from the PNG file and talk to the RGB led board.
This week became even more obvious that every single step takes time! We can be “lucky” and everything works at first, but it’s when we encounter problems that we learn!
We also became aware that machine design is complex!! It takes long time to make and test a machine that is user friendly until the last detail!! The machines we have in the lab are amazing!! We should make an effort to understand them and stop complaining when they don’t work 1/1000 times.
All files can be found here.