Mündəricat:

TheSUN, Arduino Powered Design Divar Saatı: 6 Addım (Şəkillərlə birlikdə)
TheSUN, Arduino Powered Design Divar Saatı: 6 Addım (Şəkillərlə birlikdə)

Video: TheSUN, Arduino Powered Design Divar Saatı: 6 Addım (Şəkillərlə birlikdə)

Video: TheSUN, Arduino Powered Design Divar Saatı: 6 Addım (Şəkillərlə birlikdə)
Video: Usta şoför işte yaa 2024, Iyul
Anonim
TheSUN, Arduino Powered Design Divar Saatı
TheSUN, Arduino Powered Design Divar Saatı
TheSUN, Arduino Powered Design Divar Saatı
TheSUN, Arduino Powered Design Divar Saatı
TheSUN, Arduino Powered Design Divar Saatı
TheSUN, Arduino Powered Design Divar Saatı

Bir daha salam Instructables-millət!:-P

Göndərmə problemləri səbəbiylə ABTW Layihəmi davam etdirə bilmədim, buna görə sizə yeni bir əsərimi göstərmək qərarına gəldim.

Düşünürəm ki, bir çoxumuz, mənim kimi, bu gözəl ünvanlı LED zolaqları (NEOPIXEL LED də adlanır) bəyənir. Onları ADAFRUIT -dən əldə edə bilərsiniz. Digər satıcılar da oxşar məhsullar təqdim edəcəklər. ADAFRUITS - GitHub -da bir nümunə kodu daxil olmaqla bir kitabxana var. Kodlaşdırma düz olmalıdır …

O NEOPIXELS -i bir fikir gördüm, bu parlaq xırda şeylərlə nə edə bilərəm.

  • LED matrisli ekran? -> Mürəkkəbdir və istifadə etmirəm (hazırda)
  • X-Mas İşıqlandırma? -> Mövsümə uyğundur, amma birini almaq daha ucuz olardı:-P
  • saat? -> Niyə olmasın! Ancaq şık və qeyri -ənənəvi olmalıdır

Beləliklə, bir divar saatı düzəldək.

Qol saatımıza yaxından nəzər salsaq (mənim kimi bir analoqunuz varsa) 12 saat 60 dəqiqəmiz olduğunu görərik (inşallah). Bu o deməkdir ki, 60 ünvanlı LEDə ehtiyacımız var, phu! 60 LED / metr olan bir zolaq götürsək ~ 318 mm diametr alacağıq (radius = əhatə dairəsi ((2*Π)) çox böyük.

Həqiqət budur ki, vaxtını kimdənsə soruşsan, heç kim bunun 3 dəqiqə 2 dəqiqə olduğunu deməz! Cavab olaraq "5 -in 3 -ü" alacaqsınız. Bəs niyə hər şeyi 5 dəqiqəlik addımlara endirməməliyik? Bunun üçün yalnız 12 LED -ə ehtiyacımız olacaq, yəni diametri 63.6 mm -dir. Onlara ayrıca bir rəng verərək saatı və dəqiqələri ayırd edə bilirik. "İtkin" bir dəqiqəlik addımları əlavə olaraq 4 LED (və ya tək ünvanlı LED) ilə təmin edə biləcəyik.

BU PLAN! Hər şeyi necə etdiyimi görək. Həmişə olduğu kimi, materialların siyahısını/qanun layihəsini və necə qurulacağına dair təlimatları verəcəyəm.

Düşünürsənsə, yalnız İsveçrəli insanlar sərin saatlar hazırlaya bilər, səhv etdiyini sübut edək (üzr istəyirik İsveçrə:-P)

Addım 1: Dizayn və Material Seçimi

Dizayn və material seçimi
Dizayn və material seçimi
Dizayn və material seçimi
Dizayn və material seçimi

Dizayn:

Analog saatı/saatı bir daha yaxından nəzərdən keçirsək, dairənin bildiyimiz 12 * 30 ° addımlara bölündüyünü, LED zolağı üçün 63.6 mm lazım olduğunu görürük. Beləliklə, zolağı bir borunun ətrafında hizalamaq mümkün olmalıdır. Akril şüşə istifadə etmək qərarına gəldim, çünki gözəl görünür və LED işığını içəriyə daxil etmək mümkündür və şüşədəki hər bir qüsurda bəzi işıq səpələnmələri baş verəcək. Beləliklə, deyək: daha çox çirklər daha çox işıq saçılmasına səbəb olacaq! İstədiyimiz budur. Odur ki, oyma alətlərinizi götürün və yaradıcı olun:-)

Mənim BoM siyahıma və saata verdiyim ada istinad edirsinizsə, dizayn kimi bir günəş seçmişəm. Bütün akril hissələri E-Bay üzərindəki bir alman satıcıdan almışam (linki BoM-da verilmişdir). sizə lazım olacaq:

  • akril torpaq plitəsi, şəffaf qalınlığı = 6mm, diametri = 300mm
  • akril orta boşqab, şəffaf qalınlığı = 3 mm, diametri = 150 mm
  • akril ön plaka, saten, qalınlığı = 3 mm, diametri = 90 mm
  • akril boru, şəffaf, xarici diametri = 64 mm (LED şeridi ilə bir az çimdik demək lazımdır)
  • akril çubuq, şəffaf, diametri = 5 mm (bu bizim şüalarımız olacaq); İçərisində baloncuklar olan akril çubuqlar da var, onları məsləhət görürəm, amma ətrafımda yoxdur.
  • akril yapışqan

Elektronika (Fritzing fayllarına baxın):

  • Arduino mini (və ya bənzəri)
  • 1 ünvanlı LED şeridi (saat və 5 dəqiqəlik addımlar üçün 12 LED)
  • 4 ünvanlı LED (tək dəqiqə)
  • 2 330 Ohm Rezistorlar
  • 1 1000µF kondansatör
  • 1 güc təchizatı (5V/500mA)
  • bir RTC DS-1307 (isteğe bağlı!)
  • Bluetooth modulu (isteğe bağlı! BT və Android Smartphone vasitəsilə vaxtı təyin edə bilərsiniz)

BoM -da niyə MAX485 çiplərimin olduğunu özünüzdən soruşsanız. Cavab budur ki, hazırlamaq istədiyim ev avtomatlaşdırma sistemi ilə saatı sinxronizasiya etmək istəyirəm (bir daha heç vaxt gün işığından istifadə etmək üçün bir saat təyin etməməlisiniz:-P). bir neçə həftə/ay.

Gördüyünüz kimi, günəş panelləri və LiPo ilə saatı şəbəkədən kənarlaşdırmağa çalışacağam, amma bu Təlimat kitabında özünüzü sınamaqdan çekinmeyin.

Addım 2: Akril hissələri hazırlayın

Akrilik hissələri hazırlayın
Akrilik hissələri hazırlayın
Akrilik hissələri hazırlayın
Akrilik hissələri hazırlayın
Akrilik hissələri hazırlayın
Akrilik hissələri hazırlayın

Alətlər:

Hər şeydən əvvəl 1 ölçüsündə əlavə etdiyim DWG planını çap etsəniz həqiqətən faydalıdır: 1. Bu, bütün hissələri hizalamağa kömək edəcək və bir qazma planı olaraq sizə xidmət edəcək. Bundan sonra sizə lazım olacaq:

  • hobbi bıçağı
  • miter ölçü cihazı
  • mişar mişarı
  • sıxaclar
  • əl dreli
  • qazıla bilər, diametri 65 mm
  • metal matkaplar dəsti
  • kiçik bir metal fayl
  • akril yapışqan

Gəlin başlayaq:

Zəmin plitəsini götürün və plana uyğunlaşdırın, beləliklə dairənin mərkəzini əldə edə bilərsiniz. İndi üzərinə qazma matkabı ilə əl matkabı götürün və yer lövhəsinin mərkəzində bir çuxur qazın (çox yavaş! Çox təzyiqlə deyil!), Xarici dairə ~ 2-3 mm dərinlikdə olmalıdır. Bu, LED şeridini yer lövhəsinə batırmaqdır (LED şeridi ~ 10 mm genişlikdə, şüaları yalnız 5 mm diametrdədir) və onları kirişlərlə hizalamaqdır (şəkil 1 -ə baxın).

İndi mişar maşını, miter ölçüsü və akril boruya ehtiyacımız var. Yalnız parçalara ayırın, korpusu (boru) 40 mm uzunluğunda düzəltməyə qərar verdim (şəkil 2). İndi yenidən testereyi tutun və borunun bir tərəfində kiçik bir dovşan düzəldin, metal sənədlə hamarlayın. Tellər oradan çıxacaq;-) (şəkil 3-ə baxın)

Bir az yapışdırmaq üçün vaxt… Orta boşqabı (d = 150 mm) və ön lövhəni (doymuş) götürün. Yenidən plana uyğunlaşdırın, orta lövhənin ortasına bir az yapışqan qoyun, ön lövhəni hizalayın və gözləyin. yapışqan bir az sərtləşir. İstifadə etdiyim yapışqan yüngül bərkidicidir və 2-3 saata qədər çəkə bilər, buna görə də bir sıxac istifadə etmək istəyirəm… (şəkil 3 və 4)

Borunu yer plakasına yapışdırmaq üçün də eyni şeyi edin, dovşanın lövhəyə baxdığından və ilk LED -in (12 saat) olmasını istədiyiniz bir yerə hizaladığınızdan əmin olun.

Sərtləşənə qədər gözləyin!

İndi 2 hissəni (uyğunlaşdırılmış) plana uyğunlaşdıra bilərik (4 mm diametrli və ya seçdiyiniz LEDin diametri; çox təzyiq göstərmədən yavaş qazın) 4 dəqiqəlik deliklərimiz. Təxminən 8-9 mm dərinlikdə qazın. Ehtiyatlı olun, doymuş lövhə çox kövrəkdir və dərinə qazarsanız əyləc edə bilərsiniz. İndi onları bir -birinə yapışdıra bilərsiniz və ya mənim kimi yer lövhəsinə bir təhlükə kəsib vida ilə bağlamağa qərar verirsiniz.

Yenə yapışqan sərtləşənə qədər gözləyin. İndi kirişləri zəminə yapışdırın və yapışdırın. (şəkil 6) Nə olduğunu tapın … yapışqan sərtləşənə qədər gözləyin:-) Gəlin elektronikaya keçək …

Addım 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Alətlər:

  • lehimleme dəmir
  • lehim teli
  • hobbi bıçağı
  • kiçik bir prototip PCB parçası
  • emaye tel və ya istədiyiniz digər tel
  • isti yapışqan

Tək LED -lərlə dayandım. Emaye tel istifadə edirsinizsə, lehimdən əvvəl lakın cızılmasını unutmayın. Bunun üçün bir hobbi bıçağından istifadə edə bilərsiniz. Onları bağlayın, flikto.de üzərindəki pinout ilə şəkilə müraciət edə bilərsiniz. Qeyd edək ki, DOUT növbəti LED -də DIN -ə gedir! (şəkil 2 -ə baxın) Bundan sonra LED şeridini hər biri 3 LED olan 4 elementə kəsə bilərsiniz. Unutmayın ki, borunun 63,6 mm LED şeridi və 64 mm xarici diametrinə sahibik, buna görə onu şüalara tam hizalamaq üçün əlavə uzunluğa ehtiyacımız var. Şəkil 4 -də olduğu kimi emaye tel ilə bağlayın. LED şeritləri üçün komponentləri (iki 330Ohm Rezistoru və 1000µF kondansatörü, şəkil 7) ehtiva edir.

İndi zolağı borunun ətrafına quraşdırın, LEDləri şüalara hizalayın. İlk Pixel saat 12 -yə uyğundur. Mənzilinizi döndərmisinizsə, hər şeyin aynalı olduğunu unutmayın. Saat yönünün əksinə hərəkət edin! Boruya yapışdırmaq üçün bir az isti yapışqan istifadə edin. Hər seqment üçün kiçik bir damla bunu edəcək!

Eyni LED -lər üçün də edə bilərsiniz (nəticədə aynalı), bir az isti yapışqan əlavə edin və əvvəlcədən hazırlanmış deliklərə bastırın.

Arduino-nu hələ bağlamayın, BT bağlantısı üçün hardware seriyasından istifadə edəcəyik, buna görə əvvəlcə proqramı təsvir etdiyim növbəti addımları yoxlayın.

Addım 4: Kod

Kod
Kod
Kod
Kod

İndi eskizi Arduinoya yükləyə bilərsiniz. İndi LED şeritlərini də bağlaya bilərsiniz. BT Modulunu qoşmayın !!! Əvvəlcə koda baxmaq istəyirik, bir neçə şeyi harada düzəldə biləcəyinizi bilməlisiniz …

Arduino IDE və Kitabxanaları yükləyin. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

IDE qurun və kitabxanaları kitabxana qovluğuna qoyun. Əlavə edilmiş INO faylını açın və arduino-ya yükləyin. Burada təsvir olunan kod eynidir, lakin əlavə şərhlərlə! Hər şeyi düzgün etdinizsə, indi "bootanimation" ı görə bilərsiniz. Seriya monitoru üzərində vaxtı təyin etmək mümkündür. Sadəcə @"hour"/"min"/"sec" yazın, məsələn. @10/33/00 (10:33).

Kodla oynamaqdan çekinmeyin … Burada sizə Kodun qısa bir təsviri veriləcək (RTC olmadan qur!)

TANIMLAR:

#define PIN 6 // Hour LED Strip #define MINPIN 5 // Singelminute LED #define NUMPIXELS 12 // Saat üçün piksel sayı #mininumpixelləri təyin edin 4 // Bir dəqiqəlik piksel sayı #define BAUDRATE 115200 // Baudrate uyğun olmalıdır BT Modulunun baudrate #define utch '@' // TimeSync -in BYTE -ə başlayın

int dəfə = 0; // vaxt, bootint delayval = 20 -dən sonra təyin olunarsa, saxlamaq üçün bayraq; // solma animasiyasının gecikməsi int clocktimer = 10000; // vaxt yeniləməsi int timebright = 250; // saatın parlaqlığı Strip int mtimebright = 50; // singelminint başlatma parlaqlığı = 0; // bootint ahourdan sonra clearpixels funksiyasını çağırmaq üçün bayraq; int oldahour = 0; // mağaza əvvəlki. saatda aminute; int oldamin = 0; // əvvəlki dəqiqəni bir saniyə yeniləmək üçün saxlayır; int aday; int amonth; int ayear; int mmin; tmElements_t tm;

// 2 NeoPixel LED dizisi üçün quraşdırma (NAME = TİP (PİKSEL SAYISI, Hansı PIN, FORMAT RGB VƏ GRB, FREK); Daha çox məlumat üçün Adafruit bələdçisinə baxın.); Adafruit_NeoPixel min pikselləri = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

QURMAQ:

boş quraşdırma () {

Serial.begin (BAUDRATE); Wire.begin (); // Zolaqları başladın, hamısı OFFpixels.begin (); minpixels.begin (); piksel.show (); minpixels.show ();

// Bir az animasiya yaradınSerial.println ("SUNRISE"); günəşin çıxması (); gecikmə (1000); Serial.println ("SUNSET"); qürub (); piksel.show (); Serial.println ("HAZIR"); }

Döngə:

void loop () {// zaman sinxronizasiyasını yoxlayın (Serial.available ()> 0) {char c = Serial.read (); if (c == utch) // sətirdə @ varsa, gələn baytları /intsləri {readtime () oxuyun; }} // LEDləri işə salın, açılış animasiyasını silin

if (başlatma == 0) {clearpixels (); başlatma = 1; }

saat = saat ();

aminute = dəqiqə (); əgər (timeset == 1 || timeset == 0) // burada Saatın təyin edilib -edilmədiyini yoxlaya bilərsiniz, Timeset = FALSE olduqda proqramı burada dayandıra bilərsiniz, sadəcə "|| timeset == 0" silin!

{

əgər (oldamin <aminute || oldahour hamısını KAPALI olaraq təyin etsəniz, yeni vaxtı göstərin {clearpixels (); ClockDisplay ();}}}

Saatı göstərin:

boş ClockDisplay () {

oldahour = ahour;

oldamin = aminut; int xhour, xmin;

əgər (ahour> = 12) {xhour = ahour-12; // 24 saatlıq ekran üçün yalnız 12 LED var} başqa {xhour = ahour; } // 5 dəqiqəlik addımlarla ölçəkləndirin xmin = (aminute /5); əgər (oldamin <aminute) {oldamin = aminute; aydın piksellər (); } // bölünmənin qalan hissəsini singelmin LED mmin = (aminute % 5); // modulo operatoru məsələn. 24 % 5 = 4! çox faydalıdır: -Pixels.setBrightness (timebright); piksel.setPixelColor (xmin, piksel. Color (5, 125, 255)); // burada rəngləri dəyişə bilərsiniz! ətrafında oynayın! piksel.setPixelColor (xhour, piksel. Color (255, 50, 0)); piksel.show ();

// tək minsfor göstərin (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, piksel. Color (255, 255, 0)); minpixels.show (); }} Serialdan TIME məlumatı oxuyun və emal edin

void readtime () // aparıcı "@" əvvəldən gələn məlumatları əldə etsək və TIME Lib üçün vaxtı saxlasaq {

ahour = Serial.parseInt (); aminute = Serial.parseInt (); saniyə = Serial.parseInt (); aday = Serial.parseInt (); amonth = Serial.parseInt (); ayear = Serial.parseInt (); Serial.println ("TIMESET"); Serial. çap (ahour); Serial.print (":"); Serial.println (aminute); setTime (ahour, aminute, asecond, aday, amonth, ayear); }

Hamısını sil, hamısını təmizlə

void clearpixels () // ekranı yeniləmək üçün hər bir PIXEL -i söndürün {

piksel.begin (); minpixels.begin (); for (int i = 0; ipixels.setPixelColor (i, piksel. Color (0, 0, 0)); minpixels.setPixelColor (i, piksel. Color (0, 0, 0)); piksel.show (); minpixels.show ();}}

Addım 5: Android APP və BT Bağlantısı

Android APP və BT Bağlantısı
Android APP və BT Bağlantısı
Android APP və BT Bağlantısı
Android APP və BT Bağlantısı
Android APP və BT Bağlantısı
Android APP və BT Bağlantısı

Əvvəlki addımlarla uğur qazansaydınız, indi BT Modulunuzu bağlaya bilərsiniz. (inşallah, baudratların uyğun olduğuna əmin oldunuz). TX və RX xətlərini keçməyi unutmayın:-)

Tətbiqi yükləyin və quraşdırın, BT dongle ilə qoşun, tətbiqə başlayın, dongle -a qoşulun və vaxtı cibinizlə sinxronlaşdırın. APP, əvvəllər etdiyimiz kimi eynisini edir. Sadəcə sistem vaxtından yaranan @hh/mm/ss/gg/aa/YYYY göndərir. Mən də APPInventor AIA Faylını və bir sonrakı addımın izahını verdim (maraqlananlar üçün).

Addım 6: APPInventor

APP İnventoru
APP İnventoru
APP İnventoru
APP İnventoru

APP Inventor istifadə etmək olduqca asandır və belə sadə bir proqram üçün səy göstərməyə dəyər.

Yeni bir layihə etsəniz, DESIGNER ekranında özünüzü tapacaqsınız. (şəkil 1) Buradan istifadə etmək üçün masalar, düymələr, sensorlar və digər elementlər əlavə edirik.

  • bir masa (bütün elementləri hizalamaq üçün)
  • bir siyahı seçici (bağlandığımız BT cihazının seçimi üçün)
  • bir düymə (BT üzərində ZAMANI atəşə tutmaq üçün)
  • bəzi etiketlər (əsl vaxtı və tarixi göstərin)
  • saat sensoru (vaxtı yeniləyin)
  • bluetooth müştəri sensoru (əlaqə)

Onları əlavə etmək, sürüklə və buraxmaq qədər asandır! Şəkil 2 -də BLOCKS ekranında "Tətbiq" in ümumi görünüşünü görə bilərsiniz. Bəli, bütün "sehrlərin" baş verdiyi yer budur. Yuxarıda Saat və Tarixi saxlamaq üçün bəzi dəyişənlər yaratdım. Sol üstdəki ilk blok, birləşdirilmiş BT cihazlarının siyahısı ilə siyahı seçici elementini işə salacaq. ikinci blok, əvvəllər seçilmiş elementlə nə edəcəyimizə qərar veririk. Yaxşı, buna qoşulmaq istəyirik.

Növbəti Bloku yaxından nəzərdən keçirsəniz, BT statusu "bağlıdırsa", BT mesajını yaratdığımızı görə bilərsiniz. Daha əvvəl SerialMonitor -a yazdığımız kimidir. Soldakı son blok bizə vaxtı göstərmək üçün aparıcı sıfırları təmin edəcək (məsələn, 01:08). Sağ tərəfdə, son elementimizi tapa bilərik, burada saat elementini istifadə edirik. Burada dəyişənləri yeniləyirik və rəqəmlər proseduru ilə birləşdiririk, bu hər 1000 ms -də baş verəcək (standart parametr, dizayner rejimində dəyişdirin) və etiketlə yenilənmiş dəyərləri göstərin. Bu, yalnız qısa bir təsvirdir, amma APPInventor bu qədər asandır:-) Bəlkə də cəmiyyətdə iOS və ya WindowsPhone üçün bir proqram yazmaq istəyən biri var. (əla olardı)

Ümidvaram ki, mənim göstərişlərimi bəyəndiniz! Yeni divar saatınızla əylənin! Bəlkə də sevdiyiniz birinə hədiyyə etmək istərdiniz (X-Mas mövsümü):-)

Və hər hansı bir sualınız varsa, məndən çekinmeyin!

Hörmətlə və Merry X-Mas.

Tövsiyə: