The Laser Activated Remote Control for the Disabled and Handicapped People is part of a built-in control system for people’s homes. The mechanism by which this works involves color codes hung up on walls around the house, which serve as targets for a laser mounted on the headset module and can be positioned near switches and appliances. To use the headset, the user must reorient his or her head to aim the laser at one of the targets and by doing so, one can control a certain activity within their home, such as turning on a light, locking a door, or turning up the heat. This innovation is meant for people who have limited mobility and take a long time to get from one place to another. Such disabilities make it difficult to function efficiently within the vicinity of one’s own home and those inflicted often require an aide to be by their side. This problem is common among elders who sometimes struggle with adapting to newer technologies. The standard control system today is interfaced by users graphically. But the design for the Laser Activated Remote Control offers an alternative interface that is simple and more intuitive. By enabling elders to have better control of their homes with less effort they can start to live more independent lives.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Parts List
-1 Pixy Camera from Charmed Labs
-Ribbon Cable (pixy camera to Arduino connector)
-1 Arduino nano and 1 Arduino Uno from arduino.cc
-2 HC-05 Bluetooth Modules
-3d printed pixy camera case from Thingiverse (https://www.thingiverse.com/thing:820353)
-Go pro head strap
-6.5 cm by 5 cm rectangle of PBC plastic
-1 Laser pointer from Adafruit
-1 Laser mount from Adafruit
-Breadboard Jumper Wires
Step 2: Headset Module
1. Design and print out a target color code for the pixy camera to recognize (an example is shown above at the left)
2. Set up the pixy camera to recognize the necessary signatures for the color code you printed, according to the pixy documentation. https://docs.pixycam.com/wiki/doku.php?id=wiki:v1:start
3. 3d print a case for the pixy camera from Thingiverse https://www.thingiverse.com/thing:820353
4. Position the laser mount on top of the case so that it is aligned to be directly above the hole in the case, where the camera lens fits. Mark the points where the screw holes are and drill a hole in the case at each.
5. Screw the laser mount on top of the case using the holes you just drilled, insert the laser pointer into the mount, and clamp it in place
6. Put the pixy camera inside the case and secure it down with screws (using just the bottom two screw holes was sufficient for me)
7. Connect the Arduino nano ICSP header to the pixy camera via a ribbon cable. Make sure the cable faces the interior of the nano.
Step 3: Determining the Coordinates of the Laser Point
1. Place the printed color code somewhere, like a wall, so that it is clearly visible
2. Connect and upload the [pixy_cam_data_collector.ino] code to the Arduino nano and without disconnecting the USB cable open the serial monitor
3. Connect the positive terminal of the laser to the 3.3 V pin on the nano and connect the negative terminal to ground. (WARNING: This will turn the laser pointer on. Always be cautious when working with the laser as it can cause permanent damage if pointed at the eye)
4. Carefully lift up the headset module and aim the laser at the color code. Keep the laser fixated on the target as you vary the angle and try to aim at the borders of the color code too.
5. As you do this, a list of (x,y) coordinates should show up on the serial monitor.
6. Copy and paste the coordinates into a text file. Rename it as a .csv file and open it with excel to compute the average of the x values and the average of the y values. The two respective averages with be the x y coordinates of the laser point(critical coordinate). In the scatter plot above the average coordinate is (172,73)
Step 4: Pairing the Bluetooth Modules
1. Take out both Arduinos (Nano and UNO), connect them to your computer via USB and upload a blank sketch onto each.
2. Take one of the HC-05 Bluetooth modules and connect it to the Arduino UNO with the following connections: ( EN to 5V, 5V to 5V, GND to GND, TX to TX, RX to RX)
3. Select the Arduino UNO in the Arduino IDE, unplug the UNO's USB cable, and replug it in while pressing the button on the Bluetooth module. The LED on the HC-05 should start blinking slowly. The module is now in AT mode.
4. Open the serial monitor. Enter AT twice in the serial monitor (First time will give an ERROR and the second time should give an OK)
5. Enter “AT+ROLE?” which should return a number indicating what role the module assumes(1 for master and 0 for slave). The role should be set to 0. If it isn’t, type “AT+ROLE=0”.
6. Enter “AT+CMODE?” to check the connection mode. It should be 1. If it isn’t, type “AT+CMODE=1”.
7. Enter “AT+UART?” to check UART baud rate. It should be 38400,0,0. If it isn’t, type “AT+UART=38400,0,0”
8. Enter “AT+ADDR?” to get the address of the slave module, which should be a series of hex numbers separated by colons. Take note of this address.
9. Disconnect the slave module from the UNO and power it up on the nano (5V to 5V and GND to GND). It may help to label this module as slave.
10. Connect the second HC-05 module to the Arduino and put it into AT command mode as described in substeps 2-4.
11. Enter “AT+ROLE=1” to set the module as master
12. Enter “AT+UART=38400,0,0”
13. Enter “AT+CMODE=1”
14. Enter “AT+BIND=[slave address]” where [slave address] is the address of the slave you recorded in substep 8 with the colons replaced by commas.
15. Enter “AT+INIT”
16. Enter “AT+PAIR=[slave address], 10” Again [slave address] is the address of the slave you recorded in substep 8 with the colons replaced by commas.
17. After entering that last command, you should get an OK response and the two Bluetooth modules should be blinking synchronously, indicating a successful pairing.
Step 5: Final Assembly
1. Connect the master Bluetooth module to the Arduino Nano, with the following connections (GND to GND, 5V to 5V, TX to RX, RX to TX)
2. Make sure the laser pointer and pixy camera are still connected to the nano as described before.
3. Download the [laser_device_controller.ino] code and change the laserPointX and laserPointY integer constants to the x y values you got when determining the laser point.
4. Upload the code to the Arduino Nano. When doing this, you must temporarily disconnect the TX and RX pins.
5. Turn the case upside down, exposing the back and rotate it so that the camera lens is on the side opposite to yours. Place the piece of PBS plastic on top of the back aligning the ride side with the edge of the case.
6. Mark the spot on the plastic directly above the pixy camera USB port and drill a hole large enough to allow a cable to be plugged in.
7. Hot glue the piece of PBS onto the back of the case. Use double sided tape to stick the Arduino Nano on top of the PBS plastic. Finally, glue the Bluetooth module on top of the case next to the laser.
8. Screw the whole case onto the Go Pro head strap.
Step 6: Building the Led Module
1. The purpose of the LED module is to test the functionality of the headset module. To make it, connect the slave Bluetooth module to the Arduino UNO (5V to 5V, GND to GND, TX to RX, RX to TX)
2. Finally, connect the positive lead of the LED to pin 13 and the negative lead to GND.
3. Upload the [led_module.ino] code onto the Arduino UNO. Again, while doing this, you must temporarily disconnect the TX and RX pins.
Step 7: Final Test
1.Power up both the Arduino Nano and UNO with a USB cable. Again, be careful when you do this as the laser will automatically turn on.
2. Set up your color code target so that it is visible.
3. Aim the laser at the target and watch the LED light up on the Arduino UNO.
4. Wait for 2 seconds and then aim the laser again. Watch as the LED turns off this time.
5. To vary the level of responsiveness, you can tweak the pixy configuration parameters to control sensitivity to changes in color hues (refer to pixy documentation) OR you can change the allowedDeviation integer in the laser_device_controller.ino code, which will determine the acceptable distance between the laser point and the laser coordinate from step 2 (NOTE: The set of all points on the color code that will trigger a response if hit by the laser is referred to as the critical area). If this integer is larger, more of the color code area will be encompassed by the critical area. However, if it is too large a response will be triggered even when the laser point is outside the color code.
Step 8: Documentation
The BCAMRL Poster shows what the original design of the prototype was. Note that there are differences between what is outlined in this Instructable and the poster.