"Don't Touch Me Box"
Ik heb voor dit project een een beestje in een doos gemaakt dat niet benadert wilt worden. Het ziet er uit als een doodsnormale houten doos dat op je bureau kan staan, totdat je vreemde geluiden eruit hoort komen. Door de doos voorzichtig te benaderen om te zien wat het is, hoor je een felle kreet van de doos afkomen die je waarschuwt om op afstand te blijven. De doos is voorzien van een sensor die de afstand meet tussen je hand en de doos. Binnen een bepaald bereik word er een geluid afgespeeld dat drie keer zo hoog is dan het geluid dat normaal afspeelt word als je de doos niet aanraakt.
Tijdens het traject van het project wilde ik iets maken wat op je bureau kan staan en schattige geluiden kon maken. Ik kwam op het idee toen ik mijn vriend zijn kat in een doos zag klimmen en er niet meer uit wilde met enkele harde miauwen wanneer je te dicht bij kwam. Toen dacht ik dus aan een doos waar enkele schattige geluiden uitkwamen die in een boos geluid verandert als je te dicht bij komt,
Supplies
Elektrische onderdelen
- Arduino uno
- APDS 9960 gesture sensor
- Mp3 tf module
- 8 ohm 1 watt kleine ovale speaker
- Micro SD card
- 9v batterij + houder
- Male to male jumper wires
- Female to male jumper wires
- 220 ohm weerstand
onderdelen voor de behuizing
- 6x multiplex 210x150x2mm hout
Gereedschap
- Figuur zaag
- Soldeerbout met soldeer
- Houtlijm
Concept Schets
voordat ik begon met het bestellen van componenten. ben ik eerst een concept tekening gaan maken. voor het concept wilde ik me nog steeds aan het idee houden van een doos waar dieren geluiden uit komen. Omdat ik wil dat het overal op je bureau kan staan wilde ik het een power supply geven aan de binnenkant zodat het niet afhankelijk hoef te zijn van stroom kabels. Ook wil ik dat er gaatjes in de doos komen voor voor een kleine speaker en de sensor die de afstand van je hand tot de doos moet gaan meten.
Na het tekenen heb ik research gedaan en ben ik gaan zoeken naar onderdelen die mij hierbij kunnen helpen.
Bevestigen Van Componenten
Nadat ik de componenten besteld had werd het tijd om ze aan de breadboard te bevestigen om zien hoe ze met elkaar communiceerde. Logica gaat als volgt:
- Op het bread board ligt er een gesture sensor. Deze sensor meet om de zoveel milliseconden de aftstand tussen een object en de sensor. bij een bepaalde meting word er in de code geluid geactiveerd die op de micro sd kaart staat in de mp3 module. Deze metingen kon ik in de arduino ide monitor aflezen om te checken (in dit geval moest de proximity een waarde van 10 hebben).
- De mp3 module is verbonden aan de arduino en bevat een micro sd kaart met bepaalde geluidseffecten in WAV formaat. Een geluidseffect voor waanneer niemand de doos aanraakt en een effect wanneer iemand te dicht op de doos komt. Deze mp3 module heeft een ovale kleine stereo die verbonden is aan de spk 1 en spk 2 pins
- Vervolgens speelt de speaker de geluiden af
- Nadat dit alles was getest en ik aan bijna de behuizing kon beginnen heb ik de arduino van de usb kabel af gehaald en heb ik de 9v batterij aangesloten om zo de arduino van stroom te voorzien
Code
#include <Wire.h>
#include <SparkFun_APDS9960.h>
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
// Use pins 11 and 10 to communicate with mp3
static const uint8_t PIN_MP3_TX = 11; // Connects to module's RX
static const uint8_t PIN_MP3_RX = 10; // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);
SparkFun_APDS9960 apds = SparkFun_APDS9960();
uint8_t proximity_data = 0;
DFRobotDFPlayerMini player;
void setup() {
Serial.begin(9600);
softwareSerial.begin(9600);
// Initialize APDS-9960 (configure I2C and initial values)
if (apds.init()) {
Serial.println(F("APDS-9960 initialization complete"));
} else {
Serial.println(F("Something went wrong during APDS-9960 init!"));
}
// Adjust the Proximity sensor gain
if (!apds.setProximityGain(PGAIN_2X)) {
Serial.println(F("Something went wrong trying to set PGAIN"));
}
// Start running the APDS-9960 proximity sensor (no interrupts)
if (apds.enableProximitySensor(false)) {
Serial.println(F("Proximity sensor is now running"));
} else {
Serial.println(F("Something went wrong during sensor init!"));
}
// Start communication with DFPlayer Mini
if (player.begin(softwareSerial)) {
Serial.println(F("Connecting to DFPlayer Mini succeeded!"));
} else {
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
void loop() {
prox();
if (proximity_data >= 11) {
stressedSound();
} else {
idleSound();
}
}
static unsigned long timer = millis();
void idleSound() {
if (millis() - timer > 8000) {
player.volume(10);
player.play(1);
//this decides which track on the sd card will be played - You can change this value to which track you want
timer = millis();
}
}
void stressedSound() {
if (millis() - timer > 5000) {
player.volume(30);
player.play(3);
//this decides which track on the sd card will be played - You can change this value to which track you want
timer = millis();
}
}
// Read the proximity value
void prox() {
if (millis() - timer > 250) { // Wait 250 ms before next reading
if (!apds.readProximity(proximity_data)) {
Serial.println("Error reading proximity value");
} else {
Serial.print("Proximity: ");
Serial.println(proximity_data);
}
}
}
Solderen En Prototype
De volgende stap is het solderen van de elektrische componenten aan elkaar en het maken van een prototype behuizing om het design te testen. Hierdoor weet ik of de sensor nog werkt in dit soort type behuizing en hoe groot de gaten moet zijn voor de daadwerkelijke behuizing.
Behuizing
- Voor de behuizing heb ik 6x multiplex 210x150x2mm hout stukken gezaagd in 100 x 100 x 2mm planken.
- vervolgens heb ik voor de bodemlaag een vierkant gat gemaakt van 10 bij 5 mm (dit is voor de aan en uit knop van de batterijhouder).
- daarna heb ik twee kleine gaten geboord in 1 van de zij planken voor de speaker.
- Volgende stap is het aan elkaar lijmen met houtlijm.
- en als laatst heb ik een vierkant gat gemaakt in de bovenste plank van 15 bij 15 mm voor de sensor.
- vervolgens zijn sommige elektronica componenten in plaats gezet binnen in de doos met tape.
Conclusie
Ik heb veel geleerd tijdens dit project voornamelijk hoe handig het is om extra sensoren te hebben voor het geval dat je er een per ongeluk kapot door een te grote voltage er door heen te sturen. Ook heb ik het proces zwaar onderschat. het opkomen op een idee en het daadwerkelijk realiseren kost wat tijd. En dat zorgde ervoor dat ik uiteindelijk best krap kwam te zitten in de eindsprint. Uiteindelijk ben ik wel blij met het eind resultaat.