İçindekiler:

Bluetooth Kontrollü Arduino LED Sehpa: 10 Adım (Resimli)
Bluetooth Kontrollü Arduino LED Sehpa: 10 Adım (Resimli)

Video: Bluetooth Kontrollü Arduino LED Sehpa: 10 Adım (Resimli)

Video: Bluetooth Kontrollü Arduino LED Sehpa: 10 Adım (Resimli)
Video: ARDUİNO DERSLERİ -13 SERİAL HABERLEŞME VE BLUETOOTH MODÜLÜ KULLANIMI (Hc 05 Hc 06 nasıl kullanılır) 2024, Temmuz
Anonim
Bluetooth Kontrollü Arduino LED Sehpa
Bluetooth Kontrollü Arduino LED Sehpa
Bluetooth Kontrollü Arduino LED Sehpa
Bluetooth Kontrollü Arduino LED Sehpa
Bluetooth Kontrollü Arduino LED Sehpa
Bluetooth Kontrollü Arduino LED Sehpa
Bluetooth Kontrollü Arduino LED Sehpa
Bluetooth Kontrollü Arduino LED Sehpa

Bu benim ilk gerçek Arduino projemdi ve aynı zamanda ilk talimatımdı, bu yüzden yorumlarda nazik olun:) Meraklısına çok aşina iseniz, anlamak ve ayrıntılı talimatlar vermek için biraz zaman alan soruları denemek ve cevaplamak istedim. elektronik o zaman muhtemelen her adımı gözden geçirebilirsiniz, ancak bu konuda yeniyseniz, ihtiyacınız olan her şeyi size sağlamalıdır.

Projenin amacı, bluetooth üzerinden kontrol edilebilen ve üzerinde serin oda ışığı/oyun oynamak olarak kullanılabilecek bir sehpa içerisinde 12 x 12 piksel ekran oluşturmaktı.

Bu yapı için şu parçalara ihtiyacınız olacak:

  1. Arudino Mega (veya klonu) -
  2. Arduino micro SD Card Shield (Bunu kullandım ve başlıkları lehimledim) -
  3. Mikro SD kart - Herhangi bir boyutta olur ancak FAT32'de biçimlendirilmelidir
  4. 5m WS2812B Adreslenebilir LED şerit -
  5. HC05 Bluetooth modülü -
  6. 5 V 6 Amp Güç kaynağı - (Bunu kullandım ama ebay'de yüz tane daha var)
  7. Ikea LACK masası (hobi klasiği) -
  8. 3 mm kontrplak (veya çok sağlam bir el) için lazer kesiciye erişim. Lazerle kesilmiş parçaları çevrimiçi olarak çeşitli yerlerden sipariş edebilirsiniz (örneğin
  9. Beyaz sprey boya
  10. 2 m alüminyum T profil (1 1/2 x 1 1/2 x 1/8) -
  11. 450 mm x 450 mm x 6 mm cam üst (çoğu yerel camcı sizin için özel parçalar kesebilir ama ben bu adamları kullandım
  12. 1 x 100 mikro Farad Kondansatör
  13. 2 x 1k direnç
  14. 1 x 2k direnç
  15. 1 x doğrusal döner potansiyometre
  16. Çeşitli jumperlar (muhtemelen prototipleme sırasında bir düzine)
  17. Lehimleme için en az üç renk nispeten kalın kablolar (bu, bazı büyük akımlar çekebilir, bu nedenle güç için atlama telleri önermem)
  18. Dahili devre için stripboard (endişelenmeyin çok basit)

Gerekli aletler:

  1. Bir havya + lehim
  2. bir çift keskin nişancı
  3. Tel striptizci
  4. Masayı parçalamak için bir tür Dremel veya yapboz. Bunu https://www.amazon.co.uk/gp/product/B0078LENZC/ref… spiral kesme uçları ile kullandım

Adım 1: İlk Test ve Düzen

İlk Test ve Düzen
İlk Test ve Düzen
İlk Test ve Düzen
İlk Test ve Düzen
İlk Test ve Düzen
İlk Test ve Düzen

İlk bağlantı noktası, LED şeridini ihtiyacınız olan uzunluklarda kesmektir. Bu LED şeridin kullanımı gerçekten çok kolay çünkü sadece 3 pini var ve Arduino'nun gerçek işi yapmasını sağlıyor. Makarayı şekilde gösterildiği gibi her biri 12 LED uzunluğunda 12 parçaya böldüm ve bununla nereye gittiğimi görmeme yardımcı olması için bunları masanın arkasına yerleştirdim.

Daha sonra birkaç LED'im kaldı, bu yüzden onları bir Arduino UNO'ya bağladım, çalışıp çalışmadıklarını test etmem gerekti (proje taslağında belirtilen Mega'yı da kullanabilirsiniz). Bunu yapmak için bazı erkek-erkek başlıklarını kesip çıkardım ve LED şeridin ucundaki pedlere lehimledim. Kullandığım WS2812 şeridinde 5V kablosu kırmızı, toprak beyaz ve veriler yeşil. Yanlış yönde veri göndermeye çalışmamak için WS2812B şeridinde basılı yön okuna dikkat ettiğinizden emin olun. 5V hattını Arduino'da 5V'a, Ground'u GND'ye ve Data'yı pin 6'ya seri olarak 1k dirençle bağladım. WS2812B LED'lerinin Fritzing şemasının teslim ettiğimden biraz farklı olduğunu unutmayın - sadece verilerin pim 6'ya, Gnd'nin toprağa ve 5'in 5V'a bağlı olduğundan emin olun.

Çok az sayıda LED (5 veya daha fazla) ile Arduino, gücü sağlamak için iyi olmalıdır; ancak çoğuna tam beyaz olduklarında güç sağlayamazsınız, LED'lerin her biri 60mA'ya kadar çeker ve Arduino'yu hızla bunaltabilir.

Arduino IDE'ye sahip olduğunuzu varsayarak (indirip kurmadıysanız) yonga seti türünü sahip olduğunuz Arduino'ya ayarlayın ve COM bağlantı noktasını seçeneklerde Arduino'yu gösterene ayarlayın. Şimdi FastLED kitaplığını indirin ve kurun (https://fastled.io/). striptest.h örneğini açın ve çizimdeki LED sayısını kaç tane varsa ona ayarlayın (5 tane kaldı). Doğrula'ya basın ve (her şeyin yolunda gittiğini varsayarak) Arduino'ya yükleyin ve küçük şeritteki ışıkların yandığını ve renk değiştirdiğini görmelisiniz.

Adım 2: Matris ve Stripboard'u Lehimleme

Matris ve Stripboard'u Lehimleme
Matris ve Stripboard'u Lehimleme
Matris ve Stripboard'u Lehimleme
Matris ve Stripboard'u Lehimleme
Matris ve Stripboard'u Lehimleme
Matris ve Stripboard'u Lehimleme

Şimdi LED matrisini oluşturmaya başlama zamanı.

Sahip olduğunuz üç renk telin her birinin 11 kısa uzunluğunu kesin. Bir şeridin sonundan bir sonrakinin başlangıcına kadar gidecek kadar uzun olduklarından emin olun. LED şeritlerini yerleştirirken, veri akış okunun bir yılanı takip ettiğinden emin olmanız gerekir. Bu yerleştirildikten sonra, şekilde gösterildiği gibi her bir led sırasını bir sonrakine dikkatlice lehimleyin. Her bağlantı türü için aynı rengi kullanırsanız, bu çok daha kolaydır.

Şimdi, daha fazla lehimleme, ana güç kaynağından gelen gücü idare edecek şerit levhayı oluşturmamız gerekiyor. Akımı daha iyi idare etmesi için hem 5V hem de GND için şerit tahtasındaki iki sütunu birbirine lehimledim. Oluşturmanız gereken devre için ekteki şemaya bakın. Kondansatörü lehimlerken, negatif ucun 5V rayına değil GND rayına takıldığından emin olun. Stripboard bittiğinde +VE ve GND'yi LED şeridine bağlamamız ve ayrıca daha önce kestiğimiz jumperların diğer yarısını Arduino'yu güç kaynağına ve stripboard'a bağlamak için kullanmamız gerekiyor. Dosyaları kaydedip daha sonra okuyabilmemiz için SD koparma kartını Arduino'ya eklemek için şimdi iyi bir zaman olabilir. SD koparma kartı yerleştirildiğinde, 5V rayını Vin pinine ve GND'yi Arduino'daki herhangi bir GND pinine bağlayabiliriz.

Son olarak, LED'lerin parlaklığını kontrol etmenin bir yolunu bulabilmek için, gösterildiği gibi analog giriş A0'a bir potansiyometre bağlayabiliriz.

Tüm bunlar yapıldıktan sonra, LED'lerin sayısını 144'e değiştirerek striptiz çizimini tekrar yükleyebiliriz. Bu çizimi yüklemeden önce güç kaynağının etkin olduğundan emin olun. Umarım tüm LED'ler, her şeyin çalıştığını bilmemiz için en iyi çizim desenlerinde yanmalıdır.

3. Adım: Bluetooth Modülü Entegrasyonu

Bluetooth Modül Entegrasyonu
Bluetooth Modül Entegrasyonu

Şimdi son kablo parçası olan HC05 ünitesi, şemada gösterildiği gibi Arduino Mega'ya bağlanır. HC05 ünitesinin mega üzerindeki Rx1 ve Tx1 bağlantı noktalarına bağlandığından emin olun - bu, programlamayı çok daha kolaylaştırır ve "softwareserial" kitaplığının kullanılmasını önler.

Not. HC05 ünitesi 5V giriş veya 3.3V giriş alır ve genellikle 3.3V mantığında çalışır, bu yüzden onu 3.3V rayına bağladım. Diğer bazı talimatlar, Arduino'dan 5 V mantığını HC05 modülü için yerel seviyeye getirmek için potansiyel bir bölücü devre ile Tx'i (Arduino'da) Rx'e (HC05 ünitesinde) göstermiştir. Parça listesinde 1k ve 2k dirençlerimin olmasının nedeni bu; Ancak zahmet etmedim ve masamda gayet mutlu görünüyor:)

Adım 4: Masa Hackleme

Masa Hackleme
Masa Hackleme
Masa Hackleme
Masa Hackleme
Masa Hackleme
Masa Hackleme

Şimdi LED'lerimize ve elektronik cihazlarımıza yeni bir ev vermek için masayı kesmeye başlamamız gerekiyor.

Önce LACK masaüstünün üst kısmının ortasında 450 mm x 450 mm'lik bir kare işaretleyin. Dremel (veya bir dekupaj testeresi) kullanarak kareyi düz tutmak için elinizden geldiğince kesin. Şimdi üst ve karton iç parçaları çıkararak resimde görüldüğü gibi içi boş bir masa tablası bırakabiliriz. Dremel'i tekrar kullanarak masanın alt köşesinde bir delik açabiliriz, böylece şebeke kablosunu geçirecek bir yerimiz olur.

Tablo hazırlandıktan sonra, sonraki adımlara geçmeden önce LED'leri aşağı yukarı doğru konumlarda bantlayabiliriz. Her adımdan sonra elektroniğin doğru olduğundan emin olmayı faydalı buldum, bu yüzden en iyi taslağı tekrar deneyin.

Her şeyin doğru yerde olduğundan emin olduğunuzda, güç kaynağını küçük cıvatalar kullanarak masa kenarına monte etmek için birkaç küçük delik açabilirsiniz. Arduino'yu masanın dışına monte etmeyi seçtim, böylece istersem kolayca yeniden programlayabilirim ama masanın altına baş aşağı monte edilmiş ve kolayca görülmüyor. Ayrıca potansiyometreyi masanın altına monte ettim, böylece parlaklık kontrolü güzel ve profesyonel görünüyor.

Adım 5: Lazer Kesim Parçaları

Lazer Kesim Parçaları
Lazer Kesim Parçaları
Lazer Kesim Parçaları
Lazer Kesim Parçaları
Lazer Kesim Parçaları
Lazer Kesim Parçaları

Şimdi pikselleri tanımlayabilmemiz için karelerin matrisini oluşturan lazer kesim parçalarını tanıtmamız gerekiyor. Ahşap matrisi oluşturan lazer kesimli parçaların dxf dosyalarını ve nasıl görünmesi gerektiğini anlamanız için resimlerini de ekledim. İki ayrı parçadan oluşurlar, biri her bir LED sırası boyunca uzanır ve diğeri onları keser. Kesişen parçaların alt kısmında kabloların geçmesine izin vermek için 10 mm yüksekliğinde bir boşluk var. Bu boşluk 5 mm'ye düşürülebilir, çünkü bir pikselden diğerine biraz ışık sızıntısı var gibi görünüyor.

Her iki parçanın 11 kopyasının 3 mm kontrplaktan lazerle kesilmesi ve ardından doğru şekilde oturduklarından emin olmak için bunları birleştirmeniz gerekir. Mutlu olduğunuzda, matrisi tekrar ayırın ve masanın yansıtıcı özelliklerini iyileştirmek için beyaza püskürtün. Kuruyunca tekrar bir araya getirin ve LED'lerin üzerine yerleştirin. Şimdi biraz daha kalın oldukları için püskürtmeden sonra bunları bir araya getirmek biraz daha zor olabilir, ancak endişelenmeyin, matrisi masaya koymadan önce bunları hafifçe vurun.

Adım 6: Glediatör

Glediatör
Glediatör
Glediatör
Glediatör

Artık tüm donanıma sahibiz, yazılıma bakmaya başlayabiliriz. LED'ler için animasyonlar oluşturmak üzere Glediator adlı yazılımı indirdim ve kurdum (https://www.solderlab.de/index.php/software/glediat…). Kurulum talimatları biraz karmaşık olabilir, ancak web sitesini yakından takip edin ve iyi olmalısınız. Arduino'ya yüklemek için Glediator web sitesinden taslağı da indirmemiz gerekiyor (https://www.solderlab.de/index.php/downloads/catego…). WS2812B LED'leri kullanıyoruz, bu nedenle doğru olanı indirdiğinizden emin olun (WS2812 Glediator Arayüzü). Bu çizimi açtıktan sonra NUMBER_OF_PIXELS'i 144 olarak değiştirin ve Arduino'ya yükleyin.

Glediator yüklendikten sonra masada animasyonları oynatmaya başlayabiliriz. Öncelikle, Glediator yazılımında matris boyutunu 12 x 12 olarak ayarlamamız ve ayrıca çıkış türünü HSBL - Yatay Yılan (başlangıç) Sol Alt olarak ayarlamamız gerekiyor, çünkü LED'leri bu şekilde bağladık ve renk sırasını GRB olarak değiştirdik (LED'ler bunun için veri alır). Çıkış sekmesinde, COM bağlantı noktasını açın ve LED matrisi, Glediator yazılımının orta ekranında LED modelini görüntülemeye başlamalıdır.

Animasyonlar oluşturabilir ve SD karta yükleyebileceğimiz bir.dat dosyasına kaydedebilirsiniz, yani favori animasyonlarınız bir PC'ye bağlanmaya gerek kalmadan masada gösterilebilir. Bununla ilgili birkaç çevrimiçi eğitim var (örneğin https://hackaday.io/project/5714-glediator-from-sd…). Bunun için çalışmak üzere birkaç farklı kod kaynağını değiştirdim, bu yüzden kodum iyi olmalı.

Animasyonlarınızı kaydederken "animX.dat" olarak kaydettiğinizden emin olun, burada X 1-15 arasında herhangi bir sayıdır. Kodumda birkaç satırı değiştirerek daha fazlasını uygulayabilirsiniz.

Not- Glediator dosyalarını kaydederken, yazılımın içinde LED şeridi nasıl bağladığınızı hatırlamadığı anlamına gelen bir hata vardır. Kodumda, çift sayılı satırların sırasını tersine çevirmek için basit bir işlev uyguladım, yani hepsi doğru görüntüleniyor

7. Adım: Bluetooth Seri Kontrolü

Bluetooth Seri Kontrol
Bluetooth Seri Kontrol
Bluetooth Seri Kontrol
Bluetooth Seri Kontrol

Bir akıllı telefon ve Arduino arasında bluetooth iletişimi kurmak şaşırtıcı derecede zor oldu ancak bunu çok daha kolay hale getirecek birkaç basit adım var. Öncelikle, akıllı telefonunuz için bir uygulama indirmeniz gerekecek. https://play.google.com/store/apps/details?id=com… kullandım. ama muhtemelen bir iphone eşdeğeri vardır (bunun için ödeme yapmanız gerekir; p)

HC05 modülünün üzerinde küçük bir anahtar olduğunu fark etmiş olabilirsiniz. Bu anahtara basılı tutarak çalıştırırsanız AT-moduna girer yani üzerindeki parametreleri sorgulayabilir ve dilerseniz değiştirebilirsiniz.

Ekteki çizimi Mega'ya yükleyin ve PC'nizdeki seri hızı 9600'e ayarlayın. HC05 ünitesine giden gücü kesin ve ardından yeniden bağladığınızda üzerindeki düğmeye basın. Yanıp sönme şimdi yaklaşık iki saniyede bir olmalıdır - şimdi HC05 AT modundadır.

Artık seri monitörde HC05'e komutlar gönderebilir ve yanıtını görebiliriz. "AT" yazın ve gönder'e basın ve seri monitörde "Tamam"ın geri geldiğini görmelisiniz - şimdi dinlediğini biliyoruz. Cihazın bluetooth adı "AT+NAME=XYZPQR" yazılarak değiştirilebilir; burada XYZPQR, modülün çağrılmasını istediğiniz şeydir. LightWave'imi aradım. Bluetooth modülü için varsayılan şifre 1234'tür (veya 0000) ancak bu da örneğin "AT+PSWD=9876" gönderilerek değiştirilebilir. Son olarak "AT+UART=38400" göndererek HC05'in haberleşme hızını değiştirebiliriz. Bu, çoğu HC05 modülü için varsayılan orandır, ancak benimki farklı ayarlanmıştır, bu nedenle emin olmak için ayarlamak iyi bir uygulamadır. Burada bu komutlar hakkında çok daha fazla ayrıntı var: https://www.itead.cc/wiki/Serial_Port_Bluetooth_M… ve bu adımla ilgili çok daha ayrıntılı talimatlar da var https://www.instructables.com/id/Modify -HC-05-…

Artık bir bluetooth cihazı ile modüle komut göndermeyi deneyebiliriz. Önce HC05 modülünün gücünü kesin ve ardından yeniden bağlayın. LED'in yanıp sönme hızının çok daha hızlı olduğunu görmelisiniz - bu, şimdi eşleşmeyi beklediği anlamına gelir. Akıllı telefonunuzda Arduino Bluetooth Controller uygulamasını açın ve HC05 modülünü bulun. Adı değiştirmediyseniz, muhtemelen HC05 veya benzeri olarak adlandırılacaktır. Nasıl bağlanmak istediğinize ilişkin seçenekler verildiğinde, Terminal modunu seçin. Şimdi bazı numaralar ve metinler göndermeyi ve PC'deki seri monitörün bunların alındığını bildirip bildirmediğini görmeyi deneyin. Size birkaç ipucu verebilecek çok sayıda talimat yoksa, devam edebilmemizi umuyoruz (https://www.instructables.com/id/Bluetooth-Hc-05-W… örneğin).

Burada yapılacak son şey, kontrolör girişlerini Arduino'nun bir şeyler yapabileceği sayılara eşlemektir. Aşağıdaki değerleri kullandım:

yukarı = 1, Aşağı = 2, sol = 3, Sağ = 4, Başlangıç = 5, Seç = 6.

8. Adım: Oyunlar

Oyunlar
Oyunlar

Oyun kodu için kredi almıyorum. Burada bulunan kaynak kodunu kullandım https://github.com/davidhrbaty/IKEA-LED-Table davidhrbaty tarafından yazılmış. Ancak, birkaç farklı şekilde değiştirdim:

  1. Parlaklığı değiştirebilmemiz için potansiyometre değerine dayalı bir parlaklık kısıtlama işlevi ekledim
  2. Tuğla oyununu derleyemediğim için kaldırdım
  3. Tetris bloklarının renk kodlamasını, hepsi farklı renkler olacak şekilde değiştirdim.
  4. menüyü yeniden düzenledim
  5. SD karttan animasyon oynatma seçeneği uyguladım
  6. Menüye yüksek puan takibi ve yüksek puan görüntüleme seçeneği ekledim

Ekli kod hemen çalışmalıdır, ancak değilse, benim önerim, hata mesajlarına neden olan oyunları çıkarmak ve sorunun nerede olduğunu bulana kadar kodu tekrar doğrulamak olacaktır. Ardından, yavaş yavaş daha karmaşık hale getirin.

Bu kodun asıl yazarı, gerçekten modüler ve eklenmesi kolay bir şey inşa ederek harika bir iş çıkardı. Tabloya daha fazla fonksiyon eklemek için ekstra durumlarda eklemek o kadar zor değil.

Menüdeki seçenekler şunlardır:

  1. SD Kart - SD kartta saklanan animasyonları oynatır
  2. Tetris
  3. Yılan
  4. ponpon
  5. Zar - 1 ile 6 arasında rastgele sayı üreteci
  6. Animasyon - FastLED kitaplığından bir animasyon koleksiyonu
  7. Stars Animation - EDIT - Şimdi bu animasyon yerine Conway'in Game of Life'ı uyguladım
  8. Gökkuşağı Animasyonu
  9. Yüksek Puanlar - Tetris ve yılan için yüksek puanları görüntüler

Oynatmaya başlamadan önce SD kartta biri "teths.txt" ve diğeri "snkhs.txt" adlı iki txt dosyası oluşturmanız gerekir. Bu dosyaların her ikisinde de 0 sayısını girin ve ardından bunları SD kartın kök klasörüne kaydedin. Bunlar yüksek puan izleme dosyalarıdır ve yüksek puan her geçildiğinde güncellenecektir. Sıfırlamak istiyorsanız, bir PC'de değerleri tekrar 0'a değiştirin.

LED_table programını Arduino'ya yükledikten sonra seri monitörü açabilirsiniz ve bluetooth komutlarını gönderirken görebilmelisiniz - bu şekilde her şeyin yolunda gittiğini bilirsiniz.

9. Adım: Keyfini çıkarın

Eğlence
Eğlence
Eğlence
Eğlence
Eğlence
Eğlence

Tek yapmanız gereken, ana LED tablo kodunu Mega'ya yüklemek ve ardından oynamanın keyfini çıkarmak ve yüksek puanlarınızı bana bildirmek!

Masa tablası için hala parçaların gelmesini bekliyorum (Alüminyum T bölümü ve cam) ama masa şimdi iyi çalışıyor ve üzerinde oyun oynayabiliyorum.

Herhangi bir yorumunuz, düzenlemeniz varsa veya yaptığım hataları tespit ederseniz bana bildirin.

Adım 10: Güncelle

Image
Image
Güncelleme
Güncelleme
Güncelleme
Güncelleme

Şimdi tamamen bitti!:)

Sonunda kenar için alüminyum T bölümünü teslim aldım ve eklemi gönyelemede elimden gelenin en iyisini yaptım (45 derece daha sert açılardan biri) ama neredeyse tamamen kare. Üst kısım için daha kalın bir cam levha (425 x 425 x 8 mm) almaya karar verdim ve alt tarafı Rustoleum cam buzlanma spreyi kullanarak buzladım. Gerekirse eklemlerde biraz esneklik olması için üst ve köşe parçalarını birleştirmek için normal kalafat (silikon dolgu macunu) kullandım.

Güncellenmiş güncelleme. Artık Conway's Game of Life'ı menüde hiç kullanmadığım için yıldız animasyonu yerine seçenek 7 olarak ekledim. Bu oyunun ne olduğunu bilmiyorsanız, Google, ama temelde üç basit kurala dayalı evrimi gösteren sıfır oyunculu bir oyun. Conway'in Hayat Oyunu

Güncelle^3. Kodda bazı değişiklikler yaptım, böylece artık kırmızı LED'lerin karartılmasıyla ilgili bir hata düzeltmesi ve ayrıca Menüde Seçenek 11 olarak bir Noel ağacı animasyonu içeriyor. Eğlence.

Önerilen: