Innholdsfortegnelse:
- Trinn 1: Materialregning
- Trinn 2: Gravering og utskjæring
- Trinn 3: Sliping og påføring av lakk
- Trinn 4: Lag kretsen
- Trinn 5: Last opp programmet
- Trinn 6: Plassering av lysdiodene
- Trinn 7: Koble til lysdioder
- Trinn 8: Koble til kretskortet med lysdiodene
- Trinn 9: Plassering av marmorene
Video: Binær skrivebordsklokke: 9 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Binære klokker er fantastiske og utelukkende for den som kjenner binæren (språket til de digitale enhetene). Hvis du er en teknisk fyr, er denne rare klokken noe for deg. Så lag en selv og hold tiden din hemmelig!
Du vil finne mange binære klokker av forskjellige typer på Internett. Selv kan du kjøpe en binær klokke fra en nettbutikk som amazon.com. Men denne klokken er forskjellig fra alle, og her brukte jeg å spille marmor for å gi den et elegant utseende.
Se demo -videoen før du går ned.
Trinn 1: Materialregning
Maskinvarekomponenter
1. Arduino Pro Micro (kjøp fra aliexpress.com): Dette er klokkens viktigste hjerte og leser tiden fra RTC og gir instruksjoner om å kjøre lysdiodene deretter. Du kan bruke Arduino Nano til og med Arduino Uno i stedet for Pro Micro hvis størrelsen ikke spiller noen rolle for deg.
2. DS3231 RTC -modul (kjøp fra aliexpress.com): DS3231 RTC holder oversikt over tiden selv når strømmen går av. Selv om andre RTC som DS1307 kan brukes, er DS3231 mer nøyaktig.
3. MAX7219CNG LED Driver IC (kjøp fra aliexpress.com): Arduino har et begrenset antall pinner. Så hvis du vil kjøre tonnevis med lysdioder uten å kaste bort Arduino -pinner, er MAX7219 livredderen. Den tar serielle data og kan kjøre 64 lysdioder uavhengig.
4. 20 STK Blå LED, 5 mm (kjøp fra aliexpress.com): Blå ga det beste resultatet for meg. Du kan prøve med andre farger.
5. 20 PCS Playing Marble (kjøp fra aliexpress.com): Standardmarmor ble brukt. Marmoren må være gjennomsiktig for å passere lys.
6. Motstand 10K: Brukes til å kontrollere segmentstrømmen til MAX7219 IC. Se databladet for å vite den eksakte verdien for forskjellige segmentstrømmer.
7. Ledninger
8. Prototype PCB Board (kjøp fra aliexpress.com): Jeg brukte et prototype PCB -kort for MAX7219 IC med en IC -base. Du kan også designe ditt tilpassede PCB -kort.
Maskinvareverktøy
1. CNC 3018 PRO lasergraver tre CNC -rutemaskin (kjøp fra aliexpress.com): Theis DIY CNG -maskin ble brukt til utskjæring på treet for marmor og lysdioder. Dette er en utmerket maskin med en lav pris for enhver produsent og hobbyist.
2. Loddestasjon (kjøp en fra aliexpress.com): Noe lodding er nødvendig for prosjektet, og et godt loddejern er et må-ha-verktøy for en produsent. 60W er et godt valg for DIY lodding.
3. Wire Cutter (kjøp fra aliexpress.com)
4. Titanbelagt karbidsluttfreser for CNC (kjøp fra aliexpress.com): Du kan også prøve med borkronen som følger med maskinen. I så fall bør du gjøre noen endringer i designet.
Trinn 2: Gravering og utskjæring
Jeg tok et 165X145X18.8 mm mykt lønnetre for å plassere lysdiodene på klokken. På toppen av hver led vil jeg plassere en marmor og størrelsen på en standard marmor er 15,5 mm i diameter. Så jeg laget 15,7 mm hull med en dybde på 7 mm. I midten av hullet laget jeg en 5 mm drill for å plassere LED -en. All teksten ble laget med 2 mm dybde. Du kan øke eller redusere dybden du ønsker. Du kan også prøve lasergravering for teksten.
Den komplette designen ble laget av Easel fra Inventables. Easel er en nettbasert programvareplattform som lar deg designe og skjære fra et enkelt, enkelt program, og de fleste funksjonene er gratis å bruke. Du trenger bare å logge på systemet ved å opprette en konto eller bruke Gmail.
Easel Pro er en medlemsbasert skyprogramvare som bygger på Inventables gratis Easel-programvare. Easel og Easel Pro minimerer barrierene knyttet til komplisert CAD- og CAM -produktproduksjonsprogramvare, noe som gjør det enkelt for brukerne å produsere fysiske produkter.
Ved å bruke Easel kan du eksportere designfilen i G-kodeformat eller sette opp CNC direkte fra Easel-miljøet og sende kommandoen til CNC. I så fall må du installere driveren for staffeliet. Du kan også importere en tidligere opprettet G-kode til Easel IDE og endre. Jeg inkluderte designfilen her. Du kan enkelt endre designet i henhold til ditt valg ved hjelp av Easel.
Trinn 3: Sliping og påføring av lakk
Lakk kan gi en vakker finish på treprosjekter og malerier. Slip brikken din og rengjør arbeidsområdet før du påfører lakk på tre. Sliping gir et glatt utseende og forbereder treet for lakk. Påfør lakken i flere tynne lag, la hver tørke grundig før du går videre til neste. For å lakk et maleri, la det tørke helt og børst forsiktig på lakken. Ett strøk er nok for mange malerier, men du kan legge til et ekstra lag så lenge du først lar det forrige tørke grundig.
Før du påfører lakken, må du fjerne eventuelle feil og skavanker før du påfører lakken. For å gjøre det, bruk 100 sandpapir av grus for uferdige stykker, og arbeid med treverket. Slip forsiktig til stykket er glatt. Etter rengjøring av trestykket påføres lakken i et godt ventilert område.
Lakk sparer treet for miljøstøv og fuktighet, men det kan påvirke treets farge.
Trinn 4: Lag kretsen
Hovedkomponenten i klokken er et Arduino Pro Mini mikrokontrollerbord og en DS3231 RTC -modul. Tilkoblingen av Arduino Pro Mini og RTC -modulen er veldig enkel. Du må koble SDA -pinnen til RTC -modulen til SDA -pinnen på Arduino og SCL -pinnen til RTC -modulen til SCL -pinnen på Arduino. SDA- og SCL -pinner er faktisk henholdsvis A4 og A5 -pinne av Arduino. Du må også lage en felles jordforbindelse mellom Arduino- og RTC -moduler. Jeg brukte jumperwires for å lage tilkoblingene.
Forbindelsen mellom Arduino og DS3231 RTC:
Arduino | DS3231 |
---|---|
SCL (A5) | SCL |
SDA (A4) | SDA |
5V | VCC |
GND | GND |
For å vise time, minutt og sekund kreves en binær klokke 20 lysdioder. Hvis du vil vise dato, krever det mer. Arduino -kortet har en begrensning på GPIO -pinnene. Så jeg brukte MAX7219CNG LED driver IC for å kjøre tonnevis av lysdioder med bare tre pinner på Arduino -kortet.
MAX7219 driver IC er i stand til å kjøre 64 individuelle lysdioder mens du bare bruker tre ledninger for kommunikasjon med Arduino, og dessuten kan vi kjede flere drivere og matriser med kjede og fortsatt bruke de samme tre ledningene.
De 64 lysdiodene drives av 16 utgangspinner på IC. Spørsmålet nå er hvordan det er mulig. Maksimalt antall lysdioder lyser samtidig er faktisk åtte. Lysdiodene er ordnet som et 8 × 8 sett med rader og kolonner. Så MAX7219 aktiverer hver kolonne i en veldig kort periode, og samtidig driver den også hver rad. Så ved raskt å bytte gjennom kolonnene og radene vil det menneskelige øyet bare legge merke til et kontinuerlig lys.
VCC og GND på MAX7219 går til 5V og GND -pinnene på Arduino og de tre andre pinnene, DIN, CLK og CS går til en hvilken som helst digital pinne på Arduino -kortet. Hvis vi vil koble til mer enn én modul, kobler vi bare utgangspinnene til det forrige utbruddskortet til inngangspinnene til den nye modulen. Disse pinnene er faktisk de samme bortsett fra at DOUT -pinnen på det forrige kortet går til DIN -pinnen på det nye kortet.
Forbindelsen mellom Arduino og MAX7219CNG:
Arduino | MAX7219 |
---|---|
D12 | DIN |
D11 | CLK |
D10 | LASTE |
GND | GND |
Trinn 5: Last opp programmet
Hele programmet er skrevet i Arduino -miljø. To eksterne biblioteker ble brukt til skissen. Den ene er for RTC -modulen og den andre er for MAX7219 IC. Last ned bibliotekene fra lenken og legg til Arduino IED før du kompilerer programmet.
Å laste opp program i Arduino Pro Mini er litt vanskelig. Ta en titt på opplæringen hvis du aldri bruker Arduino Pro Mini før:
/*
GIT: https://github.com/jarzebski/Arduino-DS3231> GIT: https://github.com/jarzebski/Arduino-DS3231> */#include "Wire.h" #include "DS3231.h" #include "LedControl.h" /* Nå trenger vi en LedControl å jobbe med. ***** Disse pin tallene vil sannsynligvis ikke fungere med maskinvaren din ***** pin 12 er koblet til DataIn pin 11 er koblet til CLK pin 10 er koblet til LOAD Vi har bare en enkelt MAX72XX. */ DS3231 klokke; RTCDateTime dt; LedControl lc = LedControl (12, 11, 10, 1); int sekunder, minutter, timer; byte nummer [10] = {B00000000, B01000000, B00100000, B01100000, B00010000, B01010000, B00110000, B01110000, B00001000, B01001000}; ugyldig oppsett () {//Serial.begin(9600); / * MAX72XX er i strømsparingsmodus ved oppstart, vi må ringe */ lc.stopp (0, usann); / * Still lysstyrken til middels verdier */ lc.setIntensity (0, 15); / * og tøm skjermen */ lc.clearDisplay (0); //lc.setLed(0, rad, kol, sann); // lc.setRow (0, 0, B11111111); // lc.setRow (0, 1, B11111111); // lc.setRow (0, 2, B11111111); // lc.setRow (0, 3, B11111111); // lc.setRow (0, 4, B11111111); // lc.setRow (0, 5, B11111111); // lc.setColumn (0, 2, B11111111); // lc.setColumn (0, 3, B11111111); // lc.setColumn (0, 4, B11111111); // lc.setColumn (0, 5, B11111111); // Initialiser DS3231 clock.begin (); // Angi skisse -kompileringstid //clock.setDateTime(_DATE_, _TIME_); pinMode (5, INPUT_PULLUP); pinMode (6, INPUT_PULLUP); pinMode (7, INPUT_PULLUP); } int meny = 0, opp, ned; int timer_one; int timer_ten; int minutter_one; int minutter_ten; int sekunder_one; int sekunder_ten; void loop () {if (digitalRead (5) == 0) {delay (300); meny ++; hvis (meny> 3) meny = 0; } if (meny == 0) {dt = clock.getDateTime (); timer = dt.time; minutter = dt.minute; sekunder = dt. sekund; hvis (timer> 12) timer = timer - 12; hvis (timer == 0) timer = 1; timer_one = timer%10; timer_ten = timer/10; minutter_one = minutter%10; minutter_ten = minutter/10; sekunder_one = sekunder%10; sekunder_ten = sekunder/10; lc.setRow (0, 0, tall [sekunder_one]); lc.setRow (0, 1, tall [sekunder_ten]); lc.setRow (0, 2, nummer [minutter_one]); lc.setRow (0, 3, tall [minutter_ten]); lc.setRow (0, 4, tall [timer_one]); lc.setRow (0, 5, tall [timer_ten]); } if (meny == 1) {if (digitalRead (6) == 0) {forsinkelse (300); timer ++; hvis (timer> = 24) timer = 0; } if (digitalRead (7) == 0) {delay (300); timer--; hvis (timer = 60) minutter = 0; } if (digitalRead (7) == 0) {delay (300); minutter--; hvis (minutter <0) minutter = 0; } minutter_one = minutter%10; minutter_ten = minutter/10; lc.setRow (0, 4, B00000000); lc.setRow (0, 5, B00000000); lc.setRow (0, 1, B00000000); lc.setRow (0, 0, B00000000); lc.setRow (0, 2, nummer [minutter_one]); lc.setRow (0, 3, tall [minutter_ten]); } if (meny == 3) {clock.setDateTime (2020, 4, 13, timer, minutter, 01); meny = 0; } //lc.setLed(0, rad, kol, falsk); //lc.setLed(0, rad, kol, sann); //lc.setColumn(0, col, B10100000); //lc.setRow(0, 4, B11111111); //lc.setRow(0, rad, (byte) 0); //lc.setColumn(0, col, (byte) 0); // For å få null titt på DS3231_dateformat eksempel // Serial.print ("rådata:"); // Serial.print (dt.år); Serial.print ("-"); // Serial.print (dt.måned); Serial.print ("-"); // Serial.print (dt.day); Serial.print (""); // Serial.print (dt.time); Serial.print (":"); // Serial.print (dt.minute); Serial.print (":"); // Serial.print (dt.second); Serial.println (""); // // forsinkelse (1000); }
Trinn 6: Plassering av lysdiodene
I dette stadiet vil jeg sette alle lysdiodene til hullene på treplaten. Tilkoblingene til lysdiodene er vist i skjematikken. Siden vi skal bruke MAX7219 LED -driver for å drive LED -lampene, må alle LED -ene være koblet i matriseform. Så jeg koblet anodepinnene til alle lysdiodene i hver kolonne sammen og alle katodestiftene i hver rad sammen i henhold til skjematisk. Nå er kolonnepinnene våre faktisk anodestifter av lysdioder og radpinner er faktisk katodestifter av lysdioder.
For å kjøre lysdioder som bruker MAX7219 må du koble katodestiften på en ledning til en sifferpinne på IC og anodestiften på ledningen til en segmentpinne på IC. Så, våre kolonnpinner bør være koblet til segmentpinnene og radpinnene skal være koblet til sifrene pin på MAX7219.
Du må koble en motstand mellom ISET -pinnen og VCC på MAX7219 IC, og denne motstanden styrer segmentpinnestrømmen. Jeg brukte en 10K motstand for å opprettholde 20mA i hver segmentpinne.
Trinn 7: Koble til lysdioder
På dette stadiet koblet jeg alle lysdiodene i et rad-kolonnematriseformat. Jeg trengte å bruke noen ekstra jumper -ledninger for å koble lysdiodene, men du kan gjøre tilkoblingen uten hjelp av ekstra ledninger hvis ledningene til lysdiodene er lange nok til å berøre hverandre.
I denne konfigurasjonen er det ikke nødvendig med noen motstand fordi MAX7219 vil ta seg av strømmen. Din plikt er å velge riktig verdi for ISET -motstanden og trekke ISET -pinnen opp med denne motstanden. Før du plasserer og kobler til lysdiodene, vil jeg foreslå at du sjekker hver LED. Fordi å plassere en dårlig LED vil drepe mye tid. I neste trinn kobler vi rad- og kolonnetrådene til MAX ic.
Trinn 8: Koble til kretskortet med lysdiodene
Kretskortet vårt, inkludert RTC, Arduino og MAX7219, er klart lenge, og vi forberedte også LED -matrisen i forrige trinn. Nå må vi koble alle tingene sammen i henhold til skjematikken. Først må vi koble rad- og kolonnetrådene til MAX7219IC. Tilkoblingen ble nevnt i skjemaet. For å gjøre det mer oversiktlig, følg tabellen nedenfor.
LED -matrise | MAX7219CNG |
---|---|
RAD0 | DIGIT0 |
RAD1 | DIGIT1 |
RAD2 | DIGIT2 |
RAD3 | DIGIT3 |
KOLONN0 | SEGA |
KOLONN1 | SEGB |
KOLONN2 | SEGC |
KOLONN3 | SEGD |
KOLONN4 | SEGE |
KOLONN5 | SEGF |
RAD0-> Øverste rad
KOLONN0 -> Høyre kolonne (SS KOLONN)
Etter at du har gjort tilkoblingen, må du fikse kretskortet og Arduino med trebiten for å unngå å bryte forbindelsen. Jeg brukte varmt lim for å fikse alle kretsene på plass. For å unngå kortslutning, bruk en stor mengde lim for å skjule loddetinnet på undersiden av kretskortet.
For å gjøre en klokke brukbar må du beholde et alternativ for å justere tiden når det er nødvendig. Jeg la til tre knappebrytere for å justere tiden. En for å endre alternativ og to for å øke og redusere timen og minuttet. Knappene er plassert øverst i høyre hjørne slik at disse er lett tilgjengelige.
Trinn 9: Plassering av marmorene
Dette er den siste fasen av prosjektet vårt. All kretstilkobling er fullført. Nå må du plassere marmoren på oversiden av treklokken. For å plassere kulene brukte jeg varmt lim. Bruk transparent hvit limpinne til formålet. Jeg påførte varmt lim i hvert hull fra oversiden, og på toppen av lysdiodene plasserte jeg forsiktig marmoren i hvert hull. Å legge lim jevnt vil øke lyset på lysdioden. Jeg brukte BLÅ LED for klokken min. Det ga meg det beste resultatet.
Gi strøm til klokken. Hvis det viser tid så gratulerer !!!
Du klarte det!
Nyt!
Andreplass i Make it Glow -konkurransen
Anbefalt:
Harddisk skrivebordsklokke: 5 trinn
Harddisk Desktop Clock: IntroDet er en harddiskur i Pinterest til salgs. Jeg vil alltid lage en av dem til skrivebordet mitt. COVID-19 karantene gir meg sjansen til å lage en. På grunn av viruset må jeg få det fra alt jeg har i huset, så dette er min første instruksjon
5 $ PCB -KALENDER MED BINÆR KLOKKE: 7 trinn (med bilder)
5 $ PCB -KALENDER MED BINÆR KLOKKE: Hei! Jeg laget denne PCB -kalenderen og den binære klokken med Eagle CAD. Jeg brukte ATMEGA328P MCU (fra Arduino) og 9x9 LED -matrise. Dimensjoner for brettet mitt er 8cmx10cm (3.14inch x 3.34inch). Den er litt for liten, men først: gratisversjonen av Eagle CAD tillater 80 cm^2
"Tre" skrivebordsklokke *Moderne utseende *: 9 trinn (med bilder)
"Tre" skrivebordsklokke *Moderne utseende *: Hei alle sammen, dette er min andre instruktør! Denne gangen skal vi bygge en treklokke med temperatur- og fuktighetsvisning. Som vist på bildet, vil tiden vår bli vist gjennom "treet". Siden lys ikke er sterkt nok
Neo Steampunk skrivebordsklokke: 5 trinn
Neo Steampunk skrivebordsklokke: Steampunk på grunn av kobberrøret. Neo på grunn av den moderne Arduino. Antisismisk på grunn av fjærene som holder de elektroniske brikkene inne i kobberrammen
IoT skrivebordsklokke og termometer: 5 trinn
IoT Desktop Clock and Thermometer: Hei, denne instruksjonen viser deg hvordan jeg bygde en stasjonær klokke og termometer, uten spesielle verktøy. Denne skrivebordsklokken viser gjeldende tid, temperatur og fuktighet. Klokken er veldig presis fordi den er synkronisert til en tid