Съдържание:
- Стъпка 1: Събиране на консумативи и инструменти
- Стъпка 2: Маркиране, пробиване и маршрутизиране
- Стъпка 3: Толкова много запояване, рязане и събличане
- Стъпка 4: Инсталиране
- Стъпка 5: Последни щрихи
Видео: 132 пиксела Часовник: 5 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Откакто се помня, бях обсебен от светодиодите и времето. В този проект създадох голям стенен часовник, който показва текущото време, използвайки 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: Последни щрихи
Всичко, което трябва да остане сега, е да фиксирате RTC и микро контролера надолу в нишата.
Поставих RTC батерията нагоре, за да мога лесно да сменя батерията, ако е необходимо.
Свържете 5v проводниците към + страната на конектора и заземяването към - страната
Включете го!
Имам моята свързана към USB батерия, но зарядното устройство за USB ще работи също толкова добре.
Забележка:
Яркостта на светодиодите е зададена в кода. Той е зададен ниско, за да поддържа текущото теглене ниско. При пълна яркост с всички запалени светодиоди той може да извлече почти 8 ампера. При текущата настройка е по -малко от 1.
Вицешампион в състезанието за часовници
Препоръчано:
FLEXBALL - гъвкава PCB топка със сто пиксела с WiFi: 6 стъпки (със снимки)
FLEXBALL - сто пикселна гъвкава топка за печатни платки с WiFi: Здравейте производители, това е производител moekoe! Flexball е базиран на гъвкава платка, която е оборудвана със 100 WS2812 2020 адресируеми светодиода. Той се управлява от ESP8285-01f - най -малкият ESP базиран модул от Espressif. Освен това има ADXL345 акселерометър
Часовник за пенсиониране / Брой нагоре / Dn часовник: 4 стъпки (със снимки)
Пенсионен часовник / Брой нагоре / Dn часовник: Имах няколко от тези 8x8 LED матрични дисплеи в чекмеджето и мислех какво да правя с тях. Вдъхновен от други инструктажи, имам идеята да създам дисплей за обратно броене/нагоре за обратно броене до бъдеща дата/час и ако целевото време p
ESP8266 Мрежов часовник без RTC - Nodemcu NTP Часовник Няма RTC - ИНТЕРНЕТЕН ЧАСОВНИК ПРОЕКТ: 4 стъпки
ESP8266 Мрежов часовник без RTC | Nodemcu NTP Часовник Няма RTC | ИНТЕРНЕТЕН ЧАСОВНИК ПРОЕКТ: В проекта ще се прави часовник проект без RTC, ще отнеме време от интернет с помощта на wifi и ще го покаже на дисплея st7735
C51 4 -битов електронен часовник - дървен часовник: 15 стъпки (със снимки)
C51 4 -битов електронен часовник - Дървен часовник: Имах малко свободно време този уикенд, затова продължих и сглобих този 4 -битов DIY електронен цифров часовник за 2,40 австралийски долара, който купих от AliExpress преди малко
64 пиксела: 8 стъпки (със снимки)
64 пиксела: Това е малко устройство за показване на анимации и кратки съобщения. Състои се само от три компонента и е наистина лесен за изграждане. И забавно за гледане. Ако не искате да събирате всички неща сами, можете да си купите комплект с всички необходими части и