The objective is to create a canvas which is adapted for partially sighted people.
It is an engraved image on a wooden plate in a way that touching the plate provides physical details about the canvas. The plate is painted with conductive paint and it is connected to the Arduino chip. When touch is detected, an audio description of the canvas will be played
- Basic knowledge in programming, electronics and Arduino
- Ability to use a laser cutter
Step 1: Arduino Circuit
This project was made using Arduino UNO - other Arduino chips could do it
- Arduino UNO chip + breadboard
- SD card or microSD card (with adapter if needed)
- Connecting wires
- A 9V battery
- Headphones (or earphones, speakers, etc)
- One 1000 Ohm resistor and two 13k Ohm resistors
- A SD card module (Module GT126 used here)
- A female jack plug
Touch sensor 1 (or 2):
- Connect a 13k Ohm resistor between digital pins 2 (or 6) and 5 (or 7)
- Connect your sensor wire to pin 5 (or 7)
- Solder two wires to the jack plug ends (if needed)
- Connect a 1000 Ohm resistor between the jack plug and the ground
- Connect the jack plug to the 10th pin on the Arduino
- Plug in your headphones to the jack plug
Powering the Arduino
- Connect the positive end of the battery to the Vin pin on the Arduino
- Connect the negative end of the battery to the GND on the Arduino
SD card module
Follow these indications to connect your sd module properly:
- GND to GND
- CS to pin 4
- MOSI to pin 11
- MISO to pin 12
- SCK to pin 13
- Vcc (+5V or 3.3V) to 5V or 3.3V on the Arduino
More details here.
Step 2: Arduino Programming
- Include "SD.h" and "SPI.h" libraries
- Include the "CapacitiveSensor.h" library (by Paul Bagder and Paul Stoffregen). An explanation of this library is available here.
- Include "TMRpcm.h", "pcmConfig.h" and "pcmRF.h" (Downloadable zip)
- Initialize two CapacitiveSensor sensors on pins (2,5) and (6,7)
- Declare a global variable TMRpcm tmrpcm
- Declare two global variables of type long (val and val2) in order to stock the sensor signal value of each sensor.
- Define a constant SD_Pin equal to 4 to read the SD card connected to the fourth pin of the Arduino.
- Initialise the volume and the output in the "setup" function.
- Create a function playAudio which takes two parameters: the audio file name and its duration in ms. This function will be used to play audio.
- Stock in val and val2 the values received by sensor and sensor2 respectively
- If val or val2 detects a touch, the appropriate audio file will be played.
NB: The values of val and val2 aren't necessarily the same for all sensors. They depend on the sensor material. These values are experimental and can be found using Serial.println to print them in different situations (touch or no touch).
Step 3: Laser Cutting
- For the sake of this project, many laser cuts will be done on wood then glued together.
Classical laser cuts are done in three steps
- Edit your image in an image editor (Adobe Illustrator, InkScape, etc)
- Use different colors in order to distinguish different cuts (if needed)
- Send your edited image to a laser cutter software (VisiCut,LaserGRBL, etc)
- Set up your settings and preferences: wood type, image width and height, laser power and speed, etc ...
- If you used colors, select the cutting mode: map by color
- Export your new file with .gcode extension and upload it to your laser cutter
- Many different wooden layers were cut, then glued together to form the final result with the best accuracy
- I would suggest testing a lot on small prototypes in order to master your art (laser errors and failings are common)
Step 4: Getting Everything Together!
- Paint contact zones with conductive paint
- Glue your different wooden layers
- Connect the contact zones to the Arduino sensors input (e.g: they can be connected with wires after drilling small holes to the back)
- Test and improve technical and artistic details
- Optional: make a stand for your creation