Asses and process victims in desaster area.
Autonomus and collaborative Robots to : Map the area, locate victims, create communication relay and monitor environemental risks.
V0 : Fabacdemy 2016 Paris.
BB: personal and project history
BBTemp : A Fab tharmal scanner
BBTemp : A Fab tharmal scanner
BBTemp : A Fab tharmal scanner
BBTemp : A Fab tharmal scanner
BALLBOT V0
BALLBOT is an autonomous robot to map a space and detect victims in mass catasrophy area.At the beggining, I just wanted to repoduce Project Morphex, because it was nicely documented and able to travel. Also was funny.
But I kept on searching during the first weeks of course, and realised (following advices) that a statement was enough. The idea is now to make a simple moving robot that scans an area. If some features can be added (infrared camera, network team of robots...), I'll do it gladly. Start small and aim the stars.
Nevertheless, and after many discussions with the instructors, we decided to only do one part of the robot : "the thermal scanner". Why ? Because many drones, 3d scanners or sensors are already documented. We couldn't find a well documented thermal scanner. Either documentation was incomplete, or to buy.So, we thought that this could be our little brick to this theoretical project.
Thermal Scanner Strcuture
Structure is designed for lasercut. It is a two axis rotating system, controlled by a couple servo motors. The interest in using those, instead of stepper, is that you can make an angle control of your scan, degree by degree, and that you don't need any shield.
We designed this on rhino for 3.8mm plywood.File attached here. There are two devellopement steps. One prototype, very squared, called V1, V2 is more round and is the final version of the project.
You can find dxf files here.
For assembly, you need 3X16mm bolts and nuts, and servo screws. You attach servos though holes, with bolts and nuts. Moving parts are directly screwed to the rotating part of the servos using specific screws (given with the servos).
Here is how you assemble.
Here is what it looks like assembled.
Here are the missing files for V2. You can dowload them here. Assembly is following the same proccess : press-fit joints, bolds, nuts and screws.
Electronics
We do use for this project two self made electronic parts, and an arduino for power supply. This last one can easily be replaced. First homemade part is the controller used like an arduino (wiring equivalence on picture below), an other part (MLX board) is designed to support the sensor, and wire him. You can dowload eagle file for it here, and the pngs here.
To use the controller as an arduino, you have pin equivalence on the schematics up this paragraph. In our case, A4 and A5 connections are used for sensor's reading. Be careful to Wire SDA to A5, and SCL to A4.
MLX board has four holes for the sensor. 2 for the SDA and SCL connections, Two for power. Connection with the 100K resistors are for SDA and SCL. Then solder 4 headers (one by one) , to have your connection.
Servos are attach to pins 9 and 10. 9 is the X axis, 10 the Y.An aduino provides the power and is connected to both sensor (3.3V) and servos (5V). The controller is connected and powered by FTDI cable.
For reading, we use arduino's serial monitor on 9600bauds.
Then, we did try a sensor, with a sharper angle, same family (MLX90614ESF-BCF-000-TU). Result was a longer range for precise long distance reading.
Wiring of the board is as follow : left pin SCL, then SDA, then VCC, and on the end right GND.
Coding
We did code this device with arduino code (.ino). To scan, you need the X Servo to move degree by degree to 180°, and back.Also the Y one to move one degree everey 180°. So as to have a temperature reading, you need to read the sensor between every step. Above, you have the reading of degrees and temperature in °C and F.This reading uses the exemple in AdafruitMLX library.
//
#include
Thermal Scanner Strcuture
Structure is designed for lasercut. It is a two axis rotating system, controlled by a couple servo motors. The interest in using those, instead of stepper, is that you can make an angle control of your scan, degree by degree, and that you don't need any shield.
We designed this on rhino for 3.8mm plywood.File attached here. There are two devellopement steps. One prototype, very squared, called V1, V2 is more round and is the final version of the project.
You can find dxf files here.
For assembly, you need 3X16mm bolts and nuts, and servo screws. You attach servos though holes, with bolts and nuts. Moving parts are directly screwed to the rotating part of the servos using specific screws (given with the servos).
Here is how you assemble.
Here is what it looks like assembled.
Here are the missing files for V2. You can dowload them here. Assembly is following the same proccess : press-fit joints, bolds, nuts and screws.
Conclusions and intellectual property
Our project did evolve a lot during the time of this course. But we do think that, after the project was defined, we did use most of the courses in order to progress in making this thermal scanner. A possible schedduale for improving it and develloping this project consists in 4 steps.
STEP 1 : Finalise the prototype.
STEP 2 : Partenership with a drone develloping company. For insyance FlyLab in Paris.
STEP 3 : Make another need analysis with health specialists and finalise a prototype.
STEP 4 : Fundraising and partenership with an industrial company, linked to health sector.
This course gave us a lot of keys, to understand prototyping process, and also a lot of fun (and hard time, but it's fun, isn't it). We were very glad to host and participate this first Paris edition. Sincerly yours, Guillaume.
Thanks come to my team, both students and instructor, specially Saverio and Phon. This was a great and rich experience. Let's keep it up !!!!
Here you can see an image of the final structure, with the microcontroller we use, and the MLX board on top, holding the final sensor
principles and practices
FIRST, A FEW WORD ABOUT ME :
I am a former social sciences students, with a master degree. I quit univesity, to write a novel. After 4 years writing, A friend gave me a call, telling me "I need your help on a project."
This project was WoMa, the hosting lab.So, for one years, we did prepare the opening, and finally, we did open the space, in 2013.
I knew nothing about digital manufacturing, but some co-funders gave me basics and confidence. I worked there as a fabmanger (plus some other things I did as a co-founder), and did learn a lot, about machines, design, and maker movement.
I am doing FABACADEMY program, because I fel i love wth fast protyping processes, and want to improve my abilities.
Anything can be done in a creative approach and process. I make as I wrote and studied. Learning about the world and about myself
And now, a few words and pictures to present the lab. WoMa, fabrique de quartier, is the first space in Paris, to be a fablab and a coworking. It was founded by seven persons (including me), in 2013. Up, you can see the nomad coworking space. Sometimes it is a bit more busy and messy, but always beautiful.
Then, on the first floor, the resident coworking. People usually more involved and who's working space is their own.
We also have a nice chill, with a kitchen and couches, to rest (or spend the night, when working too long), cooking and eating.
Let's introduce some of the machines. Here, in blue, the lasercut.
Our wonderful CNC mill, by Perez Camps.
Our 3D printer was develloped in our walls, by partners, DOOD. They are now industrialising a made in France Machine of their own. we still use the prototype, which is very functional.
And all the founders but one in a single picture. We do not have pictures altoghether. I am the guy on the left. I got a bit older, and my hair shorter.
Project :
We have the project to contribute to a theoretical project, of an autonomous drone, used in catastrophy situations, to MAP AND TAG victims, to helps sorting and rescuing them.
We want this bot, this BALLBOT, as we imagine it, to be equiped with a 3D scanner, a danger (like gaz or fire) detector, and a thermal scanner. It is a bit too much for a begginer like me, in only one smester. So we decided to work on the thermal scanner part. The reason is that, most of the other parts are already widely documented, but not an easy to make themal imager to find on the internet. Maybe we didn't search well, but it gave us a purpose.
We imagined a movement using 2 servos. We are sorry about the drawings. Hand drawing is not our thing, definatly.
Using those, moving two stable plans, we can move a sensor on a range that allows us to have 180° on two awis. An inpisration was that type of structure.
PRACTICES :
We were given a bootstrap called agency (here). That is a basis you can personalise throught html console. We do use atom. It's workflow looks like that.
The mostly used comands are :
href="reference of the share url"
href="reference of the file location" download="name of the file when downloaded"
html5 language is very well documented.
But every student favorite moment is his encounter with git
git status : nothing to add. Or maybe what the interface looks like.
And Also maybe the commands you need to know
first get to yur repository, in our case by typing :
cd womastudents
Then :
git status
git pull
git add -A
git commit -m "please work"
git push
And mistakes we all made.
Computer aided design
BALLBOT PROJECT is an autonomous drone, able to map an area and detect victims. During Fabacademy 2016, the V.O will be prototyped. These balls will able to map an area by communicating toghether. This project is part of project MAP AND TAG, with the objective to assess and process vitims in disaster area.
This week was dedicated to computer aided design. The image you see on top is the outside of the machine, able to protect the sensors, and letting them sens at the same time, because of its open structure.
Inkscape
This 2d Design shows a detail of a possible joint for the axis to be mobile inside the sphere.
Since we want this ballbot to be able, in any position, to map a space and to monitor its environement, the inside of the ball must be stable. We thought of a sphere, inside wich there would be mobile axis, that allows the center to remain oriented. The joint is one possible between many.
Rhinoceros 3D
When you open rhinoceros 3D (we always work in large objects, millimeters), your workplane will look like 4 screens. You can choose one by double clicking on one. It looks like that when choosin perspective.
To draw this envellope, first, you need to draw a sphere. In Rhinoceros 3d, it will be made out of nerbs, and look like that.
To make it look full, click on the side of your "perspective" toggle, and you choose the view "rendered".
For the sphere to have face, I turned it into mesh (command mesh) and chose the approriate number of faces (this can be done when you reduce mesh).
Then,you can duplicate the borders (command dup face) to have polylines in place of every feces edge.
Finally (with the command pipe), you can give volume to these lines. The render tool in rhino (setting a plan, some light and material), allows you this render. Next step will be to find and draw an assembly mode to make it. Also, to draw and assemble the two axis to make the inside of the sphere stable. The center is where all the inputs will be.
FILE HERE.Sketch up and light works
I had my model from Rhino and opened it with Sketch up. I discovered a nice reserve of existing designs in 3d Warehouse.
To import some designs, just drag them into sketch up. With a few copy paste, the scene was ready to be animated (almost ;)
To use the animation tool in Sketchup, you can follow this tutorial..
If you want to improve the quality of the image, you can use a render tool, like i render next.. This will make your images look better. But a movie is 24 images per second. This one was more than 600 images (very few), and render for an image can be several minutes. There must be more efficient tools.
Then, to add sound and effects, the software "lightworks", was a bit complicated at the beggining but ended up by doing the job. This is the video. Hope you'll like it.
Computer controlled cutting
Project was to make a dice tha could have different number of faces, and be either posisitve or negative. It was a bit ambitiious. The result is a dodecahedron with a mobile circle in its center.
Lot of Rhino and Grasshoper design was needed to get to this shape and assmbly.You can find here Rhinofile Here are some details of the different joints used.
Above joints were designed with parametric tool from Rhinoceros 3D, called grasshopper. To make it simple, it is computing applied to design.
We first found center of our polygone, and added all points to get oriented vectors.
Then, with the created vectors, we defined plans, perpendicular to each vector. We still do not have drawing, but we do have the struture needed for our drawing to be a few offsets away.
We did defined surface, and intersection with each vertice of our polygone. By offsetting the surface, and using contact points to define our circles, we did get the following volume.
They were made using boolean opération betwwen the beams (purple) and circle (blue). But we had to scale the beams in order to make a small cut in the circle, before to take off material from the final beam.
Second part was to make the axis and a mobile joint. assembly were made with the same boolean opération. to soften the curves, we used the command fillet.
Then you need to cut (and fail ?). So as to extract plans usable in the lasercut, you explode your volume, selct the face you want to cut, and use the command DupBorder.. You need to project it to CPlane to be sure that the export is going to be right, always to be done from the top view.
Our Machine has a working surface of 1000*800mm. It is a 80watts CO2 laser. We do use corel draw, and a plugin, to generate a code to command the lasercutter. You first open your vector file. The pluggin is giving you, by color and fill, cut or ingrave option. For this project, we just have cutting.
When in corel draw, there are no special things to do in terms of color or width, for the plugin to accept the file. The main difference you make is between infill and traces.
Also, if you want your file to be alike your cutting, you can give the line laser width : 0.02mm. Our file is just cuttin, in black, in that case.
Corel's plugin is made by machine seller. The lasercut code is not open. You cannot generate it, except with the seller plugin.
Here are the speeds and power. We did use 5mm cardboard. It is a quiet easy to cut material. Power is only 20% and Speed is 2000mm/mn.
Then, the software genrates traces. Green one are movement without power. Red ones are with.
At WoMa, there is a spreadsheet with powers related material and thickness. Our cardboard was not in it. So we iteratively tryed different power and speeds to arrive to the right parameters.
Lasercutting (and ingraving), is a ratio between power of the laser ray, and it's moving speed. The slower you go, the deeper it will cut. The more power too.
After some tries and some ajustements, we managed to cut a dodecahedron with two types of joints, and a mobile axe.
Dwg file HERE.
For vynilcut, we first download a logo.Then, everything was done on the Silouhette Cameo 2. It is a very nice machine, and the interface is as simple as can be.
First, you need to load the material on a sacrificial adhesive layer. It is nice to put it first, so workflow is easier in term of positionniing.
You position your image on the screen, like on the sacrificial layer. Then, you can vecorise and work on it directly in the sorftware.
Settings are already in the interface, you just have to choose the material and put the razor on the right number (lenght). Press send
You after may add some special tape to take of and tape down your cut. Scratch it with your nail.
TADAM !!! Let's GO. File HERE.
Electronic production
This week was a challenging one. The Lab we are is brand new in the world of making PCB's. And we also had a lots of furniture delivery issues. We did it (the milling), and did learn a lot.
Missing Milling bits made us use a 60° V-bit 32mm of diameter. We did obtain acceptable results at first, but when coming to small PCBs, it was very hard to do satisfiying soldering, using our big milling machine, the TEC-CAM 1000. You can find more informations about it HERE.
Since Fab modules doesn't provides G-CODE used by this machine, we prepared the files on V-Carve. We did use reglar advancement (1.5 m/s), plunge (500mm/s) and rotation (18rd/mn) parameters for the bit, except that we did ask the calculation to be done with a 0.2mm bit, so the software accepts to engrave all paths. Depth of the milling was 0.2mm.
Then, when we received the 1/64 bits, I broke one using the same parameters ;. So, I changed plunge (100mm/s) and advancement rate (0.5m/S) very low, and went only 0.1mm deep. The result was very satisfying. Nevertheless, we think of reducing more the speed to have less rounded shapes.
To calibrate the Z axis, with both milling bits, the best method is to lower by tenth of millieters the bit, with a piece of paper, between the bit an the mateial (on a clean workplane, double taped to it). When paper can't move, bause compressed by the bit, z axis is right.
Before to solder, we did check the traces with a multimeter.
Then, with our map and magnifying glass, we did solder the ISP. to Solder the chip, we did use an air blowner, then a soldering Iron.
Trying to fuse the fabisp, we encontered this problem : fabisp needs to be plunged into the usb port of a computer to have power in. With the Atmel ICE programme, you can check that by looking if the green LED is lit or not.
Then, to fuse it , you click the SPEN Then program. this restore the neutral fuse status.
With this software, at least when we tried to do it, you have to save the program before to be able to end it.
The fabisp is now ready to use.
Maybe caused by our milling (or soldering process), our FabISP ended up by not working anymore. So we decided to make another one, with the roland mill, in a more secure way. It is the one you can see up there.
Here are the plans for the soldering parts you need to make this ISP.
First, In fabmodules, you upload the image (.png) that you want to upload.
After, you choose the output, meaning the type of file you want for this image. In that case, we choose Roland mill. Then, you have two choices : either traces, with a 1/64th milling bit, or outline, with a 1/32nd milling bit.
Then, you choose the type of machine (our is a SRM-20). A few parameters, like the offset for the origin (we always use 0 for x,y and z axis), or the number of offsets around eaach traces. Then press calculate.
The traces generate automatically. Press save and the file will download. In our case, fin the milling file HERE.
Then, to use the mill, you calibrate it. You must move manually the milling head to its origin for the three axis. For the Z axis, we do use a piece of paper between the bit and the copper board. When paper is stuck, it mean that Z axis is right. Another process is to stick the copper plate to the sacrificial layer.
Then, you upload the G-code, by pressing cut, on the control board annd add in the pop up menu. To start millin, press output.
You can pause the machine to check the beggining of the milling. If they are right, you just clean the dust and ahve a result looking like the photograph.
Between cut and outline job, you cahange the tool, and take good care about setting the z axis again. DO NOT CHANGE x OR y AXIS !!! You would mill in the wrong place.You start the cut the same way than explained before. Your board is milled.
3D scanning and printing
Lot of things are thought about 3D printing. Here is it's reality. It is long, and all machines got their limits.
We did use Digital Object Maker, printer develloped by DOOD in our fablab. They use a 0.4mm nozzle, for a printing area of 20X20X20cm, and with a heating bed. You can print PLA, ABS, and, being careful, some soft Filaflex. We did use the prototype for this exercise .
As we did print an accuracy test for the printer, we realised that perfection is not from this world. Result was good though. Until 0.3mm, the printer is accurate. Cone was ok until the last mm. There were no bridges on this test. So, knowing the limits, we started our project.
We designed on Rhino this piece, that is articulated twice, and that can't be designed by other technique in the fablab (except molding, coming soon...). The articulation between circles is made of a stick and a hole, bigger than the stick. We count on printer's ability to print nicely, after one or two unprecise layers. As you can see, some parts aren't supported by anything. We tried it wth and without support material.
Then, before to slice it, we checked and repaired the mesh in netfabb. We did it in two parts, thinking we could do different parameters for each, but you need to slice both parts the same way.
We want to print an articulated object in one print. First, tolerance in the exported file was joining the pieces that should have been separated.
Then, as shown at top of the page, the piece was working but got damaged in the taking of of the brim.
So we did try to print with different parameters, using slicer's simple mode. As you can see, parameters are about layer height, that we chose 0.2mm. It is pretty accurate, and not to fast. For this piece, with no difficult bridges, top and bottom layers can be three each. Honeycomb is faster for infill. Support material are default parameters. and adding support material. It started ok, but I had trouble shooting with the usb connection, and the printing stopped.
Finally, using this file, the printing worked and was articulated.
Now comes the scanning. We did it with a kinect and a software called skanect. A typical bug is your sensor not being recognized. Be sure you install first kinect for windows, if using windows.
It is a very easy workflow. First, you define a box, for the scanned object to fit in, but not the surrounding objects. It is difficult to scan small objects with this technology. A technic is to ad object around the wanted one, and to turn them on a plateform, with a still kinect. Enjoy practicing !
When the scan starts, you can see in green the understood parts of the object. Moviing speed is according to your computer. as long as it remains green. When you scan all the parts (camera like), you press stop, disregarding the movement that will make you loose your target for few seconds.
After, you can reconstruct your file. Most important is to fill holes, and to move and crop, to have a clean shape.
You can also add colors.
To export for printing, we advise to reduce faces number. It helps to have lighter files. And also, you have to scale it, because it is very small.
Let's print ? File HERE
Electronic design
We did use eagle software, in it's free version, to create the hello_board, with a LED and a switch added. It needed a resistor for the LED. According to the datasheet, 50 OHMS were required. Since the ATtiny 44 has a 1MHZ resonator, we didn't add any. So the board is only a couple resistor, a switch, a LED and a capacitor, that you want to put as close as possible of ATtiny's connection.
Also, as connectors, we use a 3X2 connection, for ISP, and A 6 pins one for an FTDI connection.
You can find schematic, board and png's Here.. Cutting files were made with fabmoudules, for a Roland SRM20. Origin is offsetless, for traces, we did four offsets. Clearence is 2mm, and the cutting design is calculated for 1.5mm thick boards.
Now, we do mill the board. There are 2 png files, one for traces, the other for outline, using 2 different bits. But fab module process remains the same.
First, you upload the image. Then the second menu appear, where you select the machine.
Pressing the save button will dowload the code you want to stream to your mill.
To fix the copper plate, we use double sided tape. We directly tape it to the sacrificial layer.
Before milling, we choose X/Y coordinates, then, for the Z, we use a piece of paper between the milling bit and the plate. When the bit is holding the paper on the plate, it means there is contact. So you choose this position for zero.Let's mill!
Computer Controlled Machining
Starts with a design. For CNC milling, there are many approach in design. We'll show you our, that starts from 3D to get to the milling plans. we do design with Rhino 3D. The objective is to make a table for a living room. Then, if not to ambitious, we'll try to make articulated and moving project.
From the original (a polygone, maybe not so original) volume, we did draw our faces. Fillet command was used to make bottom angles les sharp.
Then, we did extrude the polyline to btain a polysurface. This way and back between two and three dimensional drawing is the method we use. Freee to you to have a different approach.
From the right view, again in 2D, we did draw half an assembly piece, using the automatited magnet points. IT IS IMPORTANT TO USE THE PLANAR MODE TO REMAIN FLAT !!!
We only drew half, and then use the mirror function, to verify our draing is good. If it fits, you're on.
Then, we did use the array command, to make a regular multiplication of this design, on the X axis. This function makes a sequence of design you chose. As you can see, spacing is the same. After that, another extrusion gave us the volume we wanted.
One major command with this design approach, is the booleandifference. Making this between my structure and my transversal support, gives me the assembly lines in one click (almost. Basically, this ping pong between 2D drawing, extrusion, and boolean operations, is the we draw.
For the exercise, we did trim one of the face of our bottom assembly line, with a surface randomly transformed, using nodes.
Then, we did use the array command, to make a regular multiplication of this design, on the X axis. This function makes a sequence of design you chose. As you can see, spacing is the same. After that, another extrusion gave us the volume we wanted.
HERE IS THE FINAL DESIGN !!!! But to cut, we need plans :()
After getting the plans, from my surfaces (using dupface border) we change the design to allow the mill not to mismake the assembly.
After a few trim, TADAM !!!
For this project, we need three different bit. 2 V-bitsfor the champfer. We use a 60° one for visible champfer, but a 90° one for assembly. Cutting and pockets are made with a 6mm end mill.
For champfer, cutting depth is 14mm. For Pockets, 5mm, and for the cutting, we used 15.3mm, to cut through material.
RPM is 18000 for these three bit, and, since this 15mm poplar is very tender, we advanced 5m/min. Cutting was clean, as you will se on the photographs. Cutting files HERE..
Plans are expoted using the command export selcted, after putting them all one the CPlane, for dimensions to be ok. Cutting tommorow morning.
Then comes the milling. We had to use three different tolls for this project. VBit 60°, VBIT 90°, and an End Mill 6mm one lip. We have two dieffrent kind of champfers. The end mill is for cut and pockets.
After a few trim, TADAM !!!
We did use poplar plywood, 15mm thick. It is a tender wood. To generate the file, we use V-Carve. Parameters for all the mills were the same, since the wood was equal, and all mills quiet strong.
Feeds for milling bits 18 000round/min. Cutting speed : 5M/S. This machine (Tech-Cam) has a vacum table to sustain fix the material to the sacrificial layer. It works all right !
Start the milling with the champfers, so that the pieces don't move when doing it.Champfer were 13mm deep, so the last cut was done by an end mill, 15.3mm, to be sure to go all the way through.
We do change the tools manually on this machine, so it takes some attention for a short milling time. Then the pockets. Cutting is last.
We did a few mistake in assembling and conceiving. 90° champfers are assembly ones. Since we did'nt go all the way deep, we sould have moved them 2MM inside for the assembly to be perfect. Also, as you can see, wood started to bend after milling, due to starage conditions and wood quality.
Result is, nevertheless, ok. We did add an aluminum plate on top.
We also like the wavy bottom, even if, in terms of design, it is meaningless and free..
You can find design filesHERE.
Electronic Programming
On Week Six, we designed a Hello Board. Now we are ging to program it. First, reading controller's datasheet (Here. ), where we mostly understood different communication pins function. Power and ground might be the easiest to figure out. MISO, MOSI, and SDK pins, used for communication and programming, are fundamental in this exercise. We did mistake one for another in our connecting and did loose time, not understanding why it nothing worked
We did use an arduino as an ISP to load programs in the hell board. Here is a very nice and complete explaination of how to do it. Tutorial. You have to remember to add a 10µF capacitor in the arduino, between GND and Reset, preventing the arduino from resetting, and talking to the bootloader. This makes the arduino programin Pins equivalence is as follows Pin connections:
ATtiny Pin 2 to Arduino Pin 13 (or SCK of another programmer)
ATtiny Pin 1 to Arduino Pin 12 (or MISO of another programmer)
ATtiny Pin 0 to Arduino Pin 11 (or MOSI of another programmer)
ATtiny Reset Pin to Arduino Pin 10 (or RESET of another programmer)
.Here is the pin number for ATtiny 44.
In the arduino ide, you have to import the attiny controler, in order to be able to program it. First you fuse it, like the fabISP, then, to import the library, you hav to download it from the additional board manager. You find it in preferences. URL
Then in boards manager, you search for it and install it. Your attiny will appear along with all the other types of board in Tools/Board.
In our case, we selcted ATttiny 44, with a 1MHZ frequency, and Arduino as an ISP. Do not upload directly the file, but select Arduino as an ISP (that your program first with the exemple aduino ISP) and upload with a controller.
Then, using the pin equivalence above, we did adapt the Blink exemple in the arduino IDE. In our case, working pin is pin 3.
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://www.arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 3 as an output. pinMode(3, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(3, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(3, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
IT BLINKS !!! File HERE.
Computer Controlled Machining
Our part is to design the tab part, in our ShotBot design. For whole project, you may go to the group project page.
We used an existing screw from thingiverse, and did cut the bolt part, with netfebb, a really nice free software, for some operations with 3d design for 3d printing. Then, using boolean operations, we did make the tube, with screw print
The first printing was looking ok, but screw was a little too wide.
So we scaled it and it worked.
Idea is to have the bolt open when in 0 position, and if we screw 90° to have a hole, so we do have a tab. We will now improve design to add a servo motor to move the screw.
File HERE.
Machine Programming
Input device
As a sensor, we did use the infrared thermometer, MLX90614. It is less than 20 dollars without contact temperature sensor. Nevertheless. It has a reading angle of 90°, that doesn't help have long range accurate reading. You can fin the data-sheet HERE.
For this purpose, we designed a small board, to plug and talk with our MLX component. We call it MLX_board. You can find the file HERE. There is more information about it in our electrnoics part in personal project./p>
Basically, you have the power pins, and two other (SCL and SDA) that allows you to do the reading. It is a "smart" sensor, meaning, it does calculation on it's own.
Wiring is quiet easy, and very well documented on adafruit website. You can see two 100K resistors for the reading pins. It can be either 5V or 3.3V. You will also need Adafruit MLX90614 Library for arduino. You can downlaod it here.
Then, we did use a satchakit. all documentation here. We just kept the burnin and reading schematics. The burning using an arduino schematic below. Remember to upload your code by choosing burning through a programmer, and to burn your arduino as an ISP.
Satcha kit structure is as above.We didn't change the eagle file, but, to build it, this drawing is your components map.
It is by hiding layers, and exporting using the monochrome option, that you get your milling plan. As in CNC milling (for instance the hello board), we did use fabmodules to genrate the code for the rolland SRM20.
Generating the traces with fab modules is a very intuitive workflow. First, you import your image (monochrome .png from eagle), then you choose your output format and the type of milling you want (in this case traces). Default settings for SRM20 are good, except that we do put milling origin (X0/Y0/Z0) to 0 instead of the default 10.
After milling and soldering, we do have our fabduino, a home made microcontroller. For input device, we are going to use 2 pins : equivalent of A4 and A5 in arduino, wich are SCL and SDA.
So as to burn the satchakit (directly with arduino software), you first need to import the library throught /sketches/import a library. Then restart the software. You'll find the code below in the library exemple.
As you can see, we have a sensor clean reading. As to have it, you'll need to connect your satchakit like below.We did use an arduino uno to provide power to the sensor. Many other possibilities exist, but this was the easiest one to aply in the lab.
This code looks very simple, since it uses two libraries (adafruitMLX library and wire library). They authorise to reduce complex EEPROM reading of the sensor to a feww lines of command. The usefull command line here is Serial.println() that prints interpreted data.
For our final project, we just need to read object temperature. So we did isolate this data by commenting ambient celcius readin, and all the farenheit reading, so we just get our object celcius reading. Simple but that's exactly the data we do need.
This image shows the FTDI/satchakit pluggin. This allows you to read the data, and to give power to the satshakit. This is what we did, as you can see on the image below. Arduino is used as a power source for the sensor.
On the upper images, you can see the satshakit connection map. Sensor's SDA shall be in A5 and SCL in A4. Then, you connect the sensor VCC and ground, to Arduino 3.3V and GND. We also use a power shield we designed (documentation in Personal Project/Electronics) to connect the sensor.
#include#include Adafruit_MLX90614 mlx = Adafruit_MLX90614(); void setup() { Serial.begin(9600); Serial.println("Adafruit MLX90614 test"); mlx.begin(); }
First part includes the library and the component, talking with a I2C protocol. This allows to give a rythm and a logic to the data stream.
void loop() { Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F"); Serial.println(); delay(500); }
Those lines prints data (temprature, ambiant or object, in celcius or farenheit), according to the library. So it directly gives a temperature.
Code HERE.Molding and Casting
Molding and casting is Fun, but you have to know what to cast. I decided to start with a simple lasercuted 2D character (file HERE), and became obsessed by him.
When you have the piece you want to cast, you need a deep cup and some double sided tape to fix it on the bottom.
Ain't he cute ?
Then you need to weight the rubber, and the solidifiying mix. Depending on material you use, proportions will change. Our mix is 5% of the weight of the rubber for the blue fixative.
Then we did brush our piece with rubber, so as to have no bubbles on the part to be cast..
When you pour the rest of the rubber, you do it as high as you can, still to have no bubbles.
We did prepare the milling file with v-carve. It takes a lot of steps, that we will explain.
First, as a 2D file, you set up material size. Then, you import a 3D model. You can always switch from the 2D to the 3D view.
When you choose the rough tool, you arrive in this menu. So as to mill faster, you can select the milling area in case material is bigger tha the mold you want to make.
You select the areau by tracing a vector (in this case a rectangle), around the surface you want to mill. It is easier to do it with the 2D view.
Then, you can choose the axis along wich the milling will be done, and the overlapping
We end up by choosing the tool and it's speed. In our case, it is a 6mm end mill, spinning at 18000r/mn, and moving 6000mm/min. Spinning speed is casual for this tool. As for advance and plunge rate, they are proper to the wax, and to this phase. We'll see later that for finish pass, we use a lower moving and plunge rate, because we need more precision.
Speaking about tooling parameters, typically, we use here a pass depth equal to tool diameter, for casual cutting (a rough cut can e considered casual). A 90% stepover is clean enought for most of jobs. Spindle, as we said, depends mostly on tools, and it's number of lips (usually one lip tool turn 11000rpm). When milling the wax, we used the tool 50% of it's supposed speed (feed rate) speed.
Here is what it looks like from vcarve's 3D view. You then choose the finish process, in the tool menu. Process is almost the same, except for the choice of milling process.
For both process, the depth of the cut is according to the model. The pass depth is defined by the tool.
We did use a 2mm ball nose, with a 0.2mm stepover. RPM are the same (18000), but speed and plunge rate are different (1.4m/mn feed rate, 0.1 m/mn plunge rate).
First, using the two lips, six millimeters end mill, we did the rought pass. This does a pattern that wiil remove material, for the finish pass to be a polishing, and not a milling. BE CAREFUL WITH THE HEIGHT OF YOUR TOOL ! It ust be higher than the milling depth.
Then, we use the ball nose for the finishing path. We keep x and y axis but do agin the Z one, on the sacrificial layer.
The moulding part is almost the same for components, except that you have to go very fast. I did my mould with this 3D milled cast, from that file. Moulding process is the same. Design and cutting files HERE.
Output Device
For the purpose of this course, we decided to do something useful for our final project. So, we needed a synchronisation between 2 servo motors.
Since we do use the satchakit, to test. We chose arduino code to do this.
You can download final version here. This code alows to change the radius of the scan. It is also a way and back file. (repeating one way and another). To add a stop, we limited the code to the setup and left the loop empty. Sevos are connected to pins 9 and 10, and VCC and GND are shared.
We chose, after this test, to design another card, based on an arduino leonardo. You have eagle files HERE. We adapted it to our final project need, using the controller for Two servos (in same pins 9 and 10), and keeping the I2C communication pins SDL an SDK. We love our card because it has an USB port. You have to burn it first with an ISP, but it is really easy to use afterward.
Here it is. We did put the pins in conventional order. You can find files HERE.
After milling, and soldering. We did try our program with this new board.Here is the result. It works perfectly with our code.
Composites
Files here.
Here, you can see the image imported in V-carve. We proceed as for molding and casting for import. Files parameters are made for a 350x350x85mm material. It is light foam. Tool may break with stronger material like wood.
Roughing was done with a 12mm, two lips, end mill. Pass depth and stepover are really bi, so be careful when using same parameters. they are calculated for light foam molding. Feed rate was not that fast thought (8m/min), to keep a maximum of precision. Spindle speed is 18000rpm, as preconised for this type of tool.
For the finish, we went very slow with a precise tool. Unsing a ball nose 6mm tool, we chose a 10% stepover. It is very few, but gives great results. As we want our object to fly, it must be smooth. Feed rate was also slow for foam (2400mm/min).
Composite material is close from molding and casting. You need a mould. We did it in a very light foam, so as not to spend to much time milling. For it not to move, we did tape it to the sacrificial layer, with double sided tape.
Then, we do a 3D file for the CNC, like in moulding and casting. My file was a frisbee.
Here is the mould. so as to avoid trouble taking out of the mould, I did put a layer of kitchen plastic.
Then, it is very similar to preparing material for a mould. You mix epoxy and hardener in proportion, so as to have your resin.When everything is ready, you add layer by layer your resin full material. We do not have pictures because of our hands in the fabric and epoxy. we do apologize.
After one night drying, it was very easy to unmould. Plastic helped a lot. As you can see, we did ad some extra material on the sides, since it was way to hard to be accurate.
We did cut it with scisors, since it is still a little soft when just out of the mould. Then it dried a little more, and we tested it. It can fly !!!
Networking and Communication
For our final project, we do use a sensor (MLX90614), that uses I2C communication. You can find the datasheet that specifies this sensor.
All wiring and test can be found Here, on Adafruit website, including the necessaray library. you also need the wire library for arduino. It allows I2C communication throught SDA (dataline), and SCL (clock line) pins.
Equivalences are as follow
Board I2C / TWI pins
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1
We did use the exmple provided in the library. And it worked !!!! It uses the wire and the MLX library, and prints, if following the schematics, both ambiant and contactless remote temperature. In Celcius and Farenheit, of course.
In the image above, we do put a lighter, 10cm from the sensor. As you can read, it's hot. Let's see it next week.
We also used an arduino and a ATMEGA328p board, to test exemple from the wire library. It did work, but not at three in the morning.Wiring and protocol make life easier.
First, you make your aduino an ISP. Then, you upload the program in your controller. We did use the master writer arduino exemple. Then, you upload in your arduino (after you unplug the controller) slave_receiver. You plug then both toghether SDA in the board with A5 in the arduino uno (if mega 21), and the SCL in A4 (or 20 on mega).
Here are the satchkit wiring and arduino equivalence. It worked, check out the video.
Interface and Application
This week, we had to interface with data. We chose to image in a graph data coming from our temperature sensor, from melexis industry.
First reading we had was with Arduino serial monitor. We decided to try to use processing. It looks like arduino IDE. In fact, arduino was inpired from processing.
In order to be able to read serial mdata from arduino, you need to import a library, called hardware IO. It is reachable from processing IDE. Here is a github how to.
You use the add library tool, and select the libray you are looking for. Click instal and here it is.
Here is where we got inspired for the code to use in order to btain the following graph.We did realise that I2C data was quiet complicated to represent with processing.
But our code worked. Then, we developed a graphic wa to implement colors in function of a variable. But we couldn't make it work with our sensor data. Nevertheless, we found a trail with mathematica on that very well documented project We didn't have time to look deeply into it, but we think it would be an interesting thing to do.
We did finish by understanding the problem. Data given by our fabduino was given in 8bit buses. So we decided to write a processing code that allows reading the whole data we need.
void serialEvent(Serial myPort){ while(myPort.available() > 0){ int lf = 10; byte[] inBuffer = new byte[10]; myPort.readBytesUntil(lf,inBuffer);
This part tranform our 8 byte reading, into a new byte, after readind the end of reading signal (lf). In this case, this byte is 10. We found that by printing data using the command serialPrintln, and readin the pacages send by our microcontroller to our computer.
String myString = ""; if (inBuffer != null){ myString = new String(inBuffer); }
Then, we turn it into a string. The tricky part was to transform this string into a float. We do this with this after lines
f = 0; valid = true; try{ f = Float.parseFloat(myString); } catch (Exception e){ valid = false; } if (!valid) return;
We do cheat a little, because we found an error from time to time, changing our string into a float. So we catch the error and ignore it. Maybe it is not that clean, but it authorises imaging. Rest of the code is drawing.
As you can see on the video, when approaching a flame from the sensor, cubes are getting blue.
Application and Implication
What will it do ?
Our final project is a non contact thermal imager.An infrared non contact sensor can mesure remote object's temperature. A couple motors give a X and Y 180° range of scanning. On big issue of this project is range of the sensor, and the ability of a program to render an image from data. For the moment, we do have this processing file that allows you to get an image when scanning. We made a 180 on 60 squares grid, and their color changes according to object teperature reading. the range is approximatly 200mm for maximal accuracy. After that, we start to have a less precise reading.
Who's done that before ?
Thermal scanner are quiet common, but when we looked for complete documentation for making our own, we only found very incomplete, or complex and not so well working, projects. For instance, this one, is very complex and needs a lot of material. Nevertheless, it was good source of inspiration in terms of design. Maybe it is even better than mine, who knows. Just just find that begginer easy to reply projects were very hard to find. and it was a good thing, we did learn a lots.
What materials and components will I need ? Where will it come from ? How much will it cost ?
This project needs very few material. For the electronic a ATMEGA380P or a 32U4, the strcture is 4mm plywood. Add two servos, an MLX90614ESF-BCI-000-TU-ND sensor, bolds ans nuts, and a computer fo the interface. Sensor is expensive (almost 40$). Making a stchakit can be less than 20$, servos and plywood, 10$, wiring, bolds and nuts 5$. So it is a less than a hundred dollar thermal imager.
What parts and systems will be made ? What process will be used ?
The electronics will be home made (bb_board and MLX board for plugging the sensor). They are milled and soldered. The MLX board is a personal design. Thermal imager structure will be press fit lasercuted 4mm plywood. Motors and sensor are industrial. We will use processing to program the rendering and arduino ide to program the scan. An interesting thing to do, would be to link both progams to have a nice interface that helps choosing the scope of the scan movement. Something else, is an ameloration of the rendering, maybe by adding a camera to have a visual rendering.
What task needs to be completed ?
We still are working with the MLX90614, with a 90° range, and our readings are accurate just 3cm away from sensor. Changing for a more tight angled sensor (MLX90614ESF-BCI-000-TU-ND) with just a 5° angle for reading, shall give us a further accurate reading. Also, making a less prototype looking design is necessary.
What questions need to be answered ?
Imaging is one big problem. And also range. The sensor is not precise after a quiet short distance. Using a better sensor could be an aswer, but prices would go up. So the question might be : how to make a better performing scanner for a low cost. But like I said, my goal was to add a brick in a wall, and to implement a theoretical project. Hopefully, it will be at least inspiring.
What is the scheduale ?
Scheduale for project is prototyping schedduale. We did realise that sometimes, you under (or over) evaluate necessary time for a task to be properly accomplished. Since the sencor shall not be delivered before a few days, we'll start by making a better design. Then, trying to maeliorate the code, and if time is on our side, and the new sensor has a better range, making a button application to start the scan.
How will it be evaluated ?
We guess that design, cost, and simplicity are strenght of our project. It is simple, and uses common items. Also, the fact that this idea is meant to be shared, and to participate to global knowledge growing, not for personal reasons only, might be taken in account.
And if my project works of course, meaning the two servos making the structure being a scanner, and the thermal reading and imaging work.
Maybe also the lack of existing documentation. We do think, most of the classes were used to progress, as advised, and that it ca, also be relevant in evaluation.
Invention, intellectual property, and income
This work shall be registered under CC license, and is meant to be shared, improve.
CC license, is a way, according to us, to give our work as part of "commons". We do not mind it being commercialy used at some point, but most of all, this license protects this work in terms of intellectual property, and encourages sharing of further inspired work.
We did hesitate with a licence, also CC, authorising commercial use. But it is not the spirit of the project. We prefer to protect our project from merchand use.
CC license protects the author rights and property. You can choose for it to be authorised or not for reproduction (we chose to authorised reproduction), and to reproduce it, either for non commercial use only (our choice), or to be possible to use for commercial purpose. Since our project is a brick of knowlege, wothy for what it is, we do not want it to be used commercialy.
We could have chosen a different type of protection for this project, but since we want it to be shared, that seemed the right one to choose.
For the moment, nothing is sure about this project's future. But if we can improve it, and work with drone company, to make this ballbot and save lives, this could be a great future for it.
This can be reproduce for non commenrcial use only, and amelirations or inspired work may be published and for commercial use.