Innehållsförteckning:

Positionbaserad multifunktionskubklocka: 5 steg (med bilder)
Positionbaserad multifunktionskubklocka: 5 steg (med bilder)

Video: Positionbaserad multifunktionskubklocka: 5 steg (med bilder)

Video: Positionbaserad multifunktionskubklocka: 5 steg (med bilder)
Video: CITIZEN Multi-Dial Chronograph Eco-Drive CA4250-03E. Обзор\Review 2024, November
Anonim
Image
Image
Positionbaserad multifunktionskubklocka
Positionbaserad multifunktionskubklocka
Positionbaserad multifunktionskubklocka
Positionbaserad multifunktionskubklocka

Fusion 360 -projekt »

Detta är en Arduino -baserad klocka med en OLED -skärm som fungerar som en klocka med datumet, som en tupplurstimer och som ett nattljus. De olika "funktionerna" styrs av en accelerometer och väljs genom att rotera kubklockan.

Jag ville ha en ny nattduksklocka men jag ville inte lägga pengar på en snygg klocka som hade massor av funktioner som jag inte skulle använda. Dessutom hade jag samlat komponenter och sensorer som bara låg och så jag bestämde mig för att använda dem för att göra min egen klocka!

Jag hade några mål för det här projektet:

  1. Visa den tiden med ett alternativ som ska stängas av
  2. Inkludera en nattljusfunktion
  3. Inkludera en 15 minuters tupplur med larm
  4. Kunna visa datumet

Tillbehör

  • Arduino Pro Mini 5V
  • ADXL335 3-axlig accelerometer
  • DS3231 AT24C32 IIC precision Realtidsklocka
  • Minihögtalare
  • OLED Display SSD1306 IIC 0.96in
  • 5V DC strömförsörjning
  • LED x 2
  • Motstånd 220ohm x 2
  • DC -fatuttag
  • Tråd
  • Verktyg

    • Trådskärare/strippare
    • Lödkolv/löd
    • 3D -skrivare (tillval)
    • FTDI -programmerare för gränssnitt mellan Pro mini och Arduino IDE

Steg 1: Prototypa och testa kretsen

Prototypa och testa kretsen
Prototypa och testa kretsen
Prototypa och testa kretsen
Prototypa och testa kretsen
Prototypa och testa kretsen
Prototypa och testa kretsen

Anslut komponenter till Arduino. Panelen eller schemat visas ovan. RTC och OLED använder I2C -protokollet för att ansluta till Arduino och använda A4- och A5 -stiften. Accelerometern använder 3 analoga stift. Jag använde A0, A1, A2. Lysdioderna och Piezo kan använda vilken som helst av de digitala stiften, jag använde 4 respektive 8.

Gränssnitt med varje komponent. Jag var tvungen att installera några Arduino -bibliotek för att ansluta till varje komponent. De visas i bilden ovan.

Kod med Arduino IDE. Jag siktade igenom några exempelskisser från varje bibliotek för att ta reda på rätt syntax för varje komponent baserat på vad jag ville att de skulle göra. Jag kom med en skiss för varje komponent för att testa dem individuellt. De finns nedan. Jag började med piezohögtalaren eftersom det var det enklaste. Det behövde faktiskt inget särskilt bibliotek, bara en specifik funktion som ställer in frekvens och ljud. För att få lysdioderna att fungera var det bara att dra en av de digitala stiften högt och lågt. Därefter flyttade jag till OLED och det var också ganska enkelt att installera. Skissen nedan är en Adafruit -demo som går igenom alla animationer/texter som kan visas. Sedan försökte jag få RTC att fungera. Skissen jag gav var en del av ett exempel i biblioteket som får aktuell tid och skriver ut den på den seriella bildskärmen. Slutligen använde jag det medföljande exemplet för att testa accelerometern. Utgångarna för varje axel skrivs ut på den seriella bildskärmen.

Nu är det dags att sätta ihop allt!

Steg 2: Huvudprogram

Huvudprogram
Huvudprogram
Huvudprogram
Huvudprogram

Nu när jag vet att allt fungerar individuellt kan jag börja komma med ett program som sammanför allt. Jag kommer att diskutera min process för att skriva programmet nedan men ladda bara ner hela koden nedan för att använda för ditt eget projekt. Jag försökte lämna specifika kommentarer så att du kan gå igenom koden själv.

Jag behövde visa tid och datum på OLED vilket var ganska enkelt. Jag var tvungen att skriva ut den aktuella tiden till displayen istället för den seriella bildskärmen. Det var några formateringssaker som jag var tvungen att ta hänsyn till för att få det att visa ett 12 -timmarsformat istället för 24 och lägga till/ta bort 0: or där det var lämpligt. Datumet var liknande med tillägget att visa månad och dag inom rektanglar ritade på skärmen. Jag använde en inkapslad FOR -slinga för att skapa timern och satte igång piezo efter slingans slut. Jag bestämde mig för att få skärmen att blinka när summern gick av, vilket var en grundläggande animering hämtad från Adafruit -demon. Jag gjorde att vända kuben tillbaka till klockläget det enda sättet att stänga av summern. Slutligen ville jag ha ett sätt att stänga av skärmen som uppnåddes genom att bara rensa displayen. Nu behövde jag alla dessa funktioner för att fungera baserat på accelerometerutgångarna. Jag använde Accel_Test -skriptet för att bestämma axelkoordinaterna för varje position som jag ville att varje funktion skulle köra. Jag flyttade manuellt accelerometerchipet och registrerade avläsningarna på den seriella bildskärmen. Diagrammet ovan ger utgångskoordinaterna för varje position i GRÅ. Koordinaterna i RÖD är gränserna mellan varje position och jag använde dessa siffror för mitt program. I de fyra visningslägena behövs bara X- och Y -axelkoordinaterna. Den femte positionen för nattljuset använder Z -axeln. Jag använde enkla IF -uttalanden för accelerometerpositionerna före varje funktionsblock. Om du använder en annan accelerometer kan dessa koordinater variera och måste justeras i programmet.

Steg 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

Jag tänkte att en kub skulle vara den bästa designen för att passa hur jag ville att klockan skulle fungera. Jag använde fusion360 för att göra modellen. Jag behövde en skärning för OLED och fatjacket. Jag ville också ha enkel åtkomst till att byta cellbatteri i RTC efter att allt var anslutet. Jag behövde en plats för att hålla Arduino i en orientering som skulle vara lätt att programmera om det behövs. Dessutom måste höljet vara lätt att ta bort så att jag kan komma åt Arduino. Du kan se CAD -modellen ovan och STL -filerna finns nedan.

Jag skrev ut kroppen i svart PLA med 20% infill, 0,2 mm upplösning.

Höljet eller hylsan trycktes i Solutech flexibel filament med 100% infill, 0,3 mm upplösning. Jag använde det här materialet eftersom det har en viss flexibilitet som gjorde det enkelt att töjas över kroppen. Den har också en mjukare känsla när den roterar dygnet runt. Slutligen valde jag en klar glödtråd så att lysdioderna för nattljusen skulle lysa igenom.

Steg 4: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Jag kopplade ihop allt med hjälp av schemat från steg 1. Jag använde en liten bit perfboard för att ansluta alla vanliga trådar så att jag inte behövde löda flera trådar till en stift på Arduino. Varmt lim användes för att säkra allt på sin plats förutom Arduino. Den pressades precis in i den avsedda platsen. Jag såg till att accelerometerkortet var vinkelrätt och plant på undersidan av kroppen så att koordinaterna i koden inte behöver ändras.

Steg 5: Ladda upp och du är klar

Ladda upp och du är klar!
Ladda upp och du är klar!
Ladda upp och du är klar!
Ladda upp och du är klar!
Ladda upp och du är klar!
Ladda upp och du är klar!
Ladda upp och du är klar!
Ladda upp och du är klar!

Nu kan det sista programmet laddas upp till klockan för att ställa in rätt tid. Cellbatteriet ska hålla tiden även när strömmen är urkopplad. Skjut den 3D -tryckta ärmen över kroppen för att dölja alla komponenter och du har en komplett kubklocka!

Jag hoppas att du gillar att göra detta projekt och tycker att det är lika användbart som jag. Det fina med det här projektet är att det är mycket anpassningsbart. Lägg gärna till dina egna olika funktioner som en larmfunktion, använd olika komponenter som en större OLED, FM -radiomottagare, etc. Lycka till!

Rekommenderad: