İçindekiler:
- Adım 1: Kullanılan Kaynaklar
- 2. Adım: Ekran
- 3. Adım: SSD1306 Kitaplığı
- 4. Adım: Animasyon ve XBM Dosyaları
- Adım 5: XBM Dosyalarından Çıkma
- Adım 6: Kaynak Kodu
- Adım 7: Kodun Yüklenmesinin Yapılması
- 8. Adım: Dosyalar
Video: Giriş ESP32 Lora OLED Ekran: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu, ESP32 LoRa'ya Giriş ile ilgili başka bir video. Bu sefer özellikle bir grafik ekrandan (128x64 piksel) bahsedeceğiz. Bu OLED ekrandaki bilgileri görüntülemek için SSD1306 kitaplığını kullanacağız ve XBM görüntüleri kullanarak bir animasyon örneği sunacağız.
Adım 1: Kullanılan Kaynaklar
1 Heltec WiFi LoRa 32
protokol
2. Adım: Ekran
Geliştirme kartında kullanılan ekran 0,96 inçlik bir OLED'dir.
128x64 boyutunda ve monokromdur.
I2C iletişimine sahiptir ve 3 kablo ile ESP32'ye bağlanır:
GPIO4'te SDA (veriler için)
GPIO15'te SCL (saat için)
GPIO16'da RST (sıfırlama ve ekran başlangıcı için)
3. Adım: SSD1306 Kitaplığı
Bu, Heltec-Aaron-Lee tarafından sağlanan kütüphane seti ile birlikte bulunabilir.
Dize yazmak, çizgi çizmek, dikdörtgenler, daireler ve görüntüleri görüntülemek için çeşitli işlevleri vardır.
github.com/Heltec-Aaron-Lee/WiFi_Kit_series
4. Adım: Animasyon ve XBM Dosyaları
Bir animasyonu görüntülemek için kütüphanenin drawXbm işlevini kullanacağız.
XBM görüntü formatı, her öğenin onaltılık bir değer aracılığıyla bir dizi monokrom pikseli (her biri 1 bit) metinsel olarak temsil ettiği bir karakter dizisinden oluşur. Bunlar bir bayta eşdeğerdir.
Tek bir baytı temsil etmek için birden çok karakter kullanıldığından, bu dosyalar şu anda benimsenen biçimlerden daha büyük olma eğilimindedir. Avantajı, önceden işleme gerek kalmadan doğrudan derlenebilmeleridir.
Diziye ek olarak, görüntü boyutunu belirleyen iki ayar dahildir.
Animasyonu oluşturmak için çerçeveleri oluşturacak görüntülere ihtiyacımız var.
Çalışmak için herhangi bir görüntü düzenleme yazılımını kullanabiliriz. Almamız gereken tek önlem, önce boyutu ekranla uyumlu tutmak ve monokrom dosyalar kullanmaktır.
Dosyaları oluşturmak için onları çizebilir veya görüntüleri içe aktarabiliriz. Burada PaintBrush kullanarak renkli bir görüntüyü düzenlemeye karar verdik ve çerçevelerin her birini çizdik.
Orijinal resim - 960x707 piksel --p.webp
Bir sonraki adım, monokrom bir bitmap olarak kaydederek monokrom yapmaktır.
Ardından, ekranla uyumlu bir boyuta yeniden boyutlandırıyoruz.
Ölçü birimlerine özellikle dikkat edin. Bu durumda, görüntüyü ekranın tüm yüksekliğini kaplayacak şekilde ayarladık (dikey = 64 piksel).
Görüntü doğru boyutta olduğunda, çerçeveleri oluşturacak şekilde düzenleyeceğiz. Burada, sinyal seviyesinin her bir yayını silip karşılık gelen çerçeveler olarak kaydediyoruz.
Şimdi, BMP dosyalarını XBM formatına dönüştürmemiz gerekiyor.
Bu dönüşümü yapabilen birkaç yazılım seçeneği vardır. Ayrıca bir editör seçeneği olarak GIMP'yi seçtik.
Örneğimizde, dosyaları oluşturmak ve düzenlemek için PaintBrush kullandık. Ancak, bu işlemlerin her biri Gimp'te (veya başka bir editörde) yapılabilirdi.
Dönüştürmek için önce dosyayı açıyoruz.
Resim açıkken File => Export as… seçeneğini seçebiliriz.
Görüntüyü Dışa Aktar penceresinde, XBM için hedef dosya uzantısını değiştirmeliyiz. Gimp, istenen formatı belirlemekten ve daha fazla seçenek sunmaktan sorumlu olacak…
Dışa aktarırken, Gimp başka seçenekler sunacaktır. Varsayılan değerleri bırakabiliriz.
Tüm dosyaları dönüştürdükten sonra, her kare için bir tane olmak üzere dört XBM dosyamız olacak.
Şimdi bunları kaynak kod klasörüne kopyalayalım ve uzantılarını.h olarak değiştirerek yeniden adlandıralım.
Adım 5: XBM Dosyalarından Çıkma
XBM dosyalarını, önceden tanımlanmış olan görüntü matrisi ve görüntü boyutu bilgilerini göreceğimiz herhangi bir metin düzenleyicide açabiliriz.
Adım 6: Kaynak Kodu
Kaynak Kodu: Açıklamalar
Görüntü dosyalarının yanı sıra gerekli kütüphaneleri de dahil edeceğiz. Görüntünün konumlarını ve geçiş aralığını tanımlarız. Ayrıca ESP32'ye bağlı OLED pinlerini de işaretliyoruz. Son olarak Display nesnesini oluşturup ayarlıyoruz.
//Gerekli kaynaklar olarak dahil et#include #include "SSD1306.h" //Görüntüler dahil #include "frame1.h" #include "frame2.h" #include "frame3.h" #include "frame4.h" //görüntüler arası konum tanımları ve geçişler için konum tanımları #define konumX 21 #tanım konum 0 #aralık 500 tanımlayın //ESP32 için pinler: I2C //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST - - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //O RST yazılım kontrolü SSD1306 ekran(0x3c, SDA, SCL, RST); //Cria e ajusta o Objeto gösterimi
Kaynak Kodu: Kurulum ()
Ekranı başlatın ve ekranı dikey olarak ters çevirin. Eylem isteğe bağlıdır.
geçersiz kurulum() { display.init(); //inicia o display.flipScreenVertically(); //dikeymente a tela'yı ters çevir (isteğe bağlı) }
Kaynak Kodu: Döngü ()
Döngüde yapılacak ilk şey ekranı temizlemektir. posX ve posY başlangıç konumlarını kullanarak çerçeve 1'i arabelleğe yüklüyoruz. Frame1_width ve frame1_height ile görüntünün boyutunu ve görüntünün bitlerini içeren dizinin adını bildiririz. Arabelleği ekranda gösteriyoruz ve bir sonraki kareyi göstermeden önce bir süre bekliyoruz.
geçersiz döngü() { display.clear(); //limpa tela //carrega para o frame 1 //konum olarak posições iniciais posX e posY olarak usando //bu tamanho da imagem com frame1_width ve frame1_height //görüntüleme ve çerçeve bilgisi yok, görüntü çerçevesi yok, çerçeve1_bit yok display.drawXbm(pozX, pozY, kare1_genişlik, kare1_yükseklik, kare1_bits); //mostra o arabellek görüntü yok display.display(); //aralıklı çerçeve gecikmesi (intervalo);
İşlemi diğer tüm kareler için tekrarlıyoruz.
//tekrar veya işlem para todos os çıkış çerçeveleri display.clear(); display.drawXbm(posX, konum, çerçeve2_genişliği, çerçeve2_yüksekliği, çerçeve2_bits); display.display(); gecikme(aralık); display.clear(); display.drawXbm(posX, konum, çerçeve3_genişliği, çerçeve3_yüksekliği, çerçeve3_bits); display.display(); gecikme(aralık); display.clear(); display.drawXbm(posX, posY, çerçeve4_genişliği, çerçeve4_yüksekliği, çerçeve4_bits); display.display(); gecikme(aralık); }
Adım 7: Kodun Yüklenmesinin Yapılması
IDE açıkken,.ino dosyasına çift tıklayarak veya Dosya menüsüne giderek kaynak kodlu dosyayı açın.
Heltec USB'ye bağlıyken Araçlar => Kart menüsünü seçin: "Heltec_WIFI_LoRa_32"
Yine Araçlar menüsünde, Heltec'in bağlı olduğu COM portunu seçin.
YÜKLE düğmesine tıklayın…
… Ve sonucu bekleyin.
8. Adım: Dosyalar
Dosyaları indirin:
BEN HAYIR
Önerilen:
Dokunmatik Ekran Macintosh - Ekran için IPad Mini'li Klasik Mac: 5 Adım (Resimlerle)
Dokunmatik Ekran Macintosh | Ekran için IPad Mini'li Klasik Mac: Bu, eski bir Macintosh'un ekranının bir iPad mini ile nasıl değiştirileceğine ilişkin güncellemem ve gözden geçirilmiş tasarımım. Bu, yıllar içinde yaptığım 6'ncı ve bunun evrimi ve tasarımından oldukça memnunum! 2013'te yaptığım zaman
Ev Aletlerini LoRa Üzerinden Kontrol Edin - Ev Otomasyonunda LoRa - LoRa Uzaktan Kumanda: 8 Adım
Ev Aletlerini LoRa Üzerinden Kontrol Edin | Ev Otomasyonunda LoRa | LoRa Uzaktan Kumanda: Elektrikli cihazlarınızı internet olmadan uzun mesafelerden (Kilometre) kontrol edin ve otomatikleştirin. Bu LoRa ile mümkün! Naber beyler? Akarsh burada CETech'ten.Bu PCB ayrıca bir OLED ekrana ve 3 röleye sahiptir
Ekran Oled ile ESP32 - İlerleme Çubuğu: 6 Adım
Display Oled ile ESP32 - İlerleme Çubuğu: Bugün bahsedeceğimiz ESP32, Display Oled yerleşik olarak gelen bir ESP32'dir. Bu fonksiyon hayatımızı çok kolaylaştırıyor çünkü görünen değişkenin değeri hakkında bir izlenime sahip olabiliyoruz. Bilmiyorsun bile
Giriş LoRa ve Modül RFM95 / RFM95W Hoperf: 5 Adım
Giriş LoRa & Modül RFM95 / RFM95W Hoperf: Bu fırsatta LoRa ™ ve özellikle Hoperf Electronics tarafından üretilen Radyo RFM95/96. Birkaç ay önce 2 modül geldi, öncelikle konuyla ilgili bir giriş yapmak istiyorum
ESP32 ve OLED Ekran: İnternet Saati - DHT22: 10 Adım (Resimli)
ESP32 ve OLED Ekran: İnternet Saati - DHT22: Bu Eğitim Tablosu şu yarışmada yarışıyor: "GIFs Challenge 2017", Beğendiyseniz, lütfen yukarıdaki afişe tıklayarak oyunuzu verin. Çok teşekkürler!;-)Bu eğitim, bu harika IoT cihazı hakkında daha fazla bilgi edinme yolculuğunun devamı niteliğindedir