Talaan ng mga Nilalaman:

132 Pixel Clock: 5 Hakbang (na may Mga Larawan)
132 Pixel Clock: 5 Hakbang (na may Mga Larawan)

Video: 132 Pixel Clock: 5 Hakbang (na may Mga Larawan)

Video: 132 Pixel Clock: 5 Hakbang (na may Mga Larawan)
Video: Pagsasanay sa pagbasa ng mga pangungusap | Filipino Kinder | Grade 1 & 2 | Practice Reading 2024, Nobyembre
Anonim
Image
Image
132 Pixel Clock
132 Pixel Clock

Mayroon akong, hangga't maaari kong matandaan ang nahuhumaling sa mga LED at oras. Sa proyektong ito lumikha ako ng isang malaking orasan sa dingding na nagpapakita ng kasalukuyang oras gamit ang 132 neopixel LEDs na naka-mount at nagniningning sa pamamagitan ng isang spruce board. Ito ay isang hybrid analog digital na may isang Indibidwal na pixel para sa bawat oras, minuto at segundo.

Ito ang pinakamalaking proyekto na kinuha ko hanggang ngayon, sinimulan kong isipin ito 6 buwan na ang nakakaraan at ang ideya ay dahan-dahang nagkasama. Talagang masaya ako sa kinalabasan at inaasahan kong ibahagi ito sa iyo.

Hakbang 1: Pagtitipon ng Mga Pantustos at Mga Tool

Pagtitipon ng Mga Pantustos at Kasangkapan
Pagtitipon ng Mga Pantustos at Kasangkapan
Pagtitipon ng Mga Pantustos at Kasangkapan
Pagtitipon ng Mga Pantustos at Kasangkapan
Pagtitipon ng Mga Pantustos at Kasangkapan
Pagtitipon ng Mga Pantustos at Kasangkapan
Pagtitipon ng Mga Pantustos at Kasangkapan
Pagtitipon ng Mga Pantustos at Kasangkapan

Mga Bahagi

Ang proyektong ito ay itinayo sa isang cheep hobby board mula sa aking lokal na tindahan ng DIY. Ang sukat ng board ay 850mm ang lapad ng 500mm taas at 18mm ang lalim.

Ang mga LED na ginamit sa proyektong ito ay 5050 WS2812b na naka-mount sa paikot na PCB na humigit-kumulang na 9mm ang lapad na may mga solder pad sa likuran.

Gumagamit ako ng isang Arduino Pro Mini na katugmang micro controller. Ito ang bersyon ng 5V 16 MHZ. Pinili ko ang isang ito dahil mayroon itong isang napaka-manipis na disenyo, maliit na paa sa pag-print at lahat ng mga nessary port kasama ang ilang ekstrang para sa mga pag-upgrade sa hinaharap. 5 volt din ito upang makagamit ako ng isang solong supply ng kuryente para sa mga LED, Micro controller at RTC

Ang pag-iingat ng oras ay alagaan ng isang RTC (Real Time Clock) na module na nagtatampok ng DS3231 chip. Ang chip na ito ay napaka-tumpak kaya ang oras ay hindi dapat naaanod ng sobra.

Ginamit din:

Kawad. Panghinang at mainit na pandikit.

Mga tool:

Mga power drill at kahoy na drill bits (10mm at 5mm)

Panghinang

Mainit na glue GUN

wire frags

Dremel at plunge router accessories

Hakbang 2: Pagmamarka, Pagbabarena at Pagruruta

Pagmamarka, Pagbabarena at Ruta
Pagmamarka, Pagbabarena at Ruta
Pagmamarka, Pagbabarena at Ruta
Pagmamarka, Pagbabarena at Ruta
Pagmamarka, Pagbabarena at Ruta
Pagmamarka, Pagbabarena at Ruta

Pagbabarena

  • Gamit ang isang makitid na gilid hanapin ang gitna ng board sa pamamagitan ng pagguhit ng isang linya mula sa tapat ng mga sulok.
  • Markahan ang 3 bilog gamit ang isang piraso ng string at isang bolpen. Ang panlabas na pinaka bilog ay dapat na tungkol sa 20mm mula sa gilid ng board kasama ang iba pang 2 mga linya na gumagalaw sa pamamagitan ng 15mm mula sa huling linya.
  • Gumamit ako ng naka-print na mukha ng orasan upang matulungan akong markahan ang mga posisyon ng bawat minuto at segundo sa panlabas na 2 linya at oras sa panloob na linya.
  • Mag-drill ng 10mm na butas na humigit-kumulang na 5mm para sa bawat oras, minuto at segundo.
  • Gamitin ang 5mm drill upang gumawa ng mga butas kahit na ang board para sa oras, minuto at segundo.

Ruta

Bagaman hindi kinakailangan ang hakbang na ito papayagan nito ang relo na ilalagay sa isang pader.

  • Paggamit ng isang router at gabay ng bilog na ruta ng mga wire wire sa board
  • Markahan at i-ruta ang isang pahinga para manirahan ang RTC at Micro Controller.
  • Ruta ng isang channel mula sa mga panlabas na linya sa recess para sa mga wire

Hakbang 3: Napakaraming Soldiering, Pagputol at Paghubad

Napakaraming Soldiering, Pagputol at Paghubad
Napakaraming Soldiering, Pagputol at Paghubad
Napakaraming Soldiering, Pagputol at Paghubad
Napakaraming Soldiering, Pagputol at Paghubad
Napakaraming Soldiering, Pagputol at Paghubad
Napakaraming Soldiering, Pagputol at Paghubad

Ang susunod na bahagi na ito ay mas madali sabihin kaysa gawin. Ang aking payo ay mapapansin upang madaliin ito. subukan at makahanap ng isang sistema at makakuha sa isang ritmo.

Ang bawat isa sa mga LED ay nangangailangan ng 5 volts in, 5 volts out, Data in, Data out, Ground in at Ground out. kabilang ang lakas para sa micro controller at RTC na higit sa 400 mga wire, lahat ay hinubaran at solder sa magkabilang dulo.

Ang isang maingat na asul na sangkap ay lubhang kapaki-pakinabang para sa hakbang na ito.

  • Nagsimula ako sa pamamagitan ng paglalagay ng 2 LEDs sa kanilang mga butas sa tabi ng bawat isa upang mag-ehersisyo ang haba ng kawad na kinakailangan upang kumonekta sa bawat isa.
  • Gamit ang ika-1 piraso ng kawad bilang isang gabay pagkatapos ay pinutol ko ang 60 ng bawat kulay na wire.
  • Huhubad ang 2mm ng manggas mula sa mga dulo ng bawat kawad at i-lata ang mga ito gamit ang panghinang.
  • Maghinang ng isang maliit na patak ng panghinang sa bawat isa sa mga LED pad.
  • Paghinang ng mga wire sa mga LED upang makabuo ng dalawang tanikala ng 60 para sa mga minuto at segundo at isang kadena ng 12 para sa mga oras. Gumamit ako ng pulang kawad para sa 5V, dilaw para sa data at asul para sa lupa.
  • Mag-ingat na ikonekta ang bawat Data Out (DOUT) sa Data In (DIN) ng susunod na LED
  • Ang huling humantong sa bawat kadena dosis ay hindi kailangan ng isang data out wire.

Kapag natapos ang lahat ng mga kadena isang magandang ideya upang subukan ang mga ito bago i-install ang mga ito. Ginamit ko ang aking Arduino UNO at ang Adafruit NeoPixel Strand Test upang kumpirmahing gumagana ang bawat LED.

Ang mga panghinang na haba na wires papunta sa bawat isa sa mga kadena para sa 5V, Ground at Data sa.

Sa puntong ito dapat mayroong limang 5v wires, tatlong Data wires na konektado sa Arduino Pro Mini at 5 Ground wires.

Huhubad ang 5mm mula sa mga dulo ng 5v wires at solder ang lahat ng ito at ulitin para sa Ground wires.

Matapos makumpleto ang tatlong chain solder isang 5V wire sa sa RAW pin ng Arduino Pro Mini at papunta din sa VCC pin para sa RTC. Isang Ground wire sa GND sa Arduino Pro Mini at RTC at pagkatapos ay 2 pang mga wire:

Ang SCL mula sa RTC hanggang A5 sa Pro Mini

SDA mula sa RTC hanggang A4 sa Pro Mini

Ang mga linya ng data mula sa mga LED ay dapat na kumonekta sa:

  • Segundo - Digital Pin 3.
  • Minuto - DigitalPin 4
  • Mga Oras - DigitalPin 5

Hakbang 4: Pag-install

Pag-install
Pag-install
Pag-install
Pag-install
Pag-install
Pag-install

Kapag na-solder, ang pag-install ng mga LED sa kanilang mga butas ay dapat na tuwid na pasulong. Ang mga LED ay kailangang mai-install upang ang data ay tumatakbo sa paligid ng anti-Clockwise kapag tinitingnan ito mula sa likuran habang ang code ay naka-harap sa harapan.

Gumamit ako ng isang maliit na halaga ng mainit na pandikit upang mapigilan ang mga ito dahil nais kong mapalitan ang isang solong LED kung nabigo ito sa hinaharap.

Gumamit din ako ng mainit na pandikit upang panatilihing maayos at malinis ang lahat ng mga wire at upang ayusin ang konektor ng bariles sa board.

Mayroong isang bilang ng mga gabay sa arduino pro mini na magagamit. Ginagamit ko ang panlabas na USB sa pamamaraan ng serial converter upang mai-load ang code na ito sa Arduino:

Itatakda din ng code na ito ang oras sa RTC sa oras na naipon ito. kaya't mahalaga na i-hut nalang ang upload button upang sumunod ito at mag-upload nang mabilis hangga't maaari.

Karamihan sa code na ito ay hiniram mula sa NeoPixel Ring Clock ni Andy Doro. Ang ilan mula sa Adafruit NeoPixel Strand Test at ilang pinagsama ko.

Kakailanganin mong mag-install ng ilang mga aklatan. Magagamit ang mga ito mula sa Tagapamahala ng Mga Aklatan sa Arduino software.

Ang Adafruit NeoPixel para sa ws2812b LEDs

Wire para sa pakikipag-usap sa RTC sa paglipas ng I2C (ito ay naitayo bilang pamantayan)

at RTClib para sa pag-alam kung ano ang hihilingin sa RTC

/ ***** ***** * * ***** *****

Kasaysayan ng Pagbabago

Petsa Ni Ano

20140320 AFD First draft 20160105 AFD Faded arcs 20160916 AFD Trinket compatible 20170727 Ang AFD ay nagdagdag ng StartPIXEL para sa 3D enclosure, variable na panimulang punto, nagdagdag ng awtomatikong suporta ng DST 20180424 AFD gamit ang DST library https://github.com/andydoro/DST_RTC *

/ isama ang code ng library:

# isama ang # isama

# isama

// tukuyin ang mga pin

# tukuyin ang SECPIN 3 # tukuyin ang MINPIN 4 # tukuyin ang HOUPIN 5

#define BRIGHTNESS 20 // set max brightness

# tukuyin ang r 10

# tukuyin g 10 # tukuyin b 10 RTC_DS3231 rtc; // Itaguyod ang object ng orasan

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // strip object

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // strip object Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip object byte pixelColorRed, pixelColorGreen, pixelColorBlue; // humahawak ng mga halagang kulay

walang bisa ang pag-setup () {

Wire.begin (); // Start I2C rtc.begin (); // simulan ang orasan

Serial.begin (9600);

// set pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

kung (rtc.lostPower ()) {

Serial.println ("Nawalan ng lakas ang RTC, hinahayaan mong itakda ang oras!"); // ang sumusunod na linya ay nagtatakda ng RTC sa petsa at oras ng sketch na ito ay naipon rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Itinatakda ng linyang ito ang RTC na may isang malinaw na petsa at oras, halimbawa upang itakda // Enero 21, 2014 ng 3 ng umaga na tatawagan mo: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Initialize all pixel to 'off'

// pagkakasunud-sunod ng pagsisimula

pagkaantala (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Blue colorWipeM (stripM. Color (r, 0, 0), 5); // Blue colorWipeH (stripH. Color (0, 0, b), 50); // Bughaw

pagkaantala (1000);

DateTime theTime = rtc.now (); // isinasaalang-alang ang DST byte secondval = theTime.second (); // get seconds byte minuteval = theTime.minute (); // get minutes int hourval = theTime.hour (); hourval = hourval% 12; // Ang orasan na ito ay 12 oras, kung 13-23, i-convert sa 0-11`

para sa (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); antala (5); }

para sa (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); antala (5); }

para sa (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); antala (5); }

}

void loop () {

// kumuha ng oras

DateTime theTime = rtc.now (); // isinasaalang-alang ang DST

byte secondval = theTime.second (); // kumuha ng segundo

byte minuteval = theTime.minute (); // get minutes int hourval = theTime.hour (); // get hour hourval = hourval% 12; // Ang orasan na ito ay 12 oras, kung 13-23, i-convert sa 0-11`

stripS.setPixelColor (pangalawa, 0, 0, 20); stripS.show (); antala (10); kung (pangalawang == 59) {para sa (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); antala (16);}}

stripM.setPixelColor (minuto, 0, g, 0);

stripM.show (); antala (10); kung (secondval == 59 && minuteval == 59) {para sa (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); antala (16);}}

stripH.setPixelColor (oras na oras, r, 0, 0);

stripH.show (); antala (10); kung (secondval == 59 && minuteval == 59 && hourval == 11) {para sa (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); antala (83);}} // para sa serial debugging Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuto, DEC); Serial.print (':'); Serial.println (pangalawa, DEC); }

// Punan ang mga tuldok ng sunod-sunod sa isang kulay

void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); antala (maghintay); }}

walang bisa na colorWipeM (uint32_t c, uint8_t maghintay) {

para sa (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); antala (maghintay); }}

walang bisa na colorWipeH (uint32_t c, uint8_t maghintay) {

para sa (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); antala (maghintay); }}

Hakbang 5: Mga Pangwakas na Pag-ugnay

Image
Image
Pangwakas na Pag-ugnay
Pangwakas na Pag-ugnay

Ang natitira lamang ngayon ay upang ayusin ang RTC at Micro Controller pababa sa recess.

Nilagyan ko ang RTC na gilid ng baterya upang madali kong mabago ang baterya kung kinakailangan.

Ikonekta ang 5v wires sa + gilid ng konektor at ang Ground sa - gilid

Power up UP!

Nakakonekta ako sa isang USB bank bank ngunit ang isang USB charger ng telepono ay gagana rin.

Tandaan:

Ang ningning ng mga LED ay nakatakda sa code. Ito ay naitakda nang mababa upang panatilihing mababa ang kasalukuyang gumuhit. Sa buong ningning sa lahat ng mga LED na naiilawan maaari itong gumuhit ng halos 8 amps. Gamit ang kasalukuyang pag-set up mas mababa sa 1.

Mga Paligsahan sa Orasan
Mga Paligsahan sa Orasan
Mga Paligsahan sa Orasan
Mga Paligsahan sa Orasan

Runner Up sa Clocks Contest

Inirerekumendang: