Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Izrađujemo elektronski sat na Arduinu vlastitim rukama. Izrada elektronskog sata na Arduinu vlastitim rukama Gotovi satovi na Arduinu

Izrađujemo elektronski sat na Arduinu vlastitim rukama. Izrada elektronskog sata na Arduinu vlastitim rukama Gotovi satovi na Arduinu

Jedan od prvih projekata koji početnici grade koristeći Arduino ploču je jednostavan sat koji drži vrijeme. U osnovi, takvi satovi su bazirani na RTC (Real Time Clock) modulu spojenom na Arduino. Danas su na tržištu elektronskih komponenti dostupni različiti RTC modeli, koji se razlikuju po preciznosti i cijeni. Uobičajeni modeli uključuju DS1302, DS1307, DS3231.



Ali možete napraviti sat na Arduinu bez korištenja RTC-a, pogotovo ako ne možete nabaviti takve module. Naravno, tačnost će u ovom slučaju biti niska, pa bi se projekat radije trebao smatrati projektom obuke.


Princip rada takvih satova je prilično jednostavan. Svaki put kada uključite ovaj Arduino sat, morat ćete ga postaviti na trenutno vrijeme, baš kao i svaki analogni sat. Svakako je bolje da takav sat ne koristite u svakodnevnom životu ako je aktivan duže vrijeme bez ponovnog pokretanja i daljnjeg podešavanja, jer desinhronizacija s trenutnim vremenom tijekom dugotrajne upotrebe može biti značajna.


Ovaj sat se može sastaviti na običnu matičnu ploču, jer ne zahtijeva mnogo komponenti. Naša glavna veza ovdje će biti Arduino Uno ploča. Za prikaz vremena možete uzeti LCD ekran veličine 16x2. Da biste promijenili postavke vremena, potrebno je povezati dva dugmeta (za sate i minute). Tasteri su povezani na Aduino preko 10KΩ otpornika. Za promjenu svjetline displeja trebat će vam potenciometar od 10 kOhm. Dijagram povezivanja svih ovih komponenti na Arduino Uno ploču je prikazan u nastavku.



Sada morate programirati Arduino. Jednostavan kod (skica) koji vam omogućava da prikažete vrijeme na LCD ekranu je dat u nastavku.


#include LiquidCrystal lcd(12,11,5,4,3,2); int h=12; int m; int s; int flag; int TIME; const int hs=8; const int ms=9; int stanje1; int stanje2; void setup() ( lcd.begin(16,2); ) void loop() ( lcd.setCursor(0,0); s=s+1; lcd.print("TIME:"); lcd.print(h ); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(s); if(flag<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(flag==24)flag=0; kašnjenje (1000); lcd.clear(); if(s==60)( s=0; m=m+1; ) if(m==60) (m=0; h=h+1; zastava=zastava+1; ) if(h==13 ) ( h=1; ) lcd.setCursor(0,1); lcd.print("LIJEP DAN"); //-------Vrijeme // postavka-------// state1=digitalRead(hs); if(state1==1) (h=h+1; zastava=zastava+1; if(zastava<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(flag==24)flag=0; if(h==13)h=1; ) stanje2=digitalno čitanje(ms); if(state2==1)( s=0; m=m+1; ) )

   Hvala vam na interesovanju za projekat informacija o web stranici.
   Ako želite da se zanimljivi i korisni materijali objavljuju češće i uz manje reklama,
    Možete podržati naš projekat tako što ćete donirati bilo koji iznos za njegov razvoj.

Odlučio sam napraviti domaći elektronski sat na LED traci koristeći Arduino sa modulom u realnom vremenu, priložena je fotografija proizvodnje i detaljan opis.

Korišteni materijali:

  • - Diodna traka na mikro krugovima ws2811 (RGB, 12V napajanje) 5 metara - 700 rubalja;
  • - Arduino nano - 200 rubalja;
  • - svjetlosni senzor - 28 rubalja;
  • - modul u realnom vremenu RTC DS1307 AT24C32 - 37 rubalja;
  • - pretvarač snage LM2596 - 41 rublja;
  • - napajanje 12 V 1A;
  • - temperaturni senzor DALLAS DS18B20 - 48 rubalja;
  • - komad matične ploče, dva takva gumba, žice.
  • - tvrdi karton.
  • - Whatman papir (2 komada).
  • - dvostrana traka (3M).
  • - obična traka.
  • - listovi pjenastog polietilena (preuzeti iz zaštitne ambalaže opreme).

1. Instalirajte font u MS Office, i odštampajte znak 8 na cijeloj veličini A4 lista. Uradio sam ovo u Visio-u. Unutrašnje trake su granice za označavanje ispod komada diodne trake. Vanjske granice su obrisi brojeva.

2. Crtanje granica komada diodne trake na kartonu

3. Koristeći sljedeći šablon, pravimo oznake na pjenastom polietilenu debljine 15 mm, a zatim izrezujemo prema oznakama.

Za rezanje sam koristio domaću mašinu napravljenu od tri komada drveta, lima iverice i vertikalno razvučene nihrom žice. Napaja se regulisanim napajanjem.

4. Zalijepite komade diodne trake duž granica označenih na kartonu i povežite ih lemljenjem duž lanca.

Glavni krug sam stavio u posebnu kutiju, jer je takvo kućište slabašno.

Kao rezultat toga, kabel je prikladan za sat, u kojem:

  • +12V - za napajanje diodne trake;
  • +5V - za napajanje rasvjetnog modula;
  • 0 - zajednička žica (minus);
  • izlaz podataka sa Arduina na diodnu traku;
  • izlaz signala sa senzora svjetlosti na Arduino;

Arduino dijagram povezivanja.

Konvertor napajanja, Arduino nano i modul sata realnog vremena.

Rasklopna tabla sa tasterima za korekciju.

Algoritam rada je sljedeći:
Sat pokazuje vreme, datum i sobnu temperaturu: prvih 15 sekundi - vreme, zatim 3 sekunde - datum, još 3 sekunde - temperaturu, zatim ponovo vreme. Od 45. sekunde datum je opet 3 sekunde, temperatura 3 sekunde i opet vrijeme.
Kada je prostorija svijetla, svjetlina ekrana je visoka, kada je tamna, smanjena je na minimum.

Dakle, naš tim od tri osobe bio je suočen sa zadatkom: sastaviti mali hardverski projekat, po mogućnosti na Arduino platformi, u vrlo kratkom roku. Vrijedi napomenuti da smo do tog trenutka bili upoznati sa sklopovima, uglavnom, u teoriji. A to znači - nema iskustva sa lemilom (praktično), niti, pogotovo, iskustva sa Arduinom.

Neočekivano, naišli smo na stranicu posvećenu projektu Shadowplay Clock. Ovo je zidni sat koji je dizajnirao tim bečkih dizajnera, čije vrijeme možete vidjeti dodirivanjem njegovog središta prstom. LED diode svijetle takvim redoslijedom da senka prsta u sredini pokazuje vrijeme. Odlučeno je kreirati iste (ili vrlo slične), ali kod kuće. Gornji članak, kao što vidite, ne sadrži detaljan opis projekta. Iz svega ovoga proizilazilo je da smo sami morali shvatiti kako ovaj uređaj funkcionira i oživjeti ga. Što smo upravo i uradili.

Materijali

Za kreiranje sata potrebno vam je:
  • praznine od vlaknastih ploča
  • LED traka za 60 dioda
  • Arduino Uno
  • modul sata realnog vremena RTC DS1307
  • dugme
  • bread board
  • pomični registar 74HC595 (x2)
  • 8-bitni latch registar 74HC573N (x8)
  • dekoder 4-16 K155ID3
  • inverter sa otvorenim odvodom IN74HC05AN (x10)
  • pogonska jedinica

Hajde da počnemo

Dakle, algoritam rada uređaja:
  1. Kada se uključi napajanje, LED diode se pale u navedenoj kombinaciji. U originalnom Shadowplay-u su se upalile sve LED diode, ali smo mislili da bi bilo zanimljivije pokrenuti neku kombinaciju kao screensaver.
  2. Kada pritisnete dugme (da, i mi smo se odmakli od originala i umetnuli malo dugme u centar), vreme se očitava sa RTC modula.
  3. Vrijeme čitanja se pretvara u binarni kod (masku) i unosi u registre.
  4. Ovisno o maski, potrebna dioda svijetli.

Hardver

Kada smo se konačno odlučili za ideju projekta, prvo što smo uradili bilo je da smo mentalno skicirali približne šeme za njegovu implementaciju. Glavno pitanje je bilo kako adresirati 60 LED dioda. Zapravo, odgovor na ovo pitanje odredio je način izgradnje gotovo cijelog kola.

Prva opcija koja mi je pala na pamet odnosila se na korištenje dekriptora. Konstruirano kolo je bilo kaskada od četiri dekodera 4 - 16 i jednog dekodera 2 - 4, oba sa ulazima za dekodiranje. Takva kaskada je omogućila adresiranje na 64 izlaza, što je bilo više nego dovoljno za povezivanje 60 LED dioda.

Međutim, tada se postavilo pitanje kako istovremeno učiniti da (adresa) više LED dioda radi (adresa) sa ovom shemom (na kraju krajeva, sat je trebao imati najmanje minutnu i satnu kazaljku). Tu se očituje glavni nedostatak ove šeme - dekoder ne može, po definiciji, adresirati više od jednog izlaza u isto vrijeme.

Ovaj nedostatak nas je natjerao da napustimo ideju o kaskadi dekriptora. Osim toga, sada imamo još jedan zahtjev za budući krug - podršku za istovremeni rad različitog broja LED dioda.

Da bismo zadovoljili ovaj zahtjev, mislili smo da možemo dopustiti da svaka LED dioda pohrani svoje vlastito stanje. Registri su vrlo pogodni za ovu svrhu, gdje svaka pojedinačna cifra odgovara stanju jedne od LED dioda. Odlučili smo koristiti 8-bitne registre jer su češći i praktičniji. U skladu s tim, u našem krugu će nam trebati 8 takvih registara za podršku za 60 LED dioda.

Zatim smo razmišljali o tome kako kontrolirati stanje LED dioda iz Arduina putem registara. Svaki registar mora primiti svih 8 bitova da bi ispravno funkcionirao. Arduino Uno, naravno, pruža dovoljno izlaza za prijenos nekoliko bitova u isto vrijeme, ali ovaj pristup neće biti racionalan. Osim toga, postoji samo 8 registara u kolu, što znači da ih treba nekako adresirati. U tu svrhu smo dodali dekoder i dva 8-bitna registra pomaka spojena kaskadno u kolo. Jedan pomični registar pohranjuje 8-bitnu masku stanja koja će biti učitana u jedan od 8 regularnih registara, čiji je broj pohranjen u drugom pomičnom registru. U skladu s tim, dekoder je spojen na drugi pomakni registar. Za ove svrhe sasvim je dovoljan dekoder 3 x 8.

Da bismo uklonili inverziju iz broja izlaza koji su nam bili potrebni, koristili smo dva invertorska mikrokola KR1533LN1. To je, naravno, donekle zakomplikovalo šemu.

Još jedan izazov bio je radni napon LED dioda, koji je 12 volti u poređenju sa 5 volti za logičke čipove. Predloženo rješenje je bilo korištenje invertora s otvorenim odvodom. Takav mikro krug djeluje kao ključ koji zatvara (kod logičke 1) ili otvara (kod logičke 0) jedan od LED kontakata na masu, čime se LED uključuje ili isključuje. Krug pretpostavlja rad od 12 volti, u skladu s radnim naponom LED dioda, stoga je, kako bi se dobilo 5 volti za logičke čipove, u krug dodan stabilizator KR142EN5A sa dva kondenzatora.

Neki ulazi pojedinih mikrokola podrazumijevaju konstantnu ulaznu vrijednost, pa su spojeni na masu ili izvor napajanja. U ovom slučaju, ovo su sljedeći ulazi:

  • Inverzni ulaz za resetovanje MR u oba registra pomeranja povezan je preko registra opterećenja na 5 voltni izlaz stabilizatora.
  • Inverzni ulaz za omogućavanje OE izlaza u oba registra pomaka je povezan direktno na masu.
  • Inverzni ulaz za omogućavanje dekodera E0 spojen je na masu

Krugom upravljaju četiri ulaza (E1, SH, ST, DS). Svrha i nivoi signala svakog od njih će biti detaljnije razmotreni u nastavku:

Ulaz E1 je namijenjen za uključivanje dekodera. U našem slučaju, u početku dekoder ima dva kontrolna ulaza E1, E0 i oba su inverzna. Jedan izlaz će biti dovoljan, tako da se drugi (E0) može spojiti na masu. “Podrazumevano” stanje dekodera radi sve dok se na E1 ne primeni visok nivo signala. Da bismo učinili suprotno, spojili smo ovaj ulaz na inverter. Bez toga, dekoder može izdati neispravne kontrolne signale registrima, na primjer, prilikom ažuriranja podataka u registru pomaka. Kao što je već spomenuto, u krugu možete koristiti dekoder 3 x 8, koji može imati jedan neinverzni kontrolni ulaz, što će vam omogućiti da lako riješite sve gore opisane probleme bez nepotrebnih žica i lemilice.

Kada se jedan nivo signala primeni na E1, dekoder dekodira adresu registra koja se nalazi u odgovarajućem registru pomeranja i šalje signal na željeni izlaz. Nakon toga, dekoder se ponovo isključuje primjenom niskog nivoa signala na E1. Ovo prebacivanje dekodera generiše signal na željenom izlazu, čiji porast i pad služe kao takt impuls za registar da fiksira podatke pohranjene na magistrali.

Sljedeća tri ulaza su namijenjena za upravljanje pomačnim registrima. Vrijedi početi od najjednostavnije stvari - DS unosa podataka. Ovaj ulaz je, kao što samo ime kaže, namijenjen za prijenos podataka. Pošto su registri pomeranja u kolu povezani kaskadno, DS predstavlja odgovarajući pin jednog od njih. Ulaz drugog registra pomaka povezan je sa izlazom posljednje znamenke prvog registra. Rezultat je jedan 16-bitni pomakni registar, od čega se koristi samo 12 bitova.

SH ulaz je ulaz sata. Na ovaj ulaz se dovodi kvadratni val, koji je odgovoran za učitavanje i pomicanje podataka u svakom od registra; shodno tome, ovaj kontakt kola je spojen na SHCP pinove oba registra.

Zadnji pin ST služi kao zasun podataka na izlazima registra. Na ovaj ulaz se primjenjuje impuls, ali se primjenjuje tek kada se podaci u pomičnom registru konačno učitaju i potrebno ih je fiksirati na izlazu registara. Tek nakon davanja ovog signala, učitani podaci unutar registra na prvom redu japanki dolaze do drugog reda japanki i postaju dostupni na magistrali. ST je kontakt spojen na STcp pinove oba registra.

Ostaje da se objasni ožičenje dva pina registra pomeranja MR i OE. Prvi ulaz (MR) je odgovoran za resetovanje podataka unutar registra. U ovom kolu ova karakteristika nije potrebna, tako da se na ovaj pin preko opterećenja dovodi visok nivo signala.

Drugi registarski ulaz (OE) je odgovoran za odvajanje drugog reda flip-flopova unutar registra pomaka sa magistrale, odnosno ulaza za omogućavanje. Ova funkcija također nije potrebna, pa je izlaz spojen na masu.

Drugi kontakt koji nije gore opisan je dizajniran da ukloni nivo signala sa dugmeta u centru sata; kolo dugmeta je tipično i predstavlja opterećenje i prekidač, u zavisnosti od čijeg položaja se dovodi nizak ili visok nivo signala. Arduino. U zavisnosti od stanja dugmeta, sat radi ili u režimu čuvara ekrana ili u režimu prikaza vremena.
Povezivanje na Arduino nema posebnih karakteristika, osim što bi SH pin idealno trebao biti spojen na digitalni pin SCK. Preostali pinovi kola mogu se spojiti na bilo koji od dostupnih digitalnih ulaza opće namjene. U našem slučaju veza izgleda ovako:

  • Arduino pin13 (SCK) – izlaz SH kola
  • Arduino pin 11 – pin ST kola Arduino pin 8 – DS pin Arduino pin 5 – pin kola E1 Arduino pin 3 – pin Arduino dugmeta GND – uzemljenje kola (takođe povezano sa uzemljenjem napajanja)
    Nakon što je dizajn kola završen, počeli su radovi na bazi za sat.

    Praznine su izrađene od vlaknaste ploče: krug promjera 36 cm - stražnja strana sata; i prsten dimenzija 36 cm (spoljni prečnik) \ 26 cm (unutrašnji prečnik) - prednji deo. U originalu Shadowplay ima prečnik kruga od 72 cm, ali nam je bilo dovoljno 36. Na krug je zalijepljena LED traka prethodno izrezana na 60 dijelova (dioda + otpornik). Duž ivice kruga izbušene su rupe. Preko njih će žice povezane sa LED diodama biti spojene na matičnu ploču koja se nalazi na stražnjoj strani kruga.

    U stvari, LED diode su izazvale dosta glavobolje. Jednostavnim lijepljenjem na površinu kruga, malo smo pogrešno izračunali. Kao rezultat toga, ispostavilo se da sjena koju su LED diode stvorile nije bila dovoljno svijetla. Zbog toga smo morali potrošiti dosta vremena da ih „podignemo“ za 50 - 60 stepeni, stavljajući ispod svakog od njih trokutaste kartonske podloge. Da, 60 malih kartonskih trouglova. Stoga, napomena: nemojte ponavljati naše gorko iskustvo - nabavite uloške unaprijed.

    Ponestajalo nam je vremena i nismo imali vremena da urezujemo PCB. Stoga je donesena odluka snažne volje - sastaviti projekat na matičnoj ploči. Mnogo kasnije smo saznali da je takav sklop prilično teško sastaviti na matičnoj ploči. Pa, negativno iskustvo je također iskustvo.

    Matična ploča i opći pogled sa stražnje strane uređaja.



    Da, da, stidimo se.

    Prvobitni plan je bio da se napravi tačna kopija Shadowplaya. Međutim, u članku nije opisan način na koji se korisnikov prst detektuje u centru uređaja. Nakon malo razmišljanja, došli smo do zaključka da bi se u ove svrhe mogao koristiti fotootpornik. Međutim, od ove ideje se ubrzo odustalo, jer Fotootpornik može imati nasumične operacije. Uređaj se može nalaziti u uslovima različitog stepena osvetljenja, što znači da neće uvek moći da detektuje prst sa 100% verovatnoćom. Prednost je dato dugmetu koje smo postavili u centar strukture. Ima još jednu prednost osim pouzdanosti. Unatoč maloj veličini, njegova sjena je idealna za ulogu kazaljke na satu. Tako, ako želite, možete programirati uređaj da neprekidno radi u modu sata i bez stavljanja prsta na njega.

    Nakon što je cijeli krug zalemljen (duge besane noći mukotrpnog rada s lemilom i pincetom), vodovi invertera su spojeni na LED diode, došao je svečani trenutak - prvi pokušaj uključivanja uređaja. I, eto, diode su stvarno izgorjele! Ali ne sve. U početku se pojavilo mišljenje da je nešto pogrešno zalemljeno. Međutim, kako se kasnije pokazalo, razlog je bio negdje drugdje. Kako pri prvom startu nismo spojili sve kontrolne ulaze logičkih čipova, već samo one najnužnije, na preostalim nepovezanim ulazima pojavila se nejasnoća u naponskim razinama. Osim toga, kolo je sastavljeno na matičnoj ploči, sa velikom gomilom žica, a nije urezano.Žice su bile značajno podložne elektromagnetskom zračenju.Stoga, pri najmanjem naponu, logički element bi mogao raditi zbog smetnji na nepovezanim ulazima . Kao rezultat toga, bilo koji objekt koji se nalazi u neposrednoj blizini ploče uzrokovao je EMR i, shodno tome, nepredvidivo ponašanje logike, a s tim i LED dioda.

    Na kraju, problem je imao prilično jednostavno rješenje. Bilo je dovoljno inicijalizirati ulaze svih logičkih elemenata u kolu. One. u potpunosti spojite kolo tako da ne ostane neiskorišćenih ulaza (ulazi i izlazi ne utiču na ovaj problem, jer logika mikrokola ne zavisi od njih), i sve je došlo na svoje mesto.

    Softverski dio

    Dakle, hardverski dio je gotov (skoro). Sada je vrijeme da napišete program za Arduino. Prvo morate konfigurirati RTC modul, odnosno unijeti vrijeme u njega. Mikrokolo je bazirano na visokopreciznom modulu DS1307, interfejs za povezivanje je I2C. Interni kalendar u njemu se računa do 2100. godine, uzimajući u obzir prijestupne godine. Zahvaljujući punjenju baterije, modul može raditi autonomno oko godinu dana. Ispod je dijagram povezivanja RTC-a na Arduino koji se nalazi na ovoj stranici. Mnogo informacija o RTC modulu je također preuzeto ovdje.

    Nakon toga, ostalo je samo napisati kod koji će očitati vrijeme iz RTC-a, pretvoriti ga u masku i poslati na ploču.

    Kod

    #include #include char REG ; tmElements_t te; int c, reset=1; void setup() ( pinMode(13, OUTPUT); pinMode(11, OUTPUT); pinMode(8, OUTPUT); pinMode(5, OUTPUT); pinMode(3, INPUT); Serial.begin(57600); //data blok vam omogućava da postavite vrijeme u RTC korištenom jednom //te.Hour = 18; //te.Minute = 50; //te.Second = 0; //te.Day = 20; //dan //te .Month = 4 ; // mjesec //te.Year = CalendarYrToTm(2016); //RTC.write(te); ) void loop() ( if(digitalRead(3)) // će raditi ako se pritisne dugme (RTC.read(te); SetShadowTime(te.Hour,te.Minute,te.Second,2); // izračunaj i postavi vrijeme kašnjenja sata (900); reset=1; ) else // ako je dugme nije pritisnuto, postavite čuvar ekrana (čekajte1 (); reset=1; ) //resetujte LED za (int j = 0; j<8 ; j++) SetUpLightByMask(j,0); } //=======================================================================Вспомогательные функции void SetUpLightByMask(int RegNum, char LightMask) // функция подсветки светодиодов согласно полученной маске в заданном регистре { digitalWrite(5, LOW); digitalWrite(11, LOW); shiftOut(8, 13, MSBFIRST, LightMask); shiftOut(8, 13, LSBFIRST, RegNum); digitalWrite(11, HIGH); digitalWrite(5, HIGH); } void digitalClockDisplay() { //Функция вывода времени из RTC в консоль, полезна при настройке RTC RTC.read(te); Serial.print(te.Hour); Serial.print(" : "); Serial.print(te.Minute); Serial.print(" :"); Serial.print(te.Second); Serial.print(" "); Serial.print(te.Day); Serial.print(" "); Serial.print(te.Month); Serial.print(" "); Serial.print(tmYearToCalendar(te.Year)); Serial.println(); } //Функция рассчёта теневых стрелок на часах, в качестве параметров принимает часы, минуты, секунды и в качестве последнего параметра комбинацию стрелок: //0 - только часы,1 - часы и минуты, 2 - часы минуты и секунды void SetShadowTime(int Hours, int Minutes, int Seconds, int param){ int h,hshift,m,s; for(int j = 0; j<8 ; j++) REG[j] = 0; if(Hours >= 12) Sati -= 12; h = sati + 6; if(h >= 12) h -= 12; hshift = (int) minuta / 12; REG[(int)(((h*5)+hshift)/8)] = REG[(int)(((h*5)+hshift)/8)] | 1<<(((h*5)+hshift)%8); if(param == 1) {m = Minutes + 30; if(m ><<(m%8); } if(param == 2) {m = Minutes + 30; if(m >= 60) m -= 60; REG[(int)(m/8)] = REG[(int)(m/8)] | 1<<(m%8); s = Seconds + 30; if(s >= 60) s -= 60; REG[(int)(s/8)] = REG[(int)(s/8)] | 1<<(s%8); } for(int j = 0; j<8 ; j++) SetUpLightByMask(j,REG[j]); } void wait1() //один из вариантов функций заставки {for(int a = 0; a < 8; a++) {c=0; for(int b = 0; b < 8; b++) {c = c << 1; c = c | 1; SetUpLightByMask(a, c); delay(10); } } for(int a = 0; a < 8; a++) {c=255; for(int b = 0; b < 8; b++) {c = c << 1; SetUpLightByMask(a, c); delay(10); } } }

    Skupština

    Uređaj se može smatrati gotovo spremnim. Ostaje samo sastaviti sve komponente i pokrenuti ih. Matična ploča i drugi dijelovi (Arduino, RTC) su pričvršćeni na stražnji dio sata. Na vrhu kruga sa LED diodama je pričvršćen prsten, koji skriva detalje implementacije. Da bi odvratio pažnju korisnika od nesavršenosti dizajna, prsten je oslikan uzorkom "a la a mikro krug". I konačno - uključen. Rezultat je u nastavku:

    Izvinjavamo se zbog kvaliteta fotografije.

    Evo malog primjera koje kombinacije se mogu pokrenuti kao "splash screen":

    I evo, zapravo, sat je u radnom stanju:

    Kretanje kazaljki ovdje je malo ubrzano kako bi se pokazalo da se i kazaljke minuta i sata kreću.

    I da, predviđajući pitanje koje vjerovatno želite da postavite. Kako razlikovati kazaljke sata, minuta i sekunde? Bilo je dosta kontroverzi na ovu temu. Predložena su različita rješenja za ovaj problem: od raznobojnog osvjetljenja kazaljki do naizmjeničnog uključivanja kazaljki (prvo kazaljka za sat, nakon kratkog vremena kazaljka za minute itd.). Međutim, nakon što smo pogledali original, shvatili smo da se bečki dizajneri, u principu, nisu zamarali ovim pitanjem. Odlučeno je da se zažmuri na ovu malu manu. Vjerovatno će biti eliminisan u budućnosti.

  • gledati
  • Arduino
Dodaj oznake

Sat sa LED pozadinskim osvetljenjem i pulsirajućom minutnom kazaljkom na Arduino mikrokontroleru
Ovaj jedinstveni sat sa LED pozadinskim osvetljenjem i pulsirajućom minutnom kazaljkom napravljen je pomoću TLC5940 PWM kontrolera. Njegov glavni zadatak je da proširi broj PWM modulacijskih kontakata. Još jedna karakteristika ovog sata je da je analogni voltmetar pretvorio u uređaj koji mjeri minute. Da biste to učinili, nova skala je odštampana na standardnom štampaču i zalijepljena na staru. Kao takav, 5. minuta se ne računa, već samo tokom petog minuta brojač vremena pokazuje strelicu koja pokazuje na kraj skale (van skale). Glavna kontrola je implementirana na Arduino Uno mikrokontroleru.

Kako bi se osiguralo da pozadinsko osvjetljenje sata ne svijetli previše jako u mračnoj prostoriji, implementirano je kolo za automatsko podešavanje svjetline ovisno o osvjetljenju (korišten je fotootpornik).

Korak 1: Potrebne komponente



Evo šta će vam trebati:

  • 5V DC analogni voltmetarski modul;
  • Arduino UNO mikrokontroler ili drugi odgovarajući Arduino;
  • Arduino ploča (proto ploča);
  • DS1307 Modul sata realnog vremena (RTC);
  • Modul sa PWM kontrolerom TLC5940;
  • Petal LED pozadinsko osvetljenje – 12 kom.;
  • Komponente za sklapanje kola za automatsku kontrolu svjetline (LDR).

Takođe, za izradu nekih drugih komponenti projekta poželjno je imati pristup 3D štampaču i mašini za lasersko sečenje. Pretpostavlja se da imate ovaj pristup, tako da će upute uključivati ​​proizvodne crteže u odgovarajućim fazama.

Korak 2: Birajte




Brojčanik se sastoji od tri dijela (sloja) izrezana na mašini za lasersko sečenje od MDF lima debljine 3 mm, koji su međusobno pričvršćeni vijcima. Ploča bez proreza (dolje desno na slici) se postavlja ispod druge ploče za postavljanje LED dioda (dolje lijevo). Zatim se pojedinačne LED diode postavljaju u odgovarajuće utore, a prednji panel se stavlja na vrh (gore na slici). Duž ruba brojčanika izbušene su četiri rupe kroz koje su sva tri dijela spojena vijcima.

  • Za testiranje performansi LED dioda u ovoj fazi, korištena je CR2032 dugmasta baterija;
  • Za pričvršćivanje LED dioda korištene su male trake ljepljive trake koje su zalijepljene na stražnju stranu LED dioda;
  • Sve LED noge su prethodno savijene u skladu s tim;
  • Ponovo su izbušene rupe duž ivica kroz koje je izvedeno zavrtnje. Ispostavilo se da je to mnogo zgodnije.

Tehnički crtež dijelova brojčanika dostupan je na:

Korak 3: Dizajnirajte krug



U ovoj fazi razvijeno je električno kolo. U tu svrhu korišteni su različiti udžbenici i vodiči. Nećemo se previše upuštati u ovaj proces; dvije datoteke ispod prikazuju gotov električni krug koji je korišten u ovom projektu.

Korak 4: Povezivanje Arduino ploče





  1. Prvi korak je da odlemite sve kontakte igle na ploči i sekcijskim pločama;
  2. Nadalje, zbog činjenice da 5V i GND napajanje koriste tolike ploče i periferni uređaji, radi pouzdanosti, dvije žice za 5V i GND su zalemljene na ploči;
  3. Zatim je pored korištenih kontakata instaliran TLC5940 PWM kontroler;
  4. Zatim se TLC5940 kontroler povezuje prema dijagramu povezivanja;
  5. Da bi se baterija mogla koristiti, RTC modul je instaliran na rubu ploče. Ako ga zalemite na sredini ploče, oznake pinova neće biti vidljive;
  6. RTC modul je spojen prema dijagramu povezivanja;
  7. Sastavljen je sklop za automatsku kontrolu svjetline (LDR), možete ga pogledati na linku
  8. Žice za voltmetar su povezane spajanjem žica na pin 6 i GND.
  9. Na kraju je zalemljeno 13 žica za LED diode (u praksi se pokazalo da je to bolje učiniti prije nego što pređete na korak 3).

Korak 5: Kod

Donji kod je kompajliran od različitih dijelova sata koji se nalaze na Internetu. U potpunosti je otklonjena greška i sada je potpuno funkcionalna, a dodani su i neki prilično detaljni komentari. Ali prije učitavanja u mikrokontroler, razmotrite sljedeće točke:

  • Prije flešovanja Arduino firmvera, morate dekomentirati red koji postavlja vrijeme:
    rtc.adjust(DateTime(__DATE__, __TIME__))
    Nakon bljeskanja kontrolera sa ovom linijom (vrijeme je podešeno), potrebno ga je ponovo prokomentirati i ponovo flešovati kontroler. Ovo omogućava RTC modulu da koristi bateriju kako bi zapamtio vrijeme ako se izgubi glavno napajanje.
  • Svaki put kada koristite "Tlc.set()" morate koristiti "Tlc.update"

Korak 6: Vanjski prsten

Vanjski prsten za sat je 3D štampan pomoću Replicator Z18 štampača. Pričvršćuje se na sat pomoću vijaka na prednjoj strani sata. Ispod je fajl sa 3D modelom prstena za štampanje na 3D štampaču.

Korak 7: Sastavljanje sata


Arduino mikrokontroler sa svom ostalom elektronikom bio je pričvršćen za stražnji dio sata pomoću vijaka i matica kao odstojnika. Zatim sam spojio sve LED diode, analogni voltmetar i LDR na žice koje su prethodno bile zalemljene na ploču. Sve LED diode su međusobno povezane jednom nogom i spojene na VCC pin na TLC5940 kontroleru (komad žice je jednostavno zalemljen u krug).

Sve ovo do sada nije dobro izolovano od kratkih spojeva, ali rad na tome će se nastaviti u budućim verzijama.

Najbolji članci na ovu temu