İlan
Noel yine burada ve yılın en sevdiğiniz bayramı olsun ya da sizi soğuk bir ter içinde çıkarıyor olsun, süslemeler yükselmeye başlıyor. Bu yıl neden bazı DIY teknolojilerini süslemelerinize dahil etmelisiniz?
Bu projede, 20 $ 'ın altında sıfırdan hava koşullarına dayanıklı, hareketle etkinleştirilen 8 x 8 LED matris inşa edeceğiz. Standart bir Noel kapı çelengi ortasına sığacak şekilde tasarlanmıştır, ancak evin her yerinde kullanılabilir. Ve pille çalıştığı için, evden uzakta herhangi bir yerde!
Parça listesi
Bu proje için ihtiyacınız olacak:
- Arduino.
- Kullandım Nano çünkü küçük boyutlu, ancak neredeyse her Arduino uyumlu mikrodenetleyici Arduino Satın Alma Rehberi: Hangi Tahtayı Almalısınız?Dışarıda çok farklı Arduino tahtaları var, kafanız karıştığı için affedilirsiniz. Projeniz için hangisini satın almalısınız? Bu Arduino satın alma rehberi ile yardımcı olalım! Daha fazla oku .
- 64 x kırmızı LED.
- 8 x 220 Ohm direnç.
- PIR hareket sensörü.
- çok Arduino başlangıç kitleri Arduino Başlangıç Kitinde Neler Var? [Açıklamalar MakeUseOf] Daha önce MakeUseOf'da Arduino açık kaynaklı donanımını tanıtmıştım, ancak bundan bir şey oluşturmak ve başlamak için sadece gerçek Arduino'dan daha fazlasına ihtiyacınız olacak. Arduino "başlangıç kitleri" ... Daha fazla oku bunlarla birlikte gel. 'Dan bir çoklu paket aldım 10 dolara Amazon.
- 1 adet prototip kurulu.
- Burada kullanılanı 9 x 7 cm idi, ancak istediğiniz herhangi bir boyutu kullanabilirsiniz.
- 7-12v pil.
- Basit bir pil takımı burada bütçe nedenleriyle kullanılıyor, ancak mobil banka şarj En İyi Pokemon Go Güç BankalarıPokemon Go, telefonun pilini tüketiyor. Telefonunuzdan biraz daha Pokemon yakalama suyu sıkmak bir güç bankası gerektirir. Ama en iyi batarya nedir? Daha fazla oku daha da uzun sürebilir.
- Çeşitli kısa tel parçaları.
- Tupperware kutusu veya benzeri hava koşullarına dayanıklı muhafaza.
- Tüm bileşenlerinizi içine sığacak kadar büyük olduğundan emin olun!
- Yılbaşı çelengi.
- Herhangi biri yapacak, sadece muhafaza kutusunun içine sığacağından emin olun.
- Havya ve lehim.
Bileşenleri doğrudan Nano'ya lehimleyebildiğiniz için kesinlikle gerekli olmasa da, test yaparken de küçük bir breadboard buldum. Sıcak tutkal tabancası da tüm parçaları bir araya getirmeye yardımcı olur.

Bu proje oldukça fazla lehimleme gerektiriyor ve yeni başlayanlar için göz korkutucu görünebilir. Ben şahsen hala lehimlemeye yeni başladım ve göründüğü kadar zorlayıcı veya zaman alıcı olmadığını gördüm. Ayrıca lehimleme konusunda yeniyseniz, burada bazı yardım etmek için iyi ipuçları Bu Basit İpuçları ve Projelerle Lehimin Nasıl Yapıldığını ÖğreninSıcak demir ve erimiş metal düşüncesi sizi biraz korkutuyor mu? Elektronikle çalışmaya başlamak istiyorsanız, lehim yapmayı öğrenmeniz gerekecek. Yardım edelim. Daha fazla oku .
Lehimleme fikrine gerçekten hevesli değilseniz, bu proje aşağıdakilerle de mümkündür: LED şeritler Hafta Sonu Projesi: Dev LED Piksel Ekran OluşturunLED pikselleri seviyorum: parlak, kontrolü kolay, ucuz ve çok yönlü. Bugün, onları duvara asılabilen büyük bir piksel ekrana dönüştüreceğiz. Daha fazla oku veya başlangıç kitinizde bulunabilecek hazır bir LED matrisi. Bu rotaya gitmeye karar verirseniz bazı kod ayarlamaları yapmanız gerekecektir.
Arduino'yu Kurma
Arduino'nun devre şemasını ve PIR sensörüne ve LED matrisimize bağlayacağımız kablolarla başlayacağız.

Matrisin İçinde
Şimdi 8 x 8 LED matrisimizi yapmak için. Prototip panosunda tam olarak istediğiniz yerde olduğundan emin olmak için matrisin bir satırını ve bir sütununu oluşturmak iyi bir fikirdir.

Yukarıdaki fotoğrafta, tüm LED'ler anotlar (daha uzun, pozitif bacak) protokolün üstüne gelecek şekilde yerleştirilir. Bu, ortak anotların sütunlarını bir araya getirerek ve ortak katot satırlarını (daha kısa, negatif bacak) oluşturacağımız için önemlidir. Bunu şimdi almak daha sonra baş ağrılarından kurtaracak!
Ortak bir sıra katot matrisi oluşturacağız, bu diyagram hepsinin nasıl bağlandığını gösterir.

İlk başta biraz ürkütücü görünebilir, ancak oldukça basit bir yapılandırmadır. Her sırada, tüm katotlar sağdan sola birleştirilir ve daha sonra Arduino pinlerimizden birine bağlanır. Bundan sonra, her anot sütunu için aynısını yapıyoruz. Bu şekilde, hangi sütuna güç uyguladığımıza ve hangi sıraya toprağa katıldığımıza bağlı olarak dizideki herhangi bir LED'i açabiliriz.
Lehim Başlasın
İlk LED dizinizi yerleştirerek başlayın. Tüm anotların tepeye baktığından emin olun ve ters çevirin. Her köşeye başka bir LED eklemenin ve üstüne elastik bir kablo kullanarak başka bir protokol parçası takmanın her şeyin yerinde kalmasına yardımcı olduğunu buldum.

Şimdi, her bir LED'in katot (kısa) bacağını sola doğru bükün, böylece hepsi birbirleriyle çakışır. Sol taraftan başlamak ve doğru çalışmak en kolay yoldur. Daha büyük bir protokol parçası kullanıyorsanız, önce bunları panoya lehimleyebilir ve pedleri kullanarak birbirine bağlayabilirsiniz. Katotların hiçbirini tahtadaki diğer çizgilere veya anotların herhangi birine birleştirmemeye dikkat edin!

Bu işlemi sekiz satırın tümü için tekrarlayın ve işiniz bittiğinde şöyle görünen bir şeye sahip olmalısınız:

Anotlar atlama!
Anot sütunları biraz daha hareketsizdir. Yukarıdaki şemada, anotlar bir katot sırasını her geçtiklerinde eğrilir. Çünkü satırlara hiç dokunamazlar. Anotları katot satırlarının üzerinden bükmeli ve birbirine eklemeliyiz. Bacakları bükmek için bir kalem kullanmanın çok yardımcı olduğunu görebilirsiniz.

Bunu her anot sırası için yapın ve her bir üst anoda bir direnç takın. Muhtemelen direnci protokolün bir sonraki deliğine koymak ve lehim kullanarak pedlere katılmak daha kolay bulacaksınız. Şimdi böyle bir şeye sahip olmalısınız:

Tebrikler! LED matrisi tamamlandı. Kırılma olmadığından ve sütunların hiçbirinin satırlara değmediğinden emin olmak için bu aşamada lehimlemenizi iyice kontrol edin. Güzel görünmüyorsa endişelenmeyin, çalışması için ihtiyacımız var! Sütun uçlarından birine 5v ve sıra uçlarından birine topraklayarak her bir LED'i ayrı ayrı kontrol edebilirsiniz.

Her şey yolundaysa, her sütuna ve her satıra kanca telleri takın ve bunları yukarıdaki şemada gösterildiği gibi Arduino'nuza takın.
Kod Yazalım
Arduino IDE'yi açın ve kartınızı ve portunuzu seçin. Arduino'da yeniyseniz, buna göz atın başlangıç kılavuzu. Arduino'ya Başlarken: Başlangıç KılavuzuArduino esnek, kullanımı kolay donanım ve yazılıma dayalı açık kaynaklı bir elektronik prototipleme platformudur. Sanatçılar, tasarımcılar, hobiler ve etkileşimli nesneler veya ortamlar oluşturmak isteyen herkes için tasarlanmıştır. Daha fazla oku
Bu kodu düzenleyiciye girin. Bilmiyorsanız oldukça yoğun bir koddur, ancak kullanılabilir buraya nasıl çalıştığını anlamak için tamamen açıklamalı.
const int row [8] = {2,3,4,5,6,7,8,9}; const int col [8] = {10,11,12,14,15,16,17,18}; int pirPin = 19; int pirState = DÜŞÜK; int val = 0; bool pirTrigger = yanlış; const int pirLockTime = 12000; int pirCountdown = pirLockTime; int piksel [8] [8]; const int refreshSpeed = 500; int countDown = refreshSpeed; int currentCharIndex = 0; typedef bool CHAR_MAP_NAME [8] [8]; const CHAR_MAP_NAME boş = {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, }; const CHAR_MAP_NAME threedownthreein = {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, }; const int noOfFrames = 5; const CHAR_MAP_NAME * charMap [noOfFrames] = { & blank, & threedownthreein & boş, & blank, & threedownthreein. }; void setup () {for (int i = 0; i <8; i ++) {pinMode (satır [i], ÇIKIŞ); pinMode (sütun [i], ÇIKIŞ); // hareket sensörü pimi Modu (pirPin, INPUT); digitalWrite (col [i], DÜŞÜK); } } void screenSetup () {const CHAR_MAP_NAME * thisMap = charMap [currentCharIndex]; için (int x = 0; x <8; x ++) {for (int y = 0; y <8; y ++) {bool on = (* thisMap) [x] [y]; eğer (açık) {piksel [x] [y] = YÜKSEK; } başka {piksel [x] [y] = DÜŞÜK; }}} currentCharIndex ++; if (currentCharIndex> = noOfFrames) {currentCharIndex = 0; }} void refreshScreen () {for (int currentRow = 0; currentRow <8; currentRow ++) {digitalWrite (satır [currentRow], DÜŞÜK); for (int currentCol = 0; currentCol <8; currentCol ++) {int thisPixel = piksel [currentRow] [currentCol]; digitalWrite (col [currentCol], thisPixel); if (thisPixel == YÜKSEK) {digitalWrite (col [currentCol], LOW); }} digitalWrite (satır [currentRow], YÜKSEK); }} void loop () {val = digitalRead (pirPin); if (val == YÜKSEK) {pirTrigger = true; } else if (val == DÜŞÜK && pirCountdown <= 0) {pirTrigger = false; pirCountdown = pirLockTime; } if (pirTrigger == true && pirCountdown> 0) {refreshScreen (); geri sayım--; pirCountdown--; if (countDown <= 0) {countDown = refreshSpeed; screenSetup (); } } }
Anlaşılması gereken önemli kısımlar:
refreshSpeed değişken. Bu değişken, her ekran arasındaki sürenin nasıl yenileneceğini belirler. Daha büyük bir sayı daha uzun bekleme anlamına gelir.
Sabit CHAR_MAP_NAMEs. Bu, görüntülemek istediğiniz her karakter haritasını (veya bu şekilde düşünülmesi daha kolaysa çerçeveyi) koyduğunuz yerdir.
noOfFrames değişken. Bu, tam bir oyunda kaç kare görüntüleneceğini belirler. Karakter eşleme sayısından farklı olabileceğini unutmayın. Örneğin, “A CAT” görüntülemek istiyorsanız, yalnızca dört farklı kare tanımlamanız gerekir: boş, bir bir, bir C ve bir T.
Şimdi, hareket sensörü hareket algıladığında LED ekran LED'i soldan üç aşağı ve üç kez yanıp sönmelidir. Doğru şekilde görüntülenmezse, her şeyin doğru yerde olduğundan emin olmak için kablolarınızı tekrar kontrol edin! Kendi resminizi veya mesajınızı eklediğinizde, erken kesilebilir veya çok uzun süre oynatılabilir. Değiştirmeyi deneyin pirLockTime değişkenini istediğiniz kadar oynatın.
Her bir çerçeveyi LED ekrana ekleme işlemi biraz sıkıcı olabilir, bu yüzden bu e-tablo LED matrisiniz için metin ve resim oluşturmayı biraz daha kolaylaştırmak için (düzenleyebilmeniz için Google E-Tablosunun bir kopyasını oluşturun).
E-tabloyu kullanarak, oluşturmalarınızı doğrudan koda kopyalayabilirsiniz.
Elemanları Cesur Hale Getirin
Artık çalışan bir LED matrisimiz olduğuna göre, kış havasında hayatta kalabilmek için bir yola ihtiyacımız var. Bu yöntem tropik bir fırtınaya dayanamayabilir veya havuza batırılamazken, tüm elektronik parçaların elemanlardan korunmasını sağlamak yeterli olmalıdır.
15 cm çapında ve 6 cm derinliğinde yuvarlak bir Tupperware kutusu kullandım. Kapakta LED matrisinizden biraz daha büyük bir pencere kesin ve içine sıvı girmesi için yer bırakmayacağınızdan emin olarak şeffaf bir plastik film takın. Bazı ambalajlardan sağlam plastik en iyi sonucu verirdi, ama tüm bunlara sahiptim. Her iki iş de güçlü su geçirmez bantla kolayca yapılabilmesine rağmen, protokol için bazı montaj parçaları da ekleyebilirsiniz.

Ardından, pencerenin altında küçük bir delik açın, ardından PIR sensörünüz sadece geçene kadar dikkatlice ve yavaşça genişletin. Mümkün olduğunca rahat oturmasını istiyorsunuz.

PIR sensörünüzü takın ve görebileceğiniz boşlukları bant veya sıcak tutkal ile doldurun.

Kutunun düzgün kapanmasını engelleyebilecek tüm bantları veya yapıştırıcıları temizleyin ve pilinizle birlikte tüm bileşenlerinizi kutuya ekleyin. Burada, doğrudan Nano'nun VCC pinine takılan basit bir AA pil takımı kullanıldı. Yapıyı çelenkin ortasına asmaya yardımcı olmak için muhafazanın dışına birkaç küçük mantar parçası eklendi.
Ve Bitti
Kutu mühürlendiğinde, Noel çelenkinizle asın ve ziyaretçilerinizin yüksek teknoloji alt 20 $ kişisel hoş geldiniz tepkilerini bekleyin! Bir adım daha ileri gidebilir ve harika DIY süslemeleri Mükemmel Geeky Tatilleri için 3D Baskılı Noel SüsleriNeden bu Noel ve 3D yazdırmak için kendinize biraz para biriktirmiyorsunuz? Daha fazla oku evin başka bir yerinde de!

Bu projede, sıfırdan bağımsız bir LED matris sistemi inşa ettik, bu da hareketle etkinleştirildi ve en zorlu hava koşullarının dışında dışarıda hayatta kalabiliyor. Bu yapı, diğer projelerde tatil sezonu bittikten çok sonra faydalı olacak ve aynı teknik, diğer projeler için de ucuz hava koşullarına dayanıklı muhafazalar oluşturmak için kullanılabilir.
Noel'inize bir DIY bükümü vermek için bir şey yaptınız mı? Bu yıl DIY temalı Noel hediyeleri planlıyor musunuz? Aşağıdaki yorumlarda bize bildirin!
Ian Buckley, Berlin, Almanya'da yaşayan serbest bir gazeteci, müzisyen, sanatçı ve video yapımcısıdır. Yazmadığı veya sahnede olmadığı zaman, çılgın bir bilim adamı olma umuduyla DIY elektronik veya koduyla uğraşıyor.