Найти в Дзене
ValeryLem

Экран на электронных чернилах (e-inc) в самодельном навигаторе

Навигатор для полетов в Ленобласти из e-inc (e-paper) и ESP32 Valery Lem от 18 декабря 2020 Тем, кому приходилось на ярком солнце, когда некуда спрятаться, разглядывать изображение на LCD экране навигатора, кроме "добрых слов" в адрес производителей этих полезных железяк, наверное приходила в голову мысль - а почему они не используют OLED или "электронные чернила", которые еще называют "электронной бумагой"? Я не смог для себя найти ответ на этот, казалось бы, простой вопрос. Может быть дорого? Не настолько, чтобы нельзя было бы отказаться от LCD. Мы тут иногда летаем помаленьку, а наверху домов и деревьев нет, прятаться в тень негде. Поэтому приходила не однажды мысль попробовать сделать себе что-нибудь наподобие навигатора из доступных деталей, чтобы можно было на солнце не напрягаясь и не отвлекаясь видеть, куда направляешься. Первая попытка была попробовать OLED дисплей. Для реализации затеи оказалось, что более-менее работоспособное устройство можно сделать на маломощном 8-разряд

Навигатор для полетов в Ленобласти из e-inc (e-paper) и ESP32

Valery Lem

Любителям микропроцесоров. Навигатор для себя из e-paper и ESP32.

от 18 декабря 2020

Тем, кому приходилось на ярком солнце, когда некуда спрятаться, разглядывать изображение на LCD экране навигатора, кроме "добрых слов" в адрес производителей этих полезных железяк, наверное приходила в голову мысль - а почему они не используют OLED или "электронные чернила", которые еще называют "электронной бумагой"?

Я не смог для себя найти ответ на этот, казалось бы, простой вопрос. Может быть дорого? Не настолько, чтобы нельзя было бы отказаться от LCD.

Мы тут иногда летаем помаленьку, а наверху домов и деревьев нет, прятаться в тень негде. Поэтому приходила не однажды мысль попробовать сделать себе что-нибудь наподобие навигатора из доступных деталей, чтобы можно было на солнце не напрягаясь и не отвлекаясь видеть, куда направляешься.

Первая попытка была попробовать OLED дисплей. Для реализации затеи оказалось, что более-менее работоспособное устройство можно сделать на маломощном 8-разрядном микропроцессоре (uPC) AtMega328p. Памяти программ с трудом хватало, поэтому подробную карту дорог и силуэтов разместить не удавалось, но для ориентации в Ленобласти казалось достаточным. Радость была не долгой - на солнце опять приходилось закрывать экран чем попало. LED экраны тоже не далеко от LCD откатились. В сумерках, в темноте, пожалуй, ничего лучше LED и не надо. На солнце - прежняя проблема.

Ознакомление со свойствами E-peper поначалу разочаровало, слишком велико казалось время обновления экрана - несколько секунд. Динамичной картины с такой скоростью обновления получить, казалось, невозможно. Но среди широкой гаммы экранов оказались такие, который допускают частичную регенерацию изображения за доли секунды. Это давало надежду на формирование достаточно динамичного изображения.

Купив для начала небольшой дисплей 1.54" 200x200 от производителя Waveshare понял, что забыл, как всегда, сначала подумать. Оказалось, что обновление всей рабочей области E-paper дисплея он требует много оперативной памяти, которой нет у AtMega328p. Вот такой облом. А по частям регенерировать изображение желание отсутствовало.

На удачу на глаза попался новый для меня кристалл ESP32, в который производители не пожалели положить сотни килобайт и RAM и FLASH, к тому же в нем есть нужные интерфейсы по несколько штук (USART, I2C, CAN), WIFI, BlueTooth - короче, больше чем надо и все это на частоте 240МГц и при 32 разрядах! Куда лучше? Цена вообще подкупила - за 300р (на алиэкспресс, конечно) уже можно найти, если подольше искать, плату с требуемым функционалом. Сравните - AtMega256 с мизерной RAM и всего 256К FLASH стОит тут у нас 600..800 руб!!!. Так она еще к тому же только на 16МГц и только на 8 разрядов. Маловато будет за эти деньги.

Начало было неплохое, пока не пошел знакомиться с документацией. Желание что-то делать постепенно начало исчезать. Дочитал - пропало вовсе. На помощь пришла ARDUINO - среда программирования с очень мощной поддержкой для тех, кто не может или не хочет влезать в дебри техдокументации. Последние версии оболочки поддерживают программирование десятков модификаций плат ESP32 (рис.1.).

Рис.1. Редактор среды программирования ARDUINO

Помощь от Arduino пришлась ко двору. С помощью библиотек для GPS модулей (GPS парсеров), датчиков давления, E-paper дисплеев от Waveshare и не влезая в дебри протоколов обмена данными удалось оживить задуманную конструевину. Предполагалось получить образ местности, направление и скорость перемещения, определение высоты (давления) над аэродромом отправления и контроль высоты в полете.

Для реализации идеи вначале был применен e-paper дисплей 1,54", который в последствии был заменен на дисплей 2,7" 264х176 b/w spi от GOOD DISPLAY. Оказалось, что плата драйвера дисплея от 1,54" подходит для 2,7" практически без переделок. Достаточно уменьшить сопротивление в истоке ключевого MOSFET транзистора. Покупать дисплей 2,7" с платой преобразователя показалось слишком накладным, а так, все равно 1,54 валялся бы без дела.

В качестве датчика давления было принято решение применить BMP180 к которому подошла библиотека функций от датчика BMP085 с интерфейсом I2C.

Для определения координат я попробовал использовать разные GPS приемники. По скорости обнаружения спутников у себя на окне мне показался более подходящим GPS/GLONASS модуль VK2828, который имеет в т.ч. и вход для отправления модуля в спячку.

На плате ESP32 нашлись все нужные интерфейсы - SPI для e-paper модуля, I2C для датчика давления и USART для парсера GPS. Понадобилось дополнительно выделить на второстепенные нужды выход процессора для включения светодиода захвата спутников и еще один для отправления модуля GPS в спячку на тот случай, если конструкция будет использоваться дома для рисования графика изменения атмосферного давления. Еще 3 входа понадобилось для подключения кнопок управления навигатором. На рис.2 привожу схему соединений.

При получении сигнала о готовности модуля GPS к навигации я включаю подсветку дисплея от светодиодов, размещенных по краям экрана. Покупка опции подсветки оказалась дороже самого дисплея, я от нее отказался.

-2

с.2. Подключение e-paper (EPR), GPS модуля и датчика давления (BMP) к ESP32

Программирование ESP32 из среды ARDUINO по кабелю USB имеет неприятную особенность - в процессе загрузки надо держать нажатой кнопку BOOT, которая очень мелкая и скользкая. Для того, чтобы обойти эту проблему, требуется добавить на плату процессора конденсатор между пином "EN" и шиной земли. На рис.2 указано место запайки конденсатора. Обратите внимание -"земля" взята прямо с ноги ESP!!!. У меня оказалось достаточным припаять конденсатор SMD 0805 0.47uF для того, чтобы проблема загрузки HEX-кода исчезла.

Еще одна проблема, которую потребовалось решать - увеличение продолжительности работы платы ESP32 от аккумулятора LiPO, имеющего напряжение в заряженном состоянии всего 4.2В максимум. Допускается разряжать литиевые аккумуляторы до напряжения 3.2В, но процессор на плате при таком напряжении питания перестает работать. Причина в том, что стабилизатор, установленный на входе питания при этих условиях не может обеспечить 3,3В, требуемые для работы ESP32. Пришлось исключить диод перед стабилизатором. На рис.2 он обозначен как VD*. После того, как диод был закорочен, аккумулятор стал обеспечивать работу вплоть до снижения напряжения до 3,5В. Однако защита от переполюсовки теперь ложится на вас.

Для работы с подключенной как на рис.2 периферией были использованы библиотеки функций. Для работы с e-paper 2,7" от Waveshare они вызываются заголовочными файлами GxEPD.h и GxGDEW027W3.h, для обслуживания интерфейса SPI этого же экрана используются функции GxIO_SPI.h. Функции обслуживания датчика давления вызываются заголовочным файлом Adafruit_BMP085.h, а для обеспечения работы парсера GPS модуля использована библиотека TinyGPS++.h

Мне не удалось средствами пакета GxEPD.h обеспечить воспроизведение растровых картинок, поэтому отрисовку местности пришлось проводить тем, что есть, прямыми линиями, треугольниками, прямоугольниками и окружностями. А куда денешься - не нравится, садись и пиши собственную библиотеку (как говорят японцы - косика сукасам). А нет - скажи спасибо за то, что дали бесплатно.

По причине, изложенной выше, все объекты разбивались на небольшие участки, начало и конец которых задавались координатами. Для объектов, не требующих высокой точности позиционирования (дороги, озера, береговая линия залива) координаты задавались с точностью до километра. Для посадочных площадок, ВПП аэродромов они были заданы с максимально возможной точностью, которую удается получить от GOOGLE карт. Для прорисовки использовалась тригонометрия.

На рис.3 представлено фото конструкции при освещении фотовспышкой. Как видите, картинка видна хорошо. Чем ярче свет, тем лучше видно. Думаю, не только навигаторы, все телефоны бы выиграли, если бы производители применяли е-paper дисплеи вместо своих OLED и тем более вместо LCD. Тем более, что e-paper уже есть и цветные.

-3

Рис.2. 2,7" e-paper модуль в самодельном навигаторе.

Загрузить видеоролик здесь мне не удалось. Наверное, не хватает знаний. Я его разместил на ютубе: https://youtu.be/iJqUA6MKvaQ. Чтобы вы могли убедиться, что картинка двигается и при том достаточно бойко, я сидел у окна и ждал, когда за окном над нашим домом появится достаточное для работы навигатора количество спутников.

Небольшие пояснения к видео. При отсутствии связи со спутниками я гашу подсветку и перечеркиваю экран в знак того, что информация не достоверна. При появлении в зоне видимости более 3-х спутников разрешается воспроизведение картинки. Навигатор лежит на подоконнике. То, что воспринимается как движение, это просто изменение вектора направления из-за неточности определения текущего места. Если появляется в зоне видимости новый спутник, немного изменяется позиция, определяемая приемником GPS.

Дома, когда GPS не нужно, прибор используется для слежения за изменением атмосферного давления. График наглядно показывает, что было и чего нам ждать

Хочется надеяться, что у вас изменится представление о e-paper дисплеях, как о ленивых и задумчивых устройствах, пригодных только для чтения книжек.