İçindekiler:

NodeMCU Kullanarak Kriket Skor Tahtası: 9 Adım (Resimlerle)
NodeMCU Kullanarak Kriket Skor Tahtası: 9 Adım (Resimlerle)

Video: NodeMCU Kullanarak Kriket Skor Tahtası: 9 Adım (Resimlerle)

Video: NodeMCU Kullanarak Kriket Skor Tahtası: 9 Adım (Resimlerle)
Video: Hacking into Android in 32 seconds | HID attack | Metasploit | PIN brute force PoC 2024, Kasım
Anonim
Image
Image
Plan
Plan

Merhaba! Kısa bir süre önce IoT (Nesnelerin İnterneti) dünyasıyla bu alanda en popüler cihaz olan ESP8266 ile karşılaştığımda tanıştım. Bu küçücük ve ucuz cihazın sunduğu sayısız olasılık beni şaşırttı. Şu anda bu konuda yeni olduğum için, onu kullanarak bir proje yapmaya ve yol boyunca öğrenmeye karar verdim. Böylece, projeler ve fikirler için interneti aramaya başladım.

W. A. Smith tarafından Arduino Cricket Score Ticker adlı harika bir projeye rastladım. Bu projede Arduino, Ethernet Shield ve SD kart ile birlikte Cricbuzz'dan canlı kriket skorlarını görüntülemek için kullanılıyor. Bu proje beni düşündürdü.

Ben Hindistanlıyım ve Hindistan'ı duyduktan sonra akla gelen ilk şey Kriket. Burada kriket dindir. Maçın tamamını izlemek için televizyon karşısında oturmak bazen zorlaşıyor. Öyleyse, neden izleme skorunu kolay, kablosuz ve taşınabilir hale getiren bir şey yapmıyorsunuz? Sadece bir bakışta sizi güncel tutmak için yeterli bilgiyi gösteren özel bir küçük cihaz.

Bir kriket hayranı değil misiniz? Sorun değil! Kod, herhangi bir XML dosyasından veri almak için kullanılabilecek XML ayrıştırıcısını içerir. Verileri almak için sadece doğru işlevleri kullanın.

Adım 1: Plan

Plan
Plan

Plan, internete erişmek ve devam eden/yaklaşan maçlarla ilgili tüm bilgileri içeren XML kodunu Cricbuzz'dan istemek için NodeMCU Geliştirme Kurulu'nu (ESP-12E modülü ile) kullanmaktır. Bu kod, SD karta bir.xml dosyası olarak kaydedilir. Dosya daha sonra gerekli verileri XML kodundan ayrıştırmak için SD karttan okunur. Bilgileri ayrıştırmak için W. A. Smith'in kodunu kullanacağım. Onun çabaları sayesinde. Arduino ve Ethernet Shield kullanarak aynısını yapmak istiyorsanız projesine göz atın.

Benim fikrim mümkün olduğunca küçültmek, özel bir PCB ve bunun için kasa oluşturmak. Şimdilik bir prototip yapalım. Ama önce, bu projede kullanılan bileşenleri tanıyalım.

Başlayalım

2. Adım: OLED Ekran

OLED Ekran
OLED Ekran
OLED Ekran
OLED Ekran

Küçük boyutu nedeniyle bir OLED ekran kullanmaya karar verdim ve ucuza satılıyorlar. Maç bilgilerini görüntülemek için yeterli olacak 0.96 ekran kullanıyorum. Ekranın herhangi bir boyutunu kullanabilirsiniz.

Kullandığım ekran, SSD1306 sürücüsü ve I2C (2 telli) arabirimi olan tek renkli bir ekran. Ekranın SPI versiyonları da mevcuttur. Onları çalıştırmak kolay bir iştir. Ekranları çalıştırmak için gereken SSD1306 ve GFX kitaplıklarını indirin. Bu kütüphaneleri yazdığı için Adafruit'e teşekkürler.

Bağlantılar çok basit.

  • GND'den GND'ye dönüştürücü
  • VCC'den 3.3V'a
  • SCL'den D1'e
  • SDA'dan D2'ye.

3. Adım: SD Kart ve Adaptör

SD Kart ve Adaptör
SD Kart ve Adaptör

SD kart, tüm bilgiler ayrıştırılana kadar XML dosyasını Cricbuzz'dan saklar. Gerekli bilgiler görüntülendikten sonra dosya silinir. 10 - 20 kB'lık bir XML dosyasını depolamak için bir SD kart kullanmak biraz abartılı ama ayrıştırmayı çok daha kolay ve anlaşılır hale getiriyor.

Herhangi bir hafıza kartı kullanılabilir. Küçük form faktörü için mikro SD kartı seçtim. Kabloları doğrudan SD karta lehimleyebilirsiniz, ancak bir devre kartı kullanmak işi kolaylaştırır. Tüm SD kartların 3.3V ile çalışması gerektiği unutulmamalıdır. Bu sadece 3.3V ile beslenmesi değil, mikrodenetleyici ile SD kart arasındaki iletişimin de 3.3V mantık seviyesinde olması gerektiği anlamına gelir. 3.3V üzerindeki voltaj ÖLDÜRÜR! NodeMCU'nun kendisi 3.3V üzerinde çalıştığı için NodeMCU söz konusu olduğunda bu konuda rahatsız olmayacağız. 5V lojik seviyeli başka bir mikrodenetleyici kullanmayı planlıyorsanız, devre kartınızın yerleşik bir seviye değiştiricisi olduğundan emin olun (Resimde gösterildiği gibi). Temel olarak 5V'yi mikrodenetleyiciden SD kart dostu 3.3V'a dönüştürür veya 'kaydırır'. Seviye değiştiriciyi 3.3V ile birlikte kullanmak (benim yaptığım gibi) çalışmasını etkilemez.

SD kart, iletişim için SPI arayüzünü kullanır. CS veya Chip Select pini herhangi bir GPIO pinine bağlanabilir. GPIO15'i (D8) seçtim. GPIO15 dışında bir pin kullandıysanız sadece kodda gerekli değişiklikleri yapın.

  • SCK'den D5'e
  • MISO'dan D6'ya
  • MOSI'den D7'ye
  • CS'den D8'e
  • VCC'den 3.3V'a
  • GND'den GND'ye dönüştürücü

SD kartınızı biçimlendirin

Kullanacağımız kütüphane FAT16 veya FAT32 dosya sistemlerini desteklemektedir. SD kartı doğru biçimde biçimlendirdiğinizden emin olun.

Adım 4: Tuş Takımını Oluşturma

Tuş Takımını Yapmak
Tuş Takımını Yapmak
Tuş Takımını Yapmak
Tuş Takımını Yapmak
Tuş Takımını Yapmak
Tuş Takımını Yapmak

Projeyi mümkün olduğunca küçük tutmak istiyorum. Bu yüzden tuş takımı için ayrı bir kart yapmaya ve daha sonra ana kartın üzerine monte etmeye karar verdim. Bu biraz yerden tasarruf sağlayacaktır.

Hazır bir anahtar matrisi satın alınabilir, ancak etrafta basma düğmelerim vardı. Ayrıca, mümkün olduğunca küçük yapmak istedim. Sıraları ve sütunları birbirine bağlayan tipik bir düzenleme, 3 x 3 matris için toplam 6 GPIO pinine ihtiyaç duyar. OLED ekran ve SD kartın da bağlanacağı düşünüldüğünde bu oldukça fazla.

Şüphe duyduğunuzda, Google dışarı! Bunu yaptım ve tüm matrisi kontrol etmek için sadece 1 pime ihtiyaç duyacak bir yol buldum. Bu, Gerilim Bölücü Matrisi kullanılarak mümkün olur. Dirençler her satır ve sütun arasına bağlanır. Bir tuşa basıldığında, belirli bir direnç kombinasyonu, bir voltaj bölücü oluşturan seri olarak bağlanır. Devre şemasına bakın. Değişen voltaj mikrodenetleyici tarafından okunacaktır. Her bir tuş farklı bir voltaj üretecek ve bu sayede matrisin çıkış voltajı okunarak hangi tuşa basıldığı kolaylıkla öğrenilebilir. Değişen voltaj seviyelerini okumak istediğimizden ve şimdi sadece yüksek ve düşük, bir Analog pin'e ihtiyacımız olacak. Neyse ki NodeMCU'da A0 olarak etiketlenmiş bir Analog pin var. Sorun çözüldü!

Bir matris satın almak istiyorsanız, şemada gösterilen dahili bağlantıları kontrol edin. Herhangi bir boyutta bir matris kullanılabilir. Sıralar arasında 2,2kΩ direnç ve sütunlar arasında 680Ω direnç kullandığınızdan emin olun.

Basmalı Düğmeleri Bağlama

Pin 1 ve 2 dahili olarak bağlıdır. Pin 3 ve 4 ile aynı. Butona basıldığında tüm pinler birbirine bağlanır. Anahtarları bir perfboard'a bağlama hakkında bir fikir edinmek için resme bakın.

Daha sonra ana karta bağlanabilmesi için 3 pinli erkek header bağladım.

Adım 5: Her Şeyi Bir Araya Getirmek

Her Şeyi Bir Araya Getirmek
Her Şeyi Bir Araya Getirmek
Her Şeyi Bir Araya Getirmek
Her Şeyi Bir Araya Getirmek
Her Şeyi Bir Araya Getirmek
Her Şeyi Bir Araya Getirmek

Bileşenleri istediğiniz yere yerleştirmeyi planlayabilirsiniz. Üzerinde herhangi bir kısıtlama yok. Avuç içine sığacak bir şey istediğim için kompakt hale getirmek için nasıl yaptığımı göstereceğim. Biraz dağınık olabilir, bu yüzden lehimleme konusunda rahatsanız benim yolumu deneyin. Kartın her iki tarafını da iki katmanlı bir PCB olarak doldurmaya karar verdim. Bir tarafta NodeMCU ve SD kart koparma kartı, diğer tarafta OLED ve tuş takımı.

SD kart çıkışı, NodeMCU için olan iki dişi başlık arasına sığar. Breakout board ile gelen açılı erkek başlıkları söktüm, döndürdüm ve tekrar lehimledim, böylece pimler resimde gösterildiği gibi dikey olarak aşağı inecek. SD kart yuvasına erişim daha kolay hale gelir.

4 pinli dişi başlığın pinlerini dik açıyla bükerek perfboard'un bakır tarafına resimdeki gibi lehimledim.

Kısa devreleri önlemek için tuş takımının altındaki lehim bağlantılarını kapatın. Ekstra koruma ve sağlamlık için tuş takımı ve anakart arasına ince bir sert köpük parçası (yaklaşık 5 mm kalınlığında) ekleyin. Son olarak, daha önce yaptığımız tuş takımını lehimleyin. Sivri uçlu bir havyaya sahip olmak kesinlikle işinizi kolaylaştıracaktır. Mümkün olduğunca kompakt hale getirmek dağınık bir işti ama sonunda yapmayı başardı.

Cihaza güç vermeden önce tüm bağlantılarınızı kısa devre açısından iki kez kontrol edin

Adım 6: Tuş Takımını Ayarlama

Tuş Takımını Ayarlama
Tuş Takımını Ayarlama

Tüm bağlantıları kontrol ettikten sonra, cihazınıza ilk kez güç vermeye hazırsınız. Parmaklar geçti! Sihirli duman yok mu? Tebrikler!

Artık klavyeyi kurmaya hazırız. Tuş takımının çalışmasını hatırlayın. Tuşa her basıldığında, NodeMCU'nun analog pinine beslenen farklı bir voltaj çıkar. ESP-12E, 10-bit çözünürlüklü bir Analogdan Dijitale Dönüştürücüye (ADC) sahiptir. 2'nin 10'a yükseltilmesi 1024'ü verecektir. Bu, basılan her tuş için 0 ile 1024 arasında bir okuma alacağımız anlamına gelir. Bakalım hangi okumaları alacağız. Ama önce, bu değerleri elde etmek için küçük bir program yazmalıyız. Arduino IDE'yi açın, aşağıdaki kodu kopyalayıp yapıştırın ve NodeMCU'ya yükleyin.

int tuş takımıPin = A0;

geçersiz kurulum(){ Serial.begin(115200); } void loop(){ int r = analogRead(keypadPin); Seri.println(r); }

  • Seri monitörü açın. Baud hızını 115200 olarak ayarlayın.
  • Şimdi herhangi bir düğmeye basın. Seri monitörde sürekli bir okuma almalısınız. Küçük dalgalanmalar iyidir. Bunlar ana kodda halledilecektir. Her anahtar için aynısını yapın.
  • Her tuşun farklı bir okuması olmalıdır.
  • Tüm değerleri not edin. Onlara daha sonra ihtiyacımız olacak.

Adım 7: Kodlayalım

Kodlayalım
Kodlayalım
Kodlayalım
Kodlayalım
Kodlayalım
Kodlayalım

Aşağıda verilen Scoreboard.ino dosyasını bilgisayarınıza indirin ve Arduino IDE kullanarak açın.

yüklemeden önce

1) Skorbord için yenileme süresini ayarlayın. Örneğin, 15 saniye için 15L.

2) Bağlanmak istediğiniz yönlendiricinin SSID'sini ve şifresini girin.

3) SD kartın CS pinini GPIO15 dışında bir pine bağlamayı seçtiyseniz gerekli değişiklikleri yapın.

4) Tüm anahtarlar için not ettiğimiz değerleri hatırlıyor musunuz? Her değer için bir anahtar numarası atamamız gerekiyor. Okumadaki dalgalanmalardan da bahsetmiştim. Bunun nedeni, anahtar kontaklarının mükemmel olmamasıdır. Uzun vadede, devrede ekstra direnç ekleyen ve voltajı değiştiren kontakların yaşlanması nedeniyle bu değer akım değerinden sapabilir. Bu sorunu kodda halledebiliriz.

5'lik bir marj ile değerin bir üst limitini ve bir alt limitini ekleyeceğiz. Örneğin, 1 tuşu için 617 okuma aldım.

  • Ondan 5 çıkarın. 617 - 5 = 612. Bu alt sınırdır.
  • Şimdi buna 5 ekleyin. 617 + 5 = 622. Bu üst sınırdır.
  • Kodun sonuna ilerleyin. Koddaki iki değer için verilen boşluğu resimdeki gibi doldurunuz.
  • Bunu her 9 değer için yapın.

if(r > 612 && r < 622){ keyNumber = 1; }

Ne anlama geliyor?

EĞER okuma (r) 612'den büyük VE 622'den küçükse, o zaman 1 tuşuna basılır. 612 ile 622 arasındaki herhangi bir değer, anahtar 1 olarak ele alınacaktır. Bu, dalgalanan okuma sorununu çözer.

Adım 8: Vakayı Oluşturma

Davayı Oluşturmak
Davayı Oluşturmak
Davayı Oluşturmak
Davayı Oluşturmak
Davayı Oluşturmak
Davayı Oluşturmak
Davayı Oluşturmak
Davayı Oluşturmak

Bu tamamen isteğe bağlıdır. Etrafında bir dava ile projenin düzgün ve eksiksiz görüneceğini düşündüm. Bu iş için uygun araçlar olmadan, benim için çok büyük bir görev olacaktı. Kasa akrilik kullanılarak yapılmıştır.

Zımpara kağıdı ile kenarları düzleştirilerek parçalar yapıştırmaya hazırlanır. Tüm parçaları birleştirmek için Fevi Kwik (Süper Yapıştırıcı) kullandım. Süper yapıştırıcı kürlendikten sonra beyaz bir kalıntı bırakır. Bu nedenle, sadece eklemler arasında uygulayın. Hızlı sertleştiği için süper yapıştırıcı ile çalışırken hızlı ve doğru olmalısınız. Akrilik Çimento bu iş için en uygunudur.

Bir dosya kullanarak USB bağlantı noktasına erişmek için küçük bir açıklık yaptı. USB kablosunu takmak için yeterince büyük olmalıdır.

Basmalı düğmeler için ön kapakta 3x3'lük bir ızgara oluşturuldu. Bu, basma düğmelerine erişimi zorlaştıracaktır. Bu sorunu çözmek için, her tuş için kare parçalar kestim, böylece düğmeleri artık yüzeye çıkacak.

Çok fazla zımparalama, kesme, sabitleme ve ayarlamadan sonra nihayet yapıldı!

Adım 9: Eğlenin

İyi eğlenceler!
İyi eğlenceler!

Sonunda, tüm zor iş yapılır. Mini puan tablonuzu güçlendirin ve oyunla güncel kalın.

Açıldıktan sonra, önce erişim noktasına bağlanır. SD kartı başlatır. SD kart başlatılmazsa bir hata gösterecektir.

Tüm maçların bir listesi, maç numarasıyla birlikte görüntülenecektir.

Tuş takımını kullanarak eşleşme numarasını seçin.

Puanlar görüntülenecektir. Ekranda görmek istediğiniz her şeyi özelleştirebilirsiniz. Kodu açıklamak için fazla derine inmeyecektim. Ayrıştırmanın nasıl çalıştığına dair ayrıntılı bir açıklamayı burada bulabilirsiniz.

Menüye geri dönmek için, "Skorlar Alınıyor…" sayfası görüntülenene kadar GERİ (Key 8) düğmesini basılı tutun.

Gelecek planları

  • ESP8266 12-E modülü ile özel bir PCB tasarlayın.
  • Şarj edilebilir bir pil ekleyin.
  • Kodu yeni özelliklerle geliştirin.

Umarım yapıyı beğenmişsinizdir. Kendin yap ve eğlen! Her zaman iyileştirme için biraz alan ve öğrenilecek çok şey vardır. Kendi fikirlerinizle gelin. Yapımla ilgili herhangi bir önerinizi yorum yapmaktan çekinmeyin. Sonuna kadar dayandığınız için teşekkürler.

Önerilen: