Innholdsfortegnelse:

SASSIE: System for Awkward Silence Solution and Interaction Enhancer: 5 trinn
SASSIE: System for Awkward Silence Solution and Interaction Enhancer: 5 trinn

Video: SASSIE: System for Awkward Silence Solution and Interaction Enhancer: 5 trinn

Video: SASSIE: System for Awkward Silence Solution and Interaction Enhancer: 5 trinn
Video: Anthony Metivier: Increasing Your IQ & Memory Tricks 2024, Juli
Anonim
Image
Image
Deler, materialer og verktøy
Deler, materialer og verktøy

SASSIE er svaret på spørsmålet vi alle har stilt til oss selv under en vanskelig stillhet på et tidspunkt i livet vårt, "Snakker jeg neste?" Nå trenger du ikke bekymre deg fordi SASSIE er spesielt designet for å gjenkjenne en vanskelig stillhet, og deretter nøytralisere den ved å tilfeldig bestemme hvem som skal snakke videre. Nå kan du gå inn i en samtale uten stress, vel vitende om at SASSIE har ryggen din.

Trinn 1: Deler, materialer og verktøy

Arduino deler

2 X Arduino Uno R3

2 x Arduino -mikrofon

1 X XBee trådløst SD -skjerm

1 X 1/2 W 8 Volt høyttaler

1 X brødbrett i halv størrelse

1 X Arduino Stepper Motor

1X ULN 2003 Stepper Motor Drive Board

1 X Micro Servo

Sokkel og hus (laserskårede komponenter)

Alle komponentene nedenfor kan bare laserskjære på en Birch Ply Fullbed (32 "X 18")

1 - Base

1 X bunnplate

1 x lang lengde kort høyde rett gitterlist

1 X toppbunnplate

4 x kort lengde høy høyde rett gitter sidelist base

2 - Main

1 X trinnmotorskive

1 X nederste hovedplate

1 X Middels lengde Gjennomsnittlig høyde Rett gitterlist

1 X toppring

1 x kort lengde høy høyde rett gitter sidelist

1 X toppsidestripeplate

1 X liten rektangulær plate (for mikroservo)

3 - Mikrofonstativ

4 X grunnplate

1 X 13 cm 3/16 plugg (med 30 grader på siden)

1 X liten rektangulær plate (for mikrofon)

Trinn 2: Krets

Krets
Krets
Krets
Krets

Trinn 3: Maskinfremstilling (mekanikk og montering)

Maskinfremstilling (mekanikk og montering)
Maskinfremstilling (mekanikk og montering)

1_Forsamling

  • (Valgfritt) Slip alle bjørkelagskomponenter til en perfekt finish
  • Fukt hele bjørkelagsstrimmelen og bøy den for å lage en sirkulær form.
  • Vikle rundt bjørkelaglisten med maskeringstape for å holde den sirkulære formen
  • La den sitte over natten for stripen å beholde den sirkulære formen

2_Husforsamling

Utgangspunkt

  1. Lim den nederste basisplaten til basehuden
  2. Lim de fire nederste sidestripeplaten sammen og lim den delen på kanten av den øverste baseplaten
  3. Tape trinnmotoren på midten av den øverste basisplaten (HUSK å trykke på samme side som sidestripeplaten og juster den faktiske roterende delen av motoren til midten av maskinen)
  4. sett trinnmotorskiven på trinnmotoren '

Hoved

  1. Lim den nederste hovedplaten til hovedhuden
  2. Lim hovedhudringen på toppen av hovedhuden
  3. sett inn sidelisten til den øvre sidelisten
  4. Lim servomotorplaten vinkelrett på den øvre sidelisten

3_ Forsamlingen

  1. Plasser forsiktig brødbrettet og de to UNO R3 med SD -skjoldet inne i bunnen
  2. Plasser den øverste bunnplaten på beholderen og sørg for at alle sensorer og aktuatorer går gjennom topplateåpningene
  3. Tape trinnmotoren på midten av den øverste basisplaten (HUSK å trykke på samme side som sidestripeplaten og juster den faktiske roterende delen av motoren til midten av maskinen)
  4. Sett trinnmotorskiven på trinnmotoren
  5. Plasser hovedkomponenten på vaskemaskinen
  6. Fest sidelistkomponenten i glidelåsen til sidelisten
  7. Tape servomotoren til siden av servomotorplaten i den øvre enden (skal bankes til side) og bank deretter servokabelen på innsiden av sidelisten
  8. Fest det øverste skiltet til servomotoren
  9. Trykk på sideskiltet på hovedhuden

4_Mikrofonstativmontering

  1. Lim de fire basene sammen
  2. Lim den flate siden av pluggen til basen
  3. Lim mikrofonplaten til den vinklede siden av pluggen
  4. teip mikrofonen på mikrofonplaten

Trinn 4: Programmering

På grunn av den begrensede størrelsen på Arduino Uno -brettet, brukes to Arduino -brett i dette prosjektet. Hovedkortet brukes til de fleste funksjonene, inkludert telling av stilletid, behandling av lyddata, tale til brukere og kommunikasjon med det andre kortet.

#include #include

#inkludere

#inkludere

// SD må koble til pin 11, 12, 13. Anaditional pin 10 is

// påkrevd eller ringes med SD.begin ().

const int servoPin = 3;

const int micPin1 = 5; const int micPin2 = 6; const int AWKS = 4;

int volum1;

int volum2; float silenceTime = 0;

Servobanner;

TMRpcm plr;

ugyldig oppsett () {

// legg oppsettskoden her for å kjøre en gang: pinMode (servoPin, OUTPUT); pinMode (micPin1, INPUT); pinMode (micPin2, INPUT); Serial.begin (9600); Serial.println ("Velkommen til SASSIE diagnoseportal."); banner.attach (servoPin); banner.write (0); hvis (! SD.begin (10)) {Serial.println ("SD mislykkes"); } plr.høyttalerPin = 9; plr.setVolume (5); }

void loop () {

volume1 = digitalRead (micPin1); volume2 = digitalRead (micPin2); banner.write (0); hvis (volum1 == 0 og volum2 == 0) {silentTime += 0,05; Serial.print ("Stillhetstid:"); Serial.println (silenceTime); } annet {silenceTime = 0; banner.write (0); } forsinkelse (50); if (silenceTime> = AWKS) {rescue (); silentTime = 0; }}

ugyldig redning () {

for (int vinkel = 0; vinkel <90; vinkel += 1) {banner.write (vinkel); forsinkelse (35); } Serial.println ("Banner på"); forsinkelse (100); Serial.write (1); Serial.println ("Sang på"); plr.play ("4.wav"); forsinkelse (10000); plr.stopPlayback (); Løkke(); forsinkelse (10000); forsinkelse (5000); plr.play ("2.wav"); forsinkelse (5000); plr.play ("3.wav"); }

Koden til det andre brettet er enkel. Den driver bare trinnmotoren når hovedkortet sender et signal til den.

#inkludere

const int stepPin1 = 8;

const int stepPin2 = 9; const int stepPin3 = 10; const int stepPin4 = 11; const int motorSteps = 200;

bool motorState = false;

Stepper stepMotor (motorSteps, stepPin1, stepPin2, stepPin3, stepPin4);

ugyldig oppsett () {

// legg oppsettskoden her for å kjøre en gang: stepMotor.setSpeed (75); }

void loop () {

// legg hovedkoden her for å kjøre gjentatte ganger: int incoming = Serial.read (); if (innkommende == 1) {Serial.println ("aktivert"); if (motorState == 0) {stepMotor.step (1000); forsinkelse (5000); } annet {stepMotor.step (-1000); } motorState =! motorState; } forsinkelse (500); }

Anbefalt: