Indholdsfortegnelse:

SASSIE: System for Awkward Silence Solution og Interaction Enhancer: 5 trin
SASSIE: System for Awkward Silence Solution og Interaction Enhancer: 5 trin

Video: SASSIE: System for Awkward Silence Solution og Interaction Enhancer: 5 trin

Video: SASSIE: System for Awkward Silence Solution og Interaction Enhancer: 5 trin
Video: Axiom Shaken | Critical Role | Campaign 3, Episode 43 2024, Juli
Anonim
Image
Image
Dele, materialer og værktøjer
Dele, materialer og værktøjer

SASSIE er svaret på det spørgsmål, vi alle har stillet til os selv under en akavet stilhed på et tidspunkt i vores liv: "Taler jeg næste?" Nu behøver du ikke bekymre dig, for SASSIE er specielt designet til at genkende en akavet stilhed og derefter neutralisere den ved tilfældigt at beslutte, hvem der skal tale derefter. Nu kan du gå ind i en samtale uden stress, vel vidende at SASSIE har din ryg.

Trin 1: Dele, materialer og værktøjer

Arduino dele

2 X Arduino Uno R3

2 x Arduino mikrofon

1 X XBee trådløs SD -skærm

1 X 1/2 w 8 Volt højttaler

1 X brødbræt i halv størrelse

1 X Arduino Stepper Motor

1X ULN 2003 Stepper Motor Drive Board

1 X Micro Servo

Base og hus (laserskårede komponenter)

Alle komponenter, der er anført nedenfor, kan kun laserskåret på en Birch Ply Fullbed (32 "X 18")

1 - Base

1 X bundplade

1 x lang længde kort højde lige gitterstrimmel

1 X Topplade

4 x kort længde høj højde lige gitter sidebåndsbase

2 - Main

1 X Stepper Motor Skive

1 X bundplade

1 X Medium længde Gennemsnitlig højde Lige gitterstrimmel

1 X Top hovedring

1 x kort længde høj højde lige gitter sidebånd

1 X Top Side Strip Plate

1 X lille rektangulær plade (til mikroservo)

3 - Mikrofonstativ

4 X bundplade

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

1 X lille rektangulær plade (til mikrofon)

Trin 2: Kredsløb

Kredsløb
Kredsløb
Kredsløb
Kredsløb

Trin 3: Maskinfremstilling (mekanik og samling)

Maskinfremstilling (mekanik og samling)
Maskinfremstilling (mekanik og samling)

1_Forsamling

  • (Valgfrit) Slib alle birkelagskomponenter til en uberørt finish
  • Fugt hele birkelagstrimlen og bøj den derefter for at skabe en cirkulær form.
  • Wrap rundt om birkelagstrimlen ved hjælp af malertape for at holde den cirkulære form
  • Lad det sidde natten over, så strimlen bevarer den cirkulære form

2_Boligforsamling

Grundlag

  1. Lim bundpladen til bundhuden
  2. Lim de fire bundsideplader sammen, og lim derefter den del på kanten af den øverste bundplade
  3. Tape trinmotoren på midten af den øverste bundplade (HUSK at trykke på den samme side som sidebåndspladen og juster den faktiske roterende del af motoren til midten af maskinen)
  4. Sæt trinmotorskiven på trinmotoren '

Main

  1. Lim den nederste hovedplade til hovedhuden
  2. Lim hovedhudringen oven på hovedhuden
  3. indsæt sidestrimlen til den øverste sidebåndglidning
  4. Lim servomotorpladen vinkelret på den øverste sidebånd

3_ Forsamlingen

  1. Placer forsigtigt brødbrættet og de to UNO R3 med SD Shield inde i bundbeholderen
  2. Placer den øverste bundplade på skraldespanden, og sørg for, at alle sensorer og aktuatorer går gennem toppladeåbningerne
  3. Tape trinmotoren på midten af den øverste bundplade (HUSK at trykke på den samme side som sidebåndspladen og juster den faktiske roterende del af motoren til midten af maskinen)
  4. Sæt trinmotorskiven på trinmotoren
  5. Placer hovedkomponenten på skiven
  6. Fastgør sidebåndskomponenten i sidebåndets bundglider
  7. Tape servomotoren til siden af servomotorpladen i den øverste ende (skal tappes sidelæns), og tryk derefter på servoledningerne til indersiden af sidebåndet
  8. Fastgør det øverste skilt til servomotoren
  9. Tryk på sideskiltet på hovedhuden

4_Mikrofonstativmontering

  1. Lim de fire bundstykker sammen
  2. Lim den flade side af dyvlen til bunden
  3. Lim mikrofonpladen til den vinklede side af dyvlen
  4. tape mikrofonen på mikrofonpladen

Trin 4: Programmering

På grund af den begrænsede størrelse af Arduino Uno -pladen bruges to Arduino -plader i dette projekt. Hovedkortet bruges til de fleste funktioner, herunder tælling af tavshedstid, behandling af lyddata, tale til brugere og kommunikation med det andet tavle.

#include #include

#omfatte

#omfatte

// SD skal forbinde til pin 11, 12, 13. En ekstra pin 10 er

// påkrævet eller kaldet med SD.begin ().

const int servoPin = 3;

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

int volumen1;

int volumen2; float silenceTime = 0;

Servobanner;

TMRpcm plr;

ugyldig opsætning () {

// sæt din opsætningskode her for at kø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øjttalerPin = 9; plr.setVolume (5); }

void loop () {

volume1 = digitalRead (micPin1); volume2 = digitalRead (micPin2); banner.write (0); hvis (volume1 == 0 og volume2 == 0) {silenceTime += 0,05; Serial.print ("Stilhedstid:"); Serial.println (silenceTime); } ellers {silenceTime = 0; banner.write (0); } forsinkelse (50); hvis (silenceTime> = AWKS) {rescue (); tavshed = 0; }}

ugyldig redning () {

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

Koden for det andet bord er enkel. Den driver kun trinmotoren, når hovedkortet sender et signal til den.

#omfatte

const int stepPin1 = 8;

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

bool motorState = falsk;

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

ugyldig opsætning () {

// sæt din opsætningskode her for at køre en gang: stepMotor.setSpeed (75); }

void loop () {

// sæt din hovedkode her for at køre gentagne gange: int indkommende = Serial.read (); hvis (indgående == 1) {Serial.println ("aktiveret"); hvis (motorState == 0) {stepMotor.step (1000); forsinkelse (5000); } ellers {stepMotor.step (-1000); } motorState =! motorState; } forsinkelse (500); }

Anbefalede: