• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

NodeMCU V3, DeepSleep, ST7735 - не могу отключить дисплей.

Maxwal41

New member
Приветствую всех.
Такой вопрос от начинающего:
Собрал на коленке связку NodeMCU V3, датчик AHT20+BMP280 на шине I2C, дисплей ST7735S 0.96 дюйма. Ничего необычного - дисплей показывает температуру и влажность, давление не проверяется. Arduino IDE, бибилиотеки - Adafruit_AHTX0 для датчика и TFT_eSP для дисплея.

Всё работает, цифры показывает, но тут я решил запитать композицию от 2х батареек. Собственно проблем не возникло, но появилось желание снизить энергопотребление. Поэтому целью стало отображение показаний каждую минуту на 5 секунд. Сначала я пытался отключить дисплей, нашел даташит и инструкции для спящего режима и отключения дисплея(0x28), это работало, но подсветка дисплея продолжала работать. Затем выяснил, что контакт BLK дисплея отвечает за подсветку, подключается к 3.3В, но если подключить его к GND, то подсветка должна гаснуть. Команды tft.writecommand(0x28); digitalWrite(D8, LOW) выключают дисплей и гасят подсветку. Энергопотребление падает с 25 до 18мА. Конечно же это не много, поэтому я пошел в сторону DeepSleep...

И тут меня ждал неприятный сюрприз. После ухода в сон подсветка загорается и горит всё время сна. Мультиметр показывает на пине D8 0.6 вольта, что логически должно являться нулём, но по факту, видимо, достаточное напряжение для запуска подсветки. Вычитал, что во время режима глубокого сна у разных пинов разное состояние, пробовал подключить BLK на другие пины(D4, D3) - действие в корне неверное, т.к. их состояние HIGH во время сна.

Есть какое-то несложное решение этой проблемы программное или аппаратное? Также я увидел, что на пин D8 используется под TXD2, может в этом проблема? В общем задача - погасить дисплей во время режима глубокого сна.

Еще немного информации:
AHT20 -----NodeMCU
SCL-----> D1
SDA---->D2

ST7735S
SCL--->D5
SDA--->D7
RES--->D3
DC--->D4
CS--->D6
BLK--->D8
 

CodeNameHawk

Moderator
Команда форума
Обычно подсветка включается подачей 3.3в.
Покажите схему вашего дисплея.
 

Maxwal41

New member
Обычно подсветка включается подачей 3.3в.
Покажите схему вашего дисплея.
Вот такой дисплей

Она получается и загорается при подаче 3,3 вольта на VCC, работает если контакт BLK не подключен или подключен к 3,3в, если на этот контакт подать сигнал LOW, то подсветка гаснет. На днях попробую поэкспериментировать с регулировкой яркости через ШИМ.
 

Maxwal41

New member
Поставьте резистор на GND.
В целом помогло, но мозгов не хватает чтобы понять какой резистор правильно ставить. 10К или 4К подсветка продолжает работать, 300Ом - подсветка гаснет во время сна, но не маловато ли сопротивления?

Получились такие данные:
С резистором
28.5 мА - во время работы.
18.5 мА - после программного отключения подсветки
2.5 мА - в режиме глубокого сна(подсветка выключена)

Без резистора
22мА во время работы(почему-то меньше)
18.5мА с отключенным программно дисплеем
4.2 мА в режиме сна(подсветка работает)
 

CodeNameHawk

Moderator
Команда форума
сантехника после кофейной гущи
Удачи.
Полезный совет, как еще больше разряжать батарейку(когда экран включен) поставив дополнительный резистор.
Если схема такая:
https://cdn-learn.adafruit.com/asse...original/lcds___displays_schem.png?1500009166
то достаточно удалить резистор R8 10 kOm, который стоит между 3.3V и Backlight.
 
Сверху Снизу