- Gerekli malzemeler:
- Devre şeması:
- İşlemeyi Kullanarak Android Uygulamasını Oluşturma:
- İşleme Kodunu Anlamak:
- Arduino'nuzu programlama:
- EasyEDA kullanarak Devre ve PCB Tasarımı:
- Örnekleri çevrimiçi olarak Hesaplama ve Sipariş Etme
- Bluetooth Tabela ekranının çalışması:
İster uzun yollarda ister doktorunuzun ön kapısında olsun, bize bilgi sağlamak için her yere yerleştirilmiş tabelalarımız var. Ancak bu tabela panoları genellikle sıkıcıdır ve zaman zaman ilgimize göre yapılandırılamaz. Bu projede , 8 * 8 Matrix ekran kullanarak Bluetooth kontrollü bir Tabela oluşturacağız. Bu projenin benzersiz bir özelliği, kullanıcının 64 LED'in tamamını cep telefonundan ayrı ayrı kontrol etmesini sağlayan android uygulamasıdır. Bu, kullanıcının kolaylıkla özel tasarımlar oluşturmasını ve LED ekranda görüntülemesini sağlar, kulağa ilginç geliyor değil mi? !! Öyleyse başlayalım…
Gerekli malzemeler:
- Arduino Pro mini
- MAX7219
- HC-05 Bluetooth Modülü
- 8 * 8 LED Matris Ekranı
- 20k Direnç
- DC Varil Jakı
Devre şeması:
Devre Şeması Bu Bluetooth kontrollü LED kartı, EasyEDA uygulaması kullanılarak oluşturulmuştur. Ondan bir PCB geliştirmek için aynı şemaları kullanacağız ve EasyEDA kullanarak üreteceğiz.
Devre oldukça basittir. Tüm proje, doğrudan Arduino Board'un Raw pinine verilen 12V adaptör ile güçlendirilmiştir. Bu Ham voltaj daha sonra Bluetooth modülüne ve MAX7219 IC'ye sağlanan + 5V olarak düzenlenir. Bluetooth modülünün Tx ve Rx pinleri, seri bağlantıyı sağlamak için Arduino'nun D11 ve D10'una bağlanır.
D5 ila D7 dijital pinleri, SPI iletişimi yoluyla veri göndermek ve almak için MAX7219 IC'ye bağlanır. MAX7219'un ISET pini, 20k'lik bir Direnç aracılığıyla yükseğe çekilir.
Bu proje için bir PCB ürettim, PCB'nin tasarım dosyasını alıp aynısını kullanabilir veya devreyi bir devre tahtası üzerinde inşa edebilirsiniz. Ancak karmaşıklığından dolayı 8x8 Ekran modülü satın almanız veya PCB kullanmanız önerilir.
8x8 matris çok kullanışlı bir ekran modülüdür ve birçok harika projede kullanılabilir:
- Raspberry Pi ile 8x8 LED Matrix'i Kontrol Etme
- Arduino kullanarak 8x8 LED Matris üzerinde Kaydırma Metin Ekranı
- Arduino kullanarak 8x8 LED Matrix
- AVR Mikrodenetleyici ile 8x8 LED Matrix Arabirimi
İşlemeyi Kullanarak Android Uygulamasını Oluşturma:
Arduino'muzu programlamaya başlamadan önce, yanıt vermek için cep telefonundan ne tür veriler alacağımızı bilmeliyiz. Öyleyse Android uygulamasının nasıl oluşturulduğuna ve 8x8 LED matrisini kontrol etmek için akıllı telefonunuzda nasıl kullanabileceğinize bir göz atalım.
Bu proje için Android uygulaması İşleme yazılımı kullanılarak oluşturuldu. Açık kaynak kodlu bir geliştirme uygulamasıdır ve android uygulama ve sistem uygulamaları geliştirebildiğinden, Arduino veya diğer Mikroişlemcileri kullanarak ilginç projeler geliştirmek için kolayca indirilebilir ve kullanılabilir. İşleme'yi kullanarak zaten birkaç proje yaptık ve aşağıdaki bağlantılara tıklayarak bunları kontrol edebilirsiniz.
- İşleme Kullanarak DIY FM Radyo
- Arduino kullanarak Sanal Gerçeklik / Hareket kontrolü
- Arduino kullanarak Özel Sohbet odası.
- İşleme APP ve Ultrasonik Sensör kullanan Arduino Radar Sistemi
- Arduino ile Gerçek Zamanlı Yüz Algılama ve İzleme
- Arduino ve İşleme kullanarak DIY Hız Ölçer
- Arduino Accelerometer kullanarak Ping Pong Oyunu
- Arduino Kullanan İki Ayaklı Robot
- DIY Arduino Termal Görüntüleme Kamerası
Konuya dönersek, android uygulamasının kodunun tamamını açıklamam imkansız, bu yüzden işlemeyi kendi başınıza öğrenmeniz ve ardından nasıl çalıştığını anlamak için koda bakmanız gerekir. Bu nedenle İşleme öğrenme sürecini atlamak isteyenler için android uygulamasını aşağıdaki bağlantıdan indirebilirsiniz.
- Android Uygulamasını İndirin
Android Uygulamamızın arayüzü aşağıdadır:
APK dosyası, herhangi bir android uygulamasına doğrudan yüklenebilir ve diğer uygulamalar gibi başlatılabilir. Ancak HC-05 Bluetooth cihazınızın “HC-05” olarak adlandırıldığından emin olun, çünkü ancak o zaman çalışacaktır.
İşleme Kodunu Anlamak:
Ekranın arkasında ne olduğunu bilmek isteyen kişiler daha fazla okuyabilir, diğerleri ise bir sonraki başlığa atlayabilir. Temel olarak Android uygulaması, başlatma sırasında "HC-05" adlı bir Bluetooth cihazına bağlanır ve daire şeklinde 64 LED'den oluşan bir set görüntüler. Ardından kullanıcı daireye bastığında daire kırmızıya döner ve daire numarası Bluetooth aracılığıyla Arduino'ya gönderilir, dairenin numarası alındığında Arduino LED'i açar. Daha iyi anlamak için İşleme programının önemli satırlarına bakalım. Android uygulamasının tam kodu aşağıdaki bağlantıdan indirilebilir.
- Android Uygulaması için İşleme Kodu
64 LED'i görüntülemek için sınıfları ve nesneleri kullanıyoruz, böylece her birini kolayca ele alabiliyoruz. Aşağıdaki kodda görebileceğiniz gibi, bir dizi kullanarak 1'den 64'e yinelemek için bir for döngüsü kullanıyoruz. Bu, her LED'in kendi X konumu, Y konumu ve rengi değerine sahip olacağı ve bunları kolayca değiştirebileceğimizdi.
// dipslay bütün LED'ler (i = 1 = int i <= 64; i ++) için led_array.display (); // Tüm ledler Led sınıfını görüntüler { float X_Pos; float Y_Pos; renk renk; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = tempy; renk = tempc; } boşluk gösterimi () { dolgu (renk); elips (X_Pos, Y_Pos, led_dia, led_dia); } }
LED'ler, ekranla aynı sırada ekrana yüklenir. Her LED, LED'in çapına eşit bir mesafe ile ayrılır, bu şekilde kullanıcı tarafından o anda hangi LED'in seçildiğini kolayca ayırt edebiliriz. Aşağıdaki programda gösterildiği gibi, her elemanın LED'in X, Y konumu ve rengi bilgilerini tuttuğu bir dizi oluşturuyoruz.
void load_leds () { led_array = yeni Led; int a = 1; for (int j = 0; j <= 7; j ++) { float y = height / 6 + j * (led_dia * 1.5); for (int i = 0; i <= 7; i ++) { float x = (width / 6) + i * (led_dia * 1.5); // doldur (255); // elips (x, y, led_dia, led_dia); led_array = yeni Led (x, y, renkli (255,255,255)); a ++; } } }
Programdaki ana adım , kullanıcının herhangi bir LED'e basıp basmadığını kontrol etmektir ve eğer evet ise LED'in rengini değiştirip LED numarasını Bluetooth üzerinden göndermemiz gerekir. Artık her LED'in konumuna ve rengine kolayca hitap edebildiğimiz için, bunu sadece kullanıcının bastığı yerin X, Y değerlerini LED'lerin X, Y değerleri ile karşılaştırarak yapabiliyoruz. Değerler birbiriyle birleşirse, LED'in durumunu değiştirir ve ayrıca aşağıda gösterildiği gibi numarayı Bluetooth aracılığıyla göndeririz.
// farenin led üzerinde olup olmadığını kontrol edin // Evet ise led numarasını (int i = 1; i <= 64; i ++) { if ((mouseX <(led_array.X_Pos + led_dia / 2)) && (mouseX> (led_array.X_Pos - led_dia / 2)) && (mouseY <(led_array.Y_Pos + led_dia / 2)) && (mouseY> (led_array.Y_Pos - led_dia / 2))) {led_array = new Led (led_array.X_Pos, led_array. Y_Pos, led_color); bayt verisi = {bayt (i)}; bt.broadcast (veri); } }
Bunun dışında, program ayrıca hepsini kapatarak tam LED'i sıfırlayabilir ve ayrıca bir LED'in kırmızı (AÇIK) veya beyaz (KAPALI) olmasını sağlayabilirsiniz, böylece bunun için bir geçiş düğmemiz de vardır. Geçiş düğmesi görüntülenir ve girişi bekler. Basıldığında ilgili işlem yapılacaktır. Aynısını yapacak kod, çekme döngüsü içinde çağrılan fonksiyon olarak aşağıda gösterilmiştir.
void load_buttons () { rectMode (MERKEZ); textAlign (CENTER, CENTER); noStroke (); doldur (# 1BF2D4); rect (genişlik / 2-genişlik / 4, yükseklik / 1.3, genişlik / 4, yükseklik / 12); doldurma (0); metin ("Sıfırla", genişlik / 2-genişlik / 4, yükseklik / 1.3); // düğme 1 if (kırmızı == doğru) {dolgu (# 080F89); rect (genişlik / 2 + genişlik / 4, yükseklik / 1.3, genişlik / 4, yükseklik / 12); dolgu (255,0,0); text ("KIRMIZI", genişlik / 2 + genişlik / 4, yükseklik / 1.3);} // düğme 2 if (kırmızı == yanlış) {dolgu (# 080F89); rect (genişlik / 2 + genişlik / 4, yükseklik / 1,3, genişlik / 4, yükseklik / 12); dolgu (255); text ("WHITE", width / 2 + width / 4, height / 1.3);} // düğme 2 } void read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; eğer (color_val == - 14945580) { bayt verisi = {0}; bt.broadcast (veri); println ("RESET"); load_leds (); // tüm ledleri konum ve renkte yükle } if (color_val == - 16248951) { bayt verileri = {100}; bt.broadcast (veri); eğer (kırmızı == doğru) kırmızı = yanlış; else if (kırmızı == yanlış) kırmızı = doğru; println ("TOGGLE"); } renk_değer = 0; } }
Arduino'nuzu programlama:
Tam Arduino programı bunun için Bluetooth kablosuz Kurulu projesi kontrollü bu ekranın alt kısmında verilmiştir; doğrudan kullanabilir ve panonuza yükleyebilirsiniz. Programdaki önemli satırlar aşağıda açıklanmıştır.
Bluetooth modülü pimi 10 ve 11 bağlanır dolayısıyla bu pimleri üzerinde seri iletişim sağlamak için yazılım seri kullanmak ve sonra biz bu pimleri veriler için dinleyebilirsiniz var. Bluetooth modülünden alınan verileri alıp incoming adı verilen bir değişkene kaydediyoruz . Gelen değerin değeri "0" ise aşağıdaki kodu kullanarak tüm LED'leri kapatacağız
eğer (BT.available ()) { gelen = BT.read (); Serial.println (gelen); eğer (gelen == 0) m.clear (); // Görüntüyü temizler
Gelen değerleri kullanarak, kullanıcının cep telefonundaki hangi LED'e bastığını ve bu LED'i AÇIK veya KAPALI konuma getirmek için hava durumunu belirlememiz gerekir. Bu nedenle, değerin 100'e eşit olup olmadığını kontrol ederiz. Değer 10 ise, bu, kullanıcının LED'in rengini değiştirmek istediği anlamına gelir. Bu nedenle, LED'in açık mı yoksa kapalı mı olacağını bilmek için kırmızı değişkeni değiştiriyoruz.
else if (incoming == 100) // LED'i açıp kapatmamamız gerektiğini kontrol edin { if (red == true) red = false; else if (kırmızı == yanlış) kırmızı = doğru; Seri.print ("KIRMIZI:"); Serial.println (kırmızı); }
Son olarak , değer 65'ten fazla ise, kullanıcının bir LED'e bastığı anlamına gelir. 1'den 64'e kadar olan sayıya dayanarak kullanıcının hangi LED'e bastığını belirlememiz gerekir. Bu LED'i değiştirmek için, sırasıyla X ve Y değişkenlerinde hesaplanan ve depolanan ve aşağıdaki kodda gösterilen bu LED'in Satır ve Sütun değerine ihtiyacımız olacak. Son olarak, kırmızı değişkenin değerine bağlı olarak, kullanıcının isteğine göre LED'i açar veya kapatırız.
else if (, gelen <= 64) {// AÇIK hesaplayın ro KAPALI LED geçiş = true; Y = gelen / 8; X = gelen - (Y * 8); eğer (gelen% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); eğer (kırmızı == doğru) m.setDot ((X - 1), (Y), doğru); // LED AÇIK değilse, if (kırmızı == yanlış) m.setDot ((X - 1), (Y), yanlış); // LED KAPALI }
EasyEDA kullanarak Devre ve PCB Tasarımı:
Bu Bluetooth Kontrollü Matris ekranı tasarlamak için, EasyEDA adlı çevrimiçi EDA aracını seçtik. EasyEDA'yı daha önce birçok kez kullandım ve iyi bir ayak izi koleksiyonuna sahip olduğu ve açık kaynaklı olduğu için kullanımı çok uygun buldum. PCB'yi tasarladıktan sonra, PCB numunelerini düşük maliyetli PCB üretim hizmetleri ile sipariş edebiliriz. Ayrıca, geniş bir elektronik bileşen stoğuna sahip oldukları ve kullanıcıların PCB siparişiyle birlikte gerekli bileşenleri sipariş edebilecekleri bileşen tedarik hizmeti de sunarlar.
Devrelerinizi ve PCB'lerinizi tasarlarken, devre ve PCB tasarımlarınızı herkese açık hale getirebilirsiniz, böylece diğer kullanıcılar bunları kopyalayabilir veya düzenleyebilir ve işinizden faydalanabilir, ayrıca tüm Devre ve PCB düzenlerimizi bu devre için halka açık hale getirdik, kontrol edin aşağıdaki bağlantı:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Sen edebilirsiniz herhangi Katmanı görüntülemek katman 'Katmanlar' Pencere formu seçerek PCB (Üst, Alt, Topsilk, bottomsilk vs).
Ayrıca, EasyEDA'daki Fotoğraf Görünümü düğmesini kullanarak PCB'yi, imalattan sonra nasıl görüneceğini de görüntüleyebilirsiniz:
Örnekleri çevrimiçi olarak Hesaplama ve Sipariş Etme
Bu Bluetooth Kontrollü Matris PCB'nin tasarımını tamamladıktan sonra PCB'yi JLCPCB.com üzerinden sipariş edebilirsiniz. PCB'yi JLCPCB'den sipariş etmek için Gerber Dosyasına ihtiyacınız vardır. PCB'nizin Gerber dosyalarını indirmek için EasyEDA düzenleyici sayfasındaki Üretim Çıktısı düğmesine tıklayın, ardından EasyEDA PCB sipariş sayfasından indirin.
Şimdi JLCPCB.com'a gidin ve Şimdi Alıntı Yap veya düğmesine tıklayın, ardından sipariş etmek istediğiniz PCB sayısını, kaç bakır katmana ihtiyacınız olduğunu, PCB kalınlığını, bakır ağırlığını ve hatta anlık görüntü gibi PCB rengini seçebilirsiniz. aşağıda gösterilen:
Tüm seçenekleri seçtikten sonra, "Sepete Kaydet" e tıklayın ve ardından EasyEDA'dan indirdiğimiz Gerber Dosyanızı yükleyebileceğiniz sayfaya yönlendirileceksiniz. Gerber dosyanızı yükleyin ve "Sepete Kaydet" i tıklayın. Son olarak, siparişinizi tamamlamak için Güvenli Ödeme'ye tıklayın, ardından PCB'lerinizi birkaç gün sonra alacaksınız. PCB'yi 2 $ olan çok düşük bir oranda imal ediyorlar. Yapım süreleri de çok daha azdır, bu da 3-5 günlük DHL teslimatıyla 48 saattir, temelde PCB'lerinizi siparişinizi verdikten sonraki bir hafta içinde alacaksınız.
PCB'leri sipariş ettikten birkaç gün sonra PCB numunelerini aşağıdaki resimlerde gösterildiği gibi güzel ambalajlarda aldım.
Ve bu parçaları aldıktan sonra gerekli tüm bileşenleri PCB üzerine lehimledim.
PCB'mde, 8 * 8 Ekran modülü için yanlış ayak izini seçerek künt bir hata yaptım, bu nedenle ekranı resimde gösterildiği gibi monte etmek için bir Perf kart kullanmak zorunda kaldım. Ancak artık ayak izi PCB'deki güncellemelerdir ve düzeltilmiş PCB'yi sipariş edebilir ve ekran modülünü kolaylıkla monte edebilirsiniz.
Bluetooth Tabela ekranının çalışması:
Ya PCB'yi alarak ya da devre tahtası üzerinde bağlantı kurarak Donanıma hazır olduğunuzda, sayfanın sonunda verilen Arduino programını kullanın ve Arduino Board'unuza yükleyin. Android uygulama APK dosyası da yukarıda verilmiştir, kullanmak ve tercih Android cihazında uygulamayı yüklemek.
Donanıma güç verin ve onunla eşleştirmek için telefonunuzda HC-05 cihaz adını arayın. Geçiş anahtarı varsayılan olarak 1234 olacaktır. Bundan sonra, yeni yüklediğimiz uygulamayı açın. Uygulama ekranın üst kısmında " HC-05'e bağlı " ifadesini göstermelidir , ardından ekrandaki LED'e dokunabilir ve aynı LED'in kartta da yandığını fark edebilirsiniz.
Ayrıca Sıfırla düğmesine basarak tüm LED'i kapatabilir ve Geçiş düğmesine basarak belirli bir LED'i açıp kapatmaya karar verebilirsiniz. Varsayılan olarak, bastığınız LED açık olacaktır. Projenin tam çalışması aşağıdaki videoda bulunabilir. Çalışması konusunda herhangi bir sorun yaşarsanız, aşağıdaki yorum kutusunu kullanın veya daha fazla teknik yardım için forumlarımıza yazın. Umarım öğreticiyi anladınız ve onu oluşturmaktan keyif aldınız.