Saturday, 19 December 2015

Week 2 - Testing Components and Attempting to Frankenstein a Shield Board

This week we set about testing the components and making some adjustments to the design based on the results of these tests. Unfortunately we still haven't figured out how to get the OV7670 camera module working, Liam will be attempting to get it working by the end of the winter break. If he is unsuccessful then we will look for alternatives and according adjustments to the design will be made.

I2C Accelerometer and Gyroscope Module (GY-521)
Fabio has tested the analogue accelerometer and he has found that it does not detect any rotation around the pole of gravity, meaning that in order rotation on a horizontal axis (which is required for the basic functionality of the device) we will require another sensor. After some research it was found that a gyroscope can fix this problem and as such an I2C accelerometer and gyroscope module was obtained from Damian Hon, a fellow student in the class that had ordered a large number of the modules and had spares. While the module will be less easy to work with than the analogue accelerometer module, it will be better suited to the purposes of this project.

Frankenstein'd solder board
Liam has tested both the rangefinder and laser modules has confirmed that they are fit for purpose. He has also been attempting to figure out how to extend the solder board further as it currently is not wide enough to reach the appropriate pins to serve as a shield given the fact that the new accelerometer and gyroscope module requires use of the SDA and SCL pins. An attempt was made to Frankenstein two of the existing solder boards together but it was pretty clear that this was inadequate and would not work correctly. The decision was made to instead order a solder board specifically designed for prototyping Arduino shields from Amazon. The new board should arrive next week.

Additionally two changes in the interaction design of the prototype have been made during a group meeting. The first change is that the device will no longer scan 3D points using a point and click system to scan each individual point in 3D space; it will instead use continuous sampling to generate a height-map which can then be used to construct a detailed mesh via tessellation and deformation of a flat plane. This was done to improve the ease of use for novice users and decrease the amount of time taken to perform a 3D scan in most cases, especially when high detail is required. The second change is to the design of the device housing as it has been changed from a laser-pointer style design to compact-camera style design. This was done to increase the ergonomic familiarity to the user.

During the winter holidays Liam will be attempting to get the camera module working. Fabio will be attempting to find a library for and test the I2C accelerometer and gyroscope module.

Thursday, 10 December 2015

Week 1 - Looking for parts


Seeing as this is the first post on the development blog for the 3D Take-Away project, an introduction to the project is in order. 3D Take-Away is a project by Liam Robinson and Fabio Peres Filho that seeks to bring 3D scanning to a handheld form factor, so that 3D designers and artists can scan almost any object that inspires them to create a rough 3D reference image while on-the-go to use as a base for making a full detail model later.

To start the first week we decided to begin the project by looking for parts in order to begin building a breadboard prototype for testing the next week. We used numerous sources to acquire the parts, including ordering parts on amazon.co.uk and salvaging spare parts from old household electronics.

Figure 1 - Arduino Board
To control all of the inputs and outputs of the project we chose to use the Arduino Uno (Figure 1) given that both group members had one, so if one broke we would have a spare, and because we were familiar with the Arduino IDE already.





Figure 2 - Accelerometer Module
Figure 3 - Rangefinder Module
In order to generate 3D co-ordinates for the scanner we would need an accelerometer to read the orientation of the device (figure 2), in combination with a rangefinder to get the distance between the scanner and the object it is scanning (figure 3). For these purposes Fabio hunted down the GY-61 analogue accelerometer, which would be ideal for use due to the fact that the readings could be taken from it using the analogue input pins on the Arduino. This would be far easier than using, for example, an I2C accelerometer as we would only have to read from the pins and would not have to deal with reading data buffers. He also found the Sharp 2Y0A02 Long Distance Measuring Sensor which also gives an analogue output, making it easy to detect the range between objects and the sensor at distances as low as 20cm and up to 150cm. The rangefinder was modified by Liam to mount more ideally to the front of a case by removing the plug on the front of the module and replacing it with wires coming out the back of the module. During the modification some of the PCB was damaged, but through some more modifications the module was salvaged. Both the accelerometer and rangefinder were ordered from Amazon.

Figure 4 - Laser Module
In order to see exactly where the device was pointed we needed to obtain a laser module (figure 4). Rather than ordering one, Liam managed to salvage one from an old battery powered laser pointer. Getting it working without a connection to the battery and casing was a process of trial and error as Google searches for it's part number, assumed to be ZY65A as it was the only marking on the board, only returned results for sex toys and did not yield a datasheet.

Figure 5 - Camera Component
We also wanted to get a texture for the object being scanned, as such we would need a camera (figure 5). Liam managed to acquire the OV7670 camera module via Amazon for this purpose.








Figure 6 - Arduuino with a "shield" board
In order to tie all the components together we would also need some solder prototyping board (figure 6). Liam ordered some of this from Amazon as well as some header pins so that the combined components could act as a shield for the Arduino.







Next week we plan to be testing all the components and making any necessary adjustments to the design.