Talaan ng mga Nilalaman:
- Hakbang 1: Bill ng Mga Materyales
- Hakbang 2: Pag-ukit at Pag-ukit
- Hakbang 3: Pag-send at Paglalapat ng Varnish
- Hakbang 4: Paggawa ng Circuit
- Hakbang 5: Pag-upload ng Program
- Hakbang 6: paglalagay ng mga LED
- Hakbang 7: Kumokonekta sa mga LED
- Hakbang 8: Pagkonekta sa Circuit Board Sa mga LED
- Hakbang 9: paglalagay ng mga Marmol
Video: Binary Desk Clock: 9 Mga Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Ang mga Binary Clock ay kahanga-hanga at eksklusibo para sa taong nakakaalam ng binary (ang wika ng mga digital device). Kung ikaw ay isang tech na tao ang kakaibang orasan na ito ay para sa iyo. Kaya, gumawa ng isa sa iyong sarili at itago ang iyong oras!
Mahahanap mo ang maraming mga binary na orasan ng iba't ibang mga uri sa Internet. Kahit na maaari kang bumili ng isang binary na orasan mula sa online na tindahan tulad ng amazon.com. Ngunit ang orasan na ito ay naiiba sa lahat at dito ginamit ko ang paglalaro ng marmol upang bigyan ito ng isang matikas na hitsura.
Bago bumaba mangyaring panoorin ang demo video.
Hakbang 1: Bill ng Mga Materyales
Mga Bahagi ng Hardware
1. Arduino Pro Micro (bumili mula sa aliexpress.com): Ito ang pangunahing puso ng orasan at binabasa ang oras mula sa RTC at bigyan ng tagubilin upang magmaneho ang mga LED nang naaayon. Maaari mong gamitin ang Arduino Nano kahit ang Arduino Uno sa halip na Pro Micro kung ang laki ay hindi mahalaga para sa iyo.
2. DS3231 RTC Module (bumili mula sa aliexpress.com): Sinusubaybayan ng DS3231 RTC ang oras kahit na patayin ang kuryente. Kahit na ang ibang RTC tulad ng DS1307 ay maaaring magamit ang DS3231 ay mas tumpak.
3. MAX7219CNG LED Driver IC (bumili mula sa aliexpress.com): Ang Arduino ay may isang limitadong bilang ng mga pin. Kaya, kung nais mong magmaneho ng tonelada ng mga LED nang hindi nasasayang ang mga pin ng Arduino na MAX7219 ang tagapagligtas. Tumatagal ito ng serial data at maaaring magmaneho ng 64 LEDs nang nakapag-iisa.
4. 20 PCS Blue LED, 5mm (bumili mula sa aliexpress.com): Ibinigay ng Blue ang pinakamahusay na resulta para sa akin. Maaari mong subukan sa iba pang mga kulay.
5. 20 PCS Playing Marble (bumili mula sa aliexpress.com): Ginamit ang karaniwang sukat sa paglalaro ng marmol. Ang marmol ay dapat na transparent upang maipasa ang ilaw.
6. Resistor 10K: Ginamit upang makontrol ang kasalukuyang segment ng MAX7219 IC. Tingnan ang datasheet upang malaman ang eksaktong halaga para sa iba't ibang kasalukuyang segment.
7. Mga wire
8. Prototype PCB Board (bumili mula sa aliexpress.com): Gumamit ako ng isang prototype PCB board para sa MAX7219 IC na may base sa IC. Maaari mo ring idisenyo ang iyong pasadyang PCB board.
Mga Kagamitan sa Hardware
1. CNC 3018 PRO Laser Engraver Wood CNC Router Machine (bumili mula sa aliexpress.com): Ginamit ang Theis DIY CNG machine para sa larawang inukit sa kahoy para sa marmol at LEDs. Ito ay isang mahusay na machine na may mababang presyo para sa anumang gumagawa at libangan.
2. Soldering Station (bumili ng isa sa aliexpress.com): Ang ilang paghihinang ay kinakailangan para sa proyekto at ang isang mahusay na bakal na panghinang ay dapat na dapat magkaroon ng tool para sa isang gumagawa. 60W ay isang mahusay na pagpipilian para sa DIY paghihinang.
3. Wire Cutter (bumili mula sa aliexpress.com)
4. Titanium Coated Carbide End Milling Cutter para sa CNC (bumili mula sa aliexpress.com): Maaari mo ring subukan kasama ang kaunting ibinigay sa makina. Sa kasong iyon, dapat kang gumawa ng ilang mga pagbabago sa disenyo.
Hakbang 2: Pag-ukit at Pag-ukit
Kumuha ako ng isang 165X145X18.8 mm Soft Maple na piraso ng kahoy para sa paglalagay ng mga LED ng orasan. Sa tuktok ng bawat pinangunahan, maglalagay ako ng isang marmol at ang laki ng isang karaniwang paglalaro ng marmol ay 15.5mm ang lapad. Kaya, gumawa ako ng 15.7 mm na butas na may lalim na 7mm. Sa gitna ng butas, gumawa ako ng 5mm drill para sa paglalagay ng LED. Ang lahat ng teksto ay ginawa gamit ang 2mm lalim. Maaari mong dagdagan o bawasan ang lalim ng iyong pinili. Maaari mo ring subukan ang laser engraving para sa teksto.
Ang kumpletong disenyo ay ginawa ni Easel mula sa Mga Inventable. Ang Easel ay isang platform na batay sa web software na nagbibigay-daan sa iyo upang magdisenyo at mag-ukit mula sa isang solong, simpleng programa at ang karamihan sa mga tampok ay malayang gamitin. Kailangan mo lamang mag-login sa system sa pamamagitan ng paglikha ng isang account o paggamit ng Gmail.
Ang Easel Pro ay isang cloud-based cloud software na bumubuo sa libreng software ng Easel na Inventable. Ang Easel at Easel Pro ay nagbabawas ng mga hadlang na nauugnay sa kumplikadong software ng manufacturing ng produkto ng CAD at CAM, na ginagawang madali para sa mga gumagamit na gumawa ng mga pisikal na produkto.
Gamit ang Easel maaari mong i-export ang file ng disenyo sa format na G-code o direktang i-set up ang iyong CNC mula sa kapaligiran ng Easel at ipinadala ang utos sa CNC. Sa kasong iyon, kailangan mong i-install ang driver para sa Easel. Maaari ka ring mag-import ng dating nilikha na G-code sa Easel IDE at baguhin. Isinama ko rito ang file ng disenyo. Madali mong mababago ang disenyo ayon sa iyong pagpipilian gamit ang Easel.
Hakbang 3: Pag-send at Paglalapat ng Varnish
Maaaring magbigay ang varnish ng isang magandang tapusin sa mga proyekto sa kahoy at mga kuwadro na gawa. Bago ilapat ang barnis sa kahoy, buhangin ang iyong piraso at linisin ang iyong workspace. Nagbibigay ang Sanding ng isang makinis na hitsura at naghahanda ng kahoy para sa barnis. Ilapat ang barnisan sa maraming mga manipis na layer, hayaang matuyo ang bawat isa bago magpatuloy sa susunod. Upang barnisan ang isang pagpipinta, hayaan itong ganap na matuyo at pagkatapos ay maingat na magsipilyo. Ang isang amerikana ay sapat na para sa maraming mga kuwadro na gawa, ngunit maaari kang magdagdag ng isang karagdagang layer hangga't hinayaan mo munang matuyo ang nauna.
Bago ilapat ang barnis kailangan mong alisin ang anumang mga di-kasakdalan at mantsa bago ilapat ang barnis. Upang magawa iyon Gumamit ng 100 grit na liha para sa hindi natapos na mga piraso, at gumana kasama ang butil ng kahoy. Dahan-dahang buhangin hanggang makinis ang piraso. Matapos linisin ang piraso ng kahoy ilapat ang barnis sa isang maayos na maaliwalas na lugar.
Ang varnish ay nagse-save ng kahoy mula sa dust sa kapaligiran at kahalumigmigan ngunit maaari itong makaapekto sa kulay ng kahoy.
Hakbang 4: Paggawa ng Circuit
Ang pangunahing bahagi ng orasan ay isang Arduino Pro Mini microcontroller board at isang DS3231 RTC module. Ang koneksyon ng Arduino Pro Mini at ang module ng RTC ay napaka-simple. Kailangan mong ikonekta ang SDA pin ng module ng RTC sa SDA pin ng Arduino at SCL pin ng RTC module sa SCL pin ng Arduino. Ang mga SDA at SCL na pin ay talagang A4, at A5 pin ng Arduino ayon sa pagkakabanggit. Kailangan mo ring gumawa ng isang karaniwang koneksyon sa lupa sa pagitan ng Arduino at RTC modules. Gumamit ako ng mga wire ng jumper upang gawin ang mga koneksyon.
Ang koneksyon sa pagitan ng Arduino at DS3231 RTC:
Arduino | DS3231 |
---|---|
SCL (A5) | SCL |
SDA (A4) | SDA |
5V | VCC |
GND | GND |
Para sa pagpapakita ng oras, minuto at segundo ng isang binary na orasan ay nangangailangan ng 20 LEDs. Kung nais mong ipakita ang petsa nangangailangan ito ng higit pa. Ang Arduino board ay may isang limitasyon ng mga GPIO pin. Kaya, ginamit ko ang MAX7219CNG LED driver IC para sa pagmamaneho ng tone-toneladang LEDs gamit lamang ang tatlong mga pin ng Arduino board.
Ang MAX7219 driver IC ay may kakayahang magmaneho ng 64 mga indibidwal na LED habang gumagamit lamang ng 3 wires para sa komunikasyon sa Arduino, at kung ano pa, maaari nating daisy chain ng maraming mga driver at matrix at gumagamit pa rin ng parehong 3 wires.
Ang 64 LEDs ay hinihimok ng 16 output pin ng IC. Ang tanong ngayon ay paano ito posible. Sa gayon, ang maximum na bilang ng mga LED na ilaw sa parehong oras ay talagang walong. Ang mga LED ay nakaayos bilang isang 8 × 8 na hanay ng mga hilera at haligi. Kaya ang MAX7219 ay nagpapagana ng bawat haligi para sa isang napakaikling panahon at sa parehong oras ay naghahimok din ito ng bawat hilera. Kaya sa pamamagitan ng mabilis na paglipat sa mga haligi at hilera ay mapapansin lamang ng mata ng tao ang isang tuluy-tuloy na ilaw.
Ang VCC at GND ng MAX7219 ay pupunta sa 5V at GND na pin ng Arduino at ang tatlong iba pang mga pin, DIN, CLK, at CS na pumunta sa anumang digital pin ng Arduino board. Kung nais naming ikonekta ang higit sa isang module ay ikonekta lamang namin ang mga output pin ng nakaraang breakout board sa mga input pin ng bagong module. Sa totoo lang ang mga pin na ito ay pareho maliban sa pin ng DOUT ng nakaraang board ay papunta sa DIN pin ng bagong board.
Ang koneksyon sa pagitan ng Arduino at MAX7219CNG:
Arduino | MAX7219 |
---|---|
D12 | DIN |
D11 | CLK |
D10 | MAG-LOAD |
GND | GND |
Hakbang 5: Pag-upload ng Program
Ang buong programa ay nakasulat sa Arduino na kapaligiran. Dalawang panlabas na aklatan ang ginamit para sa sketch. Ang isa ay para sa module ng RTC at ang isa pa ay para sa MAX7219 IC. I-download ang mga aklatan mula sa link at idagdag sa Arduino IED bago isulat ang programa.
Ang pag-upload ng programa sa Arduino Pro Mini ay medyo mahirap. Tingnan ang tutorial kung hindi mo ginamit ang Arduino Pro Mini dati:
/*
GIT: https://github.com/jarzebski/Arduino-DS3231> GIT: https://github.com/jarzebski/Arduino-DS3231> * / #include "Wire.h" #include "DS3231.h" #include "LedControl.h" / * Ngayon kailangan namin ng isang LedControl upang gumana. ***** Ang mga pin na numero ay malamang na hindi gagana sa iyong hardware ***** pin 12 ay konektado sa DataIn pin 11 ay konektado sa CLK pin 10 ay konektado sa LOAD Mayroon lamang kaming isang MAX72XX. * / DS3231 na orasan; RTCDateTime dt; LedControl lc = LedControl (12, 11, 10, 1); int segundo, minuto, oras; numero ng byte [10] = {B00000000, B01000000, B00100000, B01100000, B00010000, B01010000, B00110000, B01110000, B00001000, B01001000}; void setup () {//Serial.begin(9600); / * Ang MAX72XX ay nasa mode ng pag-save ng kuryente sa pagsisimula, kailangan naming gumawa ng isang tawag sa paggising * / lc.shutdown (0, hindi totoo); / * Itakda ang ningning sa isang katamtamang halaga * / lc.setIntensity (0, 15); / * at i-clear ang display * / lc.clearDisplay (0); //lc.setLed(0, row, col, true); // 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); // Initialize DS3231 clock.begin (); // Itakda ang oras ng pag-iipon ng sketch //clock.setDateTime(_DATE_, _TIME_); pinMode (5, INPUT_PULLUP); pinMode (6, INPUT_PULLUP); pinMode (7, INPUT_PULLUP); } int menu = 0, pataas, pababa; int oras_one; int oras_ten; int minuto_isa; int minuto_ten; int segundo_one; int segundo_ten; void loop () {kung (digitalRead (5) == 0) {pagkaantala (300); menu ++; kung (menu> 3) menu = 0; } kung (menu == 0) {dt = clock.getDateTime (); oras = dt.hour; minuto = dt.minute; segundo = dt.second; kung (oras> 12) oras = oras - 12; kung (oras == 0) oras = 1; oras_sa = oras% 10; oras_ten = oras / 10; minutes_one = minuto% 10; minuto_ten = minuto / 10; segundo_one = segundo% 10; segundo_ten = segundo / 10; lc.setRow (0, 0, numero [segundo_one]); lc.setRow (0, 1, numero [segundo_ten]); lc.setRow (0, 2, numero [minutes_one]); lc.setRow (0, 3, numero [minuto_ten]); lc.setRow (0, 4, numero [hour_one]); lc.setRow (0, 5, numero [hour_ten]); } kung (menu == 1) {kung (digitalRead (6) == 0) {pagkaantala (300); oras ++; kung (oras> = 24) oras = 0; } kung (digitalRead (7) == 0) {pagkaantala (300); oras--; kung (oras = 60) minuto = 0; } kung (digitalRead (7) == 0) {pagkaantala (300); minuto--; kung (minuto <0) minuto = 0; } minutes_one = minuto% 10; minuto_ten = minuto / 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, numero [minutes_one]); lc.setRow (0, 3, numero [minuto_ten]); } kung (menu == 3) {orasan.setDateTime (2020, 4, 13, oras, minuto, 01); menu = 0; } //lc.setLed(0, row, col, false); //lc.setLed(0, row, col, true); //lc.setColumn(0, col, B10100000); //lc.setRow(0, 4, B11111111); //lc.setRow(0, row, (byte) 0); //lc.setColumn(0, col, (byte) 0); // Para sa humahantong zero na pagtingin sa halimbawa ng DS3231_dateformat // Serial.print ("Raw data:"); // Serial.print (dt.year); Serial.print ("-"); // Serial.print (dt.month); Serial.print ("-"); // Serial.print (dt.day); Serial.print (""); // Serial.print (dt.hour); Serial.print (":"); // Serial.print (dt.minute); Serial.print (":"); // Serial.print (dt.second); Serial.println (""); // // pagkaantala (1000); }
Hakbang 6: paglalagay ng mga LED
Sa yugtong ito, ilalagay ko ang lahat ng mga LED sa mga butas ng board ng kahoy. Ang mga koneksyon ng mga LED ay ipinapakita sa eskematiko. Dahil gagamitin namin ang MAX7219 LED driver upang himukin ang mga LED, ang lahat ng mga LED ay dapat na konektado sa form ng matrix. Kaya, kinonekta ko ang mga anode pin ng lahat ng LEDs sa bawat haligi at magkasama ang lahat ng mga pin ng cathode ng bawat hilera ayon sa eskematiko. Ngayon, ang aming mga haligi na pin ay talagang mga anode pin ng LEDs at mga row pin ay talagang mga cathode pin ng LEDs.
Para sa pagmamaneho ng mga LED gamit ang MAX7219 dapat mong ikonekta ang cathode pin ng isang humantong sa isang digit na pin ng IC at anode pin ng humantong sa isang segment pin ng IC. Kaya, ang aming mga haligi na pin ay dapat na konektado sa mga segment ng pin at ang mga row pin ay dapat na konektado sa mga digit na pin ng MAX7219.
Kailangan mong ikonekta ang isang risistor sa pagitan ng ISET pin at ang VCC ng MAX7219 IC at kontrolin ng resistor na ito ang kasalukuyang mga segment ng mga pin. Gumamit ako ng isang resistor na 10K upang mapanatili ang 20mA sa bawat segment na pin.
Hakbang 7: Kumokonekta sa mga LED
Sa yugtong ito, kinonekta ko ang lahat ng mga LED sa isang hilera-haligi na format ng matrix. Kailangan kong gumamit ng ilang labis na mga wire ng lumulukso upang ikonekta ang mga LED ngunit maaari mong gawin ang koneksyon nang walang tulong ng labis na mga wire kung ang mga lead ng LEDs ay sapat na mahaba upang hawakan ang bawat isa.
Sa pagsasaayos na ito, walang kinakailangang risistor sapagkat ang MAX7219 ang mag-aalaga ng kasalukuyang. Ang iyong tungkulin ay piliin ang tamang halaga para sa risistor ng ISET at hilahin ang ISET pin gamit ang risistor na ito. Bago ilagay at ikonekta ang mga LED imumungkahi ko na suriin mo ang bawat LED. Dahil ang paglalagay ng isang masamang LED ay pumatay ng maraming oras. Sa susunod na hakbang, ikonekta namin ang mga wire ng row at haligi sa MAX ic.
Hakbang 8: Pagkonekta sa Circuit Board Sa mga LED
Ang aming circuit board kasama ang RTC, Arduino, at MAX7219 ay handa nang mahabang panahon at inihanda rin namin ang LED matrix sa nakaraang yugto. Ngayon kailangan naming ikonekta ang lahat ng mga bagay nang magkasama ayon sa eskematiko. Una, kailangan naming ikonekta ang mga wire ng row at haligi sa MAX7219IC. Ang koneksyon ay nabanggit sa eskematiko. Upang gawing mas malinaw sundin ang talahanayan na ibinigay sa ibaba.
LED Matrix | MAX7219CNG |
---|---|
ROW0 | DIGIT0 |
ROW1 | DIGIT1 |
ROW2 | DIGIT2 |
ROW3 | DIGIT3 |
COLUMN0 | SEGA |
COLUMN1 | SEGB |
COLUMN2 | SEGC |
COLUMN3 | SEGD |
COLUMN4 | SEGE |
COLUMN5 | SEGF |
ROW0-> Pinakamataas na hilera
COLUMN0 -> Pinakamataas na haligi (SS COLUMN)
Matapos gawin ang koneksyon kailangan mong ayusin ang PCB board at Arduino gamit ang piraso ng kahoy upang maiwasan na masira ang koneksyon. Gumamit ako ng mainit na pandikit para sa pag-aayos ng lahat ng mga circuit sa lugar. Upang maiwasan ang anumang maikling circuit gumamit ng isang malaking halaga ng pandikit upang maitago ang magkasanib na solder sa ilalim na bahagi ng PCB.
Para magamit ang isang orasan kailangan mong panatilihin ang isang pagpipilian para sa pagsasaayos ng oras kung kinakailangan. Nagdagdag ako ng tatlong mga switch ng pindutan para sa pagsasaayos ng oras. Isa para sa pagbabago ng pagpipilian at dalawa para sa pagdaragdag at pagbawas ng oras at minuto. Ang mga pindutan ay inilalagay sa kanang tuktok na sulok upang ang mga ito ay madaling ma-access.
Hakbang 9: paglalagay ng mga Marmol
Ito ang huling yugto ng aming proyekto. Ang lahat ng koneksyon sa circuit ay nakumpleto. Ngayon ay kailangan mong ilagay ang marmol sa tuktok na bahagi ng orasan ng kahoy. Para sa paglalagay ng mga marmol ay gumamit ako ng mainit na pandikit. Gumamit ng transparent na puting kulay na pandikit na pandikit para sa hangarin. Naglapat ako ng mainit na pandikit sa bawat butas mula sa tuktok na bahagi at sa tuktok ng mga LED ay dahan-dahang inilagay ko ang marmol sa bawat butas. Ang pagdaragdag ng pandikit na pantay ay magpapataas ng glow ng led. Gumamit ako ng BLUE LED para sa aking orasan. Ibinigay sa akin ang pinakamahusay na resulta.
Bigyan ng lakas ang orasan. Kung nagpapakita ito ng oras pagkatapos ay Binabati kita !!!
Nagawa mo!
Mag-enjoy!
Runner Up sa Make it Glow Contest
Inirerekumendang:
BigBit Binary Clock Display: 9 Mga Hakbang (na may Mga Larawan)
BigBit Binary Clock Display: Sa isang nakaraang Instructable (Microbit Binary Clock), ang proyekto ay perpekto bilang isang portable desktop appliance dahil ang display ay maliit. Samakatuwid tila naaangkop na ang susunod na bersyon ay dapat isang mantel o naka-mount na bersyon ngunit mas malaki
Binary LED Marble Clock: 6 Mga Hakbang (na may Mga Larawan)
Binary LED Marble Clock: Ngayon sa palagay ko halos lahat ng tao ay may isang binary na orasan at narito ang aking bersyon. Ang nasisiyahan ako ay ang proyektong ito ay pinagsama ang ilang mga gawaing kahoy, programa, pag-aaral, electronics at marahil ay isang kaunting likhang sining lamang. Ipinapakita nito ang oras, buwan, petsa, araw
5 $ PCB CALENDAR MAY BINARY CLOCK: 7 Mga Hakbang (na may Mga Larawan)
5 $ PCB CALENDAR MAY BINARY CLOCK: Kumusta! Ginawa ko ang kalendaryong PCB at binary na orasan na ito kasama ang Eagle CAD. Gumamit ako ng ATMEGA328P MCU (mula sa Arduino) at 9x9 LED matrix. Ang mga sukat para sa aking board ay 8cmx10cm (3.14inch x 3.34inch). Ito ay medyo masyadong maliit ngunit una: ang libreng bersyon ng Eagle CAD ay nagbibigay-daan sa 80cm ^ 2
Desk Amplifier Sa Audio Visualization, Binary Clock & FM Receiver: 8 Hakbang (na may Mga Larawan)
Desk Amplifier Sa Audio Visualization, Binary Clock & FM Receiver: Gusto ko ng mga amplifier at ngayon, ibabahagi ko ang aking mababang power desk amplifier na ginawa ko kamakailan. Ang amplifier na dinisenyo ko ay may ilang mga kagiliw-giliw na tampok. Mayroon itong pinagsamang binary na orasan at maaaring magbigay ng oras at petsa at maaari nitong mailarawan ang audio na madalas na tinatawag na audio
Digital at Binary Clock sa 8 Digits X 7 Mga Segment na LED Display: 4 na Hakbang (na may Mga Larawan)
Digital & Binary Clock sa 8 Digits X 7 Mga Segment na LED Display: Ito ang aking na-upgrade na bersyon ng isang Digital at amp; Ang Binary Clock na gumagamit ng isang 8 Digit x 7 Segment LED Display. Gusto kong magbigay ng mga bagong tampok para sa karaniwang mga aparato, lalo na ang mga orasan, at sa kasong ito ang paggamit ng 7 Seg display para sa Binary Clock ay hindi kinaugalian at ito