The goal of this project was to create a system that could detect 3 hand gestures in 2-dimensions, as well as take 3D scans of basic geometry.
This system utilizes various mechanical and hardware components, including 3D printed and steel parts, motors, buttons, a microcontroller, motor shield, and ultrasonic sensors. The software was implemented using Arduino, which controls the components and receives data from the sensors, and Python, which processes the data and outputs visualizations. The results of the testing show that the system was able to produce differentiable images of 3 hand signs in the 2D scanning mode, and a successful scanning of cylindrical and conical objects in the 3D scanning mode.
System fully assembled:
2D-scan sample results:
3D-scanning was tested on a cylinder (water bottle) and cone (clay):
The scanning mechanism edited in Solidworks and then converted to STL and 3D-printed:
Code was written in Python and Arduino. The code at a high level runs as follows:
Packages/libraries used were:
- Serial
- Numpy
- pyVista
- pyplot
- Adafruit_Motorshield
Hardware components:
- 12V Unipolar NEMA 17 Stepper (x2)
- Arduino Uno
- Adafruit Motorshield v2.3
- Button (x2)
- Resistor (4.7kOhm) (x2)
- HC-SR04 Ultrasonic Sensor (x5)
- Wire
- Breadboard
- Power-Supply
Hardware components were arranged as follows:
To use this project:
- Upload and run Arduino_control_code.ino
- Run scan_processing.py
- Connect to correct port when prompted
- Press button to begin scan
- Green for 2D scan
- Red for 3D scan
Contributors on this project were:
3D parts were adapted from the design by SuperMakeSomething