Cuprins:

Ceas de perete TheSUN, Arduino Powered Design: 6 pași (cu imagini)
Ceas de perete TheSUN, Arduino Powered Design: 6 pași (cu imagini)

Video: Ceas de perete TheSUN, Arduino Powered Design: 6 pași (cu imagini)

Video: Ceas de perete TheSUN, Arduino Powered Design: 6 pași (cu imagini)
Video: Dorian este speriat de un interlop când face poze 😱🥊🤣 #timisoara #dorianpopa #cluj #bucuresti 2024, Iulie
Anonim
Ceas de perete TheSUN, Arduino Powered Design
Ceas de perete TheSUN, Arduino Powered Design
Ceas de perete TheSUN, Arduino Powered Design
Ceas de perete TheSUN, Arduino Powered Design
Ceas de perete TheSUN, Arduino Powered Design
Ceas de perete TheSUN, Arduino Powered Design

Bună din nou Instructables-folks!:-P

Din cauza problemelor de expediere, nu am putut continua proiectul ABTW, așa că am decis să vă arăt o altă creație, cea mai nouă.

Cred că mulți dintre noi, ca și mine, le plac acele dungi LED care pot fi adresate (numite și NEOPIXEL LED). Le puteți obține de la ADAFRUIT. Alți furnizori vor oferi, de asemenea, produse similare. Există o bibliotecă disponibilă pe ADAFRUITS - GitHub (faceți clic pe mine), incluzând un eșantion de cod. Deci, codificarea ar trebui să fie directă …

Am văzut acele NEOPIXELS un gând, ce h … pot face cu acele lucruri strălucitoare.

  • Un afișaj cu matrice LED? -> Până la complicat și nu îl folosesc (în acest moment)
  • Iluminat X-Mas? -> Se potrivește sezonului, dar ar fi mai ieftin să cumperi unul:-P
  • un ceas? -> De ce nu! Dar ar trebui să fie elegant și neconvențional

Deci, să facem un ceas de perete.

Dacă ne uităm atent la ceasul de mână (dacă aveți un analog ca mine), vom observa că avem 12 ore și 60 de minute (sperăm). Asta va însemna că avem nevoie de 60 de LED-uri adresabile, phu! prea mare.

Adevărul este că, dacă întrebi pe cineva timp, nimeni nu va spune că este trecut de 3 minute! Veți primi „It’s 5 past 3” ca răspuns. Deci, de ce nu ar trebui să redimensionăm totul la pași de 5 minute? Pentru asta vom avea nevoie doar de 12 LED-uri, ceea ce înseamnă că avem un diametru de 63,6 mm. De asemenea, putem diferenția orele și minutele oferindu-le o culoare separată. De asemenea, vom putea oferi pașii de un minut „lipsă” cu o bandă suplimentară de 4 LED-uri (sau un singur LED adresabil.

ASTA PLANUL! Să aruncăm o privire cum am făcut totul. Ca întotdeauna, voi furniza o listă / lista de materiale și instrucțiuni despre cum să o construiți.

Dacă credeți, numai elvețienii pot face ceasuri grozave, să dovedim că vă înșelați (îmi pare rău Elveția:-P)

Pasul 1: Proiectarea și alegerea materialelor

Proiectare și alegerea materialelor
Proiectare și alegerea materialelor
Proiectare și alegerea materialelor
Proiectare și alegerea materialelor

Proiecta:

Dacă ne uităm atent la ceasul analogic din nou, vedem că cercul este împărțit în pași de 12 * 30 ° pe care îi știm, că avem nevoie de 63,6 mm pentru banda LED. Deci ar trebui să fie posibil să se alinieze banda în jurul unui tub cumva. Am decis să folosesc sticlă acrilică, deoarece arată frumos și este posibil să încapsulăm lumina LED în ea și la fiecare defect din sticlă se va produce o anumită împrăștiere a luminii. Deci, să spunem: mai multe impurități vor duce la mai multă împrăștiere a luminii! Exact asta vrem. Așadar, nu ezitați să vă luați instrumentele de gravat și să fiți creativi:-)

Dacă faceți referire la lista BoM și numele pe care i l-am dat ceasului, am ales un design asemănător soarelui. Am primit toate piesele acrilice de la un vânzător german pe E-Bay (link furnizat în BoM). vei avea nevoie:

  • placa acrilica, grosime transparenta = 6mm, diametru = 300mm
  • placă mijlocie acrilică, grosime transparentă = 3mm, diametru = 150mm
  • placă frontală acrilică, satinată, grosime = 3mm, diametru = 90mm
  • tub acrilic, transparent, diametru exterior = 64 mm (va însemna că trebuie să modificăm puțin cu banda LED)
  • tija acrilică, transparentă, diametru = 5mm (aceasta va fi grinzile noastre); Există, de asemenea, tije acrilice cu bule înăuntru, le recomand, dar nu le am în jur.
  • lipici acrilic

Electronică (consultați fișierele Fritzing):

  • Arduino mini (sau similar)
  • 1 bandă LED adresabilă (12 LED-uri pentru pași de o oră și 5 minute)
  • 4 LED-uri adresabile (minute simple)
  • 2 rezistențe 330Ohm
  • 1 condensator 1000µF
  • 1 sursă de alimentare (5V / 500mA)
  • un RTC DS-1307 (opțional!)
  • Modul Bluetooth (opțional! Da, puteți seta ora prin BT și un smartphone Android)

Dacă vă întrebați de ce am cipuri MAX485 pe BoM. Răspunsul este că vreau să sincronizez ceasul cu sistemul de automatizare a casei pe care urmează să-l fac (nu trebuie să mai setez niciodată un ceas pentru ora de vară:-P). Voi descrie acest lucru în blogul meu în următoarea câteva săptămâni / lună.

După cum ați observat, voi încerca, de asemenea, să scoateți ceasul de pe rețea cu niște panouri solare și un LiPo, dar nu acoper acest lucru în acest Instructable, nu ezitați să-l încercați singur.

Pasul 2: Pregătiți piesele acrilice

Pregătiți piesele acrilice
Pregătiți piesele acrilice
Pregătiți piesele acrilice
Pregătiți piesele acrilice
Pregătiți piesele acrilice
Pregătiți piesele acrilice

Uneltele:

În primul rând, este foarte util dacă tipăriți planul DWG pe care l-am adăugat în scara 1: 1. Acest lucru vă va ajuta să aliniați toate piesele și vă va servi drept plan de foraj. În plus, veți avea nevoie de:

  • cuțit hobby
  • manometru
  • ferăstrău
  • cleme
  • foreza
  • poate găuri, diametru 65mm
  • un set de burghie metalice
  • un mic dosar metalic
  • lipici acrilic

Să începem:

Luați placa de bază și aliniați-o pe plan, astfel încât să puteți obține centrul cercului. Acum luați burghiul de mână cu burghiul montat pe acesta și găuriți (foarte lent! Nu prea multă presiune!) O gaură în centrul plăcii de sol, cercul exterior ar trebui să aibă o adâncime de ~ 2-3mm. Aceasta este pentru a scufunda banda LED în placa de masă (bandă LED ~ 10 mm lățime, grinzi cu diametrul de doar 5 mm) și pentru a le alinia cu grinzile (consultați imaginea 1).

Acum avem nevoie de ferăstrăul pentru ferăstrău, manometrul și tubul acrilic. Doar tăiați-o în bucăți, am decis să fac carcasa (tubul) lung de 40 mm (imaginea 2). Acum apucați din nou ferăstrăul și faceți un mic rabat pe o parte a tubului, faceți-l neted cu pila de metal. Acolo vor ieși firele;-) (consultați imaginea 3)

Timp pentru ceva lipici … Luați placa de mijloc (d = 150mm) și placa de față (cea satinată). Aliniați-le din nou pe plan, puneți lipici pe centrul plăcii de mijloc, aliniați placa frontală și așteptați până când lipiciul este ușor întărit. Adezivul pe care l-am folosit se întărește ușor și poate dura până la 2-3 ore, așa că vrei să folosești o clemă … (imaginea 3 și 4)

Faceți același lucru pentru lipirea tubului pe placa de masă, asigurați-vă că rabata este orientată către placă și este aliniată undeva unde doriți să fie primul LED (ora 12).

Așteptați până se întărește!

Acum putem alinia cele 2 părți (bookmatched) pe plan și găuriți cele 4 găuri de un minut (cu diametrul de 5 mm sau cu diametrul LED-ului pe care l-ați ales; găuriți-l lent cu presiune nu prea mare). Forează aproximativ 8-9mm adâncime. Aveți grijă, placa satinată este foarte fragilă și poate frâna dacă găuriți până la adâncime. Acum le puteți lipi împreună sau decideți, ca mine, să tăiem o amenințare în placa de sol și să o atașăm cu un șurub.

Din nou, așteptați până când cleiul s-a întărit. Acum aliniați și lipiți grinzile pe placa de sol. (imaginea 6) Ghiciți ce … așteptați să se întărească lipiciul:-) Să trecem la electronică …

Pasul 3: Electronică

Electronică
Electronică
Electronică
Electronică
Electronică
Electronică
Electronică
Electronică

Uneltele:

  • ciocan de lipit
  • solderwire
  • cuțit hobby
  • o mică bucată de PCB de prototipare
  • sârmă emailată sau orice alt fir pe care îl preferați
  • lipici fierbinte

Am folosit un singur LED. Dacă folosiți sârmă emailată, nu uitați să zgâriați lacul înainte de lipire. Puteți utiliza un cuțit hobby pentru acest lucru. Conectați-le, puteți consulta imaginea cu pinout-ul de pe flikto.de. Rețineți că DOUT merge la DIN pe următorul LED! (vezi imaginea 2) După aceea, puteți tăia banda LED în 4 elemente fiecare cu 3 LED-uri. Amintiți-vă, avem o bandă cu LED de 63,6 mm și un diametru exterior de 64 mm, așa că avem nevoie de o „lungime suplimentară pentru a o alinia exact la grinzi. ca „cablaj electric” și va conține componentele pentru benzile LED (cele două rezistențe de 330 Ohm și condensatorul 1000µF, imaginea 7). Consultați imaginea Fritzing pentru aceasta.

Acum montați banda în jurul tubului, aliniați LED-urile la grinzi. Primul Pixel se potrivește cu ora 12. Dacă v-ați întors locuința, nu uitați că totul este oglindit. Procedați în sens invers acelor de ceasornic! Folosiți niște adeziv fierbinte pentru a-l atașa la tub. O mică scădere pentru fiecare segment o va face!

Puteți face același lucru pentru LED-urile unice (în cele din urmă oglindite), trebuie doar să adăugați niște adeziv fierbinte și să le apăsați în găurile pre-perforate.

Nu conectați încă Arduino, vom folosi hardware-serial pentru conexiunea BT, așa că verificați mai întâi pașii următori în care descriu software-ul.

Pasul 4: Cod

Cod
Cod
Cod
Cod

Acum puteți încărca schița pe Arduino. De asemenea, puteți să conectați benzile LED acum. Nu conectați modulul BT !!! Mai întâi vrem să aruncăm o privire asupra codului, ar trebui să știm unde puteți modifica mai multe lucruri …

Descărcați Arduino IDE și bibliotecile. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

Instalați IDE și puneți bibliotecile în folderul de bibliotecă. Deschideți fișierul INO atașat și încărcați-l pe arduino. Codul descris aici este același, dar cu comentarii suplimentare! Dacă ați făcut totul bine, puteți vedea acum „bootanimation”. Este posibil să setați ora pe monitorul serial. Tastați doar @ „oră” / „min” / „sec” de ex. @ 33/10/10 (10:33).

Simțiți-vă liber să jucați cu codul … Aici vă voi da o scurtă descriere a codului (Configurare fără RTC!)

DEFINIȚII:

#define PIN 6 // Hour LED Strip #define MINPIN 5 // Singelminute LED #define NUMPIXELS 12 // Numărul de pixeli pentru oră #define MINNUMPIXELS 4 // Numărul de pixeli pentru un minut #define BAUDRATE 115200 // Baudrate, ar trebui să se potrivească viteza de transmisie a modulului BT #define utch '@' // start BYTE din TimeSync

int timeset = 0; // semnalizare pentru a stoca dacă ora a fost setată după întârziere de bootvalval = 20; // întârziere pentru decolorarea animației int clocktimer = 10000; // time refresh int timebright = 250; // luminozitatea orei Strip int mtimebright = 50; // luminozitatea inițializării singelminint = 0; // flag pentru a apela funcția clearpixels după bootint ahour; int oldahour = 0; // magazin prev. hourint aminute; int oldamin = 0; // stochează minutul anterior pentru reîmprospătare a doua secundă; int aday; int amonth; int ayear; int mmin; tmElements_t tm;

// Configurare pentru cele 2 matrice de LED-uri NeoPixel (NAME = TYPE (NUMĂR DE PIXELS, CARE PIN, FORMAT RGB SAU GRB, FREQ); Consultați ghidul Adafruit pentru mai multe informații. Dafruit_NeoPixel pixeli = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_K); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

ÎNFIINȚAT:

configurare nulă () {

Serial.begin (BAUDRATE); Wire.begin (); // Inițializați benzile, toate OFFpixels.begin (); minpixels.begin (); pixels.show (); minpixels.show ();

// Faceți puțină animațieSerial.println ("SUNRISE"); răsărit(); întârziere (1000); Serial.println ("SUNSET"); apus de soare(); pixels.show (); Serial.println ("GATA"); }

BUCLĂ:

void loop () {// verificați dacă există sincronizare în timp (Serial.available ()> 0) {char c = Serial.read (); dacă (c == utch) // dacă există un @ pe linie, citiți următorii octeți / inți {readtime (); }} // inițializați LED-urile, eliminați animația de pornire

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

ahour = ora ();

aminute = minute (); if (timeset == 1 || timeset == 0) // aici puteți verifica dacă Time a fost setat, puteți opri programul aici dacă Timeset = FALSE, pur și simplu eliminați "|| timeset == 0"!

{

if (oldamin <aminute || oldahour setează totul pe OFF, afișează ora nouă {clearpixels (); ClockDisplay ();}}}

Afișați ceasul:

void ClockDisplay () {

oldahour = ahour;

oldamin = aminute; int xhour, xmin;

if (ahour> = 12) {xhour = ahour-12; // avem doar 12 LED-uri pentru afișaj 24h} else {xhour = ahour; } // scalați-l în pași de 5min xmin = (aminute / 5); if (oldamin <aminute) {oldamin = aminute; clearpixels (); } // ia restul diviziei dor LED singelmin mmin = (aminute% 5); // operator de modul de ex. 24% 5 = 4! foarte util: -Ppixels.setBrightness (timebright); pixels.setPixelColor (xmin, pixels. Color (5, 125, 255)); // puteți schimba culorile aici! jucați-vă! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); pixels.show ();

// afișează singel minsfor (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, pixeli. Color (255, 255, 0)); minpixels.show (); }} Citiți și procesați informațiile TIME din Serial

void readtime () // dacă am obținut deja primul „@” procesează datele viitoare și stocăm ora pentru 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); }

Curata tot

void clearpixels () // setați fiecare PIXEL la off pentru a reîmprospăta afișajul {

pixeli.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.spectacol(); } }

Pasul 5: Aplicația Android și conexiunea BT

Aplicația Android și conexiunea BT
Aplicația Android și conexiunea BT
Aplicația Android și conexiunea BT
Aplicația Android și conexiunea BT
Aplicația Android și conexiunea BT
Aplicația Android și conexiunea BT

Dacă ați avut succes cu pașii anteriori, acum puteți conecta modulul BT. (Sper că te-ai asigurat, că baudrates se potrivesc). nu uitați să traversați liniile TX și RX:-)

Descărcați și instalați aplicația, asociați-o cu dongle-ul BT, porniți aplicația, conectați-vă la dongle și sincronizați ora cu telefonul mobil. În principiu, APP face la fel ca înainte. Trimite doar @ hh / mm / ss / dd / mm / AAAA generat din timpul său de sistem. De asemenea, am furnizat fișierul APPInventor AIA și o explicație cu privire la pasul următor (pentru cei interesați).

Pasul 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor este destul de ușor de utilizat și merită efortul pentru un program atât de simplu.

Dacă faci un proiect nou, te vei găsi pe tine în ecranul DESIGNER. (imaginea 1) Aici adăugăm tabele, butoane, senzori și alte elemente pentru utilizare ulterioară. În cazul nostru avem nevoie de:

  • un tabel (pentru a alinia toate elementele)
  • un listpicker (pentru selectarea dispozitivului BT la care ne conectăm)
  • un buton (pentru a declanșa TIME peste BT)
  • unele etichete (afișează ora și data efective)
  • senzorul de ceas (reîmprospătează ora)
  • senzorul client Bluetooth (conectivitate)

Adăugarea lor este la fel de ușoară ca drag & drop! În imaginea 2 puteți vedea o imagine de ansamblu a „APP” în ecranul BLOCURI. Ei bine, aici se întâmplă practic toată "magia". În partea de sus am creat câteva variabile pentru a stoca ora și data. Primul bloc din stânga sus va inițializa elementul listpicker cu lista dispozitivelor BT asociate. Cu al doilea bloc decidem ce să facem cu elementul ales anterior. Ei bine, vrem să ne conectăm la el.

Dacă aveți o privire atentă la următorul bloc, puteți vedea că generăm, dacă starea BT „este conectată”, mesajul BT. Este același lucru pe care l-am introdus în SerialMonitor înainte. Ultimul bloc din stânga ne va oferi zero-urile principale pentru a afișa ora (de exemplu, 01:08). În partea dreaptă puteți găsi ultimul nostru bloc, acolo unde folosim elementul ceas. Aici actualizăm variabilele și le combinăm cu procedura cifrelor, acest lucru se va întâmpla la fiecare 1000 ms (setare implicită, modificați-o în modul proiectant) și afișați valorile actualizate cu eticheta. Aceasta este doar o scurtă descriere, dar APPInventor este la fel de ușor ca acesta:-) Poate că există cineva în comunitate care dorește să scrie un software pentru iOS sau WindowsPhone. (ar fi grozav)

Sper că ți-a plăcut Instructabilul meu! Distrează-te cu noul tău ceas de perete! Poate doriți să-l faceți cadou cuiva iubit (sezonul X-Mas):-)

Și dacă există întrebări, nu ezitați să mă întrebați!

Cu stimă și Merry X-Mas.

Recomandat: