Мазмуну:

Киришүү ESP32 Lora OLED дисплейи: 8 кадам
Киришүү ESP32 Lora OLED дисплейи: 8 кадам

Video: Киришүү ESP32 Lora OLED дисплейи: 8 кадам

Video: Киришүү ESP32 Lora OLED дисплейи: 8 кадам
Video: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Июль
Anonim
Image
Image
Киришүү ESP32 Lora OLED дисплейи
Киришүү ESP32 Lora OLED дисплейи

Бул ESP32 LoRaга киришүүгө байланыштуу дагы бир видео. Бул жолу биз атайын графикалык дисплей жөнүндө сөз кылабыз (128x64 пиксел). Биз бул OLED дисплейдеги маалыматты көрсөтүү жана XBM сүрөттөрүн колдонуу менен анимациянын мисалын көрсөтүү үчүн SSD1306 китепканасын колдонобуз.

1 -кадам: Колдонулган ресурстар

Колдонулган ресурстар
Колдонулган ресурстар

1 Heltec WiFi LoRa 32

Protoboard

2 -кадам: Дисплей

Дисплей
Дисплей
Дисплей
Дисплей

Иштетүү тактасында колдонулган дисплей 0,96 дюймдук OLED болуп саналат.

Анын өлчөмү 128х64 жана монохромдуу.

Бул I2C байланышына ээ жана ESP32ге 3 зым аркылуу туташкан:

GPIO4 боюнча SDA (маалымат үчүн)

GPIO15 боюнча SCL (саат үчүн)

GPIO16 боюнча RST (баштапкы абалга келтирүү жана көрсөтүү үчүн)

3 -кадам: SSD1306 китепканасы

SSD1306 китепканасы
SSD1306 китепканасы

Муну Heltec-Aaron-Lee тарабынан берилген китепканалардын топтому менен бирге табууга болот.

Бул саптарды жазуу, сызыктарды тартуу, тик бурчтуктарды, чөйрөлөрдү жана сүрөттөрдү көрсөтүү үчүн бир нече функцияларга ээ.

github.com/Heltec-Aaron-Lee/WiFi_Kit_series

4 -кадам: Анимация жана XBM файлдары

Анимация жана XBM файлдары
Анимация жана XBM файлдары
Анимация жана XBM файлдары
Анимация жана XBM файлдары
Анимация жана XBM файлдары
Анимация жана XBM файлдары

Биз анимацияны көрсөтүү үчүн китепкананын drawXbm функциясын колдонобуз.

XBM сүрөт форматы он алтылык маани аркылуу, ар бир элемент тексттик түрдө монохроматтык пикселдердин топтомун (ар бири 1 бит) чагылдырган символдордон турат. Булар бир байтка барабар.

Бир байтты көрсөтүү үчүн бир нече символдор колдонулгандыктан, бул файлдар учурда кабыл алынган форматтардан чоңураак болот. Артыкчылыгы, алар алдын ала дарылоого муктаж болбостон түз түзүлөт.

Массивден тышкары, сүрөттүн өлчөмүн аныктоочу эки параметр камтылган.

Анимацияны куруу үчүн бизге кадрларды түзө турган сүрөттөр керек.

Биз иштөө үчүн ар кандай сүрөт түзөтүүчү программаны колдоно алабыз. Биз көрүшүбүз керек болгон бирден -бир чара - алгач дисплейге шайкеш келген өлчөмдү сактоо жана монохромдуу файлдарды колдонуу.

Файлдарды түзүү үчүн биз аларды тарта алабыз же сүрөттөрдү импорттой алабыз. Бул жерде биз PaintBrushтун жардамы менен түстүү сүрөттү түзөтүүнү чечтик жана ар бир кадрды тарттык

Түпнуска сүрөт - 960x707 пиксел --p.webp

Кийинки кадам - монохромдук битмап катары сактап монохромдуу кылуу.

Андан кийин, биз аны дисплейге туура келген өлчөмгө өзгөртөбүз.

Өлчөө бирдиктерине өзгөчө көңүл буруңуз. Бул учурда, биз сүрөттү дисплейдин бүт бийиктигин ээлегендей кылып туураладык (вертикалдуу = 64 пиксел).

Сүрөт туура өлчөмдө болгондо, биз кадрларды түзүү үчүн аны түзөтөбүз. Бул жерде биз сигналдын ар бир догосун өчүрүп, аларды тиешелүү кадрлар катары сактап жатабыз.

Эми биз BMP файлдарын XBM форматына которушубуз керек.

Бул өзгөртүүнү кыла турган бир нече программалык камсыздоо бар. Биз ошондой эле редактор катары GIMPти тандап алдык.

Биздин мисалда, биз файлдарды түзүү жана түзөтүү үчүн PaintBrush колдондук. Бирок, бул процесстердин ар бирин Gimpде (же башка редактордо) жасаса болмок.

Которуу үчүн, биз алгач файлды ачабыз.

Сүрөт ачык болгондо, биз Файл => Экспорттоону тандай алабыз …

Export Image терезесинде, биз XBM үчүн көздөгөн файл кеңейтүүсүн өзгөртүшүбүз керек. Gimp каалаган форматты аныктоо жана башка мүмкүнчүлүктөрдү көрсөтүү үчүн жооптуу болот …

Экспорттоодо Gimp башка параметрлерди көрсөтөт. Биз демейки баалуулуктарды калтыра алабыз.

Бардык файлдарды айландыргандан кийин, бизде ар бир кадр үчүн бирден XBM файлдары болот.

Эми аларды баштапкы коддун папкасына көчүрүп, кеңейтүүлөрүн.h деп өзгөртүү менен алардын атын өзгөртөлү.

5 -кадам: XBM файлдарынан чыгуу

XBM файлдарынан чыгуу
XBM файлдарынан чыгуу

Биз XBM файлдарын каалаган текст редакторунда ача алабыз, анда биз мурдатан эле аныкталган сүрөттөр матрицасын жана сүрөттүн өлчөмүн көрөбүз.

6 -кадам: Булак коду

Булак коду: билдирүүлөр

Биз керектүү китепканаларды, ошондой эле сүрөт файлдарын киргизебиз. Биз сүрөттүн позициясын жана өткөөл аралыгын аныктайбыз. Биз ошондой эле ESP32 менен байланышкан OLED төөнөгүчтөрүн көрсөтөбүз. Акыр -аягы, биз Display объектисин түзөбүз жана тууралайбыз.

// 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" // definições de posichão да imagem e intervalo de transição #define posX 21 #define posY 0 #fine interval 500 - GPIO16 #define SDA 4 #define SCL 15 #deftine RST 16 // SSD1306 дисплейи (0x3c, SDA, SCL, RST) программалык камсыздоону көзөмөлдөө; // Объективдүү дисплей

Булак коду: Орнотуу ()

Дисплейди баштапкы абалга келтирип, экранды тигинен бери оодарыңыз. Аракет милдеттүү эмес.

void setup () {display.init (); // дисплейди көрсөтүү.flipScreenVertically (); // вертикалдуу вертикалдуу тела (тандалма)}

Булак коду: Loop ()

Укурукта жасай турган биринчи нерсе - экранды тазалоо. 1 кадрды буферге posX жана posY баштапкы позицияларын колдонуу менен жүктөйбүз. Биз frame1_width жана frame1_height менен сүрөттүн өлчөмүн жана сүрөттүн биттерин камтыган массивдин аталышын билдиребиз. Биз дисплейде буферди көрсөтүп, кийинки кадрды көрсөтүүдөн мурун интервалды күтөбүз.

void loop () {display.clear (); // лимфа тела // каррега пара же буфер 1 фрейм // usando as posichões iniciais posX e posY // маалымат o raman_ da imagem com frame1_width e frame1_height // маалымат o nome da matriz que contem os bits da imagem, caso frame1_bits жок display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o buffer no display display.display (); // аралыктагы убакыттын өтүшү менен кадрлардын кечиктирилиши (интервал);

Биз процессти башка бардык кадрлар үчүн кайталайбыз.

// repos o processos para todos os outros frames display.clear (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); кечигүү (интервал); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); кечигүү (интервал); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); кечигүү (интервал); }

7 -кадам: Коддун жүктөлүшүн жасоо

Коддун жүктөлүшүн аткаруу
Коддун жүктөлүшүн аткаруу
Коддун жүктөлүшүн аткаруу
Коддун жүктөлүшүн аткаруу
Коддун жүктөлүшүн аткаруу
Коддун жүктөлүшүн аткаруу

IDE ачык болгондо,.ino файлын эки жолу басуу менен же Файл менюсуна өтүү менен баштапкы коду бар файлды ачыңыз.

USBге туташкан Heltec менен менюсун тандаңыз Tools => Card: "Heltec_WIFI_LoRa_32"

Дагы эле Tools менюсунда, Heltec туташкан COM портун тандаңыз.

ЖҮКТӨӨ баскычын басыңыз…

… Жыйынтыгын күтө туруңуз.

8 -кадам: Файлдар

Файлдарды жүктөп алыңыз:

PDF

МЕН ЖОК

Сунушталууда: