Подключение экрана SSD1306 к ESP8266 mini D1

SuperConductor

✩✩✩✩✩✩✩
23 Ноя 2024
15
0
Добрый день. Я подключал и использовал экран SSD1306 к arduino nano и возникла необходимость подключить его к esp8266 mini D1. Я не сведущ в этой теме, поэтому попытался подключить экран по гайдам из интернета. Не смог найти схему подключения именно для данной esp, нашёл схему подключения и код только для обычной esp8266. Попытался адаптировать подключение к пинам обычной 8266 для пинов 8266 D1 mini, но экран ничего не показывает. Подключал по SPI, экран и esp рабочие, контакт проводов нормальный. Я уверен, что проблема или в том, что я неправильно подключал, или в том, что не вижу какой - то банально глупой проблемы. Подскажите, пожалуйста, возможно ли вообще это всё подключить и использовать? Что я сделал не так? Пины которые я подключал приведены ниже в коде, который я пытался загрузить.

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_MOSI D7
#define OLED_CLK D5
#define OLED_DC D2
#define OLED_CS D8
#define OLED_RESET D3

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("TEST");
display.display();
}

void loop()
{
}
 

SuperConductor

✩✩✩✩✩✩✩
23 Ноя 2024
15
0
@poty, Прикрепил то, что я собирал и то, что я находил в гайдах (на всякий случай). Прошу прощения за качество картинки, я не заю как создавать нормальные схемы. Если подскажите через что можно создать более качественную схему, перерисую. Питание подключено к 5 вольтовому выходу на esp. Esp питается через USB от компьютера.1769783252005.pngSheme2.png
 
Изменено:

SuperConductor

✩✩✩✩✩✩✩
23 Ноя 2024
15
0
@Сотнег, Это две разные схемы. Схема с esp8266 это та, которую я находил в гайдах по подключению экрана к esp. Я пытаюсь использовать esp8266 D1 mini, у которой отличаются контакты. Пробовал подключить по этой же схеме с esp8266 к аналогичным пинам на esp8266 D1 mini, но дисплей не работал. Я попробовал понять, как должны подключаться контакты и у меня вышла схема, которую я привёл выше, но, видимо, понял неправильно.
 

EugeneFrol

✩✩✩✩✩✩✩
17 Апр 2024
61
9
50
Ещё бы взглянуть на схему самого OLED-экранчика. Там иногда видны перемычки, которые задают режим работы SSD1306 (I2C или SPI), а так же адрес для I2C. Фото обратной стороны экранчика добавьте.
 

Сотнег

★★★★★★★
15 Янв 2020
4,610
1,558
Я попробовал понять, как должны подключаться контакты и у меня вышла схема, которую я привёл выше
Поясните, каким образом пин D2 оказался без провода?
В коде, который вы привели, написано
#define OLED_DC D2
 

SuperConductor

✩✩✩✩✩✩✩
23 Ноя 2024
15
0
@Сотнег, Прошу прощения за путаницу, не заметил. Я рисовал схему по этим дефайнам, видимо спутал и нарисовал два провода на пин ниже, чем положено. Сейчас исправлю. Подключение было как объявлено в дефайнах
 

Сотнег

★★★★★★★
15 Янв 2020
4,610
1,558
@SuperConductor,
стоит убедиться, что плата вообще запустилась и выполняет код.
В мониторе порта обычно делают отладочные сообщения по ходу выполнения операций.

А пин 3V3 вы почему не использовали, вместо 5V, как это было в оригинальной схеме?
 

SuperConductor

✩✩✩✩✩✩✩
23 Ноя 2024
15
0
@Сотнег, Плату я проверил на простых программах. Она точно рабочая. Касательно подключения к 5 вольтовому питанию: как я говорил, я уже подключал данный экран к ардуино и он работала только при 5 вольтах, при 3.3 на экран ничего не выводилось. С данной схемой я пробовал менять контакт с 5 вольт на 3.3, результата нету.
 

EugeneFrol

✩✩✩✩✩✩✩
17 Апр 2024
61
9
50
На плате видно, что стоит параметрический LM1117 на 3,3v. Он оn VDD может забрать от 1.5v, поэтому питание 3.3v - не вариант.
Пока не могу придраться. Всё вроде так как надо. Стоят перемычки на R3 и R4, что соответствует выбору SPI интерфейса.
Единственно, что смущает - все примеры содержат:
C++:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Думаю надо начать с обнаружения экранчика на шине:
C++:
  Serial.begin(9600);

  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if(!display.begin(SSD1306_SWITCHCAPVCC)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
И попробовать с номерами IO:
C++:
#define OLED_MOSI 13
#define OLED_CLK   14
#define OLED_DC    4
#define OLED_CS    15
#define OLED_RESET 0
 
Изменено:

viktor1703

★★★✩✩✩✩
9 Дек 2021
785
197
проверил на простых программах. Она точно рабочая
Рабочая, рабочая, никто не спорит, но вот почему-то никто не говорит, что wemos имеет некоторые премудрости. Например, если при включении на D3 будет низкий уровень, то плате переходит в boot режим. И еще есть пины, на которые при старте должен быть определенный логический уровень.
 

Вложения

SuperConductor

✩✩✩✩✩✩✩
23 Ноя 2024
15
0
@EugeneFrol, @Сотнег, @viktor1703,
Только что методом перебора менял некоторые пины и при комбинации
#define OLED_MOSI D7
#define OLED_CLK D5
#define OLED_DC D4
#define OLED_CS D8
#define OLED_RESET D6
Экран заработал. Не имею понятия, что глобально изменилось, но главное что изменилось. Спасибо вам большое за то, что обратили внимание и попытались помочь.