Inhoudsopgave:

Op positie gebaseerde multifunctionele kubusklok - Ajarnpa
Op positie gebaseerde multifunctionele kubusklok - Ajarnpa

Video: Op positie gebaseerde multifunctionele kubusklok - Ajarnpa

Video: Op positie gebaseerde multifunctionele kubusklok - Ajarnpa
Video: Scrum Master Guide 5 Years Experience for FREE 2024, Juli-
Anonim
Image
Image
Op positie gebaseerde multifunctionele kubusklok
Op positie gebaseerde multifunctionele kubusklok
Op positie gebaseerde multifunctionele kubusklok
Op positie gebaseerde multifunctionele kubusklok

Fusion 360-projecten »

Dit is een op Arduino gebaseerde klok met een OLED-display dat functioneert als een klok met de datum, als een dutje-timer en als een nachtlampje. De verschillende "functies" worden bestuurd door een versnellingsmeter en worden geselecteerd door de kubusklok te draaien.

Ik wilde een nieuwe nachtkastjeklok, maar ik wilde geen geld uitgeven aan een mooie klok met tal van functies die ik niet zou gebruiken. Bovendien had ik componenten en sensoren verzameld die gewoon rondslingerden, dus besloot ik ze te gebruiken om mijn eigen klok te maken!

Ik had een paar doelen voor dit project:

  1. Geef die tijd weer met een optie om uit te schakelen
  2. Inclusief een nachtlichtfunctie
  3. Inclusief een dutje-timer van 15 minuten met alarm
  4. De datum kunnen weergeven

Benodigdheden

  • Arduino Pro Mini 5V
  • ADXL335 3-assige versnellingsmeter
  • DS3231 AT24C32 IIC-precisie Real-time klok
  • Mini Speaker
  • OLED-scherm SSD1306 IIC 0,96 inch
  • 5V DC-voeding
  • LED x 2
  • Weerstanden 220ohm x 2
  • DC barrel jack
  • Draad
  • Gereedschap

    • Draadknippers/strippers
    • Soldeerbout/soldeer
    • 3D-printer (optioneel)
    • FTDI-programmeur om te communiceren tussen de Pro mini en de Arduino IDE

Stap 1: Prototype en test het circuit

Prototype en test het circuit
Prototype en test het circuit
Prototype en test het circuit
Prototype en test het circuit
Prototype en test het circuit
Prototype en test het circuit

Sluit componenten aan op de Arduino. De lay-out of het schema van het breadboard wordt hierboven weergegeven. De RTC en OLED gebruiken het I2C-protocol om te communiceren met de Arduino en gebruiken de A4- en A5-pinnen. De versnellingsmeter gebruikt 3 analoge pinnen. Ik heb A0, A1, A2 gebruikt. De LED's en Piezo kunnen elk van de digitale pinnen gebruiken, ik heb respectievelijk 4 en 8 gebruikt.

Interface met elk onderdeel. Ik moest een aantal Arduino-bibliotheken installeren om met elk onderdeel te communiceren. Ze worden weergegeven in de afbeelding hierboven.

Codeer met behulp van de Arduino IDE. Ik heb enkele voorbeeldschetsen van elke bibliotheek doorgenomen om de juiste syntaxis voor elk onderdeel te achterhalen op basis van wat ik wilde dat ze zouden doen. Ik bedacht een schets voor elk onderdeel om ze afzonderlijk te testen. Ze worden hieronder gegeven. Ik ben begonnen met de piëzo-luidspreker omdat dat het gemakkelijkst was. Het had eigenlijk geen speciale bibliotheek nodig, alleen een specifieke functie die de frequentie en het geluid instelt. Om de LED's te laten werken, hoefde alleen maar een van de digitale pinnen hoog en laag te worden getrokken. Vervolgens ging ik naar de OLED en dit was ook vrij eenvoudig in te stellen. De onderstaande schets is een Adafruit-demo die alle animaties/teksten doorloopt die kunnen worden weergegeven. Vervolgens probeerde ik de RTC aan het werk te krijgen. De schets die ik heb verstrekt maakte deel uit van een voorbeeld in de bibliotheek die de huidige tijd krijgt en deze naar de seriële monitor afdrukt. Ten slotte heb ik het gegeven voorbeeld gebruikt om de versnellingsmeter te testen. De uitgangen van elke as worden afgedrukt op de seriële monitor.

Nu tijd om alles op een rijtje te zetten!

Stap 2: Hoofdprogramma

Hoofdprogramma
Hoofdprogramma
Hoofdprogramma
Hoofdprogramma

Nu ik weet dat alles individueel werkt, kan ik beginnen met het bedenken van een programma dat alles samenbrengt. Ik zal mijn proces voor het schrijven van het programma hieronder bespreken, maar voel je vrij om de volledige code hieronder te downloaden om voor je eigen project te gebruiken. Ik heb geprobeerd specifieke opmerkingen achter te laten, zodat je zelf door de code kunt lopen.

Ik moest de tijd en datum op de OLED weergeven, wat vrij eenvoudig was. Ik moest alleen de huidige tijd op het display afdrukken in plaats van op de seriële monitor. Er waren een paar formatteringsdingen waar ik rekening mee moest houden om het een 12-uurs formaat te laten weergeven in plaats van 24 en 0-en toe te voegen/verwijderen waar ze van toepassing waren. De datum was vergelijkbaar met de toevoeging van de weergave van de maand en de dag binnen rechthoeken die op het scherm waren getekend. Ik heb een geneste FOR-lus gebruikt om de timer te maken en de piëzo te laten afgaan na het einde van de lus. Ik besloot het scherm te laten knipperen terwijl de zoemer afging, een basisanimatie uit de Adafruit-demo. Ik zorgde ervoor dat het terugdraaien van de kubus naar de klokpositie de enige manier was om de zoemer uit te zetten. Ten slotte wilde ik een manier om het scherm uit te schakelen, wat werd bereikt door gewoon het scherm te wissen. Nu had ik al deze functies nodig om te werken op basis van de uitgangen van de versnellingsmeter. Ik heb het Accel_Test-script gebruikt om de ascoördinaten te bepalen van elke positie die ik wilde dat elke functie zou uitvoeren. Ik heb de versnellingsmeter-chip handmatig verplaatst en de uitlezingen op de seriële monitor opgenomen. Het bovenstaande diagram geeft de uitvoercoördinaten van elke positie in GRIJS. De coördinaten in ROOD zijn de grenzen tussen elke positie en ik heb die getallen gebruikt voor mijn programma. In de 4 weergaveposities zijn alleen de coördinaten van de X- en Y-as nodig. De vijfde positie voor het nachtlampje maakt gebruik van de Z-as. Ik gebruikte eenvoudige IF-statements voor de versnellingsmeterposities vóór elk functieblok. Als u een andere versnellingsmeter gebruikt, kunnen deze coördinaten variëren en moeten ze in het programma worden aangepast.

Stap 3: 3D printen van de kubus

3D-printen van de kubus
3D-printen van de kubus
3D-printen van de kubus
3D-printen van de kubus
3D-printen van de kubus
3D-printen van de kubus

Ik dacht dat een kubus het beste ontwerp zou zijn om tegemoet te komen aan hoe ik wilde dat de klok zou functioneren. Ik heb fusion360 gebruikt om het model te maken. Ik had een uitsparing nodig voor de OLED en de barrel jack. Ik wilde ook gemakkelijke toegang om de celbatterij in de RTC te vervangen nadat alles was bedraad. Ik had een slot nodig om de Arduino in een oriëntatie te houden die indien nodig gemakkelijk te herprogrammeren zou zijn. Bovendien moest de behuizing gemakkelijk te verwijderen zijn, zodat ik toegang heb tot de Arduino. U kunt het CAD-model hierboven zien en de STL-bestanden hieronder.

Ik heb de body geprint in zwart PLA met 20% vulling, 0,2 mm resolutie.

De behuizing of sleeve is bedrukt in Solutech flexibel filament met 100% vulling, 0,3 mm resolutie. Ik heb dit materiaal gebruikt omdat het enige flexibiliteit heeft waardoor het gemakkelijk over het lichaam kan worden uitgerekt. Het voelt ook zachter aan bij het ronddraaien van de klok. Als laatste koos ik voor een heldere gloeidraad zodat de LED's voor de nachtlampjes door zouden schijnen.

Stap 4: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Ik heb alles samen aangesloten met behulp van het schema van stap 1. Ik gebruikte een klein stukje perfboard om alle gemeenschappelijke draden aan te sluiten, zodat ik niet meerdere draden op één pin op de Arduino hoefde te solderen. Hete lijm werd gebruikt om alles op zijn plaats te bevestigen, behalve de Arduino. Het werd gewoon in de daarvoor bestemde sleuf geduwd. Ik zorgde ervoor dat het bord van de versnellingsmeter loodrecht en waterpas op de bodem van het lichaam stond, zodat de coördinaten in de code niet veranderd hoefden te worden.

Stap 5: Upload en je bent klaar

Uploaden en je bent klaar!
Uploaden en je bent klaar!
Uploaden en je bent klaar!
Uploaden en je bent klaar!
Uploaden en je bent klaar!
Uploaden en je bent klaar!
Uploaden en je bent klaar!
Uploaden en je bent klaar!

Nu kan het definitieve programma worden geüpload naar de klok om de juiste tijd in te stellen. De celbatterij moet de tijd behouden, zelfs als de stroom is losgekoppeld. Schuif de 3D-geprinte hoes over het lichaam om alle componenten te verbergen en je hebt een complete kubusklok!

Ik hoop dat je geniet van het maken van dit project en het net zo nuttig vindt als ik. Het leuke van dit project is dat het zeer aanpasbaar is. Voel je vrij om je eigen verschillende functies toe te voegen, zoals een alarmfunctie, gebruik verschillende componenten zoals een grotere OLED, FM-radio-ontvanger, enz. Veel plezier met maken!

Aanbevolen: