TheSUN, Arduino Powered Design Wall Clock: 6 trinn (med bilder)
TheSUN, Arduino Powered Design Wall Clock: 6 trinn (med bilder)
Anonim
TheSUN, Arduino Powered Design Wall Clock
TheSUN, Arduino Powered Design Wall Clock
TheSUN, Arduino Powered Design Wall Clock
TheSUN, Arduino Powered Design Wall Clock
TheSUN, Arduino Powered Design Wall Clock
TheSUN, Arduino Powered Design Wall Clock

Hei igjen Instructables-folkens!:-P

På grunn av forsendelsesproblemer klarte jeg ikke å fortsette ABTW-prosjektet mitt, så jeg bestemte meg for å vise deg en annen, min nyeste skapelse.

Jeg tror mange av oss, som meg, liker de fine adresserbare LED -stripene (også kalt NEOPIXEL LED). Du kan få dem fra ADAFRUIT. Andre leverandører vil også tilby lignende produkter. Det er et bibliotek tilgjengelig på ADAFRUITS - GitHub (klikk meg), inkludert noen eksempler på kode. Så koding bør være rett frem …

Jeg så de NEOPIXELS en tanke, hva i helvete … kan jeg gjøre med de skinnende små tingene.

  • En LED-matriseskjerm? -> For komplisert og jeg bruker det ikke (for øyeblikket)
  • X-Mas Lighting? -> Den passer til sesongen, men det ville være billigere å kjøpe en:-P
  • en klokke? -> Hvorfor ikke! Men den skal være stilig og ukonvensjonell

Så la oss lage en veggklokke.

Hvis vi ser nærmere på armbåndsuret vårt (hvis du har en analog som meg) vil vi legge merke til at vi har 12 timer og 60 minutter (forhåpentligvis). Det vil bety at vi trenger 60 adresserbare lysdioder, phu! Hvis vi tar en stripe med 60 lysdioder / meter får vi en diameter på ~ 318 mm (radius = omfang / (2*Π)). for stor.

Sannheten er at hvis du spør noen om tiden, vil ingen si at klokken er 2 minutter over 3! Du får "It´s 5 over 3" som et svar. Så hvorfor skulle vi ikke skalere alt ned til 5 minutter trinn? For det trenger vi bare 12 lysdioder, noe som betyr at vi får en diameter på 63,6 mm. Vi kan også skille timer og minutter ved å gi dem en egen farge. Vi vil også kunne gi de "manglende" trinnene i ett minutt en ekstra stripe med 4 lysdioder (eller en enkelt adresserbar LED.

DET ER PLANEN! La oss se hvordan jeg gjorde alt. Som alltid vil jeg gi en liste/materialliste og instruksjoner om hvordan du bygger den.

Hvis du tror at bare sveitsere kan lage kule klokker, la oss bevise at du tar feil (beklager Sveits:-P)

Trinn 1: Design og valg av materialer

Design og materialvalg
Design og materialvalg
Design og materialvalg
Design og materialvalg

Design:

Hvis vi ser nærmere på vår analoge klokke/klokke igjen ser vi at sirkelen er delt inn i 12 * 30 ° trinn vi kjenner, at vi trenger 63,6 mm for LED-stripen. Så det burde være mulig å justere stripen rundt et rør på en eller annen måte. Jeg bestemte meg for å bruke akrylglass, fordi det ser fint ut og det er mulig å kapsle LED -lyset inn i det, og ved hver feil i glasset vil det oppstå noen lysspredning. Så la oss si: flere urenheter vil føre til mer lysspredning! Det er akkurat det vi ønsker. Så ta gjerne tak i graveringsverktøyene dine og vær kreativ:-)

Hvis du refererer til min BoM-liste og navnet jeg ga klokken, har jeg valgt et design som ligner på solen. Jeg har alle akryldelene fra en tysk selger på E-Bay (lenke i BoM). For mitt design du vil trenge:

  • akrylbunnplate, gjennomsiktig tykkelse = 6 mm, diameter = 300 mm
  • akryl midtplate, gjennomsiktig tykkelse = 3 mm, diameter = 150 mm
  • akryl frontplate, sateng, tykkelse = 3 mm, diameter = 90 mm
  • akrylrør, gjennomsiktig, ytre diameter = 64 mm (vil bety at vi må finjustere litt med LED -stripen)
  • akrylstang, gjennomsiktig, diameter = 5 mm (dette blir våre bjelker); Det er også akrylstenger rundt med bobler inni, jeg anbefaler dem, men jeg har dem ikke rundt.
  • akryllim

Elektronikk (se Fritzing-filene):

  • Arduino mini (eller lignende)
  • 1 adresserbar LED -stripe (12 lysdioder i timer og 5 minutter)
  • 4 adresserbare lysdioder (enkelt minutter)
  • 2 330 Ohm motstander
  • 1 1000µF kondensator
  • 1 strømforsyning (5V/500mA)
  • en RTC DS-1307 (valgfritt!)
  • Bluetooth -modul (valgfritt! Ja, du kan stille inn tiden via BT og en Android -smarttelefon)

Hvis du spør deg selv hvorfor jeg har MAX485 chips på BoM. Svaret er at jeg vil synkronisere klokken med hjemmeautomatiseringssystemet jeg er i ferd med å lage (trenger aldri å stille en klokke for sommertid igjen:-P). Jeg vil beskrive det i bloggen min i det neste par uker/måned.

Som du la merke til, vil jeg også prøve å få klokken ut av nettet med noen solcellepaneler og en LiPo, men jeg dekker ikke det i denne Instructable, prøv det gjerne selv.

Trinn 2: Forbered akryldelene

Forbered akryldelene
Forbered akryldelene
Forbered akryldelene
Forbered akryldelene
Forbered akryldelene
Forbered akryldelene

Verktøyene:

Først og fremst er det veldig nyttig hvis du skriver ut DWG -planen jeg la til i skala 1: 1. Dette hjelper deg med å justere alle delene og vil tjene deg som en boreplan. Videre trenger du:

  • hobbyknife
  • gjæringsmål
  • baufil
  • klemmer
  • hånddrill
  • kan bore, diameter 65 mm
  • et sett med metallbor
  • en liten metallfil
  • akryllim

La oss begynne:

Ta bakkeplaten og juster den på planen, slik at du kan få midten av sirkelen. Ta nå håndboret ditt med boksboret montert på det og bor (veldig sakte! Ikke for mye trykk!) Et hull i midten av bakken, den ytre sirkelen skal være ~ 2-3 mm dyp. Dette er for å senke LED -stripen i bakken (LED -stripe ~ 10 mm bred, bjelker bare 5 mm i diameter) og justere dem med bjelkene (se bilde 1).

Nå trenger vi baufil, gjæringsmåleren og akrylrøret. Bare kutt den i biter. Jeg bestemte meg for å gjøre huset (røret) 40 mm langt (bilde 2). Ta nå hacksagen igjen og lag en liten rabbet på den ene siden av røret, gjør det glatt med metallfilen. Det er der ledningene kommer ut;-) (se bilde 3)

Tid for litt lim … Ta midtplaten (d = 150 mm) og frontplaten (den satinerte). Juster dem på planen igjen, legg litt lim på midten av midtplaten, juster frontplaten og vent til limet er litt herdet. Limet jeg brukte er lettherding, og det kan ta opptil 2-3 timer, så du vil bruke en klemme … (bilde 3 og 4)

Gjør det samme for å lime røret på bakkeplaten, sørg for at rabbet vender mot platen og er plassert et sted der du vil at den første LED -en (12 -tiden) skal være.

Vent til det er herdet!

Vi kan nå justere de to delene (bookmatchet) på planen og bore våre 4 hull i ett minutt (5 mm i diameter eller diameteren på LED -en du har valgt; bor den sakte uten for mye trykk). Bor ca 8-9 mm dypt. Vær forsiktig, den satinerte platen er veldig sprø og kan bremse hvis du borer til dypt. Du kan nå lime dem sammen, eller du bestemmer deg for, som jeg, å kutte en trussel i bakken og feste den med en skrue.

Igjen, vent til limet har stivnet. Juster nå og lim bjelkene på bakken. (bilde 6) Gjett hva … vent til limet har stivnet:-) La oss gå videre til elektronikken …

Trinn 3: Elektronikk

Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk

Verktøyene:

  • loddejern
  • loddetråd
  • hobbykniv
  • et lite stykke prototypende PCB
  • emaljert wire eller annen tråd du foretrekker
  • varmt lim

Jeg strater med de enkle lysdiodene. Hvis du bruker emaljert tråd, ikke glem å skrape av lakken før lodding. Du kan bruke en hobbykniv til det. Koble dem til, du kan referere til bildet med pinout på flikto.de. Vær oppmerksom på at DOUT går til DIN på neste LED! (se bilde 2) Etter det kan du kutte LED -stripen i 4 elementer hver med 3 lysdioder. Husk, vi har 63,6 mm LED -stripe og 64 mm ytre diameter på røret, så vi trenger litt ekstra lengde for å justere den nøyaktig til bjelkene. Koble den opp med emaljert ledning som på bilde 4. Jeg har laget en liten proto -PCB som vil tjene som en "kraftsele" og vil inneholde komponentene til LED -stripene (de to 330Ohm -motstandene og 1000µF -kondensatoren, bilde 7). Se Fritzing -bildet for det.

Monter nå stripen rundt røret, juster lysdiodene til bjelkene. Den første Pixel matcher klokken 12. Hvis du har snudd boligen din, ikke glem at alt er speilvendt. Fortsett mot klokken! Bruk litt varmt lim for å feste det til røret. En liten dråpe for hvert segment vil gjøre det!

Du kan gjøre det samme for de enkelte lysdiodene (til slutt speilet), bare legg til litt varmt lim og trykk dem inn i de forborede hullene.

Ikke koble Arduino ennå, vi vil bruke maskinvareserien for BT-tilkoblingen, så sjekk først de neste trinnene der jeg beskriver programvaren.

Trinn 4: Kode

Kode
Kode
Kode
Kode

Du kan nå laste skissen til Arduino. Du kan også koble LED -stripene nå. Ikke koble til BT -modulen !!! Vi vil først se på koden. Du bør vite hvor du kan justere flere ting …

Last ned Arduino IDE og bibliotekene. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

Installer IDE og legg bibliotekene inn i biblioteksmappen. Åpne den vedlagte INO-filen og last den opp til din arduino. Koden beskrevet her er den samme, men med ytterligere kommentarer! Hvis du har gjort alt riktig, kan du nå se "bootanimasjonen". Det er mulig å angi tiden over seriemonitoren. Bare skriv @"time"/"min"/"sek" f.eks. @10/33/00 (10:33).

Spill gjerne med koden … Her gir jeg deg en kort beskrivelse av koden (oppsett uten RTC!)

DEFINISJONER:

#define PIN 6 // Time LED Strip #define MINPIN 5 // Singelminute LED #define NUMPIXELS 12 // Number of Pixels for hour #define MINNUMPIXELS 4 // Number of Pixels for single minute #define BAUDRATE 115200 // Baudrate, should match baudrate for BT Module #define utch '@' // start BYTE av TimeSync

int timeset = 0; // flagg for å lagre hvis tiden ble angitt etter bootint delayval = 20; // forsinkelse for fading animasjon int clocktimer = 10000; // time refresh int timebright = 250; // timeens lysstyrke Strip int mtimebright = 50; // lysstyrke for singelminint initialize = 0; // flagg for å kalle clearpixels -funksjonen etter bootint ahour; int oldahour = 0; // lagre forrige time aminute; int oldamin = 0; // lagrer forrige minutt for oppdatering et sekund; int aday; int amonth; int år; int mmin; tmElements_t tm;

// Oppsett for de 2 NeoPixel LED -matrikkene (NAVN = TYPE (ANTALL PIKSLER, SOM PINNE, FORMAT RGB ELLER GRB, FREKV); Se Adafruit -guiden for mer informasjon.); Adafruit_NeoPixel minpiksler = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

OPPSETT:

ugyldig oppsett () {

Serial.begin (BAUDRATE); Wire.begin (); // Initialiser stripene, alle OFFpixels.begin (); minpiksler.begynner (); piksler.vis (); minpiksler.vis ();

// Lag en liten animasjonSerial.println ("SUNRISE"); soloppgang(); forsinkelse (1000); Serial.println ("SOLNEDGANG"); solnedgang(); piksler.vis (); Serial.println ("KLAR"); }

LØKKE:

void loop () {// se etter tidssynkronisering mens (Serial.available ()> 0) {char c = Serial.read (); hvis (c == utch) // hvis det er en @ på linjen, les de kommende bytes /ints {readtime (); }} // initialiser lysdiodene, fjern oppstartsanimasjonen

if (initialize == 0) {clearpixels (); initialisere = 1; }

time = time ();

aminute = minutt (); hvis (timeset == 1 || timeset == 0) // her kan du sjekke om klokken var angitt, du kan stoppe programmet her hvis Timeset = FALSE, bare fjern "|| timeset == 0"!

{

hvis (oldamin <aminute || oldahour satt alt til OFF, vis ny tid {clearpixels (); ClockDisplay ();}}}}

Vis klokken:

void ClockDisplay () {

oldahour = ahour;

oldamin = aminute; int xhour, xmin;

hvis (ahour> = 12) {xhour = ahour-12; // vi har bare 12 lysdioder for 24 -timers display} else {xhour = ahour; } // skaler den i 5 minutter trinn xmin = (aminute /5); hvis (oldamin <aminute) {oldamin = aminute; clearpixels (); } // ta resten av divisjonen ved singelmin LED -LEDen mmin = (aminute % 5); // modulo operatør f.eks. 24 % 5 = 4! veldig nyttig: -Pixels.setBrightness (timebright); pixels.setPixelColor (xmin, pixels. Color (5, 125, 255)); // du kan endre fargene her! spill rundt! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); piksler.vis ();

// vis singelen minsfor (int m = 0; m

minpiksler.setBrightness (mtimebright); minpixels.setPixelColor (m, pixels. Color (255, 255, 0)); minpiksler.vis (); }} Les og behandle TIME -informasjon fra Serial

ugyldig lesetid () // hvis vi allerede har den ledende "@" -prosessen for de kommende dataene og lagrer tiden for TIME Lib {

ahour = Serial.parseInt (); aminute = Serial.parseInt (); asecond = Serial.parseInt (); aday = Serial.parseInt (); amonth = Serial.parseInt (); ayear = Serial.parseInt (); Serial.println ("TIMESET"); Serial.print (ahour); Serial.print (":"); Serial.println (aminute); setTime (ahour, aminute, asecond, aday, amonth, ayear); }

Rydd alt

void clearpixels () // sett hver PIXEL til av for å oppdatere skjermen {

pixels.begin (); minpiksler.begynner (); for (int i = 0; ipixels.setPixelColor (i, pixels. Color (0, 0, 0)); minpixels.setPixelColor (i, pixels. Color (0, 0, 0)); pixels.show (); minpiksler.forestilling(); } }

Trinn 5: Android -appen og BT -tilkoblingen

Android -appen og BT -tilkoblingen
Android -appen og BT -tilkoblingen
Android -appen og BT -tilkoblingen
Android -appen og BT -tilkoblingen
Android -appen og BT -tilkoblingen
Android -appen og BT -tilkoblingen

Hvis du lyktes med de foregående trinnene, kan du nå koble til BT -modulen. (jeg håper du har sørget for at baudrates stemmer overens). ikke glem å krysse TX & RX linjer:-)

Last ned og installer appen, par med BT -dongelen, start appen, koble til donglen og synkroniser tiden med mobilen din. APP gjør i utgangspunktet det samme som vi gjorde før. Den sender bare @hh/mm/ss/dd/mm/ÅÅÅÅ generert fra systemtiden. Jeg ga også APPInventor AIA -filen og en forklaring på neste trinn (for de som er interessert).

Trinn 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor er ganske enkelt å bruke og verdt innsatsen for et så enkelt program.

Hvis du lager et nytt prosjekt, finner du deg selv på DESIGNER -skjermen. (bilde 1) Det er her vi legger til tabeller, knapper, sensorer og andre elementer for videre bruk. i vårt tilfelle trenger vi:

  • et bord (for å tilordne alle elementer)
  • en listevelger (for valg av BT -enheten vi kobler til)
  • en knapp (for å skyte TIME over BT)
  • noen etiketter (vis faktisk tid og dato)
  • klokkesensoren (oppdater tiden)
  • Bluetooth -klientsensoren (tilkobling)

Å legge dem til er like enkelt som dra og slipp! På bilde 2 kan du se en oversikt over "APP" i BLOCKS -skjermen. Vel, det er i utgangspunktet der all "magien" skjer. På toppen opprettet jeg noen variabler for å lagre tid og dato. Den første blokken øverst til venstre vil initialisere listevelgerelementet med listen over sammenkoblede BT -enheter. Med andre blokk bestemmer vi hva vi skal gjøre med det tidligere plukkede elementet. Vel, vi vil koble til det.

Hvis du har en nærmere titt på den neste blokken, kan du se at vi genererer, hvis BT -statusen "er tilkoblet", BT -meldingen. Det er det samme som vi skrev inn i SerialMonitor før. Den siste blokken til venstre gir oss de ledende nullpunktene for å vise tiden (f.eks. 01:08). På høyre side finner du vår siste blokk, det er der vi bruker klokkeelementet. Her oppdaterer vi variablene og slår dem sammen med sifferprosedyren, dette vil skje hver 1000 ms (standardinnstilling, endre den i designermodus) og vis de oppdaterte verdiene med etiketten. Det er bare en kort beskrivelse, men APPInventor er egentlig like enkelt som det:-) Kanskje det er noen i samfunnet som ønsker å skrive en programvare for iOS eller WindowsPhone. (ville vært flott)

Jeg håper du likte min Instructable! Ha det gøy med den nye veggklokken din! Kanskje du vil gi den til noen du er glad i (X-Mas sesongen):-)

Og hvis det er noen spørsmål, kan du gjerne spørre meg!

Med vennlig hilsen og god jul.