İçindekiler:

TheSUN, Arduino Powered Tasarım Duvar Saati: 6 Adım (Resimli)
TheSUN, Arduino Powered Tasarım Duvar Saati: 6 Adım (Resimli)

Video: TheSUN, Arduino Powered Tasarım Duvar Saati: 6 Adım (Resimli)

Video: TheSUN, Arduino Powered Tasarım Duvar Saati: 6 Adım (Resimli)
Video: Elimi kestim. Demir kanaması deneyi #kimya #shorts 2024, Temmuz
Anonim
TheSUN, Arduino Powered Tasarım Duvar Saati
TheSUN, Arduino Powered Tasarım Duvar Saati
TheSUN, Arduino Powered Tasarım Duvar Saati
TheSUN, Arduino Powered Tasarım Duvar Saati
TheSUN, Arduino Powered Tasarım Duvar Saati
TheSUN, Arduino Powered Tasarım Duvar Saati

Tekrar merhaba Instructables- millet!:-P

Nakliye sorunları nedeniyle ABTW Projeme devam edemedim, bu yüzden size en yeni eserimi göstermeye karar verdim.

Sanırım çoğumuz, benim gibi, bu güzel adreslenebilir LED Şeritleri (NEOPIXEL LED olarak da adlandırılır) severiz. ADAFRUIT'ten temin edebilirsiniz. Diğer satıcılar da benzer ürünler sağlayacaktır. ADAFRUITS - GitHub'da (beni tıkla) bazı örnek kodlar da dahil olmak üzere bir kitaplık mevcuttur. Bu nedenle kodlama basit olmalıdır…

O NEOPİKSELLERİ bir düşünce olarak gördüm, o parlak küçük şeylerle ne yapabilirim ki.

  • Bir LED matris Ekran? -> Karmaşık ve kullanmıyorum (şu anda)
  • X-Mas Aydınlatma? -> Sezona uyar ama almak daha ucuza gelir:-P
  • bir saat? -> Neden olmasın! Ama şık ve sıradışı olmalı

O halde bir duvar saati yapalım.

Kol saatimize yakından bakarsak (benim gibi bir analogunuz varsa) 12 saat 60 dakikamız olduğunu fark edeceğiz (umarım). Bu, 60 adet adreslenebilir LED'e ihtiyacımız olduğu anlamına gelir, phu!60 LED'li bir şerit alırsak, ~318mm (yarıçap = kapsam /(2*Π)) bir çap elde ederiz, bu kesinlikle çok büyük.

Gerçek şu ki, birine saati sorarsanız, kimse 3'ü 2 dakika geçtiğini söylemez! Cevap olarak "Saat 3'ü 5 geçiyor" mesajını alacaksınız. O halde neden her şeyi 5 dakikalık adımlara indirmeyelim? Bunun için sadece 12 LED'e ihtiyacımız olacak, bu da 63,6 mm'lik bir çap elde ettiğimiz anlamına geliyor. Ayrıca saat ve dakikaları ayrı bir renk vererek ayırt edebiliyoruz. Ayrıca "eksik" tek dakikalık adımları 4 LED'lik ek bir Şerit (veya tek adreslenebilir LED) ile sağlayabileceğiz.

PLAN BU! Her şeyi nasıl yaptığıma bir bakalım. Her zaman olduğu gibi, bir malzeme listesi/faturası ve nasıl inşa edileceğine dair talimatlar vereceğim.

Sadece İsviçrelilerin havalı saatler yapabileceğini düşünüyorsanız, yanıldığınızı kanıtlayalım (üzgünüm İsviçre:-P)

Adım 1: Tasarım ve Malzeme Seçimi

Tasarım ve Malzeme Seçimi
Tasarım ve Malzeme Seçimi
Tasarım ve Malzeme Seçimi
Tasarım ve Malzeme Seçimi

Tasarım:

Analog saatimize/saatimize tekrar yakından bakarsak, dairenin bildiğimiz 12*30°'lik adımlara bölündüğünü, LED-Strip için 63.6mm'ye ihtiyacımız olduğunu görüyoruz. Bu nedenle, şeridi bir şekilde bir tüpün etrafına hizalamak mümkün olmalıdır. Akrilik cam kullanmaya karar verdim, çünkü güzel görünüyor ve içine LED ışığı yerleştirmek mümkün ve camdaki her kusurda bir miktar ışık saçılması olacak. Diyelim ki: daha fazla kirlilik, daha fazla ışık saçılmasına yol açacaktır! Tam da bunu istiyoruz. O yüzden gravür araçlarınızı alıp yaratıcı olmaktan çekinmeyin:-)

BoM listeme ve saate verdiğim isme atıfta bulunursanız, güneş benzeri bir tasarım seçtim. Tüm akrilik parçaları E-Bay'de bir Alman satıcıdan aldım (bağlantı BoM'de verilmiştir). Tasarımım için ihtiyacın olacak:

  • akrilik zemin plakası, şeffaf kalınlık = 6 mm, çap = 300 mm
  • akrilik orta plaka, şeffaf kalınlık = 3 mm, çap = 150 mm
  • akrilik ön plaka, saten, kalınlık = 3 mm, çap = 90 mm
  • akrilik tüp, şeffaf, dış çap = 64mm (LED şerit ile biraz ince ayar yapmamız gerektiği anlamına gelir)
  • akrilik çubuk, şeffaf, çap = 5mm (bu bizim kirişlerimiz olacak); Etrafta baloncuklu akrilik çubuklar da var, tavsiye ederim ama elimde yok.
  • akrilik yapıştırıcı

Elektronik (Fritzing dosyalarına bakın):

  • Arduino mini (veya benzeri)
  • 1 adreslenebilir LED Şerit (saat ve 5 dakikalık adımlarla 12 LED)
  • 4 adreslenebilir LED (tek dakika)
  • 2 330Ohm Dirençler
  • 1 1000µF Kondansatör
  • 1 güç kaynağı (5V/500mA)
  • bir RTC DS-1307 (isteğe bağlı!)
  • Bluetooth modülü (isteğe bağlı! evet zamanı BT ve bir Android Akıllı Telefon aracılığıyla ayarlayabilirsiniz)

BoM'umda neden MAX485 çipleri olduğunu kendinize sorarsanız. Cevap, saati yapmak üzere olduğum ev otomasyon sistemiyle senkronize etmek istiyorum (bir daha asla gün ışığından yararlanma için bir saat ayarlamak zorunda kalmayacağım:-P). Bunu bir sonraki blogumda anlatacağım. birkaç hafta/ay.

Fark ettiğiniz gibi, bazı güneş panelleri ve bir LiPo ile saati şebekeden ayırmaya çalışacağım, ancak bu Eğitilebilir Tabloda bunu kendiniz denemekten çekinmeyin.

Adım 2: Akrilik Parçaları Hazırlayın

Akrilik Parçaları Hazırlayın
Akrilik Parçaları Hazırlayın
Akrilik Parçaları Hazırlayın
Akrilik Parçaları Hazırlayın
Akrilik Parçaları Hazırlayın
Akrilik Parçaları Hazırlayın

Aletler:

Öncelikle 1:1 ölçeğinde eklediğim DWG planını yazdırırsanız gerçekten yardımcı olur. Bu, tüm parçaları hizalamanıza yardımcı olacak ve bir delme planı olarak size hizmet edecektir. Ayrıca ihtiyacınız olacak:

  • hobi bıçağı
  • gönye ölçer
  • demir testeresi
  • kelepçeler
  • el matkabı
  • matkap yapabilir, çap 65mm
  • bir dizi metal matkap
  • küçük bir metal dosya
  • akrilik yapıştırıcı

Hadi başlayalım:

Zemin plakasını alın ve plana göre hizalayın, böylece dairenin merkezini elde edebilirsiniz. Şimdi el matkabı üzerine kutu matkabı takılıyken el matkabınızı alın ve zemin plakasının ortasında bir delik açın (çok yavaş! Bu, LED şeridi zemin plakasına (~10 mm genişliğinde LED şerit, yalnızca 5 mm çapında kirişler) batırmak ve bunları kirişlerle hizalamak içindir (bkz. resim 1).

Şimdi demir testeresine, gönye ölçere ve akrilik boruya ihtiyacımız var. Sadece parçalara ayırın, muhafazayı (tüp) 40 mm uzunluğunda yapmaya karar verdim (resim 2). Şimdi demir testereyi tekrar alın ve borunun bir tarafına küçük bir yufka yapın, metal eğe ile pürüzsüz hale getirin. Kabloların çıkacağı yer orası;-) (bkz. resim 3)

Biraz tutkal zamanı…Orta plakayı (d=150mm) ve ön plakayı (doymuş olan) alın. Plana tekrar hizalayın, orta plakanın ortasına biraz yapıştırıcı sürün, ön plakayı hizalayın ve kalana kadar bekleyin. tutkal biraz sertleşir. Kullandığım yapıştırıcı hafif sertleşiyor ve 2-3 saate kadar sürebiliyor, bu yüzden bir kıskaç kullanmak istersiniz… (Resim 3 ve 4)

Boruyu zemin plakasına yapıştırmak için de aynısını yapın, çıkıntının plakaya baktığından ve ilk LED'in (saat 12) olmasını istediğiniz bir yere hizalandığından emin olun.

Sertleşene kadar bekleyin!

Artık 2 parçayı (kitap uyumlu) plana göre hizalayabilir ve 4 adet tek dakikalık deliğimizi (5 mm çapında veya seçtiğiniz LED'in çapı; çok fazla baskı yapmadan yavaşça delin). Yaklaşık 8-9 mm derinliğinde delin. Dikkatli olun, saten levha çok kırılgandır ve derine inerseniz fren yapabilir. Artık bunları birbirine yapıştırabilirsiniz veya benim gibi zemin plakasına bir tehdit kesip bir vidayla tutturmaya karar verirsiniz.

Yine tutkal sertleşene kadar bekleyin. Şimdi kirişleri hizalayın ve zemin plakasına yapıştırın. (resim 6) Tahmin edin ne oldu… yapıştırıcı sertleşene kadar bekleyin:-)Elektroniklere geçelim…

Adım 3: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Aletler:

  • havya
  • lehim teli
  • hobi bıçağı
  • küçük bir prototipleme PCB parçası
  • emaye tel veya tercih ettiğiniz herhangi bir tel
  • sıcak tutkal

Tekli ledler ile işlem yaptım. Emaye tel kullanıyorsanız lehimlemeden önce cilayı kazımayı unutmayınız. Bunun için bir hobi bıçağı kullanabilirsiniz. Onları bağlayın, pinout ile resme flikto.de adresinden bakabilirsiniz. DOUT'un bir sonraki LED'de DIN'e gittiğini unutmayın! (bkz. resim 2) Bundan sonra LED şeridi her biri 3 LED'li 4 elemana bölebilirsiniz. Unutmayın, 63,6 mm LED Şeritimiz ve tüpün 64 mm dış çapına sahibiz, bu yüzden onu tam olarak kirişlere hizalamak için biraz "ekstra uzunluğa ihtiyacımız var. Resim 4'teki gibi emaye tel ile bağlayın. "güç donanımı" olarak kullanılır ve LED Şeritleri için bileşenleri içerecektir (iki 330Ohm Direnç ve 1000µF Kapasitör, resim 7). Bunun için Fritzing Image'a bakın.

Şimdi Şeridi tüpün etrafına monte edin, LED'leri kirişlere hizalayın. İlk Pixel saat 12 ile eşleşiyor. Evinizin etrafında döndüyseniz, her şeyin aynalı olduğunu unutmayın. Saat yönünün tersine ilerleyin! Tüpe tutturmak için biraz sıcak tutkal kullanın. Her segment için küçük bir damla bunu yapacak!

Aynısını tekli LED'ler için de yapabilirsiniz (sonunda yansıtılır), sadece biraz sıcak tutkal ekleyin ve önceden delinmiş deliklere bastırın.

Henüz Arduino'yu bağlamayın, BT bağlantısı için donanım serisini kullanacağız, bu yüzden önce yazılımı tanımladığım sonraki adımları kontrol edin.

4. Adım: Kod

kod
kod
kod
kod

Artık taslağı Arduino'ya yükleyebilirsiniz. Artık LED şeritleri de bağlayabilirsiniz. BT Modülünü bağlamayın!!! İlk önce koda bir göz atmak istiyoruz, birkaç şeyi nerede değiştirebileceğinizi bilmelisiniz…

Arduino IDE ve Librarys'i indirin. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

IDE'yi kurun ve kütüphaneleri kütüphane-klasörüne koyun. Ekteki INO dosyasını açın ve arduino'nuza yükleyin. Burada açıklanan kod aynıdır, ancak ek yorumlarla birlikte! Her şeyi doğru yaptıysanız, şimdi "bootanimation" ı görebilirsiniz. Seri monitör üzerinden saati ayarlamak mümkündür. Sadece @"saat"/"min"/"sn" yazın, örn. @10/33/00 (10:33).

Kodla oynamaktan çekinmeyin… Burada size Kodun kısa bir açıklamasını vereceğim (RTC'siz kurulum!)

TANIMLAR:

#define PIN 6 //Saat LED Şerit #define MINPIN 5 //Singeldakika LED #define NUMPIXELS 12 //Saat için Piksel sayısı #MINNUMPIXELS 4 tanımlayın //Tek bir dakika için Piksel sayısı #define BAUDRATE 115200 //Baud hızı, eşleşmeli BT Modülünün baud hızı #define utch '@' //TimeSync'in BYTE'ını başlat

int zaman seti = 0; //zaman bootint delayval = 20'den sonra ayarlanmışsa saklanacak bayrak; // animasyonun solması için gecikme int clocktimer = 10000; //zaman yenileme int timebright = 250; //saatin parlaklığı Strip int mtimebright = 50; // singelminint initialize'ın parlaklığı = 0; //bir saat önyüklemeden sonra clearpixels işlevini çağırmak için bayrak; int eskisaat = 0; // önceki depola. saat dakikası; int eskimin = 0; //bir saniye yenilemek için önceki dakikayı saklar; int aday; int ayda; int yıl; int mmin;tmElements_t tm;

//2 NeoPixel LED dizisi için kurulum (İSİM = TİP(PİKSEL SAYISI, HANGİ PIN, FORMAT RGB VEYA GRB, FREQ); Daha fazla bilgi için Adafruit kılavuzuna bakın. Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800)); Adafruit_NeoPixel minpiksel = Adafruit_NeoPixel(MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

KURMAK:

geçersiz kurulum() {

Seri.başla(BAUDRATE); Wire.begin(); // Şeritleri başlat, tümü OFFpixels.begin(); minpixels.begin(); piksel.göster(); minpixels.show();

//Biraz animasyon yapınSerial.println("SUNRISE"); gündoğumu(); gecikme(1000); Serial.println("SUNSET"); gün batımı(); piksel.göster(); Serial.println("HAZIR"); }

DÖNGÜ:

void loop() { // timesync'i kontrol edin while (Serial.available() >0){ char c = Serial.read(); if(c == utch) //satırda @ varsa, gelen baytları okuyun / ints{ readtime(); } } // LED'leri başlat, önyükleme animasyonunu temizle

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

saat = saat();

dakika = dakika(); if(timeset == 1 || timeset == 0) // buradan Time'ın ayarlanmış olup olmadığını kontrol edebilirsiniz, Timeset = FALSE ise programı burada durdurabilirsiniz, sadece "|| timeset == 0" ı kaldırın!

{

if(oldamin < dakika || eskisaat hepsini KAPALI olarak ayarla, yeni saati göster{ clearpixels(); ClockDisplay(); } } }

Saati Göster:

geçersiz ClockDisplay(){

eskisaat = bir saat;

eskiamin = dakika; int xsaat, xmin;

if (ahour >= 12){ xhour = ahour-12; //24 saat gösterim için sadece 12 LED'imiz var} else { xhour = ahour; } // 5 dakikalık adımlarla ölçeklendirin xmin = (dakika / 5); if(oldamin < dakika){ eskiamin = dakika; net pikseller(); } // bölümün geri kalanını tekli min LED'i ile al mmin = (dakika % 5); // modulo operatörü ör. %24 5 = 4! çok kullanışlı:-Ppixels.setBrightness(timebright); piksel.setPixelColor(xmin, piksel. Renk(5, 125, 255); // renkleri buradan değiştirebilirsiniz! etrafında oyna!pixels.setPixelColor(xhour, piksel. Color(255, 50, 0)); piksel.göster();

// minsfor teklisini göster (int m=0; m

minpixels.setBrightness(mtimebright); minpixels.setPixelColor(m, piksel. Color(255, 255, 0)); minpixels.show(); } }Seriden TIME bilgisini okuyun ve işleyin

void readtime() // baştaki "@" zaten varsa, gelen verileri işler ve TIME Lib için zamanı depolar{

saat = Serial.parseInt(); dakika = Serial.parseInt(); bir saniye = Serial.parseInt(); aday = Serial.parseInt(); ay = Serial.parseInt(); yıl = Serial.parseInt(); Serial.println("ZAMAN AYARI"); Seri.print(saat); Seri.print(": "); Seri.println(dakika); setTime(saat, dakika, saniye, aday, ay, yıl); }

Hepsini temizle

void clearpixels() // ekranı yenilemek için her bir PIXEL'i kapalı olarak ayarlayın{

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

Adım 5: Android APP ve BT Bağlantısı

Android APP ve BT Bağlantısı
Android APP ve BT Bağlantısı
Android APP ve BT Bağlantısı
Android APP ve BT Bağlantısı
Android APP ve BT Bağlantısı
Android APP ve BT Bağlantısı

Önceki adımlarda başarılı olduysanız, şimdi BT Modülünüzü bağlayabilirsiniz. (umarım baud hızlarının eşleştiğinden emin olmuşsunuzdur). TX & RX hatlarını geçmeyi unutmayın:-)

Uygulamayı indirin ve yükleyin, BT dongle'ınızla eşleştirin, uygulamayı başlatın, dongle'a bağlanın ve saati cep telefonunuzla senkronize edin. APP temelde daha önce yaptığımız gibi aynı şeyi yapar. Sadece sistem zamanından oluşturulan @ss/aa/ss/gg/aa/YYYY'yi gönderir. Ayrıca APPInventor AIA Dosyasını ve bir sonraki adımda bir açıklama da sağladım (ilgilenenler için).

Adım 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor'ın kullanımı oldukça kolaydır ve bu kadar basit bir program için çabaya değer.

Yeni bir proje yaparsanız, TASARIMCI ekranında kendinizi bulacaksınız. (resim 1) Bu, daha fazla kullanım için tablolar, düğmeler, sensörler ve diğer öğeleri eklediğimiz yerdir. Bizim durumumuzda şunlara ihtiyacımız var:

  • bir tablo (tüm öğeleri hizalamak için)
  • bir liste seçici (bağlandığımız BT cihazının seçimi için)
  • bir düğme (ZAMAN'ı BT üzerinden ateşlemek için)
  • bazı etiketler (gerçek saati ve tarihi görüntüleyin)
  • saat sensörü (zamanı yenileyin)
  • bluetooth istemci sensörü (bağlanabilirlik)

Bunları eklemek, sürükle ve bırak kadar kolaydır! Resim 2'de BLOKLAR ekranında "UYGULAMA"nın bir genel görünümünü görebilirsiniz. Pekala, temel olarak tüm "sihir" burada gerçekleşir. Üstte, Saat ve Tarihi depolamak için bazı değişkenler oluşturdum. Sol üstteki ilk blok, liste seçici öğesini eşleştirilmiş BT cihazları listesiyle başlatacak. ikinci blok, önceden seçilmiş elemanla ne yapacağımıza karar veririz. Eh, ona bağlanmak istiyoruz.

Bir sonraki bloğa yakından bakarsanız, BT durumu "bağlıysa", BT mesajını oluşturduğumuzu görebilirsiniz. Daha önce SerialMonitor'a yazdığımızla aynı. Soldaki son blok bize zamanı göstermek için baştaki sıfırları sağlayacak (örn. 01:08). Sağ tarafta, saat öğesini kullandığımız son bloğumuzu bulabilirsiniz. Burada değişkenleri güncelliyoruz ve bunları basamak prosedürüyle birleştiriyoruz, bu her 1000 ms'de bir olacak (varsayılan ayar, tasarımcı modunda değiştirin) ve güncel değerleri etiketle birlikte görüntüleyin. Bu sadece kısa bir açıklama, ancak APPInventor gerçekten bu kadar kolay:-)Belki toplulukta iOS veya WindowsPhone için bir yazılım yazmak isteyen birileri vardır. (müthiş olur)

Umarım Instructable'ımı beğenmişsinizdir! Yeni duvar saatinizle iyi eğlenceler! Belki sevdiğiniz birine hediye etmek istersiniz (X-Mas sezonu):-)

Ve herhangi bir sorunuz varsa, bana sormaktan çekinmeyin!

Saygılarımla ve Mutlu X-Mas.

Önerilen: