final project 2
orb machine
<<<back

my inspiration for my final project is this note delivery system i saw being used in a bar in Berlin. Each table at the bar has a number assigned to it and they set up a pulley system that drags around a loop that has strings with clothespins on it. Each table can write notes anonymously or otherwise to the others around the room by labeling them with the table number.

i'm really interested in studying how technology can enhance face-to-face or even create new ways of human physical interaction, and i thought this was a nice example of that - instead of having each table be insular and little interaction with the room, the entire place turned inwards and started to get to know eachother, to exchange numbers and looks and laughs, and the bar was busier than i had ever seen it.

because i'm also really into objects with hidden identies or spaces that make the viewer feel like they've discovered something all to themselves, i want to combine these concepts for my final project. the idea is to make these roaming sculptures that navigate around the ceiling, and are interesting enough to be purely decoration, but also can be called upon for note receipt and delivery to identified locations in the space.

visually for this application, i want to create a sculptural object that captures the kitschy vibe similar to this from cubbyhole in new york city and the etherial, blobby, space & organic feelings from this piece called Lunar Landscape by Isamu Noguchi.

the design of the mechanism is quite tricky as in visioning, i want multiple (30?) of these robots to be able to move around the grid, so a simple cnc would not work, and because they hang down, many other designs are unfeasible as well.

the design that i think will work the best is a simple gear and pinion system in two two-dimensions that allow the element to hang under the framing and be pulled in both x and y directions. this design means that the entire middle can be routed out while allowing for stability and movement.

you can see that many iterations were made to envision a few ideas, including a few more ridiculous ideas (together with Leo and Quentin), but for now i've settled on a gear and rack system in two directions so that the object can hang underneath the extrusion and move in two-dimensions at the intersections.

i tried to mock this up in fusion360 parametrically, but realized that i was still moreso in the idea and playing around stage then was i really able to parametrize - i tried but i started running into more constraints than i thought. this may be an indicator that the original vision doesn't work so well, but for now i have a mocked up version that appears like it could work in 3d space. quick drawings of the distributed call boxes and the receptacle mechanism are below. i'm thinking of trying to either do the pneumatic receptacle, or just the paperclip for simplicitity and cuteness.

you can see that i've tried to envision a system that provides support, x and y directional movement, and leaves the bottom open so that a note can come down. it's proving very difficult and hopefully some additional eyes can shed some light!

so obviously, i'm working on designing this component this week, but to complete the project before the it's due, i'm hoping to follow this approximate schedule.

as for how the note is recieved into the element, i'm picturing a pulled system that extends down when it reaches its location and allows for a note to be deposited. in class and outside of class we discussed the concept of the hangprinter, or a cnc controller by the spinning of 3 or more rotors to increase and decrease the lengths of threads held at tension to move an object around in 3d dimension space. the benefits of this method are that the size of the printer becomes constrained by the size of the room which is exciting. i decided to pursue this approach.

i started by designing the mechanisms in cad. first i knew that for the demonstration i would need idlers to mount to the sides of the frames so that i could hold the position in 3d space. i started in fusion360 and designed this piece that would hold M5 screws, and the idlers and slot directly to the aluminum extrusion left over from machine week.

the other main mechanical component for the machine is spinners that can be attached to the heads of the motors. i came up with this design that snap fits to the nema 17 motors that i had ordered. i designed a bracket that would fit directly over the screw holes in the motors and firmly secure it to a sidewall.

i designed the noguchi object that i wanted to be moving around the room in blendr. i wanted it to be hollow hydrostone with holes in it where light could escape.

finally, i designed an extrusion cage to hold the components and put it all together in cad.

i started 3d printing because there was quite a rush at the reef. for the orb object, i wanted to make it big, and printed out the shape with the intention of oomooing the positive side in a box. i asked around for oomoo but the size was a little bit too much.

instead i downsized and went with a much smaller size, and laser cut out a small box to do the oomoo cast in.

i mixed the oomoo 25 (half part a and half part b by volume) and left the cast overnight to cure.

meanwhile other 3d printed parts were finishing and i was testing them for fit and useability. the idler brackets came out perfect on the first print.

but the spinners took a couple iterations until they fit the gear perfectly and had a perfect snap fit.

then i started to assemble the frame. umut helped me to cut the aluminum extrusion to size.

then i assembled using only m4 and m5 screws, t nuts, and corner brackets.

when the oomoo was done, i popped the 3d printed object out of the mold, and filled the mold with hydrostone (65 x 35 by weight), doing a by-hand-rotocast and turning it every few minutes to coat the outside and leave the inside clear.

when it came out of the cast, there were some obvious seams and a few spots where the hydrostone was bare, so i did a patch job and added some hydrostone where needed.

then i sanded it down. the best tool for this was the sanding fan head of the dremel, and then i went over it with 800 grit sandpaper. thanks to my sister amalia for doing lots of sanding on it!

as this was happening i was designing and milling my pcbs. i had 7 pcbs for this project. four of them were modular things boards for motor control. and the other three were made to be wifi compatible with one another using xiao esp32s so that nothing had to be wired together except the motors themselves which were xiao rp2040s.

the first was a controller for lights and servos on the orb which i designed in kicad. the board simply had to have three sets of three pins (data, power and ground) to controll two servos and one neopixel strip.

i used the roland to mill the pcb and it turned out pretty beautifully.

then i designed a controller board that would control the lights, the claw, and the movement of the machine, and similarly, milled that on the roland, before soldering components on. i put an xiao esp32-c3 on both boards so that they could connect wirelessly.

i connected both controllers via painless mesh so that i could turn on the lights inside the orb and the servo, using the controller!! the code that runs the controller board and the code that runs the servo and lights board is here and here!

finally, i milled a breakout board to connect the rp2040s to the controller board because the rp2040s cannot be wifi connected without a wifi module. the plan was to use the esp32 on the breakout board to connect to the rp2040's over the serial port and send them signals from the controller. below you can see the xiao rp2040 motor controller being held next to the breakout board and the motor controller.

to connect the serial ports, you have to connect the tx and rx ports (the tx port of the message sender to the rx port of the message reciever), and also make sure they share a ground. there was also a trick we found with the xiao esp32-c3 which is that the esp32 won't open a second serial port (other than the USB port) unless you give it the instruction:

HardwareSerial MySerial(0);
MySerial.begin(115200, SERIAL_8N1, RX, TX);

to force it to hold open the second port. the failure mode i was seeing before this fix was that the Serial port was printing incorrect translations of commands or nothing at all while the second serial port was open. with this fix i simply had to open the serial port on the rp2040s and we were able to start recieving basic messages.

then i had to wire them all together by splicing a wire to have multiple ends, and working with quentin to create a protocol for message translation.

then i defined what would be a forward rotation and what would be a backwards rotation, using this code, and used the protocol to send each of the motors the same command. the code for the protocol is here, while the code for recieving and translating the protocol and motion stepping is here. note that this is for the first stepper, so each additional stepper would need to have unique addresses. then i defined machine movement by calculating the distance to each corner by every microcotroller even 10 microseconds, calculating the speed by making spinners with longer uptake times have to cycle through their rotations faster than the slower rotors, and started testing movement coordination between the motors. i synced the motors up to the remote controller to start testing up and down movement. and that code is here.

the most unfortunate thing happened at this point which is that suddently one of the rp2040 boards broke, and by now it was very late at night (or early in the morning) before the project demo was set to go. anthony (who was still awake!! how amazing!), tried to help me debug it, even after i had tried for hours, to no avail. leo also looked, but the rp2040 was unresponsive and could not be revived. i therefore had to present an unfinished machine, but THIS IS NOT OVER.

i'm already in the process of debugging and fixing it as we speak!