В статье приведено описание аппаратной (схемы, разводка плат) и программной реализации барометра-термометра-гигрометра на базе МЭМС-датчика BME280, микроконтроллера (МК) EFM8SB20F16 и DES E-ink-дисплея GDEW029M06 (2,9 дюйма, разрешение 128×296 пикселов) с питанием от литиевой батарейки ER14505 (3,6 В, 2,7 А⋅ч, размер AA), обеспечивающей непрерывную работу прибора в течение как минимум 10 лет. Помимо цифровых значений давления, температуры и влажности, отражающихся на дисплее раз в 10 минут, на нём построена гистограмма суточного изменения давления за 8 дней. Рассказано о конструкции и результатах работы прибора.
Пару лет назад (в конце 2020 года) компания Good Display начала производство матриц по технологии собственной разработки DES – Display Electronic Slurry (slurry – жидкая глина, суспензия, взвесь). Преимущества дисплеев на базе матрицы DES (по данным Good Display):
Дальнейшее изложение построено следующим образом. Вначале приведены принципиальные схемы устройства и кратко описаны его программные средства (в основном касающиеся вывода информации из МК в дисплей), далее показана разводка платы прибора. Затем рассмотрены конструкция прибора и результаты его работы.
Конфигурация портов для SPI0 и SPI1 (рис. 4а) соответствует МК DD1 на схеме рис. 2. Для обоих SPI сигналы SCK и MOSI настраиваются как цифровые выходы, а сигналы MISO – как цифровые входы. Порты P0.1 (CSB), P0.5 (RES), P0.6 (D/C) и P0.7(CSD) настраиваются как цифровые выходы, а порт P0.4 (BUSY) – как цифровой вход.
Таймер RTC настраивается в соответствии с рис. 4б, что даёт погрешность по времени около ±1 минута в сутки.
В программе установлены следующие назначения портов для соответствующих сигналов.
sbit CSB = P0^1; // - для BME
sbit CSD = P0^7; // - для EPD
sbit D_C = P0^6; // - для EPD
sbit RSTD = P0^5;// - для EPD
sbit BUSY = P0^4;// - для EPD
Теперь по поводу вывода информации в дисплей. Этот вывод условно можно разделить на три типа.
Первый тип – вывод цифровых значений и их размерностей для давления, температуры и влажности. Эта информация выводится в две строки. В первой (верхней) строке выводится давление и его размерность. Например, «751 мм рт. ст.». Во второй (нижней) строке выводятся температура (со знаком) и влажность с их размерностями. Например, «+25°C 43% “капля”», где «капля» – рисунок капли с делениями. Все символы двух строк расположены строго один над другим и выводятся так же, как это описано в [1], поэтому, чтобы не повторяться, объяснение подобного вывода не приводится. Для символов выбран шрифт Onyx жирный размером 61, где каждый символ выводится в поле 22×64 пиксела, причём реальные высота и ширина символа не превышают 60 и 22 пиксела соответственно. Это позволяет выводить символы без горизонтальных пробелов с расстоянием между ними по вертикали в 4 пиксела.
Второй тип вывода – это своеобразная «картинка», в которой отражаются вертикальные координаты гистограммы с минимальными (710) и максимальными (780) значениями давления в мм рт. ст. Эти значения были выбраны в связи с тем, что по данным многолетних наблюдений минимальное давление в Москве (709 мм рт. ст.) было зафиксировано 25 ноября 1973 года, а максимальное (782 мм рт. ст.) – 14 декабря 1944 года. Реальный диапазон давлений, который показывал прибор, существенно у́же: от 725 до 774 мм рт. ст. Для получения «картинки» использована хорошо известная программа LCD Font Maker V3.92. В этой программе подобная картинка была буквально нарисована, а для цифровых значений использован тот же шрифт Onyx жирный, но меньшего размера. Далее специальной опцией поворота эта картинка была повёрнута на 90° (рис. 5а). После этого опцией настройки формата вывода (сиреневая стрелка, рис. 5а) был выбран формат слева направо и сверху вниз (рис. 5б), а опцией кодировки картинки (красная стрелка рис. 5а) получены её коды (рис. 5в). Далее, нажав кнопку “Export” (красная стрелка, рис. 5в) и назвав нужный файл, можно получить все коды картинки, которые затем уже вставить в программу в виде массива. Если этот массив выводить подряд, то за счёт встроенного в контроллер дисплея инкрементирования и декрементирования счётчиков строк и столбцов все пикселы картинки выведутся туда, куда нужно. Размер картинки 128×25 пикселов, т.е. она строго вписывается в дисплей по вертикали (128), а расстояния между делениями в пикселах (10) как раз соответствуют 10 мм рт. ст., т.е. каждый пиксел соответствует 1 мм рт. ст.
Третий тип вывода – это вывод гистограммы, столбцы которой представляют собой значения давления, снятые равно в полночь, за сегодняшний день и за всю предыдущую неделю. Эти значения давления сформированы в виде массива с восемью элементами (AP[8]). Поскольку измерение параметров производится раз в 10 минут, то в час происходит 6 измерений, а в сутки – 144, что нетрудно подсчитать. В полночь, когда произведены все 144 измерения, эти значения просто переписываются одно в другое, т.е. сегодняшнее давление переписывается во вчерашнее, вчерашнее – в позавчерашнее и т.п. до конца недели. В программе это выглядит следующим образом:
AP[7]=AP[6];
AP[6]=AP[5];
AP[5]=AP[4];
AP[4]=AP[3];
AP[3]=AP[2];
AP[2]=AP[1];
AP[1]=AP[0];
Здесь никаких особенных трудностей, на взгляд автора, не возникает.
Построение самих столбцов гистограммы давления также не отличается особой сложностью.
Идея заключается в следующем.
В программном смысле каждый столбец дисплея шириной в 1 пиксел представляет собой 16-байтный массив (MP[16]), поскольку по вертикали дисплей имеет разрешение 128 (128/8 = 16), а вывод осуществляется побайтно.
Пусть, например, измеренное давление равно 753 мм рт. ст. Во-первых, от этого давления необходимо отнять минимальное его значение (710 – см. рис. 5а), чтобы столбец строго вписывался в картинку: 753 – 710 = 43. Далее, поскольку столбец выводится побайтно, необходимо выяснить, сколько целых байт содержится в числе 43. Для этого 43 надо просто нацело разделить на 8: 43/8 = 5, т.е. в данном случае получим 5 нижних байт столбца, которые должны быть нулевыми, чтобы столбец выводился чёрными пикселами. А остаток от деления (в данном случае это 3) определяет, что 3 младших бита верхнего байта столбца должны также быть нулевыми, чтобы они также выводились чёрными пикселами (байт в столбец дисплея выводится сверху вниз старшим битом вперёд). Как сформировать байт, у которого количество младших бит в точности соответствует остатку (в данном случае – 3)? Один из вариантов – взять число 0xff и сдвинуть его влево на число остатка (т.е. в данном случае на 3). Здесь необходимо напомнить, что при сдвиге байта влево освободившиеся от сдвига правые (младшие) биты устанавливаются в ноль. Таким образом, если давление равно 753, то столбец состоит из 5 полных нулевых байт и трёх младших нулевых бит 6-го (верхнего) байта. Для того чтобы этот столбец шириной в 1 пиксел вывелся на своё место, соответствующее картинке, необходимо также вывести верхние и нижние пробелы (равные 0xff).
Теперь по поводу ширины столбцов гистограммы. Здесь имеет смысл сегодняшний столбец сделать потолще, чтобы он выделялся на фоне остальных, которые сделать тоньше. Ширина сегодняшнего столбца была выбрана равной 6 пикселам, ширина остальных – 3 пиксела, ширина пробелов между столбцами – 3 пиксела.
Подпрограмма вывода столбца, соответствующего давлению (P) и ширине в пикселах (N), с необходимым количеством верхних и нижних пробелов приведена ниже. С учётом вышесказанного, на взгляд автора, понять её достаточно просто.
//---------------------
void OUTSTOLB(uint8_t N, uint16_t P)
{
uint8_t xdata MP[16],i,CP,OSTP,BYTEOST,k,b;
CP=(P-710)/8;//целая часть
OSTP=(P-710)%8;//остаток
if (OSTP != 0)
{
b=1;
BYTEOST=0xff << OSTP;//сдвиг 0xff влево на OSTP бит
}
else
b=0;
for (i=0; i<(12-CP-b);i++)
{ MP[i]=0xff;//верхние пробелы
}
if (b != 0) // есть остаток
MP[11-CP]=BYTEOST;// биты остатка
for (i=12-CP; i<12;i++)
{ MP[i]=0x00; //черные пикселы
}
MP[12]=0x7f; //P=710
MP[13]=MP[14]=MP[15]=0xff; //нижние пробелы
for (k=0;k<N;k++)
{ for (i=0;i<16;i++)
{ EPD_WRITE_DAT(MP[i]);// вывод столбца
}
}
}
//---------------------
Обращение к этой подпрограмме, если, например, требуется вывести сегодняшний столбец, равный давлению (press) и имеющий ширину в 6 пикселов, очень простое:
OUTSTOLB(6, press);
После трансляции всей программы в среде Simplisity Studio V.4 на экран в специальном окне, отражающем результат трансляции, выведется сообщение:
Program Size: data=118.1 xdata=38 const=0 code=9621
LX51 RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)
Finished building target: EFM8SB20F16G-A-QFN24_4.omf
Из этого сообщения можно заключить, что в программе использована почти вся внутренняя оперативная память с прямой адресацией объёмом 128 байт (data = 118,1), а внешняя оперативная память с косвенной адресацией объёмом 2 кбайт почти не использована (xdata = 38). Кодовая часть программы использует чуть более половины всей программной памяти объёмом 16 кбайт или 16 384 байта (code = 9621). Остаток программной памяти составляет: 16 384 – 9621 = 6763 байт ≈ 6,6 кбайт. Кроме того, при трансляции применена так называемая small-модель, в которой данные располагаются в области памяти с прямой адресацией (data). В этом случае, во-первых, существенно экономится программная память, а во-вторых, программа работает несколько быстрее.
Как можно убедиться из рис. 9, контрастность изображения DES E-ink дисплея ничуть не снижается при отрицательных температурах, что является большим преимуществом перед обычным E-ink дисплеем, у которого изображение в этих условиях существенно тускнеет ([1]).
Биоразлагаемые источники питания: необычные технические решения и перспективы
В статье приводятся сведения об инновационных разработках безопасных биоразлагаемых элементов питания как предтечи создания съедобных электронных модулей и блоков для медицинской диагностики организма человека, повышения его живучести и приумножения энергетического потенциала. Черпая вдохновение в свойствах живых организмов, ферментов, использующих окислительно-восстановительные кофакторы для биогенераторов, автор представляет описание перезаряжаемой съедобной АКБ из доступных материалов в проекции создания и других природных источников возобновляемой энергии. 13.09.2024 СЭ №7/2024 456 0 0Россия и все остальные: перспективное партнёрство в области современных электронных технологий, поставок и кадров
В последние годы ориентация сотрудничества российских разработчиков РЭА с международными коллегами и цепочки поставок компонент для РЭА меняются. В ответ на вызовы времени идёт поиск новых поставщиков и новых зарубежных партнёров, рынки которых перенасыщены инвестициями и в целом – заняты. В этой ситуации в поиске взаимовыгодных путей применяют креативные решения. В обзоре рассматриваются временные трудности и перспективы, с которыми сталкиваются разработчики в России, а также особенности и решения, влияющие на достойный выход из кризиса. 13.09.2024 СЭ №7/2024 383 0 0Биометрические системы, информационные киоски (БИК), турникеты и шлюзы с АСО. Обзор оборудования, компонентов и особенностей установки
Повсеместно биометрическую идентификацию рассматривают как перспективный инструмент для быстрых и безопасных операций почти универсального (в самых различных сферах) применения. Несколько лет назад появились биометрические информационные киоски, турникеты и шлюзы. Эти модели постоянно совершенствуются. О новинках, связанных с расширением функционала и защиты современного оборудования, ставших возможными профессиональными усилиями разработчиков РЭА и производителей оборудования, предлагаем ознакомиться в нашем обзоре. Основной акцент в формате импортозамещения современной электроники сделан на серийные модели отечественных производителей. 04.09.2024 СЭ №6/2024 589 0 0Аккумулятор 18650 для радиоканала
Аккумуляторы 18650 имеют рабочие напряжения 3…4,2 В, что не позволяет использовать их непосредственно в схемах с 5-вольтовым питанием. В статье предложено схемное решение формирования требуемого значения напряжения методом накопления импульсов самоиндукции от дросселя. С целью уменьшения потребления энергии формируется режим «сна» для используемого микроконтроллера 12F675 и радиомодуля HC12 в комбинации с отключением общего провода других потребителей энергии электронным ключом на полевом транзисторе. Приведена методика расчёта длительности работы на аккумуляторе в режиме «измерение-сон». 02.09.2024 СЭ №6/2024 402 0 0