Mundarija:

Kirish ESP32 Lora OLED displeyi: 8 qadam
Kirish ESP32 Lora OLED displeyi: 8 qadam

Video: Kirish ESP32 Lora OLED displeyi: 8 qadam

Video: Kirish ESP32 Lora OLED displeyi: 8 qadam
Video: Employee Attendance Monitoring System using Face Recognition 2024, Iyul
Anonim
Image
Image
Kirish ESP32 Lora OLED -displey
Kirish ESP32 Lora OLED -displey

Bu ESP32 LoRa -ga kirish haqidagi boshqa video. Bu safar biz aniq grafik displey (128x64 piksel) haqida gaplashamiz. Biz SSD1306 kutubxonasidan ushbu OLED displeyidagi ma'lumotlarni ko'rsatish va XBM tasvirlari yordamida animatsiya misolini ko'rsatish uchun foydalanamiz.

1 -qadam: Ishlatilgan manbalar

Ishlatilgan manbalar
Ishlatilgan manbalar

1 Heltec WiFi LoRa 32

Protoboard

2 -qadam: Displey

Displey
Displey
Displey
Displey

Rivojlanish panelida ishlatiladigan displey 0,96 dyuymli OLED.

Uning o'lchamlari 128x64 va monoxromdir.

U I2C aloqasiga ega va ESP32 ga 3 sim orqali ulangan:

GPIO4 -da SDA (ma'lumotlar uchun)

GPIO15 -dagi SCL (soat uchun)

GPIO16 -da RST (asl holatini tiklash va ko'rsatish uchun)

3 -qadam: SSD1306 kutubxonasi

SSD1306 kutubxonasi
SSD1306 kutubxonasi

Buni Heltec-Aaron-Li tomonidan taqdim etilgan kutubxonalar to'plami bilan birga topish mumkin.

U satrlarni yozish, chiziqlar chizish, to'rtburchaklar, aylanalar va tasvirlarni ko'rsatish uchun bir nechta funktsiyaga ega.

github.com/Heltec-Aaron-Lee/WiFi_Kit_series

4 -qadam: Animatsiya va XBM fayllari

Animatsiya va XBM fayllari
Animatsiya va XBM fayllari
Animatsiya va XBM fayllari
Animatsiya va XBM fayllari
Animatsiya va XBM fayllari
Animatsiya va XBM fayllari

Biz animatsiyani ko'rsatish uchun kutubxonaning drawXbm funktsiyasidan foydalanamiz.

XBM tasvir formati har bir element o'n oltilik qiymat orqali bitta rangli pikselli (har biri 1 bitli) matnni ifodalovchi belgilar majmuasidan iborat. Bular bir baytga teng.

Bitta baytni ko'rsatish uchun bir nechta belgilar ishlatilganligi sababli, bu fayllar hozirda qabul qilingan formatlardan kattaroqdir. Afzallik shundaki, ular oldindan davolanishga hojat qoldirmasdan to'g'ridan -to'g'ri tuzilishi mumkin.

Massivga qo'shimcha ravishda, tasvir hajmini aniqlaydigan ikkita parametr kiritilgan.

Animatsiyani yaratish uchun bizga ramkalar hosil qiladigan tasvirlar kerak.

Biz ishlash uchun har qanday tasvirni tahrirlash dasturidan foydalanishimiz mumkin. Biz olishimiz kerak bo'lgan yagona ehtiyot choralari - avval o'lchamini displeyga mos keltirish va monoxromli fayllardan foydalanish.

Fayllarni yaratish uchun biz ularni chizishimiz yoki rasmlarni import qilishimiz mumkin. Bu erda biz PaintBrush yordamida rangli tasvirni tahrir qilishga qaror qildik va har bir freymni chizdik

Asl tasvir - 960x707 piksel --p.webp

Keyingi qadam, uni monoxromli bitmap sifatida saqlash orqali monoxrom qilishdir.

Keyin, biz displeyga mos keladigan hajmni o'zgartiramiz.

O'lchov birliklariga alohida e'tibor bering. Bunday holda, biz tasvirni ekranning butun balandligini egallaydigan qilib o'rnatdik (vertikal = 64 piksel).

Rasm to'g'ri o'lchamda bo'lsa, biz ramkalarni yaratish uchun uni tahrir qilamiz. Bu erda biz signal darajasidagi har bir yoyni o'chirib tashlaymiz va ularni tegishli kadrlar sifatida saqlaymiz.

Endi biz BMP fayllarini XBM formatiga o'tkazishimiz kerak.

Ushbu konvertatsiyani amalga oshiradigan bir nechta dasturiy ta'minot variantlari mavjud. Shuningdek, biz muharrir sifatida GIMP ni tanladik.

Bizning misolimizda biz fayllarni yaratish va tahrir qilish uchun PaintBrush -dan foydalanganmiz. Biroq, bu jarayonlarning har biri Gimp (yoki boshqa muharrir) da amalga oshirilishi mumkin edi.

Konvertatsiya qilish uchun avval faylni ochamiz.

Rasm ochiq bo'lganda, biz Fayl => Eksport qilish … ni tanlashimiz mumkin.

Rasmni eksport qilish oynasida biz XBM uchun mo'ljallangan fayl kengaytmasini o'zgartirishimiz kerak. Gimp kerakli formatni aniqlash va boshqa variantlarni taqdim etish uchun javobgardir …

Eksport paytida Gimp boshqa variantlarni taqdim etadi. Biz standart qiymatlarni qoldirishimiz mumkin.

Barcha fayllarni konvertatsiya qilgandan so'ng, bizda to'rtta XBM fayl bo'ladi, bittasi har bir ramka uchun.

Endi ularni manba kodi papkasiga ko'chirib olamiz va kengaytmalarini.h ga o'zgartirib, ularning nomini o'zgartiramiz.

5 -qadam: XBM fayllaridan chiqish

XBM fayllaridan chiqish
XBM fayllaridan chiqish

Biz XBM fayllarini istalgan matn tahrirlovchisida ochishimiz mumkin, bu erda biz tasvir matritsasi va tasvir o'lchami haqidagi ma'lumotni ko'ramiz.

6 -qadam: Manba kodi

Manba kodi: bayonotlar

Biz kerakli kutubxonalarni, shuningdek rasm fayllarini o'z ichiga olamiz. Biz tasvirning joylashishini va o'tish oralig'ini aniqlaymiz. Shuningdek, biz ESP32 ga ulangan OLED pinlarini ko'rsatamiz. Nihoyat, biz Display ob'ektini yaratamiz va sozlaymiz.

// Incluindo as bibliotecas needárias #include #include "SSD1306.h" // Incluindo os arquivos de imagem #include "frame1.h" #include "frame2.h" #include "frame3.h" #include "frame4.h" // ta'riflar posXão da imagem e intervalo de transichão #define posX 21 #define posY 0 #define interval 500 500 // OLED estoo conctados ao ESP32: I2C // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - - GPIO16 #define SDA 4 #define SCL 15 #deft RST 16 // SSD1306 displeyi (0x3c, SDA, SCL, RST) uchun RST 16 ni aniqlang; // Ob'ektli displey

Manba kodi: Setup ()

Displeyni ishga tushiring va ekranni vertikal ravishda teskari aylantiring. Harakat ixtiyoriy.

void setup () {display.init (); // displeyni ko'rsatish.flipScreenVertically (); // teskari vertikal tela (ixtiyoriy)}

Manba kodi: Loop ()

Dasturda bajariladigan birinchi narsa - ekranni tozalash. Biz posX va posY boshlang'ich pozitsiyalari yordamida 1 -ramkani buferga yuklaymiz. Frame1_width va frame1_height bilan tasvirning o'lchamini va tasvirning bitlarini o'z ichiga olgan massiv nomini bildiramiz. Biz buferni displeyda ko'rsatamiz va keyingi kadrni ko'rsatishdan oldin intervalni kutamiz.

void loop () {display.clear (); // limfa tela // tampon yoki ramka 1 uchun ramka // usando as posicões iniciais posX e posY // ma 'lumot uchun ham ramka1_width e frame1_height // ma'lumot o nome da matriz que contem os bits da imagem, no caso frame1_bits display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o buferda displey displeyi yo‘q.display (); // aguarda um intervalli antes de mostrar yoki próximo ramkani kechiktirish (intervalli);

Biz jarayonni boshqa barcha ramkalar uchun takrorlaymiz.

// dispetcher.scarar ramkalarni ko'rsatish jarayonini takrorlash. display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); kechikish (interval); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); kechikish (interval); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); kechikish (interval); }

7 -qadam: Kodning yuklanishini bajarish

Kodning yuklanishini bajarish
Kodning yuklanishini bajarish
Kodning yuklanishini bajarish
Kodning yuklanishini bajarish
Kodning yuklanishini bajarish
Kodning yuklanishini bajarish

IDE ochiq bo'lganda,.ino faylini ikki marta bosish yoki Fayl menyusiga o'tish orqali faylni manba kodi bilan oching.

Heltec USB -ga ulangan bo'lsa, Tools => Card menyusini tanlang: "Heltec_WIFI_LoRa_32"

Hali ham asboblar menyusida Heltec ulangan COM portini tanlang.

Yuklash tugmasini bosing …

… Va xulosani kuting.

8 -qadam: fayllar

Fayllarni yuklab oling:

PDF

INO

Tavsiya: