Innholdsfortegnelse:
Video: SASSIE: System for Awkward Silence Solution and Interaction Enhancer: 5 trinn
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
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
Trinn 3: 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
- Lim den nederste basisplaten til basehuden
- Lim de fire nederste sidestripeplaten sammen og lim den delen på kanten av den øverste baseplaten
- 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)
- sett trinnmotorskiven på trinnmotoren '
Hoved
- Lim den nederste hovedplaten til hovedhuden
- Lim hovedhudringen på toppen av hovedhuden
- sett inn sidelisten til den øvre sidelisten
- Lim servomotorplaten vinkelrett på den øvre sidelisten
3_ Forsamlingen
- Plasser forsiktig brødbrettet og de to UNO R3 med SD -skjoldet inne i bunnen
- Plasser den øverste bunnplaten på beholderen og sørg for at alle sensorer og aktuatorer går gjennom topplateåpningene
- 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)
- Sett trinnmotorskiven på trinnmotoren
- Plasser hovedkomponenten på vaskemaskinen
- Fest sidelistkomponenten i glidelåsen til sidelisten
- Tape servomotoren til siden av servomotorplaten i den øvre enden (skal bankes til side) og bank deretter servokabelen på innsiden av sidelisten
- Fest det øverste skiltet til servomotoren
- Trykk på sideskiltet på hovedhuden
4_Mikrofonstativmontering
- Lim de fire basene sammen
- Lim den flate siden av pluggen til basen
- Lim mikrofonplaten til den vinklede siden av pluggen
- 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); }