Hand tools and fabrication machines
Updated for the 2019 China-US Young Maker Competition1) Background
AudibleVision is designed to alert a person of objects around them. The project’sbrain is the Arduino Uno, which is wired up with two IR Distance Sensors totell you how far an object is. Mounted onto the Arduino is a Bluefruit EZ-linkBluetooth shield that connects to any Windows 10 device, e.g. Laptop or Phone.The device should run the Virtual Shields for Arduino App and use the Windows10 speech synthesis capability to tell the distance. In order to expand thisconcept into a robot, stack a Motor Shield onto the Uno and obtain a mobileplatform to place the sensors and microcontroller. Wire up a Light Sensor and aRemote IR Sensor to the analog pins of the Arduino, and you have a robot thatis controlled by a remote, stays close to a walking person with a leash enabledby a light beam, and warns the person of objects ahead or around theirvicinity. For additional fun connect up a Piezo buzzer and Siren to beep whenchanging direction.
Since Ialready had a Multiplo-based robot, I mounted the Arduino Uno with theBluefruit and distance sensors onto the Multiplo-Bot because of the Uno’sunique Bluetooth compatibility. But for the rest of the items (Light Sensor, RemoteIR Sensor, Piezo Buzzer and Siren) I used the already-existing microcontroller“Duino-Bot”, which drove the motors of the Bot and used a Ping UltrasonicSensor to detect objects. In the future, I plan to connect the twomicrocontrollers. The final contraption, “Duffy”, is a mobile companion that isdirected with a remote, and senses and alerts the user of objects closeby. It took me just about a week’s worthof tinkering in my spare time during my High School Winter break.
Thisproject is simple to create and has a variety of possible add-ons. Instead ofusing a Windows 10 laptop, a Raspberry Pi running Windows 10 can be connected seriallyto the Arduino. A GPS shield stacked onto the Uno can provide the robot withits exact location. Or instead of using a robot, a tiny Arduino such as theMKR1000 can be fitted into a walking cane with IR sensors, which cancommunicate to a Windows Phone via Wi-Fi and inform a visually impairedindividual of objects around them.2) Setup
a. Arduino Uno setup
Firstinstall the Arduino IDE Rev 1.6.x on your Arduino Uno from the following link: IDE. Then install thefollowing libraries:
§ Average (https://github.com/MajenkoLibraries/Average)
§ ArduinoJson (https://github.com/bblanchon/ArduinoJson)
§ VirtualShield (https://github.com/ms-iot/virtual-shields-arduino)
§ Tutorial for Windows Virtual Shields for ArduinoApp (http://ms-iot.github.io/content/en-US/win10/WVSA.htm)
o Install Microsoft Visual Studio 2015: (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx)
o Download the following library: (https://github.com/ms-iot/virtual-shields-universal)
o After unzipping the Virtual Shields UniversalDevelop folder, copy it into the Projects folder of Visual Studio. Then open itand click on Shield.sln. On the right hand side in the Solution Explorer thefolders “Shield, Shield.Communication, and Shield.Core” will appear as“loading”; right click on one of them and install the NuGet Packages. Finallychoose Build > Rebuild Solution, and then click the green arrow (set toLocal Machine) to run the code, and the Virtual Shields for Windows App shouldopen!
b. Sharp IR distance sensors (see Fig. 1)
Connectthe two IR distance sensors as shown in Fig.1 to the Arduino Analog IN pins, 5Vand GND. It is very simple to get a voltage reading from the IR sensors using “AnalogRead(pin#)”. However, in order to translate the sensorvoltage to an object distance, I used the following tutorial for generalguidance: IR.Then I used my own measurements to find the coefficients of a polynomial fit tothe data (distance vs. voltage) and compute the calibration curve in theArduino code.
c. Bluetooth setup (see Fig. 2)
Solderthe stacking headers on the Adafruit Bluefruit EZ-Link Bluetooth shield. It is advisable to test the Bluetoothcommunication with the Windows 10 Laptop before proceeding to the nextsteps. For this simple Bluetooth pairingand communication test I followed the following tutorials for the Bluetooth Breakoutor Shield. Make sure that the switch is set to theappropriate mode while downloading code into the Arduino or trying tocommunicate with the Bluetooth shield.
d. Light and Remote IR sensors (see Fig.3)
Iused simple “AnalogRead(pin#)” commands to read the voltage from the Light Sensorand selected a threshold value for brightness based on the backgroundlighting. If you want the Robot torespond in bright background light then 2 light sensors can be installed, whereonly one of the sensors receives the light beam from the flashlight. Then the difference voltage can be used torespond to the light beam selectively. For the IR Remote sensing I first recorded the ASCII code that thesensor sends when specific buttons on the remote are pressed, and used thatcode to program the Arduino for forward (UP arrow) and backward (DOWN arrow)motion.
e. Piezo Buzzer and Siren (see Fig. 3)
Toalert the user of objects in the front and change of motion, the Multiplo-Botgenerates sounds through the Piezo Buzzer and the Siren. These are very simply interfaced with theArduino by connecting the positive terminals to Digital OUT Pins and thenegative terminals to GND through a 470 Ohm resistor each. The resistor values can be changed forgetting different sound levels. I usedthe “DigitalWrite(pin#)” command for the siren and the “tone(pin#, frequency,time)” command for the buzzer to create the sound effects.3) Bill of Materials
Fig. 1) Setup of IR distancesensors with Arduino Uno: Analog IN Pins #3 and #4 are used to detect objectsat left or right of moving Multiplo-Bot. This information is then sent to a Windows 10 Laptop via the Bluetoothcommunication (Adafruit Bluefruit EZ-Link Bluetooth Shield shown below).
Fig. 2) Adafruit Bluefruit EZ-LinkBluetooth Shield for Arduino: The switch is set to “Direct” mode for Bluetoothcommunication with the Laptop’s Virtual Shield for Arduino App. The switch is set to “Soft Serial” mode fordownloading Arduino code via USB cable.
Fig. 3) Setup of Sensors andAudio with Duino-Bot: The Remote IR and Light Sensors are connected to the AnalogIN ports S1 and S4, respectively. The Piezo Buzzer and Siren are connected tothe Digital OUT pins #5 and #6, respectively. The 470 Ohm resistors in the paths to GND are used to limit the currentthrough the Buzzer and Siren and so determine the sound level. The resistor value can be adjusted for adesired sound level.
In this demothe Ping Ultrasonic Sensor connected to Analog IN port S2 is used to stop theMultiplo-Bot when an object is detected in the front. But this is not needed for the Audible Visionproject, since the user controls the robot motion with a light beam.