Innehållsförteckning:

TheSUN, Arduino Powered Design Väggklocka: 6 steg (med bilder)
TheSUN, Arduino Powered Design Väggklocka: 6 steg (med bilder)

Video: TheSUN, Arduino Powered Design Väggklocka: 6 steg (med bilder)

Video: TheSUN, Arduino Powered Design Väggklocka: 6 steg (med bilder)
Video: Proyecto de heliostato Templastat / Templastat Heliostat Project: improvements, updates and test 2024, November
Anonim
TheSUN, Arduino Powered Design Väggklocka
TheSUN, Arduino Powered Design Väggklocka
TheSUN, Arduino Powered Design Väggklocka
TheSUN, Arduino Powered Design Väggklocka
TheSUN, Arduino Powered Design Väggklocka
TheSUN, Arduino Powered Design Väggklocka

Hej igen Instructables-folks!:-P

På grund av leveransproblem kunde jag inte fortsätta mitt ABTW-projekt så jag bestämde mig för att visa dig en annan, min nyaste skapelse.

Jag tror att många av oss, som jag, gillar de fina adresserbara LED -ränderna (även kallade NEOPIXEL LED). Du kan få dem från ADAFRUIT. Andra leverantörer kommer också att tillhandahålla liknande produkter. Det finns ett bibliotek tillgängligt på ADAFRUITS - GitHub (klicka på mig) inklusive några exempelkoder. Så kodning bör vara rak framåt …

Jag såg dessa NEOPIXELS en tanke, vad fan … kan jag göra med de glänsande små sakerna.

  • En LED-matrisdisplay? -> För komplicerat och jag använder det inte (för tillfället)
  • X-Mas Lighting? -> Det passar säsongen men det skulle vara billigare att köpa en:-P
  • en klocka? -> Varför inte! Men den ska vara snygg och okonventionell

Så, låt oss göra en väggklocka.

Om vi tittar närmare på vår armbandsur (om du har en analog som jag) kommer vi att märka att vi har 12 timmar och 60 minuter (förhoppningsvis). Det betyder att vi behöver 60 adresserbara lysdioder, phu! Om vi tar en rand med 60 lysdioder / meter får vi en diameter på ~ 318 mm (radie = omfång / (2*Π)) det är definitivt för stor.

Sanningen är att om du frågar någon om tiden kommer ingen att säga att klockan är 2 minuter över 3! Du får "It´s 5 over 3" som svar. Så varför ska vi inte skala ner allt till 5 min steg? För det behöver vi bara 12 lysdioder vilket betyder att vi får en diameter på 63,6 mm. Vi kan också särskilja timmar och minuter genom att ge dem en separat färg. Vi kommer också att kunna förse de "saknade" stegen på en minut med ytterligare en remsa med 4 lysdioder (eller en enda adresserbar lysdiod.

DET ÄR PLANEN! Låt oss se hur jag gjorde allt. Som alltid kommer jag att tillhandahålla en lista/materiallista och instruktioner om hur man bygger den.

Om du tror att bara schweizare kan göra coola klockor, låt oss bevisa att du har fel (förlåt Schweiz:-P)

Steg 1: Design och materialval

Design och materialval
Design och materialval
Design och materialval
Design och materialval

Design:

Om vi tittar närmare på vår analoga klocka/klocka igen ser vi att cirkeln är indelad i 12 * 30 ° steg vi vet, att vi behöver 63,6 mm för LED-remsan. Så det borde vara möjligt att rikta remsan runt ett rör på något sätt. Jag bestämde mig för att använda akrylglas, eftersom det ser snyggt ut och det är möjligt att kapsla in LED -ljuset i det och vid varje fel i glaset kommer det att uppstå lite ljusspridning. Så, låt oss säga: fler föroreningar kommer att leda till mer ljusspridning! Det är precis vad vi vill. Så ta gärna tag i dina gravyrverktyg och var kreativ:-)

Om du hänvisar till min BoM-lista och namnet jag gav klockan, har jag valt en solig design. Jag fick alla akryldelar från en tysk säljare på E-Bay (länk finns i BoM). För min design du kommer behöva:

  • akryl slipplatta, transparent tjocklek = 6 mm, diameter = 300 mm
  • akryl mittplatta, transparent tjocklek = 3 mm, diameter = 150 mm
  • akryl frontplatta, satin, tjocklek = 3 mm, diameter = 90 mm
  • akrylrör, transparent, ytterdiameter = 64 mm (betyder att vi måste justera lite med LED -remsan)
  • akrylstav, transparent, diameter = 5 mm (detta blir våra balkar); Det finns också akrylstavar runt med bubblor inuti, jag rekommenderar dem men jag har dem inte runt.
  • akryllim

Elektronik (se Fritzing-filer):

  • Arduino mini (eller liknande)
  • 1 adresserbar LED -remsa (12 lysdioder i timmar och 5 minuter)
  • 4 adresserbara lysdioder (enstaka minuter)
  • 2 330 Ohm motstånd
  • 1 1000µF kondensator
  • 1 strömförsörjning (5V/500mA)
  • en RTC DS-1307 (tillval!)
  • Bluetooth -modul (tillval! Ja du kan ställa in tiden via BT och en Android -smartphone)

Om du frågar dig själv varför jag har MAX485 -marker på mitt BoM. Svaret är att jag vill synkronisera klockan med det hemautomatiseringssystem jag ska göra (aldrig någonsin behöva ställa en klocka för sommartid igen:-P). Jag kommer att beskriva det i min blogg i nästa ett par veckor/månad.

Som du märkte kommer jag också att försöka få ur klockan från nätet med några solpaneler och en LiPo, men jag täcker inte det i den här instruktionsboken, prova det gärna själv.

Steg 2: Förbered akryldelarna

Förbered akryldelarna
Förbered akryldelarna
Förbered akryldelarna
Förbered akryldelarna
Förbered akryldelarna
Förbered akryldelarna

Verktygen:

Först och främst är det verkligen användbart om du skriver ut DWG -planen som jag lade till i skala 1: 1. Detta hjälper dig att justera alla delar och kommer att fungera som en borrplan. Ytterligare behöver du:

  • hobbyknife
  • geringsmätare
  • bågfil
  • klämmor
  • handborr
  • kan borra, diameter 65 mm
  • en uppsättning metallborrar
  • en liten metallfil
  • akryllim

Låt oss börja:

Ta markplattan och rikta in den på planen, så att du kan få cirkelns mitt. Ta nu din handborr med burken monterad på den och borra (mycket långsamt! Inte för mycket tryck!) Ett hål i mitten av markplattan, den yttre cirkeln ska vara ~ 2-3 mm djup. Detta för att sänka LED -remsan i markplattan (LED -remsa ~ 10 mm bred, balkar endast 5 mm i diameter) och anpassa dem till strålarna (se bild 1).

Nu behöver vi bågsågen, geringsmätaren och akrylröret. Skär bara den i bitar, jag bestämde mig för att göra huset (röret) 40 mm långt (bild 2). Ta nu tag i hacksågen igen och gör lite rabbet på ena sidan av röret, gör det slätt med metallfilen. Det är där ledningarna kommer ut;-) (se bild 3)

Dags för lite lim … Ta mittplattan (d = 150 mm) och frontplattan (den satinerade). Rikta in dem på planen igen, lägg lite lim på mitten av mittplattan, rikta framplattan och vänta tills limet är något härdat. Limmet jag använde är lätthärdande och det kan ta upp till 2-3 timmar, så du vill använda en klämma … (bild 3 och 4)

Gör samma sak för att limma röret på markplattan, se till att rabbet vetter mot plattan och är inriktat någonstans där du vill att den första lysdioden (klockan 12) ska vara.

Vänta tills det är härdat!

Vi kan nu rikta in de två delarna (bokmatchade) på planen och borra våra fyra hål på en minut (5 mm i diameter eller diametern på den LED du valt; borra den långsamt med inte för mycket tryck). Borra ca 8-9 mm djupt. Var försiktig, den satinerade plattan är mycket spröd och kan bromsa om du borrar till djupt. Du kan nu limma ihop dem eller du bestämmer dig för att, precis som jag, skära ett hot i markplattan och fästa den med en skruv.

Återigen, vänta tills lim har stelnat. Justera nu och limma balkarna på markplattan. (bild 6) Gissa vad … vänta tills limmet har stelnat:-) Låt oss gå vidare till elektroniken …

Steg 3: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Verktygen:

  • lödkolv
  • Lödtråd
  • hobbykniv
  • en liten bit prototyper PCB
  • emaljerad tråd eller annan tråd du föredrar
  • varmt lim

Jag strated med de enda lysdioderna. Om du använder emaljerad tråd, glöm inte att skrapa av lacken före lödning. Du kan använda en hobbykniv för det. Koppla upp dem, du kan hänvisa till bilden med pinout på flikto.de. Observera att DOUT går till DIN på nästa LED! (se bild 2) Därefter kan du skära LED -remsan i 4 element vardera med 3 lysdioder. Kom ihåg att vi har 63,6 mm LED -remsa och 64 mm ytterdiameter på röret så vi behöver lite "extra längd för att anpassa den exakt till balkarna. Trä ihop den med emaljerad tråd som på bild 4. Jag gjorde en liten proto -PCB som kommer att tjäna som en "kraftsele" och kommer att innehålla komponenterna för LED -remsorna (de två 330Ohm -resistorerna och 1000µF -kondensatorn, bild 7). Se Fritzing -bilden för det.

Montera nu remsan runt röret, rikta lysdioderna till strålarna. Den första Pixel matchar klockan 12. Om du har vänt ditt hus, glöm inte att allt speglas. Fortsätt moturs! Använd lite varmt lim för att fästa det på röret. En liten droppe för varje segment kommer att göra det!

Du kan göra samma sak för de enda lysdioderna (så småningom speglade), bara lägga till lite varmt lim och trycka dem i de förborrade hålen.

Koppla inte Arduino än, vi kommer att använda hårdvaruserien för BT-anslutningen, så kontrollera först nästa steg där jag beskriver programvaran.

Steg 4: Kod

Koda
Koda
Koda
Koda

Du kan nu ladda skissen till Arduino. Du kan också ansluta LED -remsorna nu. Anslut inte BT -modulen !!! Vi vill först titta på koden, du borde veta var du kan justera flera saker …

Ladda ner Arduino IDE och biblioteken. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

Installera IDE och lägg in biblioteken i biblioteksmappen. Öppna den bifogade INO-filen och ladda upp den till din arduino. Koden som beskrivs här är densamma men med ytterligare kommentarer! Om du har gjort allt rätt kan du nu se "bootanimationen". Det är möjligt att ställa in tiden över seriemonitorn. Skriv bara @"timme"/"min"/"sek" t.ex. @10/33/00 (10:33).

Lek gärna med koden … Här får du en kort beskrivning av koden (inställning utan RTC!)

DEFINITIONER:

#define PIN 6 // Hour LED Strip #definiera MINPIN 5 // Singelminute LED #define NUMPIXELS 12 // Antal pixlar i timme #definiera MINNUMPIXELS 4 // Antal pixlar för en minut #define BAUDRATE 115200 // Baudrate, bör matcha baudrate för BT Module #define utch '@' // start BYTE of TimeSync

int timeset = 0; // flagga för att lagra om tiden var inställd efter bootint delayval = 20; // fördröjning för blekning av animation int clocktimer = 10000; // time refresh int timebright = 250; // timmens ljusstyrka Strip int mtimebright = 50; // ljusstyrka för singelminint initiera = 0; // flagga för att anropa clearpixels -funktionen efter bootint ahour; int oldahour = 0; // butik föreg. timme aminut; int oldamin = 0; // lagrar föregående minut för uppdatering som andra; int aday; int amonth; int år; int mmin; tmElements_t tm;

// Inställning för de 2 NeoPixel LED -matriserna (NAMN = TYP (ANTAL PIXEL, VILKEN PIN, FORMAT RGB ELLER GRB, FREKV); Se Adafruit -guiden för mer information.); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

UPPSTART:

void setup () {

Serial.begin (BAUDRATE); Wire.begin (); // Initiera remsorna, alla OFFpixels.begin (); minpixels.begin (); pixlar. visa (); minpixels.show ();

// Gör en liten animationSerial.println ("SUNRISE"); soluppgång(); fördröjning (1000); Serial.println ("SUNSET"); solnedgång(); pixlar. visa (); Serial.println ("KLAR"); }

SLINGA:

void loop () {// kolla efter tidssynk medan (Serial.available ()> 0) {char c = Serial.read (); if (c == utch) // om det finns en @ på raden, läs de kommande byte /ints {readtime (); }} // initiera lysdioderna, rensa startanimationen

if (initialisera == 0) {clearpixels (); initiera = 1; }

timme = timme ();

aminute = minut (); om (timeset == 1 || timeset == 0) // här kan du kontrollera om tiden var inställd, du kan stoppa programmet här om Timeset = FALSE, ta bara bort "|| timeset == 0"!

{

if (oldamin <aminute || oldahour set all to OFF, display new time {clearpixels (); ClockDisplay ();}}}}

Visa klockan:

void ClockDisplay () {

oldahour = ahour;

oldamin = aminut; int xhour, xmin;

om (ahour> = 12) {xhour = ahour-12; // vi har bara 12 lysdioder för 24 -timmarsvisning} annars {xhour = ahour; } // skala den i 5 min steg xmin = (aminute /5); om (oldamin <aminute) {oldamin = aminute; clearpixels (); } // ta resten av divisionen genom singelmin -LED mmin = (aminut % 5); // modulo operatör t.ex. 24 % 5 = 4! mycket användbart: -Pixels.setBrightness (tidsljus); pixels.setPixelColor (xmin, pixlar. Color (5, 125, 255)); // du kan ändra färgerna här! spela runt! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); pixlar. visa ();

// visa singeln minsfor (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, pixlar. Color (255, 255, 0)); minpixels.show (); }} Läs och bearbeta TIMEinformation från Serial

void readtime () // om vi redan har den ledande "@" -processen för kommande data och lagrar tiden för 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); }

Rensa alla

void clearpixels () // ställ in varenda PIXEL till av för att uppdatera displayen {

pixlar. börjar (); 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.show(); } }

Steg 5: Android -appen och BT -anslutningen

Android -appen och BT -anslutningen
Android -appen och BT -anslutningen
Android -appen och BT -anslutningen
Android -appen och BT -anslutningen
Android -appen och BT -anslutningen
Android -appen och BT -anslutningen

Om du lyckades med de föregående stegen kan du nu ansluta din BT -modul. (jag hoppas att du såg till att baudrates matchar). glöm inte att korsa TX & RX-linjer:-)

Ladda ner och installera appen, para ihop med din BT -dongel, starta appen, anslut till dongeln och synkronisera tiden med din mobil. Appen gör i princip samma sak som vi gjorde tidigare. Det skickar bara @hh/mm/ss/dd/mm/ÅÅÅÅ genererat från dess systemtid. Jag har också tillhandahållit APPInventor AIA -filen och en förklaring om nästa steg (för dem som är intresserade).

Steg 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor är ganska lätt att använda och värt besväret för ett så enkelt program.

Om du gör ett nytt projekt hittar du dig själv på DESIGNER -skärmen. (bild 1) Här lägger vi till tabeller, knappar, sensorer och andra element för vidare användning. i vårt fall behöver vi:

  • en tabell (för att tilldela alla element)
  • en listplockare (för val av BT -enhet vi ansluter till)
  • en knapp (för att avfyra TIME över BT)
  • vissa etiketter (visa aktuell tid och datum)
  • klocksensorn (uppdatera tiden)
  • Bluetooth -klientsensorn (anslutning)

Att lägga till dem är lika enkelt som att dra och släppa! På bild 2 kan du se en översikt över "APP" på BLOCKS -skärmen. Tja, det är i princip där all "magi" händer. På toppen skapade jag några variabler för att lagra tid och datum. Det första blocket uppe till vänster kommer att initiera listväljaren med listan över parade BT -enheter. Med andra blocket bestämmer vi vad vi ska göra med det tidigare plockade elementet. Tja, vi vill ansluta till det.

Om du tittar närmare på nästa block kan du se att vi genererar BT -meddelandet om BT -status "är ansluten". Det är samma sak som vi skrev in i SerialMonitor tidigare. Det sista blocket till vänster ger oss de ledande nollorna för att visa tiden (t.ex. 01:08). På höger sida hittar du vårt sista block, det är där vi använder klockelementet. Här uppdaterar vi variablerna och slår ihop dem med siffror, detta kommer att ske varje 1000 ms (standardinställning, ändra det i designerläget) och visa de uppdaterade värdena med etiketten. Det är bara en kort beskrivning, men APPInventor är verkligen lika enkelt som det:-) Kanske finns det någon i samhället som vill skriva en programvara för iOS eller WindowsPhone. (skulle vara fantastiskt)

Jag hoppas att du gillade min Instructable! Ha kul med din nya väggklocka! Kanske vill du ge den till någon du älskar (dess X-Mas-säsong):-)

Och om det är några frågor får du gärna fråga mig!

Med vänlig hälsning och god jul.

Rekommenderad: