Indholdsfortegnelse:

Positionsbaseret multifunktionskubeur: 5 trin (med billeder)
Positionsbaseret multifunktionskubeur: 5 trin (med billeder)

Video: Positionsbaseret multifunktionskubeur: 5 trin (med billeder)

Video: Positionsbaseret multifunktionskubeur: 5 trin (med billeder)
Video: Physical Therapy Strategies for People with Dysautonomia 2024, November
Anonim
Image
Image
Positionsbaseret multifunktionskubeur
Positionsbaseret multifunktionskubeur
Positionsbaseret multifunktionskubeur
Positionsbaseret multifunktionskubeur

Fusion 360 -projekter »

Dette er et Arduino -baseret ur med et OLED -display, der fungerer som et ur med datoen, som en luretimer og som et nattelys. De forskellige "funktioner" styres af et accelerometer og vælges ved at dreje terninguret.

Jeg ville have et nyt natbord, men jeg ville ikke bruge penge på et smart ur, der havde masser af funktioner, som jeg ikke ville bruge. Derudover havde jeg samlet på komponenter og sensorer, der bare lå og lagde rundt, så jeg besluttede at bruge dem til at lave mit eget ur!

Jeg havde et par mål for dette projekt:

  1. Vis den tid med en mulighed, der skal slukkes
  2. Inkluder en natlysfunktion
  3. Inkluder en luretimer på 15 minutter med alarm
  4. Kunne vise datoen

Forbrugsvarer

  • Arduino Pro Mini 5V
  • ADXL335 3-akset accelerometer
  • DS3231 AT24C32 IIC præcision Realtidsur
  • Mini højttaler
  • OLED Display SSD1306 IIC 0.96in
  • 5V DC strømforsyning
  • LED x 2
  • Modstande 220ohm x 2
  • DC tønde jack
  • Tråd
  • Værktøjer

    • Trådskærere/strippere
    • Loddejern/lodde
    • 3D -printer (valgfri)
    • FTDI programmerer til grænseflade mellem Pro mini og Arduino IDE

Trin 1: Prototype og test kredsløbet

Prototype og test kredsløbet
Prototype og test kredsløbet
Prototype og test kredsløbet
Prototype og test kredsløbet
Prototype og test kredsløbet
Prototype og test kredsløbet

Tilslut komponenter til Arduino. Panelet layout eller skematisk er vist ovenfor. RTC og OLED bruger I2C -protokol til at kommunikere med Arduino og bruge A4- og A5 -benene. Accelerometeret bruger 3 analoge ben. Jeg brugte A0, A1, A2. LED'erne og Piezo kan bruge enhver af de digitale ben, jeg brugte henholdsvis 4 og 8.

Interface med hver komponent. Jeg var nødt til at installere nogle Arduino -biblioteker for at interface med hver komponent. De er vist på billedet ovenfor.

Kode ved hjælp af Arduino IDE. Jeg gennemgik nogle eksempler på skitser fra hvert bibliotek for at finde ud af den korrekte syntaks for hver komponent baseret på hvad jeg ville have dem til at gøre. Jeg kom med en skitse til hver komponent for at teste dem individuelt. De er angivet nedenfor. Jeg startede med piezo -højttaleren, fordi den var den letteste. Det behøvede faktisk ikke et specielt bibliotek, bare en bestemt funktion, der indstiller frekvens og lyd. At få lysdioderne til at fungere krævede bare at trække en af de digitale stifter højt og lavt. Dernæst flyttede jeg over på OLED, og det var også ret enkelt at konfigurere. Skitsen herunder er en Adafruit -demo, der gennemgår alle animationer/tekster, der kan vises. Derefter forsøgte jeg at få RTC til at fungere. Skitsen, jeg leverede, var en del af et eksempel på biblioteket, der får den aktuelle tid og udskriver den til den serielle skærm. Endelig brugte jeg det medfølgende eksempel til at teste accelerometeret. Outputene for hver akse udskrives på den serielle skærm.

Nu er det tid til at sætte alt sammen!

Trin 2: Hovedprogram

Hovedprogram
Hovedprogram
Hovedprogram
Hovedprogram

Nu hvor jeg ved, at alt fungerer individuelt, kan jeg begynde at komme med et program, der samler alt. Jeg vil diskutere min proces til at skrive programmet herunder, men du er velkommen til bare at downloade den fulde kode herunder til at bruge til dit eget projekt. Jeg forsøgte at efterlade specifikke kommentarer, så du selv kan gå gennem koden.

Jeg havde brug for at vise tid og dato på OLED, hvilket var ret enkelt. Jeg var bare nødt til at udskrive den aktuelle tid på displayet i stedet for den serielle skærm. Der var et par formaterings ting, jeg var nødt til at tage højde for for at få det til at vise et 12 -timers format i stedet for 24 og tilføje/fjerne 0'er, hvor de var passende. Datoen var den samme med tilføjelsen af visning af måned og dag inden for rektangler tegnet på skærmen. Jeg brugte en indlejret FOR -sløjfe til at oprette timeren og modregne piezo efter slutningen af sløjfen. Jeg besluttede at få skærmen til at blinke, da summeren gik af, hvilket var en grundlæggende animation taget fra Adafruit -demoen. Jeg gjorde det muligt at dreje terningen tilbage til urpositionen til den eneste måde at slukke summeren på. Endelig ønskede jeg en måde at slukke skærmen på, hvilket blev opnået ved blot at rydde displayet. Nu havde jeg brug for alle disse funktioner til at fungere baseret på accelerometerets output. Jeg brugte Accel_Test -scriptet til at bestemme aksekoordinaterne for hver position, jeg ønskede, at hver funktion skulle køre. Jeg flyttede manuelt accelerometerchippen rundt og registrerede aflæsningerne på den serielle skærm. Diagrammet ovenfor viser udgangskoordinaterne for hver position i GRÅ. Koordinaterne i RØD er grænserne mellem hver position, og jeg brugte disse tal til mit program. I de 4 displaypositioner er det kun X- og Y -aksekoordinaterne, der er nødvendige. Den femte position for nattelyset udnytter Z -aksen. Jeg brugte simple IF -sætninger til accelerometerpositionerne før hver funktionsblok. Hvis du bruger et andet accelerometer, kan disse koordinater variere og skal justeres i programmet.

Trin 3: 3D -udskrivning af terningen

3D -udskrivning af terningen
3D -udskrivning af terningen
3D -udskrivning af terningen
3D -udskrivning af terningen
3D -udskrivning af terningen
3D -udskrivning af terningen

Jeg regnede med, at en terning ville være det bedste design, der kunne rumme, hvordan jeg ville have, at uret skulle fungere. Jeg brugte fusion360 til at lave modellen. Jeg havde brug for en udskæring til OLED og tøndejakken. Jeg ville også have let adgang til at udskifte cellebatteriet i RTC, efter at alt var kablet. Jeg havde brug for en plads til at holde Arduino i en orientering, der ville være let at omprogrammere, hvis det er nødvendigt. Derudover skulle kabinettet let kunne fjernes, så jeg kan få adgang til Arduino. Du kan se CAD -modellen ovenfor, og STL -filerne er nedenfor.

Jeg printede kroppen i sort PLA med 20% udfyldning, 0,2 mm opløsning.

Kabinettet eller ærmet blev trykt i Solutech fleksibelt filament med 100% fyldning, 0,3 mm opløsning. Jeg brugte dette materiale, fordi det har en vis fleksibilitet, som gjorde det let at strække ud over kroppen. Det har også en blødere fornemmelse, når det drejer døgnet rundt. Til sidst valgte jeg en klar glødetråd, så lysdioderne til nattelysene skulle skinne igennem.

Trin 4: Montering

montage
montage
montage
montage
montage
montage

Jeg tilsluttede alt sammen ved hjælp af skematikken fra trin 1. Jeg brugte et lille stykke perfboard til at forbinde alle de almindelige ledninger, så jeg ikke behøvede at lodde flere ledninger til en pin på Arduino. Varm lim blev brugt til at sikre alt på sit respektive sted undtagen Arduino. Det blev bare skubbet ind i den udpegede slot. Jeg sørgede for, at accelerometerbrættet var vinkelret og plant i bunden af kroppen, så koordinaterne i koden ikke skulle ændres.

Trin 5: Upload og du er færdig

Upload og du er færdig!
Upload og du er færdig!
Upload, og du er færdig!
Upload, og du er færdig!
Upload, og du er færdig!
Upload, og du er færdig!
Upload, og du er færdig!
Upload, og du er færdig!

Nu kan det endelige program uploades til uret for at indstille det korrekte tidspunkt. Cellebatteriet bør holde tiden, selv når strømmen er taget ud. Skub 3D -printet ærme over kroppen for at skjule alle komponenterne, og du har et komplet terningur!

Jeg håber, at du nyder at lave dette projekt og finder det lige så nyttigt som jeg. Den gode del ved dette projekt er, at det er meget tilpasseligt. Tilføj gerne dine egne forskellige funktioner som en alarmfunktion, brug forskellige komponenter som en større OLED, FM -radiomodtager osv. God fornøjelse!

Anbefalede: