İçindekiler:

Geri Dönüştürülmüş Çalar Saat Akıllı Işık: 8 Adım (Resimlerle)
Geri Dönüştürülmüş Çalar Saat Akıllı Işık: 8 Adım (Resimlerle)

Video: Geri Dönüştürülmüş Çalar Saat Akıllı Işık: 8 Adım (Resimlerle)

Video: Geri Dönüştürülmüş Çalar Saat Akıllı Işık: 8 Adım (Resimlerle)
Video: Yaşamayan yoktur 😂 2024, Temmuz
Anonim
Geri Dönüşümlü Çalar Saat Akıllı Işık
Geri Dönüşümlü Çalar Saat Akıllı Işık
Geri Dönüşümlü Çalar Saat Akıllı Işık
Geri Dönüşümlü Çalar Saat Akıllı Işık
Geri Dönüşümlü Çalar Saat Akıllı Işık
Geri Dönüşümlü Çalar Saat Akıllı Işık

Bu projede, tamamen bozuk bir kurmalı çalar saatin dönüşümünü yapıyorum. Saat yüzü, saatin kenarındaki bir LED şerit ile aydınlatılan 12 LED ile değiştirilir. 12 LED saati söyler ve LED şerit alarm görevi görecek şekilde programlanmıştır ve ayarlanan zamanda tam parlaklığa döner. Her şey bir Raspberry Pi Zero tarafından kontrol edilir ve ışık alarmını telefon alarmınızla otomatik olarak senkronize etme veya bir e-posta aldığınızda LED'leri yakma gibi sayısız entegrasyon ve genişletme olanağı sağlar.

Proje nispeten ucuz veya yeniden kullanılmış bileşenler kullanıyor - satın aldığım tek şey voltaj regülatörüydü. Kesilmiş bir LED şeridi gibi etrafta yattığım her şey. Bu Eğitilebilir Kitap, bozuk saatime nasıl yeni bir hayat verdiğim konusunda size rehberlik edecek ve umarım kendinize ait bir şeyi yükseltmeniz için size ilham verebilir.

Adım 1: Parçalar

Parçalar
Parçalar
Parçalar
Parçalar
Parçalar
Parçalar

Her şeyi kontrol etmek için bir Raspberry Pi Zero kullanacağız çünkü küçük, maliyeti çok düşük ve WiFi'ye bağlanabiliyor, bu da gerçek zamanlı saate ihtiyacımız olmadığı ve bu nedenle kodu bir dizüstü bilgisayardan uzaktan kolayca güncelleyebileceğimiz anlamına geliyor. Pi Zero W'niz yoksa, bir USB WiFi dongle kullanarak bir WiFi ağına bağlanacağız.

İşte kullandığım parçaların bir listesi ama çoğu şey uygun alternatifler için değiştirilebilir. Örneğin, bir Raspberry Pi yerine, projeyi kontrol etmek için gerçek zamanlı saatli bir Arduino kullanabilirsiniz.

Kullanılan parçalar

  • Eski bir çalar saat
  • 30 cm sıcak beyaz LED şerit
  • 1x Raspberry Pi Zero + mikro SD kart
  • 1x USB WiFi dongle + mikro USB'den USB'ye dönüştürücü
  • 12x LED'ler
  • 12x 330ohm dirençler (daha sönük LED'ler istiyorsanız daha yüksek kullanın)
  • 1x TIP31a (veya diğer npn güç transistörü veya MOSFET)
  • 1x 1k direnç
  • 1x LM2596 DC-DC ayarlanabilir dönüştürücü (Raspberry Pi için 5V için 12V'u düşürür)
  • 1x 12v güç kaynağı (+ projenize girmenin yolu)
  • Saat yüzü için 10cm x 10cm ahşap (LED'lerinizi monte etmek için uygun şekilde ince olmalıdır)
  • Farklı renk tellerin çeşitli parçaları

sahip olunması gereken faydalı şeyler

  • Havya + lehim
  • Sıcak tutkal
  • multimetre
  • ekmek tahtası
  • Dişi başlık pimleri
  • Mikro SD kart okuyucu veya dönüştürücü
  • Bir bilgisayar
  • Pi'nin masaüstü ortamını kullanmak istiyorsanız Mini HDMI adaptörü + HDMI ekranı

2. Adım: Raspberry Pi'yi Ayarlama

Raspberry Pi'yi Ayarlama
Raspberry Pi'yi Ayarlama
Raspberry Pi'yi Ayarlama
Raspberry Pi'yi Ayarlama

İşletim sistemi

Raspberry Pi ekrana bağlanmayacağı için masaüstü ortamı olmayan Raspbian Buster Lite kullanmayı tercih ettim. Raspberry Pi'de daha yeniyseniz, masaüstüyle birlikte gelen standart Raspbian Buster'a bağlı kalmak isteyebilirsiniz. İşletim sisteminizi nasıl kuracağınızdan emin değilseniz, bu harika bir kaynaktır. Her iki işletim sistemi de Raspberry Pi web sitesinden indirilebilir.

Şu an için Pi'yi Mikro USB güç girişi üzerinden çalıştırın. Ayrıca USB WiFi dongle'ını da bağlayın.

Raspberry Pi ile konuşmak

Her şey paketlendikten sonra, kodu vb. değiştirmek isterseniz Pi'ye erişmek oldukça zordur. SSH kullanmak, Pi'ye bağlanmayı ve başka bir bilgisayardan kontrol etmeyi sağlar. Bu varsayılan olarak açık değildir, ancak SD kartınızın önyükleme bölümünde ssh adlı bir klasör oluşturarak yapabiliriz. Pi'nize zaten giriş yaptıysanız, bunu Terminal'e sudo raspi-config yazıp Arayüz Seçenekleri > SSH'ye gidip etkinleştirmek için Evet'i seçerek de yapabilirsiniz.

Artık Pi'nize başka bir bilgisayarda bağlanabilirsiniz. Mac veya Linux'ta terminal uygulamanızı kullanabilirsiniz ancak Windows'un çoğu sürümünde PuTTY gibi bir SSH istemcisi yüklemeniz gerekir. Ana bilgisayar adının Pi'nizin IP adresinin ana bilgisayar adıyla değiştirildiği yerde ssh pi@ yazarak Pi'ye bağlanın. Varsayılan ana bilgisayar adı raspberrypi.local'dır. Sizden henüz değiştirmediyseniz ahududu olan bir şifre isteyecektir.

Gerekli şeyleri yükleme

Önce sudo apt update ve ardından sudo apt full-upgrade çalıştırarak her şeyin güncel olduğundan emin olun.

Pi tipindeki GPIO pinlerini kontrol etmek için neye ihtiyacımız olduğundan emin olmak için sudo apt-get install python-rpi.gpio ve sudo apt-get install python3-rpi.gpio. Bunlar, Raspbian'ın tam sürümüne önceden yüklenmiş olmalıdır.

kod

İşte hepsini çalıştırmak için indirilecek kod. Bir masaüstü ortamı kullanıyorsanız, bunları Belgeler klasörünüze yapıştırın.

SSH'nin komut satırını kullanıyorsanız, cd ~/Documents yazıp enter tuşuna basarak ana klasörünüze gidin. nano test1.py ile test1.py adlı yeni bir dosya oluşturun. Bu, indirilen test1.py dosyasının kodunu yapıştırabileceğiniz nano metin düzenleyicisini açacaktır. Dosyayı kaydetmek için CTRL-O ve enter'a basın ve editörden çıkmak için CTRL-X'e basın. Kalan dosyalar için işlemi tekrarlayın.

Adım 3: LED Şeridi Kurulumu

LED Şeridi Takma
LED Şeridi Takma
LED Şeridi Takma
LED Şeridi Takma

Ne kadar ihtiyacınız olacağını görmek için önce LED şeridi saatin içine sokun, bu uzunluğu işaretleyin ve şeridi gösterildiği gibi bir sonraki kesim noktasında kesin. Şerit yerine takılmadan önce telleri şeride lehimlemek çok daha kolaydır. Bu, bunun nasıl yapılacağı konusunda oldukça iyi bir rehber, ancak emin değilseniz, şeridinizi kestiğiniz parça üzerinde lehim birleştirme üzerinde pratik yaparım. Bir teli pozitif lehim noktasına ve bir teli negatife lehimleyin. LED şeridinizin çalıştığını saatinize yapıştırmadan önce test ettiğinizden emin olun.

Kullandığım LED şerit kendinden yapışkanlı desteğini kaybetmeden önce kullanıldığından, şeridi saat çerçevesinin kenarına sabitlemek için sıcak tutkal kullanmak zorunda kaldım. Fazla uzunluğunuz varsa, tellerin bağlandığı noktayı kapatın. Şeridi daha sonra takmak isteyebilirsiniz, ancak saatin içine sokmayı daha kolay buldum.

Adım 4: LED Şeridi Kontrol Etme

LED Şeridi Kontrol Etme
LED Şeridi Kontrol Etme

LED şeridin bağlanması

LED şerit 12V ile çalışır, bu nedenle doğrudan Pi'den güç sağlanamaz. Bunları kontrol etmek için, yukarıda gösterildiği gibi Pi'ye bağlı bir güç transistörü (örn. TIP31a) kullanacağız. Öncelikle tüm bunların bir breadboard üzerinde çalıştığını kontrol etmenizi tavsiye ederim.

  • GPIO 19'u 1k direnç üzerinden tabana bağlayın
  • Verici GND'ye bağlanmalıdır
  • Kollektörü LED şeridin negatif terminaline bağlayın
  • Pozitif LED şerit terminalini +12V'a bağlayın

Test yapmak

Komut satırında belgeler klasörünüze gidin (cd ~/Documents) ve python test1.py yazın ve girin. LED şeridin parlaklığının arttığını ve azaldığını görmelisiniz. Programdan çıkmak için CTRL-C tuşlarına basın. Programdaki hızı ve parlaklığı değiştirmek için dosyayı (nano test1.py) düzenleyebilirsiniz.

RPi. GPIO'yu GPIOimport zamanı olarak içe aktar GPIO.setmode(GPIO. BCM) # BCM pin çıkışını kullan GPIO.setwarnings(False) # Diğer şeyler için kullanılan pinler hakkındaki uyarıları yoksay ledStripPin = 19 # LED şerit bu pinden sürülür GPIO.setup (ledStripPin, GPIO. OUT) # ledStripPin'i çıkış olarak ayarla pwm = GPIO. PWM(ledStripPin, 100) # 100Hz frekanslı ledStripPin üzerinde PWM dutyCycle = 0 # Yüzde olarak ilk parlaklık pwm.start(dutyCycle) deneyin: while True: için dutyCycle in range(0, 101, 1): # Fade up pwm. ChangeDutyCycle(dutyCycle) time.sleep(0.05) dc aralığında(95, -1, -1): # Fade down pwm. ChangeDutyCycle(dc) time KeyboardInterrupt hariç.sleep(0.05): # Çıkmak için CTRL-C'ye basın ve ardından: pwm.stop() # pwm GPIO.cleanup()'ı durdurun # GPIO pinlerini temizleyin

Adım 5: Saat Yüzünü Oluşturma

Saat Yüzü Yapmak
Saat Yüzü Yapmak
Saat Yüzü Yapmak
Saat Yüzü Yapmak
Saat Yüzü Yapmak
Saat Yüzü Yapmak

Saatiniz için tahta parçasını, saatinize sığması için yüzü aşağı bakacak şekilde kesin. Benimkini önden yaklaşık 3 cm geride bıraktım. LED'lerinizin çapında (genellikle 3 mm veya 5 mm) birbirinden 30 derece aralıklarla 12 delik açın. Ön yüzü aşağı bakacak şekilde zımparalayın ve istediğiniz bir cilayı uygulayın. LED'leri arka taraftan öne bakacak şekilde yerleştirin. LED'leri pozitif terminal (daha uzun tel) içeriye bakacak şekilde yerinde tutmak için sıcak tutkal kullandım. Saat yüzümün boyutu, tüm negatif terminalleri birlikte lehimleyebileceğim anlamına geliyordu (yukarıya bakın), bu nedenle 12 LED'in tümünü GND'ye bağlamak için yalnızca bir kablo gerekliydi. Ardından, her LED'e bir tel lehimleyin.

Bunu bir breadboard üzerinde test etmek istiyorsanız, Pi GPIO pinlerinden birine bağlamadan önce her bir LED ile seri olarak bir direnç (330ohm oldukça standarttır) kullanmayı unutmayın. Memnun olduğunuz bir parlaklık seviyesi elde etmek için kullandığınız direncin değeri ile oynayın. Bir t-cobbler, Pi'nin pinlerini bir breadboard'a ayırmak için gerçekten yararlıdır, ancak bunun için başlık pinlerini lehimlemeniz gerekecek. Test2.py kullanın (python test2.py kullanarak çalıştırın) ancak önce programı düzenlediğinizden ve her LED için kullandığınız Pi'nin GPIO pinlerini girdiğinizden emin olun.

RPi. GPIO'yu GPIO olarak içe aktar

alma zamanı GPIO.setmode(GPIO. BCM) # BCM pin çıkışını kullan GPIO.setwarnings(False) # Diğer şeyler için kullanılan pinlerle ilgili uyarıları yoksay # Bir, iki, … yerine karşılık gelen pin numarası ile hourPin = [bir, iki, üç, dört, beş, altı, yedi, sekiz, dokuz, on, onbir, oniki] # LED'lerin bağlı olduğu pinler i aralığında (0, 12): GPIO.setup(hourPin, GPIO. OUT) # Tüm hourPin'leri çıkış olarak ayarlayın GPIO.output(hourPin, 0) # Tüm LED'lerin kapalı olduğundan emin olun deneyin: while True: for i in range(0, 12) GPIO.output(hourPin, 1): i aralığında (0, 12) i için time.sleep(0.05) GPIO.output(hourPin, 0): time.sleep(0.05) KeyboardInterrupt hariç: # Çıkmak için CTRL-C'ye basın ve sonra: GPIO.cleanup() # GPIO pinlerini temizleyin

Adım 6: Pi'ye Güç Verme

Pi'ye Güç Verme
Pi'ye Güç Verme

Şimdiye kadar kullandığımız mikro USB kablosundan kurtulabilmemiz için Pi Zero'ya 5V almanın kolay bir yoluna ihtiyacımız var. LM7805 lineer voltaj regülatörü gibi 12V'den 5V'a düşüren bir dizi çözüm var ama bunlar çok verimli değil, bunun yerine LM2596 yongasını kullanarak daha verimli ayarlanabilir dönüştürücüyü kullanmayı seçtim. NB Bununla, çıkış voltajı gerektiği gibi 5V'a düşene kadar potansiyometreyi çevirmeniz gerekecek, bu nedenle voltajı bir şekilde ölçmeniz gerekecek.

LM2596'yı kullanmak basittir: +12V'yi IN+'ya, topraklamayı IN-'ye bağlayın. OUT+'ı Pi'nin 5V pinlerinden birine bağlayarak Pi doğrudan 5V'a bağlanabilir, ancak bunu yapmadan önce çıkış voltajını 5V olarak değiştirdiğinizden emin olun yoksa Pi'nizi kızartırsınız!

7. Adım: Devreyi ve Paketlemeyi Tamamlayın

Devreyi ve Paketlemeyi Tamamlayın
Devreyi ve Paketlemeyi Tamamlayın
Devreyi ve Paketlemeyi Tamamlayın
Devreyi ve Paketlemeyi Tamamlayın
Devreyi ve Paketlemeyi Tamamlayın
Devreyi ve Paketlemeyi Tamamlayın
Devreyi ve Paketlemeyi Tamamlayın
Devreyi ve Paketlemeyi Tamamlayın

Şimdi, yukarıdaki genel devrede birlikte gösterilen devrenin üç elemanını da ele aldık. Yerden tasarruf etmek ve devreyi daha düzenli hale getirmek için devrenizi şerit panoya veya prototip panosuna yerleştirin. Önce en küçük bileşenleri, dirençleri, ardından güç transistörünü, herhangi bir konektörü ve son olarak kabloları lehimleyin. Her şey için yeriniz olduğundan emin olmak için lehimlemeden önce devrenizi planlayın.

Her şeyi bir prototipleme PCB'sine bağladım ve Pi'nin doğrudan PCB'ye monte edilebilmesi için dişi başlık pimleri kullandım. Saat yüzündeki LED'ler, kartın bir tarafındaki dirençlerle bağlanır ve kartın diğer tarafında güç transistörü için yer ayırdım ve daha sonra eklemek isteyebileceğim diğer devreler için boş yer ayırdım.

Saat kadranını saate takın ve elektronik aksamın hepsinin yerine oturduğundan emin olun. Her şey benim için oldukça sıkıydı, bu yüzden biraz yeniden düzenleme yapmanız gerekebilir. Güç kaynağını bağlayın ve arkayı takmadan önce her şeyin çalışıp çalışmadığını kontrol etmek için SSH'den test1.py ve test2.py'yi çalıştırın.

8. Adım: Kodu Yükleyin + Bitirin

Kodu Yükle + Bitir
Kodu Yükle + Bitir
Kodu Yükle + Bitir
Kodu Yükle + Bitir
Kodu Yükle + Bitir
Kodu Yükle + Bitir

kod

Son olarak, henüz yapmadıysanız, kodu yükleyin ve istediğiniz gibi uyarlayın (nano filename.py kullanarak). SSH üzerinden Pi'ye bağlanmanın yararı, saati açmadan kodu güncelleyebilmenizdir.

Adım 2'deki bu python programları aşağıdakileri yapar:

  • light_clock_simple.py, LED'lerde saati gösterir ve belirli zamanlarda LED şeridinde yukarı ve aşağı kaybolur
  • light_clock_pwm.py yukarıdakiyle aynıdır, ancak LED'lerin parlaklığının azaltılmasına da izin verir ve dakikaları saatlerden farklı bir parlaklıkta görüntüler. İkisi arasındaki kontrastın fark edilebilir olması için her ikisinin de parlaklık seviyeleriyle oynamanız gerekecek.

Bunlar, koda ekleme yapmak için sağlam bir temel sağlamalıdır; örneğin, ışıklı alarmı ertelemek için bir düğme eklemek isteyebilirsiniz.

Pi önyüklendiğinde programı başlatmak için terminalden crontab -e ile açılabilen crontab dosyasının sonuna ' @reboot nohup python light_clock_pwm.py & ' eklememiz gerekiyor. Raspberry Pi'nizi şimdi sudo shutdown -r ile çalışıp çalışmadığını kontrol etmek için yeniden başlatın.

Potansiyel eklemeler

İşte eklenebilecek bazı ekstra işlevsellik fikirleri

  • Erteleme düğmesi ekleme
  • Bir lamba modu ekleme
  • IFTTT'ye bağlanma (örneğin, telefon alarmı kapandığında ışık yanabilir/e-posta alındığında yanıp sönebilir)
  • Kapasite dokunma özelliği ekleme, yani saati bir dokunmatik lambaya dönüştürme

PWM kullanırken, özellikle düşük parlaklıkta bazen LED'in biraz titrediğini fark edebilirsiniz. Bunun nedeni, Pi'nin PWM yazılımını kullanmasıdır, böylece CPU süreçleri görev döngüsünü etkileyebilir. Bununla ilgili yardımcı olan daha az işlem olduğundan, Raspbian Lite işletim sistemini kullandım. Donanım PWM'si birkaç pimde de mevcuttur, bu nedenle titreme bir sorun olduğunu kanıtlıyorsa, bu araştırılması gereken bir şey olabilir.

Umarım bu Eğitilebilir Yazıyı bilgilendirici bulmuşsunuzdur ve eski bir alarm saatini yükseltmek veya kendi projeniz için kod öğelerini kullanmak için ilham almışsınızdır.

LED Şerit Hız Mücadelesi
LED Şerit Hız Mücadelesi
LED Şerit Hız Mücadelesi
LED Şerit Hız Mücadelesi

LED Şerit Hız Yarışmasında İkincilik Ödülü

Önerilen: