Ever wonder of copypaste method, usable in real life, not only in virtual reality? Me too. It is  21th century, and those are nearer than most of all can imagine! This is possible thank to 3d scanners and printers. So let's try to scan something!

First of all, sorry for my English skills. It is not my native language, I have learned it at school, but don't have many occasions to use it, except of reading articles in English. But i hope it would be good enough to understand.

Step 1: Ingredients

-one Arduino with Arduino IDE
-one Processing IDE
-a lot of LEGO (best toy ever!)
-one stepper motor
-one Stepper motor driver and power supply
-one linear laser
-one webcam
- one working Meshlab
and Some help :)

First, you need to get all parts and think about overall look and working method.
And it depends the most of type of stepper motor you can get. I got my stepper from old OKI printer, which has attached gear set. It was very useful, because i could attach Lego pulley, without destroying it permanently. In a fact, i hadn't destroyed any Lego blocks during build of rotating platform. I hate destroying things.
Code is primitive, i know it. It has major mistakes, not all needed algorithms are applied. But it generates point clouds, which are very similar to real things and that was goal of this alpha version of scanner.

So let's prepare parts.
<p>I'm working on this similar project. I used the basis of the software here to get started!</p><p>I've heavily modified the software to fit my purpose. I now have a somewhat chatty serial console that talks from the Arduino to the Processing sketch. I also changed the Processing code to use 2.0 and the new Video code.</p><p>I have my current derived work here: https://github.com/jwcrawley</p><p>I look at having it no longer derived when I eventually rewrite the code in Java and using PCL and OpenCV libraries. But that's a long time out :) And all shall still be open source!</p>
<p>I am very ashamed that I cannot continue my work with scanner. In my country, there is common proverb: &quot;When You want to make God smile, tell him about your plans&quot;... I've got finished rotating platform made from vinyl records player, laser diode driver controlled from ardu, better cam. But I'm not still finished with software. I see, You've implement handshake mechanism (You are calling it ping-pong); i've resigned from in 1'st version, but found it necessary in second. Anyway, GOOD JOB.</p>
<p>Sorry I havent had a chance to respond sooner! I've been quite busy with this: </p><p><a href="http://hackaday.io/project/2021-3D%28ollar%29-Scanner" rel="nofollow">http://hackaday.io/project/2021-3D%28ollar%29-Scan...</a></p><p>And don't be ashamed :) It was your project's start that I embarked on my own. I plan on the license of this software to be an Open Source one, either BSD or GPL (probably GPL3). </p><p>I was given an HD webcam by a friend of mine at our local Hackerspace. I've also bought 2 line lasers from China as well! Currently, I need to rebuild my project enclosure and work on the Linux GUI application. I plan on using Qt (for the GUI), OpenCV, and PointCloud Library! And I'm already a good step of the way there.</p><p>I hope you're able to use my works once I am done with it! I'm sure glad you started it, for I take the baton and continue :)</p><p>Sincerely,</p><p>Joshua Crawley</p>
I had an Arduino lying on my desk for a while, a friend got into&nbsp; 3D printing, another one was over motivated and we finally bumped into your Instructables. A few hours later, without an installation as stable as yours and a cheap equipment (the good point of living in China at the moment) we already get some decent result (picture attached).<br> <br> Now the next step is to deal with meshlab, because even with a nice cloud of points it doesn't seem so easy to get a nice STL, I may try the library that Amanda was suggesting actually (crazy Instructables Amada also did by the way!)<br> <br> And then, plug that in a 3D printer \o/<br> <br> Thank you so much for the inspiration!!
<p>Hi... could make one instructables for us (the noob)... we will appreciate that.</p>
<p>Hi,</p><p>Hum Idrispo I'm confused, here is the page of an instructable about this so what else are you asking for? You mean this instructables is not detailed enough?</p>
Good to see that my instructable was used by someone! <br>Currently I have unplanned stop at the scanner. Parts for this project (laser) and for another one, ordered in China, have huge delay... My hands shaking, wants to do sthg... <br>
have you tried sxporting the stl directly from processing, I just downloaded the modelbuilder library and have had a lot of success with it. cool project!
I have not because I hadn't know about it. It seems to be really promising thing! Thank You very much for this information!
http://workshop.evolutionzone.com/2011/04/06/code-modelbuilder-library-public-release/<br />it's really easy to use
<p>hello dear than you for your project really its amazing project,</p><p>Dear i use the following code for stepper motor i dont know its the same or not becaue your arduino code dont work in my IDE please i need your help :</p><p>#include &lt;Stepper.h&gt;</p><p>/*-----( Declare Constants, Pin Numbers )-----*/</p><p>//---( Number of steps per revolution of INTERNAL motor in 4-step mode )---</p><p>#define STEPS_PER_MOTOR_REVOLUTION 48 </p><p>//---( Steps per OUTPUT SHAFT of gear reduction )---</p><p>#define STEPS_PER_OUTPUT_REVOLUTION 48 * 6 //288 </p><p> const int ledPin = 12;</p><p>int incomingByte; // a variable to read incoming serial data into</p><p>Stepper small_stepper(STEPS_PER_MOTOR_REVOLUTION, 8, 10, 9, 11);</p><p>/*-----( Declare Variables )-----*/</p><p>int Steps2Take;</p><p>void setup() /*----( SETUP: RUNS ONCE )----*/</p><p>{</p><p> // initialize serial communication:</p><p>Serial.begin(9600);</p><p>// initialize the LED pin as an output:</p><p>pinMode(ledPin, OUTPUT);</p><p>// Nothing (Stepper Library sets pins as outputs)</p><p>}/*--(end setup )---*/</p><p>void loop() /*----( LOOP: RUNS CONSTANTLY )----*/</p><p>{</p><p>incomingByte = Serial.read();</p><p>// if it&rsquo;s a capital H (ASCII 72), turn on the LED:</p><p> Steps2Take = - STEPS_PER_OUTPUT_REVOLUTION; // Rotate CCW 1 turn </p><p> small_stepper.setSpeed(60); // 700 a good max speed??</p><p> small_stepper.step(4);</p><p>if (incomingByte == 'S')</p><p>{</p><p>digitalWrite(ledPin, HIGH);</p><p> // delay(2000);</p><p>}</p><p>else if (incomingByte == 'E')</p><p>{</p><p>//return ;</p><p>digitalWrite(ledPin, LOW);</p><p>}</p><p>/* --(end main loop )-- */</p><p>}</p><p>/* ( THE END ) */</p>
<p>Hi, i made the connections as per your instruction but when i plug it on my motor keep buzzing(shaft not rotating) please help me as soon as possible.<br>thanks.<br>hafzalhamza@gmail.com</p>
<p>Great project. I am new to Processing, can you please help me in understanding the code, the &quot;configuration part&quot; specially. Please I am stuck at this part and I couldn't figure it out myself. </p>
<p>Your project is really very Interesting. Can You Please explain me the &quot;configuration section&quot; and &quot;main section&quot; of your code. I am trying to make this project at home but since I am new to processing I want your help.</p>
<p>Hi. Built my 3d scanner based from your build. But I created my own communication protocol with my teensy. Letting the teensy turn on/off laser, stepper driver, set microstepping and of course stepping the motor.</p><p>The first problem i ran into with your processing code was to use GSvideo. Seems like I cant install the library. Processing wont detect it. So I went with the default processing.video.*. </p><p>With processing.video.* &quot;cam = new Capture(this, 1024, 768, avcams[0]) wont compile. </p><p>With &quot;cam = new Caputer(this, 1024, 768); the built in camera is selected and not my usb one. </p><p>With &quot;cam = new Capture(this, avcams[0]); Correct camera is selected but I &quot;get: java.lang.IllegalArgumentException: Width (0) and height (0) cannot be &lt;= 0&quot; which refers to cam.height and cam.width. So no images are captured. </p><p>Turned out to be a long trouble shooting post. Really looking forward to getting the scanner to work. Hope you can help me.</p><p>Great project, thumbs up!!</p>
<p>&quot;hey i tried running the code on processing but i got an error saying ArraryIndexOutofBoundsException: 0 for this line</p><p>myPort=new Serial(this, Serial.list()[0], 9600);&quot;</p><p> I'm having the same problem. Anybody here konws solve it ? Thanks...</p>
<p>hey i tried running the code on processing but i got an error saying ArraryIndexOutofBoundsException: 0 for this line</p><p>myPort=new Serial(this, Serial.list()[0], 9600);</p><p>is there any1 that can help me with this problem?</p>
<p>I need help too.... Anybody here knows solve this problem? thanks.</p>
<p>hi </p><p>it all works fine its just when i run the processing <br>sketch the window that opens up for the camera view is all white is it <br>possible i could get some help with this </p><p>thank you</p>
<p>Hi there, great project!</p><p>How do you time the picture with the stepper motor? Is that controlled by Arduino or is it just a timing thing?</p>
<p>what software to use capture image.?<br></p>
<p>Processing with Gsvideo library.</p>
<p>without software, and where file *.asc directory save.?</p><p>sorry my language not good :)</p>
um. What's a linear laser?
<p>When a ray of light or laser pointer falls on a glass rod, it diverges and it can be considered that the glass rod acts as a convex lens. After divergence, it gives a line instead of a point when falls on a surface. </p>
<p>I am very new at this thing so I may sound stupid. The interconnection between the circuit components are a bit unclear to me. will you please tell me at least shortly?<br>And there is a part about switching on and off of LED in the processing code. But I cant find anything about any LED elsewhere. Maybe it is my fault. Please reply.</p>
Arr! Pirates! :D
hi, genius idea. i tried to eliminate the rotating platform for make a flat 3d but i cant make work, can you please help me?
Selecting between rotating platform and linear scanning will be feature in v2 software, im currently writing. But it can take some time more beacuse of huge amount of other things i had to do. New release could be expected in 2-3 months.

About This Instructable




Bio: Cyclist, hand made knives enthusiast and cnc fan!
More by cube000:Yet another simple nightvision Repairing LCD monitor: how NOT to become planned obsolescence victim Become Rocket Engineer! 
Add instructable to: