Indholdsfortegnelse:

TheSUN, Arduino Powered Design Wall Clock: 6 trin (med billeder)
TheSUN, Arduino Powered Design Wall Clock: 6 trin (med billeder)

Video: TheSUN, Arduino Powered Design Wall Clock: 6 trin (med billeder)

Video: TheSUN, Arduino Powered Design Wall Clock: 6 trin (med billeder)
Video: построить цифровые часы с помощью arduino, sunfounder, arduino project, diy 2024, Juli
Anonim
TheSUN, Arduino Powered Design Vægur
TheSUN, Arduino Powered Design Vægur
TheSUN, Arduino Powered Design Vægur
TheSUN, Arduino Powered Design Vægur
TheSUN, Arduino Powered Design Vægur
TheSUN, Arduino Powered Design Vægur

Hej igen Instructables-folkens!:-P

På grund af forsendelsesproblemer kunne jeg ikke fortsætte mit ABTW-projekt, så jeg besluttede at vise dig en anden, min nyeste skabelse.

Jeg tror, at mange af os, ligesom mig, kan lide de flotte adresserbare LED -striber (også kaldet NEOPIXEL LED). Du kan få dem fra ADAFRUIT. Andre leverandører vil også levere lignende produkter. Der er et bibliotek tilgængeligt på ADAFRUITS - GitHub (klik på mig), herunder nogle eksempler på kode. Så kodning skal være ligetil …

Jeg så de NEOPIXELS en tanke, hvad i helvede kan jeg gøre med de skinnende små ting.

  • Et LED-matrix display? -> For kompliceret, og jeg bruger den ikke (i øjeblikket)
  • X-Mas Lighting? -> Det passer til sæsonen, men det ville være billigere at købe en:-P
  • et ur? -> Hvorfor ikke! Men det skal være stilfuldt og utraditionelt

Så lad os lave et vægur.

Hvis vi kigger nærmere på vores armbåndsur (hvis du har en analog som mig) vil vi bemærke, at vi har 12 timer og 60 minutter (forhåbentlig). Det vil betyde, at vi har brug for 60 adresserbare lysdioder, phu! Hvis vi tager en stribe med 60 lysdioder / meter får vi en diameter på ~ 318 mm (radius = omfang / (2*Π)) det er helt sikkert for stor.

Sandheden er, at hvis du spørger nogen om tiden, vil ingen sige, at klokken er 2 minutter over 3! Du får "Det er 5 over 3" som et svar. Så hvorfor skulle vi ikke skalere alt ned til 5 minutters trin? Til det har vi kun brug for 12 lysdioder, hvilket betyder, at vi får en diameter på 63,6 mm. Vi er også i stand til at differentiere timer og minutter ved at give dem en separat farve. Vi vil også være i stand til at give de "manglende" trin på et minuts minut med en ekstra strimmel med 4 lysdioder (eller en enkelt adresserbar LED.

DET ER PLANEN! Lad os se, hvordan jeg gjorde alt. Som altid vil jeg give en liste/materialeliste og instruktioner om, hvordan man bygger det.

Hvis du tror, at kun schweizere kan lave fede ure, lad os bevise, at du tager fejl (undskyld Schweiz:-P)

Trin 1: Design og valg af materialer

Design og valg af materialer
Design og valg af materialer
Design og valg af materialer
Design og valg af materialer

Design:

Hvis vi kigger nærmere på vores analoge ur/ur igen, ser vi, at cirklen er opdelt i 12 * 30 ° trin, vi kender, at vi har brug for 63,6 mm til LED-stripen. Så det burde være muligt at justere strimlen rundt om et rør på en eller anden måde. Jeg besluttede mig for at bruge akrylglas, fordi det ser godt ud, og det er muligt at indkapsle LED -lyset i det, og ved hver fejl i glasset vil der ske lidt lysspredning. Så lad os sige: flere urenheder vil føre til mere lysspredning! Det er præcis det, vi ønsker. Så tag gerne fat i dine graveringsværktøjer og vær kreativ:-)

Hvis du refererer til min BoM-liste og det navn, jeg gav til uret, har jeg valgt et sollignende design. Jeg fik alle akryldelene fra en tysk sælger på E-Bay (linket findes i BoM). For mit design du får brug for:

  • akrylslibeplade, gennemsigtig tykkelse = 6 mm, diameter = 300 mm
  • akryl midterplade, gennemsigtig tykkelse = 3 mm, diameter = 150 mm
  • akryl frontplade, satin, tykkelse = 3 mm, diameter = 90 mm
  • akrylrør, gennemsigtigt, ydre diameter = 64 mm (vil betyde, at vi skal finjustere lidt med LED -strimlen)
  • akrylstang, gennemsigtig, diameter = 5 mm (dette vil være vores bjælker); Der er også akrylstænger rundt med bobler indeni, jeg anbefaler dem, men jeg har dem ikke rundt.
  • akryllim

Elektronik (se Fritzing-filerne):

  • Arduino mini (eller lignende)
  • 1 adresserbar LED -strip (12 lysdioder i timer og 5 min. Trin)
  • 4 adresserbare lysdioder (enkelt minutter)
  • 2 330 Ohm modstande
  • 1 1000µF kondensator
  • 1 strømforsyning (5V/500mA)
  • en RTC DS-1307 (valgfri!)
  • Bluetooth -modul (valgfrit! Ja, du kan indstille tiden via BT og en Android -smartphone)

Hvis du spørger dig selv, hvorfor jeg har MAX485 chips på min BoM. Svaret er, at jeg vil synkronisere uret med hjemmeautomatiseringssystemet, jeg er ved at lave (aldrig nogensinde skal indstille et ur til sommertid igen:-P). Det vil jeg beskrive i min blog i det næste par uger/måned.

Som du har bemærket, vil jeg også prøve at få uret fra nettet med nogle solpaneler og en LiPo, men det dækker jeg ikke over i denne Instructable, prøv det gerne selv.

Trin 2: Forbered akryldelene

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

Værktøjerne:

Først og fremmest er det virkelig nyttigt, hvis du udskriver DWG -planen, jeg tilføjede i skala 1: 1. Dette hjælper dig med at justere alle delene og vil tjene dig som en boreplan. Yderligere skal du bruge:

  • hobbyknife
  • geringsmåler
  • hacksav
  • klemmer
  • håndbor
  • kan bore, diameter 65 mm
  • et sæt metalbor
  • en lille metalfil
  • akryllim

Lad os begynde:

Tag grundpladen og juster den på planen, så du kan få midten af cirklen. Tag nu din håndboremaskine med dåseboret på den og bor (meget langsomt! Ikke for meget tryk!) Et hul i midten af jordpladen, den ydre cirkel skal være ~ 2-3 mm dyb. Dette er for at synke LED -strimlen i jordpladen (LED -strimmel ~ 10 mm bred, stråler kun 5 mm i diameter) og til at justere dem med bjælkerne (se billede 1).

Nu har vi brug for hacksav, geringsmåleren og akrylrøret. Skær det bare i stykker, jeg besluttede at lave huset (røret) 40 mm langt (billede 2). Tag nu fat i hacksaven igen og lav lidt rabbet på den ene side af røret, gør det glat med metalfilen. Det er her, ledningerne kommer ud;-) (se billede 3)

Tid til lidt lim … Tag den midterste plade (d = 150 mm) og frontpladen (den satinerede). Juster dem på planen igen, kom lidt lim på midten af den midterste plade, juster frontpladen og vent, indtil lim er lidt hærdet. Limen, jeg brugte, er let hærdende, og den kan tage op til 2-3 timer, så du vil gerne bruge en klemme … (billede 3 og 4)

Gør det samme for at lime røret på jordpladen, sørg for at rabbet vender mod pladen og er placeret et sted, hvor du vil have den første LED (12).

Vent til det er hærdet!

Vi kan nu justere de 2 dele (bookmatchet) på planen og bore vores 4 huller på et minut (5 mm i diameter eller diameteren på den LED, du har valgt; bor den langsomt med ikke for meget tryk). Bor cirka 8-9 mm dybt. Vær forsigtig, den satinerede plade er meget sprød og kan bremse, hvis du borer til dybt. Du kan nu lime dem sammen, eller du beslutter, ligesom jeg, at skære en trussel ind i jordpladen og fastgøre den med en skrue.

Igen, vent til lim er hærdet. Juster nu og lim bjælkerne på jordpladen. (billede 6) Gæt hvad … vent til limen er hærdet:-) Lad os gå videre til elektronikken …

Trin 3: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Værktøjerne:

  • loddekolbe
  • loddetråd
  • hobbykniv
  • et lille stykke prototype PCB
  • emaljeret tråd eller enhver anden tråd, du foretrækker
  • varm lim

Jeg strated med de enkelte lysdioder. Hvis du bruger emaljeret tråd, skal du ikke glemme at skrabe af lakken inden lodning. Du kan bruge en hobbykniv til det. Tråd dem op, du kan henvise til billedet med pinout på flikto.de. Bemærk, at DOUT går til DIN på den næste LED! (se billede 2) Derefter kan du skære LED -strimlen i 4 elementer hver med 3 lysdioder. Husk, vi har 63,6 mm LED Strip og 64 mm ydre diameter på røret, så vi har brug for en ekstra "længde for at justere det præcist til bjælkerne. Tråd det op med emaljeret tråd som på billede 4. Jeg lavede en lille proto PCB, som vil tjene som en "power sele" og vil indeholde komponenterne til LED Strips (de to 330Ohm modstande og 1000µF kondensatoren, billede 7). Se Fritzing Image for at se det.

Monter nu strimlen rundt om røret, tilpas lysdioderne til bjælkerne. Den første Pixel matcher klokken 12. Hvis du har vendt din bolig om, skal du ikke glemme, at alt er spejlet. Fortsæt mod uret! Brug lidt varm lim til at fastgøre det til røret. Et lille fald for hvert segment vil gøre det!

Du kan gøre det samme for de enkelte lysdioder (til sidst spejlet), bare tilføj lidt varm lim og tryk dem ind i de forborede huller.

Lad ikke Arduino koble endnu, vi vil bruge hardware-serien til BT-forbindelsen, så tjek først de næste trin, hvor jeg beskriver softwaren.

Trin 4: Kode

Kode
Kode
Kode
Kode

Du kan nu indlæse skitsen til Arduino. Du kan også koble LED -strimlerne nu. Tilslut ikke BT -modulet !!! Vi vil først se på koden, du bør vide, hvor du kan justere flere ting …

Download Arduino IDE og bibliotekerne. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

Installer IDE og sæt bibliotekerne i biblioteksmappen. Åbn den vedhæftede INO-fil, og upload den til din arduino. Koden beskrevet her er den samme, men med yderligere kommentarer! Hvis du har gjort alt rigtigt, kan du nu se "bootanimationen". Det er muligt at indstille tiden over seriemonitoren. Skriv bare @"time"/"min"/"sek" f.eks. @10/33/00 (10:33).

Spil gerne med koden … Her giver jeg dig en kort beskrivelse af koden (opsætning uden RTC!)

DEFINITIONER:

#define PIN 6 // Time LED Strip #define MINPIN 5 // Singelminute LED #define NUMPIXELS 12 // Antal pixel i timen #Definer MINNUMPIXEL 4 // Antal pixel for et minut #Definer BAUDRATE 115200 // Baudrate, skal matche baudrate for BT Module #define utch '@' // start BYTE af TimeSync

int timeset = 0; // flag til at gemme, hvis tiden blev indstillet efter bootint delayval = 20; // forsinkelse for fading animation int clocktimer = 10000; // time refresh int timebright = 250; // timers lysstyrke Strip int mtimebright = 50; // lysstyrke af singelminint initialiser = 0; // flag for at kalde clearpixels -funktionen efter bootint ahour; int oldahour = 0; // butik forrige timeint aminute; int oldamin = 0; // gemmer det foregående minut til opdatering som sekund; int aday; int amonth; int år; int mmin; tmElements_t tm;

// Opsætning til de 2 NeoPixel LED -arrays (NAVN = TYPE (ANTAL PIXELER, HVILKEN PIN, FORMAT RGB ELLER GRB, FREQ); Se Adafruit -guiden for mere information. Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB800 + NEO_); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

OPSÆTNING:

ugyldig opsætning () {

Serial.begin (BAUDRATE); Wire.begin (); // Initialiser strimlerne, alle OFFpixels.begin (); minpixels.begin (); pixels.show (); minpixels.show ();

// Lav en lille animationSerial.println ("SUNRISE"); solopgang(); forsinkelse (1000); Serial.println ("SOLNEDGANG"); solnedgang(); pixels.show (); Serial.println ("KLAR"); }

LOOP:

void loop () {// check for timesync while (Serial.available ()> 0) {char c = Serial.read (); hvis (c == utch) // hvis der er en @ på linjen, læs de kommende bytes /ints {readtime (); }} // initialiser LED'erne, ryd boot -animation

hvis (initialiser == 0) {clearpixels (); initialisere = 1; }

ahour = time ();

aminute = minut (); hvis (timeset == 1 || timeset == 0) // her kan du kontrollere, om klokkeslættet var indstillet, kan du stoppe programmet her, hvis Timeset = FALSE, bare fjern "|| timeset == 0"!

{

hvis (oldamin <aminute || oldahour indstillet alle til OFF, skal du vise ny tid {clearpixels (); ClockDisplay ();}}}}

Vis uret:

void ClockDisplay () {

oldahour = ahour;

oldamin = aminut; int xhour, xmin;

hvis (ahour> = 12) {xhour = ahour-12; // vi har kun 12 lysdioder til 24 -timers display} else {xhour = ahour; } // skaler den i 5 min. trin xmin = (aminute /5); hvis (oldamin <aminute) {oldamin = aminute; clearpixels (); } // tag resten af divisionen på singelmin LED mmin = (aminute % 5); // modulo operator f.eks. 24 % 5 = 4! meget nyttig: -Pixels.setBrightness (timebright); pixels.setPixelColor (xmin, pixels. Color (5, 125, 255)); // du kan ændre farverne her! spil rundt! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); pixels.show ();

// vis singelen min for (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, pixels. Color (255, 255, 0)); minpixels.show (); }} Læs og behandl TIMEinformation fra Serial

ugyldig læsningstid () // hvis vi allerede fik den førende "@" -proces til at behandle de kommende data og gemme 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); }

Slet alt

void clearpixels () // indstil hver enkelt PIXEL til off for at opdatere displayet {

pixels.begin (); minpixels.begin (); for (int i = 0; ipixels.setPixelColor (i, pixels. Color (0, 0, 0)); minpixels.setPixelColor (i, pixels. Color (0, 0, 0)); pixels.show (); minpixels.at vise(); } }

Trin 5: Android -appen og BT -forbindelsen

Android APP og BT -forbindelse
Android APP og BT -forbindelse
Android APP og BT -forbindelse
Android APP og BT -forbindelse
Android APP og BT -forbindelse
Android APP og BT -forbindelse

Hvis du havde succes med de foregående trin, kan du nu tilslutte dit BT -modul. (jeg håber du har sørget for, at baudraterne matcher). glem ikke at krydse TX & RX linjer:-)

Download og installer appen, par med din BT -dongle, start appen, opret forbindelse til donglen og synkroniser tiden med din mobil. APP’en gør stort set det samme som vi gjorde før. Det sender bare @hh/mm/ss/dd/mm/ÅÅÅÅ genereret fra dets systemtid. Jeg leverede også APPInventor AIA -filen og en forklaring på det næste trin (for dem, der er interesseret).

Trin 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor er ret let at bruge og umagen værd for et så enkelt program.

Hvis du laver et nyt projekt, finder du dig selv på DESIGNER -skærmen. (billede 1) Det er her, vi tilføjer tabeller, knapper, sensorer og andre elementer til yderligere brug. i vores tilfælde har vi brug for:

  • en tabel (for at allignere alle elementer)
  • en listevælger (til valg af den BT -enhed, vi forbinder til)
  • en knap (for at affyre TIME over BT)
  • nogle etiketter (vis den faktiske tid og dato)
  • urføleren (opdater tiden)
  • Bluetooth -klientsensoren (forbindelse)

Tilføjelse af dem er lige så let som træk og slip! På billede 2 kan du se en oversigt over "APP" på BLOCKS -skærmen. Nå, det er i grunden, hvor al "magi" sker. På toppen lavede jeg nogle variabler til lagring af tid og dato. Den første blok øverst til venstre vil initialisere listevælgerelementet med listen over parrede BT -enheder. Med anden blok beslutter vi hvad vi skal gøre med det tidligere valgte element. Nå, vi vil gerne oprette forbindelse til det.

Hvis du har et nærmere kig på den næste blok, kan du se, at vi genererer BT -meddelelsen, hvis BT -status "er forbundet". Det er det samme, som vi indtastede i SerialMonitor før. Den sidste blok til venstre giver os de førende nuller til at vise tiden (f.eks. 01:08). På højre side kan du finde vores sidste blok, det er her vi bruger urelementet. Her opdaterer vi variablerne og fletter dem med cifreproceduren, dette vil ske hver 1000 ms (standardindstilling, ændre det i designer -tilstand) og vis de opdaterede værdier med etiketten. Det er bare en kort beskrivelse, men APPInventor er virkelig lige så let som det:-) Måske er der nogen i samfundet, der vil skrive en software til iOS eller WindowsPhone. (ville være godt)

Jeg håber du kunne lide min Instructable! God fornøjelse med dit nye vægur! Måske vil du give den til en du holder af (X-Mas sæsonen):-)

Og hvis der er spørgsmål, er du velkommen til at spørge mig!

Med venlig hilsen og god jul.

Anbefalede: