İçindekiler:

DFRobot FireBeetle ESP32 ve LED Matrix Kapağını Kullanarak 4 Proje Bir Arada: 11 Adım (Resimlerle)
DFRobot FireBeetle ESP32 ve LED Matrix Kapağını Kullanarak 4 Proje Bir Arada: 11 Adım (Resimlerle)

Video: DFRobot FireBeetle ESP32 ve LED Matrix Kapağını Kullanarak 4 Proje Bir Arada: 11 Adım (Resimlerle)

Video: DFRobot FireBeetle ESP32 ve LED Matrix Kapağını Kullanarak 4 Proje Bir Arada: 11 Adım (Resimlerle)
Video: Обзор DFRobot FireBeetle Covers-24x8 LED Matrix 2024, Temmuz
Anonim
Image
Image
Projeler için Ortak Kitaplıkları yükleyin
Projeler için Ortak Kitaplıkları yükleyin

Bu projelerin her biri için bir talimat vermeyi düşündüm - ama sonunda gerçekten en büyük farkın her proje için yazılım olduğuna karar verdim, sadece büyük bir talimat vermenin daha iyi olduğunu düşündüm!

Donanım her proje için aynıdır ve ESP32 cihazını programlamak için Arduino IDE kullanıyoruz.

Peki donanım nedir: Donanımın tamamı DFRobot'taki arkadaşlarım tarafından sağlandı, çok iyi eğitimleri var ve bunun için kurulumu kolay çekirdek panoları var. Ayrıca iyi bir destek sistemine ve ABD'ye oldukça hızlı sevkiyata sahip olun.

Tam açıklama Firebeetle ESP32 kartı ve LED Matrix DF Robot tarafından sağlanmıştır, sunulan projeler ve videolar bana aittir.

Bu projelerin tümü bir DFRobot FireBeetle ESP32 IOT Mikro Denetleyici kullanır

www.dfrobot.com/product-1590.html

Destek wiki - kart çekirdekli kurulum talimatları burada bulunabilir:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Ayrıca bir FireBeetle Covers 24x8 LED Matrix'e (MAVİ) ihtiyacımız var

www.dfrobot.com/product-1595.html

MAVİ ledleri sevmiyorum - Farklı renkleri de var.

YEŞİL -

KIRMIZI -

BEYAZ -

SARI -

Sadece bir LED Matrix'e ihtiyacınız var - renk sizin seçiminiz, hepsi aynı şekilde çalışıyor.

LED Matrix desteği wiki burada bulunabilir:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Burada Arduino Kütüphanesine bir bağlantı buluyoruz.

github.com/Chocho2017/FireBeetleLEDMatrix

Biraz sonra bunlar hakkında daha fazla bilgi….

İsteğe bağlı, ancak belki de kullanışlı olan bir şey bir MicroUSB 3xAA Pil Tutucudur.

www.dfrobot.com/product-1130.html

Yani gereken donanım bu - 4 proje nedir -

Adım 1: Projeler

Image
Image

Proje 1: Askeri Zaman gösterimi veya AMPM zaman gösterimi ile basit bir LED Matrix NTP Saatidir, Bu saat, bir NTP'ye (zaman sunucusu) bağlanacak ve zamanı alacak ve yerel saati elde etmeniz için bir off set uygulayacaktır. LED Matrix'te zamanı gösterecektir. - Çok basit bir saat ve çok basit 1. proje.

Proje 2: ISS Geçiş Tahmin Ekranı, bu proje işlemcinin 2. çekirdeğini kullanıyor. ISS'nin ne kadar yakın (mil olarak) olduğunu, bir sonraki ISS'nin bulunduğunuz yerden ne zaman geçeceğini (UTC saatinde) ve isteğe bağlı olarak uzayda kaç kişinin olduğunu gösterecektir. Bu bilgilerin çoğu sık sık değişmediğinden, 2. çekirdeği yalnızca geçiş tahminlerinin güncellemelerini veya her 15 dakikada bir uzayda kaç kişinin olduğunu kontrol etmek için kullanırız. Bu şekilde sunucuya çok fazla API çağrısını önleyebiliriz. Bu proje biraz daha karmaşık, ancak yine de yapılması oldukça kolay.

Proje 3: MQTT kullanarak Basit Hareketli Mesaj İşareti, ESP8266 D1 mini kartı için yapılmış bir projeyi tekrar ziyaret ettim ve bu 8x8 LED Matrix - Fikir bir MQTT brokerine bağlanmak, cihazın olduğu bir konuya mesaj göndermek. dinlemek - ve bu mesajı görüntülemek. Her şey ayarlandıktan sonra yapmak oldukça kolay ve çok basit. Ve bir masaüstü bilgisayarda MQTT istemci yazılımını kurmanın birkaç adımı vardır. Kurulumdan sonra MQTT, birçok IoT cihazı tarafından mesaj göndermek ve almak için kullanılan çok güçlü bir mesajlaşma protokolüdür.

Proje 4: Hava İstasyonu Ekranı - Squix78 ve ThingPulse tarafından yapılan ESP8266 D1 mini hava istasyonuna dayalıdır. Verilerimizi Wunderground'dan alıyoruz ve mevcut koşulları ve sıcaklığı Fahrenheit derece cinsinden gösteriyoruz. Verilerimizi her 10 dakikada bir güncellemek için ESP32'nin 2. çekirdeğini kullanıyoruz. Kurulumu da basittir.

BOUNS MİNİ ÖRNEKLERİ: Kitaplık (ve yukarıdaki eskizler) 8x4 yazı tipi kullanır, kitaplık ayrıca bu BOUNS mini örneklerinin çoğunda kullandığım 5x4 yazı tipi içerir. Küçük yazı tipi ile not edebileceğim birkaç sorun var, bunlardan biri cihazın WIFI'sini kullandığınızda sorunlara neden oluyor gibi görünüyor. Bu, daha fazla keşfetmek istediğim ama zamanım olan bir şey. Diğer sorun ise kaydırma yapmıyor, yalnızca daha büyük yazı tipi kaydırabiliyor. Dolayısıyla bu örneklerin hiçbiri WIFI kullanmıyor - sadece ekranı güncelliyorlar ve bunlarla ilgili daha fazla bilgi daha sonra olacak.

Başlayalım…..

Adım 2: DFRobot FireBeetle ESP32 Kartını Arduino IDE'ye Takın

Bu yüzden, Arduino IDE için kart çekirdeğini kurma konusunda sizi DF Robot Wiki'ye yönlendireceğim.

Modern IDE (1.8.x veya daha iyisi) ile yapmak oldukça kolaydır.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Arduino IDE'de yerleşik WiFi kitaplığının sorunlara neden olduğunu buldum (kütüphane dizininize yüklenmiş olabilecek diğer WiFi Kitaplıklarını PS soruna neden olabilir veya olmayabilir). Sorunu çözmenin tek yolu (veya en azından en kolay yolu), WiFi kitaplığını IDE dizininden kaldırmak. Ne yazık ki, nereye kurulabileceğini söylemenin iyi bir yolu yok - bu, IDE'nin nasıl kurulduğuna ve hangi işletim sistemini kullandığınıza bağlıdır.

Yaptığım şey, sorunlara neden olan WiFi kitaplığını bulmak ve WiFi dizinini masaüstünüze taşımak… ve IDE'yi yeniden başlatmak. Bu şekilde Arduino WIFI kartları için ihtiyaç duymanız durumunda kütüphaneyi saklayabilirsiniz.

Gördüğüm sorunların %90'ı yukarıdaki sorunla ilgili. Arduino IDE dizininden veya Arduino Library dizininden WiFi kullanımıyla ilgili çok sayıda derleme hatası alıyorsanız, sorununuz budur.

2. sorunum bazen eskiz yüklemesinin yüklenememesidir - Bu durumda yükleme düğmesine tekrar basmam gerekiyor ve işe yarıyor.

Ve son olarak, seri konsolu açıp kapatırsanız - FireBeetle donar.

DF Robot'un tahta çekirdeği üzerinde aktif olarak çalıştığını biliyorum ve tahtaya sahip olduğum kısa sürede yeni bir çekirdek yayınladılar. Ne yazık ki en büyük sorunum olan WiFi sorununu çözmedi.

* Espressif'in kurulabilecek bir 'genel' çekirdek yöneticisi var, çekirdek FireBeetle ESP32 kartını içeriyor, ancak pinlerin nasıl numaralandırıldığıyla ilgili bir sorunum vardı. Buradaki ilginç olan şey, WiFi kitaplığının yerleşik WiFi kitaplığı ile çalışmasıdır - bu yüzden bu soruna hemen köşede bir çözüm olduğunu biliyorum.

Espressif çekirdeklerini denemek isterseniz daha fazla bilgiyi buradan edinebilirsiniz:

github.com/espressif/arduino-esp32

Şahsen, yaşadığım birkaç soruna rağmen DF-Robot çekirdeğinin çalışma şeklini seviyorum.

** NOT: Ubuntu 16.04 tabanlı LinuxMint 18 kullanıyorum, sanırım bunu başka bir makinede denemedim, ancak yaptığım bazı internet aramalarına dayanarak sorunun tüm işletim sistemlerinde mevcut olduğuna inanıyorum. **

Adım 3: Projeler için Ortak Kitaplıkları yükleyin

Projeler için Ortak Kitaplıkları yükleyin
Projeler için Ortak Kitaplıkları yükleyin

Bu projelerin tümü birkaç ortak kitaplık kullanır, bu nedenle bu adımı şimdi yapmak daha kolaydır.

Kitaplığa bağlı olarak onu kitaplık yöneticisinde bulabilirsiniz - ki bu kitaplık kurmanın açık ara en kolay yoludur.

Diğer bir yaygın yol da aynı şekilde çalışan bir zip dosyası aracılığıyla yüklemektir. Ancak genellikle manuel kurulum yöntemini kullanırım. Arduino Web sitesinde üç yöntem hakkında iyi bir eğitim var.

www.arduino.cc/en/guide/libraries

Bu kütüphaneler için manuel yöntemi tavsiye ederim - çünkü aynı ada sahip birkaç farklı kütüphane var, kütüphane yöneticisini kullanarak yanlış olanı bulabilirsin.

Tüm bu projeler, wifi'nize bağlanmayı kolaylaştırmak için bir WiFi Yöneticisi kullanır - Bunu yapmaya karar verdim, böylece projenizi taşımanız gerekiyorsa, kartı yeniden programlamanız gerekmez. Bu, ESP8266 kartları için kullandığım bir şey ve iyi çalışıyor - mükemmel değil. Şans eseri kütüphane, bbx10 adlı bir github kullanıcısı tarafından ESP32'yi kullanmak üzere taşınmıştır. (Bu yönetici ayrıca ESP8266 panolarıyla da çalışmalıdır)

Bunun için de 3 adet kütüphane kurmamız gerekiyor.

WiFiManager -

Web Sunucusu -

Ve son olarak DNSServer -

Ayrıca tüm çizimler için ortak olan, LED Matrix için DF Robot DFRobot_HT1632C kitaplığıdır.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Kütüphane burada bulunabilir (Yine manuel kurulum yöntemini tavsiye ederim)

github.com/Chocho2017/FireBeetleLEDMatrix

Özel bir not: github depomda - Birkaç tane biraz değiştirilmiş DFRobot_HT1632C kitaplığım var

github.com/kd8bxp/DFRobot-FireBeetle-ESP32…

Değişiklik, daha küçük bir yazı tipi içindir ve yalnızca bazı bonus örnekleri için kullanılır. Değiştirilmiş kitaplığı kullanabilirsiniz ve herhangi bir soruna neden olmamalıdır. Ayrıca, bitmap görüntüleri yapabilen biraz değiştirilmiş bir kitaplık (bazı eskizlere sekme olarak eklenmiştir) vardır.

Biraz değiştirilmiş sürümü kullanmayı seçerseniz, "değiştirilmiş kitaplık" dizinini FireBeetleLEDMatrix olarak yeniden adlandırmanız ve bu klasörü Arduino kitaplık dizininize taşımanız gerekir. Bu projeler için bu sürümü kullanmak zorunda değilsiniz, bonus örneklerinden daha küçük yazı tiplerinden bazılarını denemek istiyorsanız bu gereklidir.

Bunlar ortak kütüphanelerdir - her proje için bazı özel kütüphaneler kuracağız.

LED Matrix'e geçelim….

Adım 4: 24x8 LED Matris Kapağı

24x8 LED Matris Kapağı
24x8 LED Matris Kapağı
24x8 LED Matris Kapağı
24x8 LED Matris Kapağı
24x8 LED Matris Kapağı
24x8 LED Matris Kapağı

LED Matrix için DF Robot Eğitimi ile birlikte takip edeceğiz

www.dfrobot.com/wiki/index.php/FireBeetle_…

Giriş: Bu 24×8 LED Matrix ekran, FireBeetle serisi için özel olarak tasarlanmıştır. Düşük güç tüketimi modunu ve kayan ekranı destekler. HT1632C yüksek performanslı LED sürücü çipi ile her ledin bağımsız kaydı vardır, bu da ayrı olarak sürülmesini kolaylaştırır. Düşük güç modunda sadece 5uA olan bir 256KHz RC saati entegre eder, 16 ölçekli PWM parlaklık ayarını destekler. Bu ürün aynı zamanda Arduino UNO gibi diğer Arduino mikro denetleyicileri ile de çalışır.

Şartname:

  • Çalışma Gerilimi: 3.3~5VLED
  • Renk: Tek renk (Beyaz/Mavi/Sarı/Kırmızı/Yeşil)
  • Sürücü Çipi: HT1632C
  • Çalışma Akımı: 6~100mA
  • Düşük Güç Tüketimi: 5uARC
  • saat: 256KHz
  • Chip Select (CS): D2, D3, D4, D5 seçilebilir
  • Destek Kaydırma ekranı

Varsayılan PIN'ler:

  1. DATAD6
  2. WRD7 (Genellikle Kullanılmaz)
  3. CSD2, D3, D4, D5 seçilebilir (varsayılan D2)
  4. RDD8
  5. VCC 5VUSB; 3.7VLipo Pil

(Bu projelerin tümü seçim pini için D2 kullanır, bu gerektiğinde kolayca değiştirilebilir.)

LED Matrix'in arkasında 4 küçük anahtar göreceksiniz, CS pinlerinden sadece birini seçtiğinizden emin olun. Bu küçük anahtarlar, CS Pininizi nasıl seçtiğinizdir ve varsayılan değer D2'dir.

DF Robot WIKI'nin bazı örnek kodları vardır, bu kod da kitaplığın örneklerindedir. (İnanıyorum)

Başka bir not: pinleriniz için Dx numaralarını kullanın - aksi takdirde pin numaraları IO pin numaraları/adları olacaktır.

Ve bu size bazı sorunlara neden olabilir.

Bir nokta belirleme:

X, 0'dan 23'e kadardır (ya da bunu bir elektronik tablo olarak düşünürseniz, bunlar sütunlardır).

Y, 0 ila 7'dir (ya da bunu bir elektronik tablo olarak düşünürseniz, bunlar satırlardır).

Kitaplık bir ayar noktası işlevi sağlar.

display.setPoint(x, y) bu, imleci artık bir mesaj yazdırabileceğiniz o konuma ayarlar.

display.print("Merhaba Dünya", 40); //bu, ekranın x, y noktasından başlayarak ve ekranı kaydırarak "Merhaba Dünya" göstermesine neden olur.

Ayrıca bir setPixel(x, y) ve clrPixel(x, y) vardır - setPixel x, y konumunda bir LED'i açar ve clrPixel x, y konumunda bir LED'i kapatır.

Bu kitaplığın yapabileceği başka şeyler de vardır ve çoğu örneklere dahil edilmiştir.

(Neler yapabileceğini görmek için örnekleri çalıştırmanızı ve değiştirmenizi tavsiye ederim).

* Eksik görünen bir şey bitmapler çizmektir - kütüphane bunu gerçekten yapabilir ama bir nedenden dolayı kütüphanenin özel bir işlevidir. Kitaplığın biraz değiştirilmiş bir versiyonu için bazı bonus örneklerime bakın

** Daha küçük bir yazı tipine sahip olmak güzel olan 5x4 yazı tipi seti içerdiği başka bir şey - kitaplıkta nasıl olursa olsun yorumlanıyor. Yorumunu kaldırdım ve çalışmasını sağladım, ancak bununla ilgili birkaç sorun fark ettim - en büyüğü kaydırmıyor. Ve bunun ya wifi ile ya da kullanmak istediğim başka bir kütüphane ile ilgili sorunlara neden olduğunu fark ettim.

Ancak eklediğim değiştirilmiş kitaplıklardan biri 5x4 yazı tipini kullanıyor.

Gelelim projelere…..

Adım 5: Proje 1: Askeri Zaman Göstergeli veya AMPM Göstergeli Basit LED Matrix NTP Saati

Proje 1: Askeri Saat Göstergeli veya AMPM Göstergeli Basit LED Matrix NTP Saati
Proje 1: Askeri Saat Göstergeli veya AMPM Göstergeli Basit LED Matrix NTP Saati
Proje 1: Askeri Saat Göstergeli veya AMPM Göstergeli Basit LED Matrix NTP Saati
Proje 1: Askeri Saat Göstergeli veya AMPM Göstergeli Basit LED Matrix NTP Saati
Proje 1: Askeri Saat Göstergeli veya AMPM Göstergeli Basit LED Matrix NTP Saati
Proje 1: Askeri Saat Göstergeli veya AMPM Göstergeli Basit LED Matrix NTP Saati

Proje 1: Askeri Zaman gösterimi veya AMPM zaman gösterimi ile basit bir LED Matrix NTP Saatidir, Bu saat bir NTP'ye (zaman sunucusu) bağlanacak ve zamanı yakalayacak ve yerel saati elde etmeniz için bir off set uygulayacaktır. LED Matrix'te zamanı gösterecektir. - Çok basit bir saat ve çok basit 1. proje.

Bu basit projeye başlamadan önce, NTP'nin ne olduğunu bilmek iyi bir fikir olabilir -

NTP, bilgisayar saatlerini bir zaman referansına senkronize etmek için kullanılan bir internet protokolüdür. Standart bir protokoldür. NTP, Ağ Zaman Protokolü anlamına gelir.

NTP, UTC'yi referans zamanı olarak kullanır (UTC, Evrensel Zaman Eşgüdümlüdür), GMT'den (Greenwich Ortalama Saati) evrimleşmiştir ve bazı çevrelerde buna Zulu Zamanı (Askeri) denir. UTC, bir sezyum atomunun kuantum rezonansına dayanır.

NTP hataya dayanıklıdır ve yüksek düzeyde ölçeklenebilir, protokol bir nanosaniyeden daha az çözünürlük kullanarak son derece doğrudur.

*

UTC saati çoğu insan için pek kullanılmaz, bu yüzden saatimizi yerel saate göre ayarlamamız gerekiyor. Neyse ki bunu oldukça kolay bir şekilde yapabiliriz. Öyleyse bu basit NTP Saati ile başlayalım….

1. NTP sunucuları ile konuşmayı kolaylaştıran bir kütüphane kurmamız gerekiyor.

github.com/arduino-libraries/NTPClient (bu kütüphane muhtemelen kütüphane yöneticisindedir)

3. adımı atladınız mı - ve kitaplıkları nasıl kuracağınızdan emin değil misiniz (?) Geri dönüp 3. adımı okusanız iyi olur:-)

Bu web sitesine gitmeniz ve saat diliminizde size en yakın şehri yazmanız gerekiyor.

www.epochconverter.com/timezones

Enter'a bastığınızda, "Dönüşüm sonuçları"nı göreceksiniz ve sonuçlarda ofsetinizi (GMT/UTC farkını) saniyeler içinde alacaksınız (Benim için bu -14400)

66. satırdaki dfrobot_firebeetle_led_matrix_ntp_clock çiziminde şunları göreceksiniz:

#define TIMEOFFSET -14400 //Zaman Dilimi ayarını buradan bulun https://www.epochconverter.com/timezones OFF Saniye cinsinden ayarlayın#define AMPM 1 //1 = AM PM zamanı, 0 = ASKERİ/24 HR Zaman

-14400'ü ofsetinizle değiştirin. Bir sonraki satırda AMPM 1'i göreceksiniz - bu, saatin AM/PM'de zamanı göstermesine neden olacaktır - eğer 24 saat içinde görmeyi tercih ederseniz, bir sıfır yapın.

Ardından taslağı panonuza yükleyin, Erişim noktasına (wifi yöneticisi) bağlanın ve wifi bağlantınızın ayrıntılarını girin. Bunu zaten yaptıysanız, ekranda "bağlı" kaydırma göreceksiniz ve birkaç saniye sonra zamanı görmelisiniz.

Bu proje için bu kadar - basit ve kullanımı kolay…..

(Olası iyileştirmeler: Ay, Gün ve Yılı görüntüleyin, sesli uyarı ve alarmlar kurun - genellikle bir web sayfası aracılığıyla ne gördüğünüzü kontrol edin. Bu fikir, mevcut basit taslağın büyük bir yeniden yazılmasını gerektirir)

Başka bir basit projeye hazır olun -- ISS'nin nerede olduğunu gösterin - Tahminleri geçin ve Uzayda kaç kişi var! (Bu çizim, neyin görüntülendiğini kontrol etmek için bir web sayfası kullanır) …..

Adım 6: Proje 2: ISS Geçiş Tahmin Ekranı,

Proje 2: ISS Geçiş Tahmin Ekranı,
Proje 2: ISS Geçiş Tahmin Ekranı,
Proje 2: ISS Geçiş Tahmin Ekranı,
Proje 2: ISS Geçiş Tahmin Ekranı,
Proje 2: ISS Geçiş Tahmin Ekranı,
Proje 2: ISS Geçiş Tahmin Ekranı,

Proje 2: ISS Geçiş Tahmin Ekranı, bu proje işlemcinin 2. çekirdeğini kullanıyor. ISS'nin ne kadar yakın (mil olarak) olduğunu, bir sonraki ISS'nin bulunduğunuz yerden ne zaman geçeceğini (UTC saatinde) ve isteğe bağlı olarak uzayda kaç kişinin olduğunu gösterecektir. Bu bilgilerin çoğu sık sık değişmediğinden, 2. çekirdeği yalnızca geçiş tahminlerinin güncellemelerini veya her 15 dakikada bir uzayda kaç kişinin olduğunu kontrol etmek için kullanırız. Bu şekilde sunucuya çok fazla API çağrısını önleyebiliriz. Bu proje biraz daha karmaşık, ancak yine de yapılması oldukça kolay.

Bu proje, burada bulunabilecek daha önceki projelerimden birine dayanmaktadır:

(Basit Bir ISS Bildirim Sistemi) Bunun için yerleşik OLED ekranlı (D-Duino) bir ESP8266 kullandım. Çoğunlukla bu proje sadece farklı bir görüntüleme sistemi kullanıyor, bunu bir web sayfası aracılığıyla anında görmek istediğiniz şeyi değiştirebilmeniz için genişlettim. O halde başlayalım….

Kolay kullanım için verilen kredinin çoğu, çok basit ve kullanımı kolay bir API'ye sahip olan https://open-notify.org'a gider. Açık bildirim API'sinde görüntülenebilecek üç şey vardır: ISS'nin enlem ve boylamdaki konumu, belirli bir enlem ve boylam temelinde tahminleri iletir. Ve nihayet uzayda kaç kişi (ve isimleri) var.

Başka bir kütüphane kurmamız gerekecek - ArduinoJson kütüphanesi.

github.com/bblanchon/ArduinoJson

Ayrıca TimeLib.h'ye ihtiyacımız var ama bunu nereden aldığımdan veya IDE'ye dahil edilip edilmediğinden emin değilim (üzgünüm)….

Öyleyse neden ISS'nin nerede olacağını tahmin edin - ISS çeşitli amatör telsiz ekipmanları içerir ve "aşırı" olduğunda bir amatör telsiz operatörü, çok basit (ve ucuz) bazı telsizleri kullanarak ISS ile iletişim kurabilir. Hareket halindeyken bile yaptım (arabada sürerken). Bu işi yapmak için gerçekten fazla bir şeye ihtiyacınız yok. İhtiyacın olan tek şey nerede olduğunu bilmek. Ve anteni genel yönüne çevirmek yardımcı olur.

57, 58, 59 satırları bazı ekran değişkenleridir - 1'e ayarlanmışlarsa bir ekran göreceksiniz, 0'a (sıfır) ayarlanmışlarsa bir ekran görmeyeceksiniz. (Bu değişkenler çizimde ayarlanabilir veya firebeetle'ın oluşturduğu bir web sayfasından güncellenebilir - daha sonra anlatacağız).

int locDis = 1; //ISSint'in Konumunu Görüntüle pasDis = 0; //Geçiş Tahminlerini Görüntüle int pplDis = 1; // Uzaydaki İnsanları Göster

bu nedenle locDis, ISS'nin konumunu enlem ve boylamda görüntüler - ayrıca kaç mil uzakta olduğunu da gösterir.

pasDis, open-notify.org'dan geçiş tahminlerini alacak ve gösterecektir.

ve son olarak, pplDis uzayda isimleri ve kaç kişinin olduğunu gösterecek - bu çok uzun sürebilir, değil

ya sık sık değiştirin. (bunları değiştirebilir veya bırakabilirsiniz, tamamen isteğe bağlıdır)

Ayrıca enlem ve boylamımızı da bilmeli ve krokiye koymalıyız.

Bunun kesin bir enlem/boylam olması gerekmez, şehrinizin merkezi veya birazcık kapalı olabilir. ISS'nin ayak izi, başın üstündeyken geniştir ve yüzlerce (veya binlerce) mil katedilebilir, bu nedenle enlem/boylamda biraz kapalı olmak bir anlaşma kırıcı olmayacak (çoğu zaman), 500 milden fazla iletişim oldukça yaygındır.

Enlem ve boylamınızı bilmiyorsanız bu web sitesi size yardımcı olabilir.

www.latlong.net Çizimin 84. satırına yakın bir yerde şöyle bir şey göreceksiniz:

//Enlem ve Boylamınızı buradan bulun//https://www.latlong.net/ float mylat = 39.360095; yüzer milon = -84.58558;

Değiştirilmesi gereken tek şey bu olmalı. Krokiyi yükleyin ve Firebeetle'ı internete bağlayın - ve enlem/boylam olarak verilen ISS'nin yerini ve kaç mil uzakta olduğunu görmelisiniz (bunun yaklaşık bir mesafe olacağını unutmayın. ISS çok hızlı hareket eder ve görüntüleme bittiğinde, ISS bulunduğu yerden birçok mil uzaklaşmıştır). Uzaydaki insanları da görmelisiniz. (Eğer yukarıdaki değişkeni değiştirmediyseniz).

Bir web sitesini çalıştırmak için ESP32'nin ikinci çekirdeğini kullanıyoruz, siteyi kullanmak bize LED matrisinde görüntülenenleri kontrol etmemizi sağlıyor. Nasıl çalıştığı konusunda oldukça sezgisel olmalı, bir bölüm neyin görüntülenmek üzere açıldığını gösterir, başka bir bölümde "evet" "hayır" düğmeleri vardır - "evet" tıklandığında görmek istediğiniz anlamına gelir, "hayır" hayır anlamına gelir gösterme. Ayrıca üst bölümün butonlara göre değiştiğini görmelisiniz.

Burada kesin olmayan tek şey, Firebeetle'ın IP adresinin nasıl bulunacağıdır - ne yazık ki onu bulmanın iyi bir yolunu bulamadım - bu yüzden görüntülemek için IDE'nin seri konsolunu kullandım. bu (9600 baud).

Konsolu açın ve IP adresini görmelisiniz. (bağlı mesajı almadan önce açın) - diğer seçeneğim, başlangıçta bir kez LED Matrix'te görüntülemekti - Buna karşı karar verdim çünkü saate bakmıyor olabilirsiniz ve kaçıracaksınız. Bir sms mesajı veya başka bir şey göndermeyi düşünmüştüm ama sonunda bunu basit tuttum. (Ayrıca statik bir IP/ağ geçidi/vb atamaya çalıştım, wifi yöneticisiyle doğru şekilde çalışmasını sağlayamadım - kod hala taslakta, bu yüzden biri çözerse bana bildirin)

Taslak aynı zamanda ESP32 çekirdeğine yerleşik FreeRTOS'un ilerlemesini de alıyor - Her 15 dakikada bir çalışan bir görevimiz var, bunun yaptığı şey, geçiş tahminlerini ve ayrıca uzaydaki insanları güncellemek. Daha önce söylediğim gibi, uzaydaki insanlar o kadar fazla değişmez, bu yüzden muhtemelen başka bir göreve taşınabilir ve belki her 12 saatte bir (veya 6 saatte bir) çalıştırılabilir - ama bu işe yarar ve işleri basitleştirir.

FreeRTOS'u bilmeyenler için, tek bir çekirdekli mikro denetleyicinin birden çok görevi yürütmesine izin vermenin bir yoludur

Normalde, çalışması için bazı kitaplıkları ve başka şeyleri eklemeniz gerekir - ancak ESP32'nin çekirdeğine yerleştirilmiştir - bu da ESP32'yi çok güçlü bir cihaz yapar. FreeRTOS hakkında daha fazla bilgi için

freertos.org/

İYİLEŞTİRMELER: Bu proje için geliştirilebilecek birçok şey var ve neredeyse her gün biraz farklı yapılabilecek, değiştirilebilecek veya eklenebilecek bir şey düşünüyorum.

Ve havuzun daha fazla örnek dizininde, düşündüğüm daha önceki/farklı şeylerden bazılarını görebilirsiniz - bunlardan bazıları işe yaramadı, bazıları yeni değişti ve bazıları mevcut çizime dahil edildi.

* Bir noktada, önceki projeme biraz daha benzemesi için ekrana bir neopiksel eklemeye çalıştım - hiçbir zaman tam olarak düzgün çalışmasını sağlayamadım (bunu bir güç sorunu olarak gördüm ve bunu dikkate almadım) bu fikri geliştirmek için bir yol üzerinde çalışmak *

Bu adımı yazarken, belki de web sitesine enlem ve boylamınızı güncellemenin bir yolunu ekleyebilirim - bu şekilde eskizde hiçbir değişiklik yapılmasına gerek kalmaz - düşündüm, bu konuda da biraz daha düşüneceğim.

IP adresini almanın gelişmiş bir yolu, yapmak istediğim başka bir şey (hala bunu da düşünüyorum)

Bir sonraki projemize geçelim…..

Adım 7: Proje 3: MQTT Kullanan Basit Hareketli Mesaj İşareti

Proje 3: MQTT Kullanan Basit Hareketli Mesaj İşareti
Proje 3: MQTT Kullanan Basit Hareketli Mesaj İşareti
Proje 3: MQTT Kullanan Basit Bir Hareketli Mesaj İşareti
Proje 3: MQTT Kullanan Basit Bir Hareketli Mesaj İşareti
Proje 3: MQTT Kullanan Basit Hareketli Mesaj İşareti
Proje 3: MQTT Kullanan Basit Hareketli Mesaj İşareti

"yükleme="tembel" " yükleme="tembel"

Bonus Bölüm 2 - Görüntüleri Görüntüle
Bonus Bölüm 2 - Görüntüleri Görüntüle
Bonus Bölüm 2 - Görüntüleri Görüntüle
Bonus Bölüm 2 - Görüntüleri Görüntüle
Bonus Bölüm 2 - Görüntüleri Görüntüle
Bonus Bölüm 2 - Görüntüleri Görüntüle

Böylece, kütüphanenin görüntüleri gösterebileceği ortaya çıktı - bir nedenden dolayı bu işlev "özel" görünüyor - peki, bu sonraki çizimler için kütüphaneyi bir kez daha değiştirdim ve drawImage'ı genel bir işlev haline getirdim.

Bu sefer değiştirilen kütüphaneyi eskizler dizinine koydum, böylece kütüphaneyi yeniden kurmanıza gerek kalmaz, eskiz önce kendine bakar, sonra kütüphane dizinine bakar, yani biz iyiyiz!

*** Bu değişikliği DFRobot'a göndermeyi planlıyorum, çünkü gerçekten çok havalı ve bu tür eskizleri yapabilmek oldukça hoş ***

LED Matrix Görüntüleri çizimi, burada ilk önce kütüphanenin ne istediğini ve neyin işe yarayıp yaramayacağını - değişen derecelerde başarı ile - anlamaya çalışıyordum. 8x8 görüntülerin en iyi sonucu verdiğini buldum, ancak başkalarının da çalışmasını sağlayabilirsiniz. Birkaç çevrimiçi led matris editörü de buldum, bazıları diğerlerinden daha iyi çalışıyor.

xantorohara.github.io/led-matrix-editor/ - iyi çalışıyor gibi görünüyor, 8x8 görüntüler yapıyor ve bunları bayt dizileri olarak istiyorsunuz.

www.riyas.org/2013/12/online-led-matrix-fo… bu iyi çalışıyor ve 8x8'den daha büyük ekranlar yapma yeteneğine sahip, bu ekranla ekran yan dönüyor gibi görünüyor Yine de. Bayt dizileri burada en iyi şekilde çalışıyor gibi görünüyor. Yukarıdaki videoda görülen "uzay istilacılarını" yapmak için kullandım.

Peki bu nasıl çalışıyor, drawImage(const bayt * img, uint8_t genişlik_t, uint8_t yükseklik_t, int8_t x, int8_t y, int img_offset);

görüntü bayt dizisi değişkeni, görüntünün genişliği (8), görüntünün yüksekliği (8), ekrandaki başlangıç konumu x (0), genellikle y (0) ve olmadığım bir ofset numarası Ne yaptığından %100 eminim, bu yüzden çoğu zaman sıfırda bıraktım.

Çizimde LED Matrix Görüntüleri - 8 farklı bayt dizisi vardır - üç farklı yöntemle de.

- havai fişekler ilk dizilerdir, dürüst olmak gerekirse bunun nasıl çalıştığından emin değilim - ama işe yarıyor.

sonra bir ağız var - bu gerçekten pek doğru çalışmıyor, ağız biri için yanlış yöne gidiyor ve herhangi bir değişiklik yapmaya çalışmak durumu daha da kötüleştiriyor. (Neyin işe yarayıp neyin yaramadığını öğrenmek eğlencenin yarısıdır)

Bunu ilk marioImg takip eder - bu ekran için çok büyük ve bence offset burada devreye giriyor - burada kullandım ve ofseti 1 olarak değiştirirseniz mario'nun ön tarafını görebilirsiniz. arkasını görecek. (size gerçekten ofsetin neden veya ne yaptığını söyleyemem. Görüntüyü değiştiriyor gibi görünüyor ama neden 2 onu önünü görebilmeniz için kaydırıyor ve neden 1'in diğer yöne kaydırdığını size söyleyemem)

GÖRÜNTÜLER - bayt dizisi yaptığım bir @ işaretidir - https://xantorohara.github.io/led-matrix-editor adresindeki aracı kullanarak yaptığım şeye benziyor

pic1 byte dizisi de yapmaya çalıştığım şeye benziyor, sadece denediğimden daha küçük - ne olduğunu söyleyemem ama genel olarak editörde yaptığım gibi göründüğünü söyleyebilirim.

mario2Img - bu benim 8x8 ekran boyutu için yapılmış daha büyük Mario'nun kendi versiyonum - ve orada bir veya iki piksel yerinde değil (ekranlar değil, benim hatam) küçük bir Mario (sorta) gibi görünüyor.

istilacı1 ve istilacı2 - her ikisi de bir uzay istilacısı için benim fikrim. oldukça iyi çıktılar ve görüntüleri üst üste koyarak ayakların hareket etmesi efektini yaratabiliyorum.

Dizinde iki havai fişek çizimi var, her biri biraz farklı ve denemeye değer.

Birinde ekranda hareket eden havai fişekler var, yani biraz daha fazla/farklı animasyon… diğerinde aynı anda iki havai fişek gösteriliyor

Ayrıca üç "istilacı" çizimi var, her biri biraz farklı, birinde istilacı ekranda hareket ediyor ve bunu nasıl yaptığımı görebilirsiniz - (bunu yapmanın daha iyi yolları olabilir, bilmiyorum)

Daha da fazlası: Deponun test dizininde bazı eskizler var - bunların çoğu tam istediğim gibi çalışmadı veya yapmak istediğim fikirlerdi ama istediğim gibi çalışmadı. Bazı fikirlerim olduğu için onları bıraktım *(ISS ekranıyla kullanmak için üzerinde WS2812 piksel bulunan küçük bir "kalkan" yaptım, ancak onu 3v hattına bağladım ve yeterli olmadı LED Matrix çalışırken de güç, piksel iyi çalıştı, LED Matrix sen olmadan, bu yüzden hala onunla yapabileceğim bir şey var)*

Ayrıca "Diğer Örnekler" adında bir dizin de var - bunlar bazı proje eskizlerinin varyasyonları, ya bir şey eklendi ya da kaldırıldı ya da bir şekilde değiştirildi. Bunlar için çalışıyorlar - sadece nihai proje değiller. Bu yüzden onları tekrar bıraktım, birileri onlardan yararlı bir şeyler alabilir. (Belki)

Umarım bu projeleri yapmaktan zevk aldığım kadar bu dersten keyif aldınız:-)

Adım 11: Bağlantılar…

Bu proje DF Robot tarafından desteklendi ve desteklendi. Ürünler için lütfen aşağıdaki bağlantıları kullanın:

Firebeetle ESP32 -

Firebeetle Cover 24x8 LED Matrix -

Kod Depom:

Bunu veya herhangi bir projemi faydalı veya eğlenceli bulursanız, lütfen beni destekleyin. Aldığım her şey daha fazla parça satın almak ve daha fazla/daha iyi projeler yapmak için gidiyor.

www.patreon.com/kd8bxp

NTPClient Kütüphanesi

ArduinoJson.h

ESP8266 Hava Durumu Kitaplığı

Json-Streaming-Parser Library

Önerilen: