Съдържание:

132 пиксела Часовник: 5 стъпки (със снимки)
132 пиксела Часовник: 5 стъпки (със снимки)

Видео: 132 пиксела Часовник: 5 стъпки (със снимки)

Видео: 132 пиксела Часовник: 5 стъпки (със снимки)
Видео: LW31 AGPTEK Smart Watch IP68: Things To Know Before Buy // For Android and iPhone 2024, Ноември
Anonim
Image
Image
132 Пикселов часовник
132 Пикселов часовник

Откакто се помня, бях обсебен от светодиодите и времето. В този проект създадох голям стенен часовник, който показва текущото време, използвайки 132 неопикселови светодиода, монтирани и светещи през смърчова дъска. Неговият хибриден аналогов цифров с отделен пиксел за всеки час, минута и секунда.

Това беше най -големият проект, с който се захванах досега, започнах да мисля за него преди 6 месеца и бавно идеята се събра. Наистина съм доволен от резултата и с нетърпение очаквам да го споделя с вас.

Стъпка 1: Събиране на консумативи и инструменти

Събиране на консумативи и инструменти
Събиране на консумативи и инструменти
Събиране на консумативи и инструменти
Събиране на консумативи и инструменти
Събиране на консумативи и инструменти
Събиране на консумативи и инструменти
Събиране на консумативи и инструменти
Събиране на консумативи и инструменти

Компоненти

Този проект е изграден върху евтино табло за хобита от моя местен магазин „Направи си сам“. Дъската е с ширина 850 мм, височина 500 мм и дълбочина 18 мм.

Светодиодите, използвани в този проект, са 5050 WS2812b, монтирани на кръгли печатни платки с диаметър приблизително 9 мм с подложки за запояване на гърба.

Използвам съвместим с Arduino Pro Mini микроконтролер. Това е 5V 16 MHZ версия. Избрах този, тъй като има супер тънък дизайн, малък печат и всички необходими портове плюс резервни за бъдещи надстройки. Той също е 5 волта, така че мога да използвам едно захранване за светодиодите, микроконтролера и RTC

За отчитането на времето се грижи модул RTC (часовник в реално време), който разполага с чип DS3231. Този чип е много точен, така че времето не трябва да се отдалечава твърде много.

Използва се също:

Тел. Запояване и горещо лепило.

Инструменти:

Електрическа бормашина и свредла за дърво (10 мм и 5 мм)

Поялник

Пистолет за горещо лепило

телени изрезки

Dremel и аксесоари за рутер

Стъпка 2: Маркиране, пробиване и маршрутизиране

Маркиране, пробиване и фрезоване
Маркиране, пробиване и фрезоване
Маркиране, пробиване и маршрутизиране
Маркиране, пробиване и маршрутизиране
Маркиране, пробиване и маршрутизиране
Маркиране, пробиване и маршрутизиране

Пробиване

  • Използвайки тесен ръб, намерете центъра на дъската, като начертаете линия от противоположните ъгли.
  • Маркирайте 3 кръга с помощта на въже и химикалка. Най -външният кръг трябва да е на около 20 мм от ръба на дъската, като другите 2 линии се движат на 15 мм от последния ред.
  • Използвах отпечатан циферблат, който да ми помогне да отбележа позициите на всяка от минутите и секундите по външните 2 линии и часове по вътрешната линия.
  • Пробийте 10 мм отвори с дълбочина приблизително 5 мм за всеки час, минута и секунда.
  • Използвайте 5 мм бормашина, за да направите дупки през дъската за час, минута и секунда.

Маршрутизиране

Въпреки че тази стъпка не е необходима, тя ще позволи на часовника да бъде монтиран на една стена.

  • Използване на рутер и кръг водач маршрут кабелни канали в дъската
  • Отбележете и направете вдлъбнатина, в която да живеят RTC и микроконтролерът.
  • Прокарайте канал от външните линии до вдлъбнатината за проводници

Стъпка 3: Толкова много запояване, рязане и събличане

Толкова много запояване, рязане и събличане
Толкова много запояване, рязане и събличане
Толкова много запояване, рязане и събличане
Толкова много запояване, рязане и събличане
Толкова много запояване, рязане и събличане
Толкова много запояване, рязане и събличане

Следващата част е много по -лесна за казване, отколкото за правене. Моят съвет би бил забележка да побързате. опитайте се да намерите система и влезте в ритъм.

Всеки от светодиодите се нуждае от 5 волта, 5 волта изход, данни вход, данни изход, заземяване и заземяване. включително захранване за микроконтролера и неговите над 400 проводника RTC, всички оголени и запоени в двата края.

Лепливо синьо вещество е много полезно за тази стъпка.

  • Започнах с поставянето на 2 светодиода в отворите един до друг, за да се определи дължината на проводника, необходима за свързване един с друг.
  • Използвайки първото парче тел като водач, след това изрязах 60 от всяка цветна тел.
  • Отстранете 2 мм ръкав от краищата на всяка жица и ги оформете с спойка.
  • Запояйте малко парче спойка върху всяка от LED подложките.
  • Запоявайте проводниците към светодиодите, за да образувате две вериги от 60 за минути и секунди и една верига от 12 за часовете. Използвах червен проводник за 5V, жълт за данни и син за земя.
  • Внимавайте да свържете всеки изход за данни (DOUT) към входа за данни (DIN) на следващия светодиод
  • Последният светодиод във всяка верижна доза не се нуждае от кабел за извеждане на данни.

След като всички вериги бъдат завършени, добра идея е да ги тествате, преди да ги инсталирате. Използвах моя Arduino UNO и Adafruit NeoPixel Strand Test, за да потвърдя, че всеки светодиод работи.

Запоявайте по -дълги проводници към всяка от веригите за 5V, заземяване и данни.

В този момент трябва да има пет 5v проводника, три проводника за данни, свързани към Arduino Pro Mini и 5 заземяващи проводника.

Извадете 5 мм от краищата на 5v проводниците и ги запоявайте заедно и повторете за заземяващите проводници.

След приключване на трите вериги запоявайте 5V проводник към RAW щифта на Arduino Pro Mini, а също и към VCC щифта за RTC. Заземен проводник към GND на Arduino Pro Mini и RTC и след това още 2 проводника:

SCL от RTC до A5 на Pro Mini

SDA от RTC до A4 на Pro Mini

Линиите за данни от светодиодите трябва да се свързват към:

  • Секунди - цифров щифт 3.
  • Минути - DigitalPin 4
  • Часове - DigitalPin 5

Стъпка 4: Инсталиране

Инсталиране
Инсталиране
Инсталиране
Инсталиране
Инсталиране
Инсталиране

Веднъж запоени, инсталирането на светодиодите в отворите им трябва да е право напред. Светодиодите трябва да бъдат инсталирани, така че данните да се движат около часовниковата стрелка, когато ги гледате отзад, тъй като кодът е настроен отпред.

Използвах малко количество горещо лепило, за да ги задържа, тъй като искам да мога да заменя един светодиод, ако в бъдеще се повреди.

Използвах и горещо лепило, за да поддържам всички проводници чисти и подредени и да фиксирам съединителя на цевта към дъската.

Налични са редица ръководства за програмиране на arduino pro mini. Използвам външния метод на USB към сериен конвертор, за да заредя този код на Arduino:

Този код също ще зададе времето на RTC до времето, когато е компилиран. така че е важно просто да спрете бутона за качване, така че да се съобразява и качва възможно най -бързо.

Голяма част от този код е заимстван от NeoPixel Ring Clock от Анди Доро. Някои от Adafruit NeoPixel Strand Test и някои аз ги събрах.

Ще трябва да имате инсталирани няколко библиотеки. Те са достъпни от мениджъра на библиотеките в софтуера Arduino.

Adapruit NeoPixel за светодиодите ws2812b

Кабел за разговор с RTC през I2C (това е вградено като стандарт)

и RTClib за това, че знае какво да пита RTC

/************************************************* ***************************NeoPixel Ring Clock от Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************** **************************

История на ревизиите

Дата по какво

20140320 AFD Първи проект 20160105 AFD Избледнели дъги 20160916 AFD Trinket съвместим 20170727 AFD добавен STARTPIXEL за 3D корпус, променлива начална точка, добавена автоматична поддръжка за DST 20180424 AFD с помощта на DST библиотека https://github.com/andydoro/DST_RTC *

/ включете кода на библиотеката:

#включи #включи

#включва

// дефинираме щифтове

#дефинирайте SECPIN 3 #дефинирайте MINPIN 4 #дефинирайте HOUPIN 5

#define BRIGHTNESS 20 // задайте максимална яркост

#дефинирайте r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Създаване на часовник обект

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // лентов обект

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // лентов обект Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // байт обект на лента pixelColorRed, pixelColorGreen, pixelColorBlue; // съдържа стойности на цветовете

void setup () {

Wire.begin (); // Започнете I2C rtc.begin (); // започва часовник

Serial.begin (9600);

// задаваме pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC загуби захранване, нека зададем часа!"); // следният ред задава RTC на датата и часа на съставяне на тази скица rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Този ред задава RTC с изрична дата и час, например за задаване // 21 януари 2014 г. в 3 часа сутринта, които бихте извикали: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Инициализиране на всички пиксели на „изключено“

// стартираща последователност

забавяне (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Син цвятWipeM (stripM. Color (r, 0, 0), 5); // Син цвятWipeH (stripH. Color (0, 0, b), 50); // Син

забавяне (1000);

DateTime theTime = rtc.now (); // взема предвид DST байт secondval = theTime.second (); // получаваме секунди байт minuteval = theTime.minute (); // получаваме минути int hourval = theTime.hour (); hourval = hourval % 12; // Този часовник е 12 часа, ако е 13-23, конвертирайте в 0-11`

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); забавяне (5); }

for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); забавяне (5); }

for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); забавяне (5); }

}

void loop () {

// получавам време

DateTime theTime = rtc.now (); // отчита лятното часово време

байт secondval = theTime.second (); // получаваме секунди

байт minuteval = theTime.minute (); // получаваме минути int hourval = theTime.hour (); // получаване на часове hourval = hourval % 12; // Този часовник е 12 часа, ако е 13-23, конвертирайте в 0-11`

stripS.setPixelColor (secondval, 0, 0, 20); stripS.show (); забавяне (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); забавяне (16);}}

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

stripM.show (); забавяне (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); забавяне (16);}}

stripH.setPixelColor (hourval, r, 0, 0);

stripH.show (); забавяне (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); забавяне (83);}} // за серийно отстраняване на грешки Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Попълнете точките една след друга с цвят

void colorWipeS (uint32_t c, uint8_t чакане) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); забавяне (изчакване); }}

void colorWipeM (uint32_t c, uint8_t чакане) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); забавяне (изчакване); }}

void colorWipeH (uint32_t c, uint8_t чакане) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); забавяне (изчакване); }}

Стъпка 5: Последни щрихи

Image
Image
Последни щрихи
Последни щрихи

Всичко, което трябва да остане сега, е да фиксирате RTC и микро контролера надолу в нишата.

Поставих RTC батерията нагоре, за да мога лесно да сменя батерията, ако е необходимо.

Свържете 5v проводниците към + страната на конектора и заземяването към - страната

Включете го!

Имам моята свързана към USB батерия, но зарядното устройство за USB ще работи също толкова добре.

Забележка:

Яркостта на светодиодите е зададена в кода. Той е зададен ниско, за да поддържа текущото теглене ниско. При пълна яркост с всички запалени светодиоди той може да извлече почти 8 ампера. При текущата настройка е по -малко от 1.

Конкурс за часовници
Конкурс за часовници
Конкурс за часовници
Конкурс за часовници

Вицешампион в състезанието за часовници

Препоръчано: