Mundarija:
- 1 -qadam: Materiallar va asboblarni yig'ish
- 2 -qadam: markalash, burg'ulash va yo'nalish
- 3 -qadam: Juda ko'p askarlik, kesish va yalang'ochlash
- 4 -qadam: O'rnatish
- 5 -qadam: Yakuniy teginishlar
Video: 132 pikselli soat: 5 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Men eslay oladigan bo'lsam, LEDlar va vaqt bilan bog'liq. Ushbu loyihada men katta devor soati yaratdim, u hozirgi zamonni 132 ta neopixelli diodli LEDlar yordamida o'rnatiladi. Bu har bir soat, daqiqa va soniya uchun individual pikselli gibrid analog raqamli raqam.
Bu men hozirgacha qabul qilgan eng katta loyiha edi, men bu haqda 6 oy oldin o'ylay boshladim va bu fikr asta -sekin birlashdi. Men natijadan juda xursandman va siz bilan baham ko'rishni orziqib kutaman.
1 -qadam: Materiallar va asboblarni yig'ish
Komponentlar
Ushbu loyiha mening mahalliy DIY do'konimdagi sevimli mashg'ulotlar taxtasida qurilgan. Kengashning kengligi 850 mm, balandligi 500 mm va chuqurligi 18 mm.
Ushbu loyihada ishlatiladigan LEDlar 5050 WS2812b diametrli diametri taxminan 9 mm bo'lgan dumaloq tengliklarga o'rnatilgan bo'lib, ular orqa tomondan lehim yostiqchalari bilan jihozlangan.
Men Arduino Pro Mini -ga mos keladigan mikro -kontrollerdan foydalanayapman. Uning 5V 16 MGtsli versiyasi. Men buni tanladim, chunki u juda nozik dizaynga ega, kichkina oyoq izi va barcha kerakli portlar va kelajakda yangilanishlar uchun zaxira. Bundan tashqari, 5 volt, shuning uchun men LEDlar, mikrokontroller va RTC uchun bitta quvvat manbasidan foydalanishim mumkin
Vaqtni saqlash DS3231 chipiga ega bo'lgan RTC (Real Time Clock) moduli bilan ta'minlanadi. Bu chip juda aniq, shuning uchun vaqt juda ko'p ketmasligi kerak.
Shuningdek ishlatiladi:
Tel. Lehim va issiq elim.
Asboblar:
Quvvat matkaplari va yog'ochdan yasalgan matkaplar (10 mm va 5 mm)
Lehimlash temir
Issiq yopishtiruvchi qurol
simlar
Dremel va shnur router uchun aksessuarlar
2 -qadam: markalash, burg'ulash va yo'nalish
Burg'ulash
- To'g'ridan -to'g'ri burchakdan chiziq chizish orqali taxtaning o'rtasini toping.
- Ip va ruchka yordamida 3 ta doirani belgilang. Tashqi eng aylana taxtaning chetidan taxminan 20 mm masofada, qolgan 2 chiziq esa oxirgi chiziqdan 15 mm masofada harakatlanishi kerak.
- Men har ikki minut va soniyalarning tashqi 2 satrdagi va ichki chiziqdagi soatlarning pozitsiyalarini belgilashga yordam berish uchun bosilgan soat yuzidan foydalandim.
- Har bir soat, daqiqa va soniya uchun taxminan 5 mm chuqurlikdagi 10 mm teshiklarni burg'ulang.
- Teshiklarni soat, daqiqa va sekundda ochish uchun 5 mm matkapdan foydalaning.
Yo'nalish
Bu qadam kerak bo'lmasa -da, soatni devorga bir tekisda o'rnatishga imkon beradi.
- Kengashda marshrutizator va aylana yo'riqnomasi yordamida simli kanallar
- RTC va Micro Controller yashashi uchun tanaffusni belgilang va yo'naltiring.
- Kanalni tashqi chiziqlardan simlar chuqurchasiga yo'naltiring
3 -qadam: Juda ko'p askarlik, kesish va yalang'ochlash
Bu keyingi qismni aytish osonroq. Mening maslahatim shoshilish uchun eslatma bo'ladi. tizimni topishga va ritmga kirishga harakat qiling.
LEDlarning har biriga 5 voltli, 5 voltli, Ma'lumotlarni kiritish, Ma'lumotlarni chiqarish, Topraklama va Topraklama kerak. shu jumladan, mikrokontrolder va RTC uchun 400 dan ortiq simlar, har ikki uchida ham lehimlangan.
Bu qadam uchun yopishqoq ko'k modda juda foydali.
- Men bir -biriga ulanish uchun zarur bo'lgan sim uzunligini aniqlash uchun teshiklarini bir -birining yoniga 2 ta LED qo'yishni boshladim.
- Birinchi simni ko'rsatma sifatida ishlatib, men har bir rangli simning 60tasini kesib tashladim.
- Har bir simning uchidan 2 mm qisqichni olib tashlang va ularni lehim bilan o'rab oling.
- Har bir diodli yostiqchaga lehimning kichik bo'lagini lehimlang.
- Simlarni LEDlarga lehimlang, ular soniya va soniya uchun 60 ta ikkita zanjir va soat uchun 12 ta zanjir hosil qiladi. Men 5V uchun qizil simdan, ma'lumot uchun sariqdan va er uchun ko'kdan foydalanardim.
- Har bir ma'lumot chiqishi (DOUT) ni keyingi LEDning ma'lumot kiritishiga (DIN) ulashga e'tibor bering
- Har bir zanjirning oxirgi dozasi ma'lumot uzatuvchi simga muhtoj emas.
Barcha zanjirlar tugagandan so'ng, ularni o'rnatishdan oldin ularni sinab ko'rish yaxshi bo'ladi. Men har bir LEDning ishlashini tasdiqlash uchun Arduino UNO va Adafruit NeoPixel Strand testlaridan foydalandim.
5V, Ground va Data in zanjirlarining har biriga uzunroq simlarni lehimlang.
Bu erda beshta 5v sim, Arduino Pro Mini -ga ulangan uchta Ma'lumot simlari va 5 Ground simlari bo'lishi kerak.
5V simlarning uchidan 5 mm ajratib oling va ularni bir -biriga lehimlang va er simlari uchun takrorlang.
Uchta zanjirni tugatgandan so'ng, Arduino Pro Mini -ning RAW piniga 5V simni, shuningdek, RTC uchun VCC pinini lehimlang. Arduino Pro Mini va RTC -da GND -ga topraklama simlari, keyin yana 2 ta sim:
SCL RTC -dan A5 -ga Pro Mini -da
SDA RTC -dan A4 -ga Pro Mini -da
LEDlarning ma'lumot uzatish liniyalari quyidagilarga ulanishi kerak.
- Soniyalar - raqamli pin 3.
- Daqiqalar - DigitalPin 4
- Ish vaqti - DigitalPin 5
4 -qadam: O'rnatish
Lehimlangandan so'ng, LEDlarni teshiklariga o'rnatish to'g'ridan -to'g'ri bo'lishi kerak. LEDlarni o'rnatish kerak, shuning uchun ma'lumotlar orqa tomondan qaralganda soat sohasi farqli o'laroq ishlaydi, chunki kod old tomonga o'rnatiladi.
Men ularni ushlab turish uchun ozgina issiq elim ishlatardim, chunki agar kelajakda u ishlamay qolsa, bitta LEDni almashtirishni xohlayman.
Bundan tashqari, men barcha simlarni toza va tartibli saqlash uchun va elim konstruktsiyasini taxtaga mahkamlash uchun issiq elim ishlatardim.
Arduino pro mini dasturlash uchun ko'plab qo'llanmalar mavjud. Men bu kodni Arduino -ga yuklash uchun tashqi USB -ni ketma -ket konvertatsiya qilish usulidan foydalanaman:
Ushbu kod, shuningdek, RTC vaqtini tuzilgan vaqtga o'rnatadi. shuning uchun yuklash tugmachasini yopish juda muhim, shuning uchun u iloji boricha tezroq mos keladi va yuklanadi.
Ushbu kodning katta qismi Endi Doro tomonidan NeoPixel qo'ng'iroq soatlaridan olingan. Adafruit NeoPixel Strand testidan ba'zilari va men birlashtirdim.
Siz bir nechta kutubxonalarni o'rnatishingiz kerak bo'ladi. Ular Arduino dasturiy ta'minotidagi Kutubxonalar menejerida mavjud.
Ws2812b LEDlari uchun Adafruit NeoPixel
RTC bilan I2C orqali gaplashish uchun sim (bu standart sifatida o'rnatilgan)
va RTClib RTCdan nima so'rashni bilgani uchun
/*********************************************** ***************************NeoPixel qo'ng'iroq soati Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************ **************************
Qayta ko'rib chiqish tarixi
Sana nima bilan
20140320 AFD Birinchi qoralama 20160105 AFD xira yoylar 20160916 AFD Trinket mos keluvchi 20170727 AFD 3D muhofaza uchun STARTPIXEL, o'zgarmaydigan boshlanish nuqtasi, DST kutubxonasi yordamida 20180424 AFD avtomatik DST qo'llab -quvvatlashini qo'shdi https://github.com/andydoro/DST_RTC *
/ kutubxona kodini o'z ichiga oladi:
#qo'shing #qo'shing
#qo'shing
// pinlarni belgilang
#SECPIN 3 ni belgilang #MINPIN 4ni aniqlang #HOUPIN 5 ni aniqlang
#devetine BRIGHTNESS 20 // maksimal yorqinlikni o'rnating
#aniqlang r 10
#define g 10 #define b 10 RTC_DS3231 rtc; // Soat ob'ektini o'rnating
Adafruit_NeoPixel tasmasiS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // chiziqli ob'ekt
Adafruit_NeoPixel tasmasiM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // chiziqli ob'ekt Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // chiziqli ob'ekt bayt pixelColorRed, pixelColorGreen, pixelColorBlue; // rang qiymatlarini saqlaydi
bo'sh o'rnatish () {
Wire.begin (); // I2C boshlang rtc.begin (); // soat boshlanishi
Serial.begin (9600);
// pinMode pinMode (SECPIN, OUTPUT); pin rejimi (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);
agar (rtc.lostPower ()) {
Serial.println ("RTC kuchini yo'qotdi, vaqtni belgilashga ruxsat bering!"); // quyidagi satrda RTC bu eskiz tuzilgan sana va vaqtga o'rnatiladi rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Bu chiziq RTC -ni aniq sana va vaqt bilan belgilaydi, masalan: 2014 yil 21 -yanvar, soat 3 da siz qo'ng'iroq qilasiz: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }
stripS.begin ();
stripM.begin (); stripH.begin (); // chiziq.show (); // Barcha piksellarni o'chirib qo'ying
// ishga tushirish ketma -ketligi
kechikish (500);
colorWipeS (stripS. Color (0, g, 0), 5); // Moviy rangWipeM (stripM. Color (r, 0, 0), 5); // Moviy rangWipeH (stripH. Color (0, 0, b), 50); // Moviy
kechikish (1000);
DateTime theTime = rtc.now (); // DST baytini hisobga oladi secondval = theTime.second (); // soniya baytini oling minuteval = theTime.minute (); // daqiqalarni oling int hourval = theTime.hour (); soat ko'rsatkichi = soat ko'rsatkichi % 12; // Bu soat 12 soat, agar 13-23 bo'lsa, 0-11 ga aylantiring
for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); kechikish (5); }
uchun (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); kechikish (5); }
for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); kechikish (5); }
}
void loop () {
// vaqt toping
DateTime theTime = rtc.now (); // DSTni hisobga oladi
bayt soniyali = theTime.second (); // soniya oling
bayt minuteval = theTime.minute (); // daqiqalarni oling int hourval = theTime.hour (); // soat soatini olish = soat bo'yicha % 12; // Bu soat 12 soat, agar 13-23 bo'lsa, 0-11 ga aylantiring
stripS.setPixelColor (ikkinchi qiymat, 0, 0, 20); stripS.show (); kechikish (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); kechikish (16);}}
stripM.setPixelColor (minuteval, 0, g, 0);
stripM.show (); kechikish (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); kechikish (16);}}
stripH.setPixelColor (soat soatlari, r, 0, 0);
stripH.show (); kechikish (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 (); kechiktirish (83);}} // ketma -ket disk raskadrovka qilish uchun Serial.print (hourval, DEC); Serial.print (':'); Ketma -ket chop etish (minuteval, DEC); Serial.print (':'); Serial.println (ikkinchi darajali, DEC); }
// Nuqtalarni birin -ketin rang bilan to'ldiring
void colorWipeS (uint32_t c, uint8_t kutish) {uchun (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); kechiktirish (kutish); }}
bo'sh rangWipeM (uint32_t c, uint8_t kuting) {
uchun (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); kechiktirish (kutish); }}
bo'sh rangWipeH (uint32_t c, uint8_t kuting) {
uchun (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); kechiktirish (kutish); }}
5 -qadam: Yakuniy teginishlar
Qolganlarning hammasi tanaffusda RTC va Micro Controller -ni pastga tushirishdir.
Men RTC batareyasini tepaga joylashtirdim, shuning uchun kerak bo'lganda batareyani osongina o'zgartirishim mumkin.
5V simlarni ulagichning + tomoniga va Groundni yon tomonga ulang
Quvvatlang!
Men USB batareyali bankka ulanganman, lekin USB telefon zaryadlash qurilmasi ham shunday ishlaydi.
Eslatma:
LEDlarning yorqinligi kodda o'rnatiladi. Hozirgi durangni past darajada ushlab turish uchun u past qilib qo'yilgan. Barcha LEDlar yonib turganda, u deyarli 8 amperga teng bo'lishi mumkin. Joriy sozlash bilan u 1dan kam.
Soatlar tanlovida ikkinchi o'rinni egalladi
Tavsiya:
FLEXBALL - Wi -Fi bilan ishlaydigan yuz pikselli moslashuvchan PCB to'pi: 6 qadam (rasmlar bilan)
FLEXBALL - Wi -Fi bilan ishlaydigan yuz pikselli moslashuvchan PCB to'pi: Salom ishlab chiqaruvchilar, bu moekoe ishlab chiqaruvchisi! Flexball moslashuvchan tenglikka asoslangan bo'lib, u 100 WS2812 2020 adresli LEDlar bilan jihozlangan. U ESP8285-01f tomonidan boshqariladi - Espressif tomonidan ishlab chiqarilgan eng kichik ESP moduli. Bundan tashqari, u ADXL345 akselerometriga ega
Pikselli aqlli chiroq: 7 qadam (rasmlar bilan)
Pixel Smart Lamp: Bu men Android Studio -da ishlab chiqilgan Android ilovasi yordamida Bluetooth orqali boshqariladigan aqlli chiroq uchun yaratgan loyiham. Pikselning asosiy maqsadi - chiroyli chiroqlarni ko'rsatish. Bu kaminning yorug'lik rejimi, masalan, bitta pikselli kamin qanday bo'lishi mumkinligini ko'rib chiqaylik
Vertikal Bartop arkada o'rnatilgan pikselli LED displeyli: 11 qadam (rasmlar bilan)
Birlashtirilgan pikselli LED displeyli vertikal Bartop arkadasi: **** 2019 yil iyul oyining yangi dasturiy ta'minoti bilan yangilangan, bu erda tafsilotlar ****** LED matritsali marquee tanlangan o'yinga mos ravishda o'zgarib turadigan o'ziga xos xususiyatga ega bo'lgan baroped arkadasi. Shkafning yon qismidagi tasvirlar lazer bilan kesilgan va yopishmaydi
C51 4 bitli elektron soat - yog'och soat: 15 qadam (rasmlar bilan)
C51 4 bitli elektron soat - yog'ochdan yasalgan soat: dam olish kunlari bo'sh vaqtim bor edi, shuning uchun men ilgari AliExpress -dan sotib olgan 2,40 dollarlik 4 bitli DIY elektron raqamli soatni yig'dim
Retro Arja Art bilan LED pikselli san'at ramkasi, ilova boshqariladi: 7 qadam (rasmlar bilan)
LED -pikselli san'at ramkasi, ilova boshqariladigan, retro -arcade san'ati bilan: 8024 -yillar ARCADE O'YIN ART qismlarini aks ettiruvchi 1024 LEDli LED -ART ramkali boshqaruv panelini yarating PIXEL ishlab chiqaruvchilar to'plami - $ 59Adafruit 32x32 P4 LED matritsasi - $ 49.9512x20, 1 dyuymli akril plastmassa. qalinligi dyuym - Tap Plastics shaffof engil tutuni -