Innholdsfortegnelse:

Posisjonsbasert multifunksjonskubeklokke: 5 trinn (med bilder)
Posisjonsbasert multifunksjonskubeklokke: 5 trinn (med bilder)

Video: Posisjonsbasert multifunksjonskubeklokke: 5 trinn (med bilder)

Video: Posisjonsbasert multifunksjonskubeklokke: 5 trinn (med bilder)
Video: BellaTube Live with Jamie & Nicole 2024, Juli
Anonim
Image
Image
Posisjonsbasert multifunksjonsklokke
Posisjonsbasert multifunksjonsklokke
Posisjonsbasert multifunksjonsklokke
Posisjonsbasert multifunksjonsklokke

Fusion 360 -prosjekter »

Dette er en Arduino -basert klokke med en OLED -skjerm som fungerer som en klokke med datoen, som en luretimer og som et nattlys. De forskjellige "funksjonene" styres av et akselerometer og velges ved å rotere kubeklokken.

Jeg ville ha en ny nattbordsklokke, men jeg ville ikke bruke penger på en fancy klokke som hadde tonnevis med funksjoner som jeg ikke ville bruke. I tillegg hadde jeg samlet inn komponenter og sensorer som bare lå rundt, så jeg bestemte meg for å bruke dem til å lage min egen klokke!

Jeg hadde noen mål for dette prosjektet:

  1. Vis den tiden med et alternativ som skal slås av
  2. Inkluder en nattlysfunksjon
  3. Inkluder en 15 minutters lur timer med alarm
  4. Kunne vise datoen

Rekvisita

  • Arduino Pro Mini 5V
  • ADXL335 3-akset akselerometer
  • DS3231 AT24C32 IIC presisjon Sanntidsklokke
  • Minihøyttaler
  • OLED Display SSD1306 IIC 0.96in
  • 5V DC strømforsyning
  • LED x 2
  • Motstander 220ohm x 2
  • DC fatkontakt
  • Metalltråd
  • Verktøy

    • Wire cutters/strippers
    • Loddejern/loddetinn
    • 3D -skriver (valgfritt)
    • FTDI programmerer for grensesnitt mellom Pro mini og Arduino IDE

Trinn 1: Prototype og test kretsen

Prototype og test kretsen
Prototype og test kretsen
Prototype og test kretsen
Prototype og test kretsen
Prototype og test kretsen
Prototype og test kretsen

Koble komponenter til Arduino. Brettbrettoppsettet eller skjematisk er vist ovenfor. RTC og OLED bruker I2C -protokollen for å koble til Arduino og bruke A4- og A5 -pinnene. Akselerometeret bruker 3 analoge pinner. Jeg brukte A0, A1, A2. LEDene og Piezo kan bruke hvilken som helst av de digitale pinnene, jeg brukte henholdsvis 4 og 8.

Grensesnitt med hver komponent. Jeg måtte installere noen Arduino -biblioteker for å koble til hver komponent. De er vist på bildet ovenfor.

Kode ved bruk av Arduino IDE. Jeg siktet gjennom noen eksempler på skisser fra hvert bibliotek for å finne ut riktig syntaks for hver komponent basert på hva jeg ville at de skulle gjøre. Jeg kom med en skisse for hver komponent for å teste dem individuelt. De er gitt nedenfor. Jeg begynte med piezo -høyttaleren fordi den var den enkleste. Det trengte faktisk ikke et spesielt bibliotek, bare en spesifikk funksjon som angir frekvens og lyd. For å få lysdiodene til å fungere var det bare nødvendig å trekke en av de digitale pinnene høyt og lavt. Deretter flyttet jeg til OLED, og dette var ganske enkelt å sette opp også. Skissen nedenfor er en Adafruit -demo som går gjennom alle animasjonene/tekstene som kan vises. Deretter prøvde jeg å få RTC til å fungere. Skissen jeg ga var en del av et eksempel på biblioteket som får den nåværende tiden og skriver den ut til den serielle skjermen. Til slutt brukte jeg eksemplet for å teste akselerometeret. Utgangene til hver akse skrives ut på den serielle skjermen.

Nå er det på tide å sette alt sammen!

Trinn 2: Hovedprogram

Hovedprogram
Hovedprogram
Hovedprogram
Hovedprogram

Nå som jeg vet at alt fungerer individuelt, kan jeg begynne å komme med et program som samler alt. Jeg vil diskutere prosessen min for å skrive programmet nedenfor, men du kan bare laste ned hele koden nedenfor for å bruke til ditt eget prosjekt. Jeg prøvde å legge igjen spesifikke kommentarer slik at du kan gå gjennom koden selv.

Jeg trengte å vise tid og dato på OLED som var ganske enkel. Jeg måtte bare skrive ut gjeldende tid på displayet i stedet for den serielle skjermen. Det var noen få formaterings ting jeg måtte ta hensyn til for å få det til å vise et 12 -timers format i stedet for 24 og legge til/fjerne 0 -er der det var passende. Datoen var lik med tillegg av visning av måned og dag i rektangler tegnet på skjermen. Jeg brukte en nestet FOR -løkke til å lage timeren og satte i gang piezo etter slutten av løkken. Jeg bestemte meg for å få skjermen til å blinke mens summeren gikk, som var en grunnleggende animasjon hentet fra Adafruit -demoen. Jeg gjorde å snu kuben tilbake til klokkeposisjonen den eneste måten å slå av summeren. Til slutt ønsket jeg en måte å slå av skjermen som ble oppnådd ved å bare fjerne skjermen. Nå trengte jeg alle disse funksjonene for å fungere basert på akselerometerutgangene. Jeg brukte Accel_Test -skriptet til å bestemme aksekoordinatene til hver posisjon jeg ønsket at hver funksjon skulle kjøre. Jeg flyttet akselerometerbrikken manuelt og registrerte avlesningene på den serielle skjermen. Diagrammet ovenfor gir utgangskoordinater for hver posisjon i GRÅ. Koordinatene i RØD er grensene mellom hver posisjon, og jeg brukte disse tallene for programmet mitt. I de fire visningsposisjonene trengs bare X- og Y -aksekoordinatene. Den femte posisjonen for nattlyset bruker Z -aksen. Jeg brukte enkle IF -setninger for akselerometerposisjonene før hver funksjonsblokk. Hvis du bruker et annet akselerometer, kan disse koordinatene variere og må justeres i programmet.

Trinn 3: 3D -utskrift av kuben

3D -utskrift av kuben
3D -utskrift av kuben
3D -utskrift av kuben
3D -utskrift av kuben
3D -utskrift av kuben
3D -utskrift av kuben

Jeg tenkte at en terning ville være det beste designet for å imøtekomme hvordan jeg ville at klokken skulle fungere. Jeg brukte fusion360 til å lage modellen. Jeg trengte en kutt for OLED og fatkontakten. Jeg ønsket også enkel tilgang til å bytte ut batteriet i RTC etter at alt var koblet til. Jeg trengte et spor for å holde Arduino i en retning som ville være lett å omprogrammere om nødvendig. I tillegg måtte kabinettet lett kunne fjernes slik at jeg får tilgang til Arduino. Du kan se CAD -modellen ovenfor, og STL -filene er nedenfor.

Jeg trykte kroppen i svart PLA med 20% utfylling, 0,2 mm oppløsning.

Kapslingen eller hylsen ble trykt i Solutech fleksibel filament med 100% utfylling, 0,3 mm oppløsning. Jeg brukte dette materialet fordi det har en viss fleksibilitet som gjorde det enkelt å strekke seg over kroppen. Den har også en mykere følelse når den roterer døgnet. Til slutt valgte jeg en klar filament slik at lysdiodene til nattlysene skulle skinne gjennom.

Trinn 4: Montering

montering
montering
montering
montering
montering
montering

Jeg koblet alt sammen ved hjelp av skjemaet fra trinn 1. Jeg brukte et lite stykke perfboard til å koble alle vanlige ledninger slik at jeg ikke måtte lodde flere ledninger til en pinne på Arduino. Varmt lim ble brukt til å sikre alt på sitt respektive sted bortsett fra Arduino. Det ble bare presset inn i det angitte sporet. Jeg sørget for at akselerometerbrettet var vinkelrett og plant på bunnen av kroppen slik at koordinatene i koden ikke trenger å endres.

Trinn 5: Last opp og du er ferdig

Last opp og du er ferdig!
Last opp og du er ferdig!
Last opp og du er ferdig!
Last opp og du er ferdig!
Last opp og du er ferdig!
Last opp og du er ferdig!
Last opp og du er ferdig!
Last opp og du er ferdig!

Nå kan det siste programmet lastes opp til klokken for å stille inn riktig tid. Cellbatteriet bør holde tiden selv når strømmen er frakoblet. Skyv det 3D -trykte ermet over kroppen for å skjule alle komponentene, og du har en komplett terningklokke!

Jeg håper du liker dette prosjektet og synes det er like nyttig som meg. Den fine delen med dette prosjektet er at det er veldig tilpassbart. Legg gjerne til dine egne forskjellige funksjoner som en alarmfunksjon, bruk forskjellige komponenter som en større OLED, FM -radiomottaker, osv. God fornøyelse!

Anbefalt: