This Instructable describes a frame scanner made with ultrasonic range detectors under Arduino.
The range detectors are placed along the back side of a frame. When an object (a pointer) is introduced within the frame the distance from the sensors is retrieved and the position of the object is calculated by trigonometric means. This information (the position of the pointer) is shown in a screen and can be used for other purposes (in this case to control a common anode led, whose color is changed depending on the position of the pointer).
Considerable (futile...) efforts were dedicated to determine the best number and position of the sensors. The accuracy of the readings is only moderate, and therefore the precision of the location is only moderate.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: 1: the Ultrasonic Sensors
I am using six HC-SR04 ultrasonic sensors (distance detectors).
There are contradictory references regarding the accuracy and reliability of these sensors. My experience is that their performance is only moderate, as described in:
However, this is what I have and, in any case, this is not expected to be military grade gear...
Step 2: 2: Design of the Frame Scanner
I spent a considerable amount of time/effort designing the scanner for optimum output, and this with regard to the dimensions of the frame and the number of sensors, their position and orientation.
A document discussing in some details these struggles can be found here:
Step 3: 3: Preparation of the Frame
I have used an olf wooden frame - it used to portrait a B&W image and now is supporting a technological endeavor...
I drilled the frame for placing the pins of the sensors and used hot glue to lay them fix in the final position and orientation.
Step 4: 4: the Arduino Core
I am using an Arduino Pro mini, mounted on a socket and on a prototyping PCB, which also holds the common anode LED.
The sketch can be found here: https://app.box.com/s/erhwf7f3r03zu68f33kp