Pull to refresh
88
-1
Ревич Юрий @YRevich

инженер-электронщик, писатель-популяризатор

Send message

HYT939 и калибровка датчиков температуры-влажности

Reading time 16 min
Views 4.7K

Фото с сайта market.yandex.ru

Индивидуальная калибровка ширпотребовских датчиков температуры-влажности, как показал многолетний опыт, — абсолютно необходимая операция. Для почти всех имеющихся в продаже типов разброс по температуре в ±2 градуса и ±5% влажности – не исключение, а норма. И очень некрасиво, когда уличный датчик показывает +2° при замерзших лужах, а поставленный рядом с комнатным собратом демонстрирует влажность на 10% выше. И это средняя норма — попадаются экземпляры с куда большим отклонением, как вы увидите, прочитав эту статью до конца. В принципе ±5% отклонения влажности — вполне допустимая величина (ГОСТ на измерения микроклимата в помещениях допускает такой разброс), но согласитесь, что два датчика рядом должны все-таки показывать близкие величины, а на практике случай, когда родственные датчики впадают в противоположные крайние отклонения — совсем не редкость.

Тема достоверности данных с массовых датчиков становится все острее — существует уже немало сервисов, предоставляющих общий доступ к частным измерительным системам параметров окружающей среды (вот самый, вероятно, известный). Даже звучный термин появился — «гражданская наука» (citizen science)!

Если температуру калибровать относительно несложно (достаточно точные лабораторные термометры не представляют дефицита), то влажность представляет проблему, почти непреодолимую в домашних условиях. В конце концов я решился на покупку дорогущего (в европейских каталогах более $100) датчика швейцарской фирмы iST под непроизносимым для русскоязычного пользователя названием HYT939. Швейцарцы декларирует «из коробки» отклонение ±0.2° по температуре (в диапазоне от 0 °C до +60 °C) и ±1.8 % по влажности (в диапазоне от 0% до 90%). Конечно, употреблять его при такой дороговизне можно только в качестве образцового, но и это уже много: по крайней мере есть с чем сравнивать без боязни промахнуться «с точностью до наоборот».
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 35

Незаслуженно забытая классика: изучаем возможности ATmega324PB

Level of difficulty Medium
Reading time 17 min
Views 7.6K
Около 15-16-го года, как раз когда Atmel перешла в руки Microchip, я рылся в параметрических таблицах AVR на новом сайте, пытаясь разобраться, «что мы обрели и что потеряли». И тогда обратил внимание на продукт с крайне неудачным, на мой взгляд, названием: ATmega328PB. Почти неотличимый по названию от всем знакомого по Arduino ATmega328P, он, однако, содержит намного больше «фарша»: по паре портов UART, SPI, TWI, два 8-битных и аж три 16-битных таймера; причем все это, в отличие от монстрообразного ATmega2560, в тех же габаритах и с тем же количеством выводов.

Я тогда еще подумал, что хорошо бы кто-нибудь догадался выпустить на этом деле что-то ардуиноподобное. В Arduino всегда остро не хватало лишнего «железного» UART: родной занят общением с компом и загрузкой программ, а SoftwareSerial, как я убедился на собственном опыте, выручает далеко не всегда.

Но прошло почти десять лет, за это время развитие и профессионального и DIY-сектора свернуло в более производительную и удобную сторону 32-разрядных платформ, а на ATmega328PB так ничего и не появилось — казалось, он вообще остался незамеченным (UPD 03.05.23: тут мне подсказали, что я неправ: см. ссылку ). И вот на этом фоне мне вдруг совершенно неожиданно предложили попробовать отладочную плату с контроллером, о котором я ничего ранее не знал: ATmega324PB. По названию можно догадаться, что это какой-то аналог упомянутого ATmega328PB — старая модель с увеличенным количеством «фарша». И все оказалось даже лучше, чем можно было ожидать.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 14

LGT8F328P: импортозамещение по-китайски (окончание)

Reading time 13 min
Views 12K
В первой части рассказа о контроллере LGT8F328P китайской фирмы Logic Green рассказывалось об этом контроллере, как замене классического Arduino, а также об использовании в Arduino-среде некоторых его расширенных возможностей. В этой части пойдет речь о программировании LGT8F328P на самом низком уровне: на AVR-ассемблере. Это лучше позволит понять его устройство, отличия от AVR и тонкости программирования тех или иных составляющих.


Для написания и загрузки ассемблерных программ, как в AVR, так и в LGT8F328P необходимо обзавестись некоторыми специальными инструментами. Здесь не очень важно, какую именно среду использовать (любую из привычных вам, если вы справитесь с интеграцией в нее LGT8F328P), лишь бы она умела производить hex-файлы.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 10

LGT8F328P: импортозамещение по-китайски (начало)

Reading time 19 min
Views 39K
Китайская фирма Logic Green еще примерно в 2015 году взялась за выпуск усовершенствованных аналогов линейки ATmega88-328. В настоящее время выпущены контроллеры LGT8F88P/168P/328P, старший позиционируется для производства Arduino-аналогов. В народе их называют «клонами Arduino», что неверно: ни сами контроллеры, ни платы на их основе клонами не являются, так как существенно отличаются от оригинала.

Однако, LGT8F328P и платы на его основе, если научиться правильно с ними обращаться, действительно могут заменить Arduino в большинстве применений, причем это потребует не очень большой возни. А если приложить усилия, то вы обнаружите, что LGT8F328P даже имеет довольно много преимуществ. Но приготовьтесь к трудностям: импортозамещение по-китайски означает, что большую часть времени вам придется потратить на угадывание «а что они тут имели в виду».

В этой статье не ставится задача показать все преимущества и особенности LGT8F328P. Мы далее попробуем только разобраться, как подключать некоторые более-менее распространенные платы, выполнять какие-то стандартные задачи, а также как использовать некоторые расширенные возможности LGT8F328P.

Так как статья получилась объемная, она разбита на две части: первая часть о простом программировании в Arduino IDE и вторая о программировании на низком уровне с обсуждением некоторых особенностей внутреннего устройства LGT8F328P.
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Comments 27

Управление светодиодными индикаторами с помощью регистров сдвига с токовым выходом

Reading time 19 min
Views 24K

Речь в этой статье пойдет о цифровых или цифробуквенных дисплеях для индикации различных показаний, которые часто так и называют индикаторами. Здесь мы остановимся только на одной их разновидности — светодиодных (LED) семисегментнтных индикаторах. На мой взгляд, одна из самых древних разновидностей дисплеев незаслуженно отставлена на периферию разработок, хотя по многим параметрам (контрасту, читаемости, минимальной неиспользуемой площади окна, надежности и долговечности, наконец) LED-семисегментники дают фору любым другим разновидностям, включая ближайших конкурентов в виде OLED.

Читать далее
Total votes 36: ↑35 and ↓1 +34
Comments 37

Трансформаторные датчики тока

Reading time 19 min
Views 17K
Представьте себе, что у вас встала задача измерения тока потребления в бытовой сети 220 В, 50 Гц. Причем главное ваше требование — невмешательство в существующую проводку. Мое непоколебимое мнение — в питающей ваш дом линии должно быть как можно меньше всякого, потому что каждый лишний агрегат есть потенциальная точка отказа. Если не сам по себе (как УЗО в старых загородных домах, где трудно избежать утечек), то как минимум из-за дополнительных контактных соединений, и хорошо, если эти соединения сделаны по стандартам, а не из оцинкованной стали в контакте с медью.

Винтажный измеритель тока и напряжения совершенно загадочного назначения. Но эффектно придумано, согласитесь!

Иными словами, в качестве решения задачи измерения тока в бытовой сети отпадает все, устанавливаемое в разрыв проводки — и фирменное и самодельное. Традиционные шунты понятно почему (ко всему остальному они еще и пожароопасны), но не годятся и измерители на основе датчиков Холла (вроде популярных ACS7хх). Они требуют точной ориентации относительно проводника, а, значит, все равно устанавливаются в разрыв провода.

Остаются трансформаторы тока. Вот их сейчас и рассмотрим с упором на самостоятельное изготовление: коли мы не вмешиваемся в проводку, ничего потенциально опасного мы соорудить не можем. Но сможем ли сделать удобнее и дешевле покупных?
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Comments 30

Приемопередатчик HC-12 и датчик температуры DS18b20 на AVR-ассемблере

Reading time 26 min
Views 16K
По мотивам содержания моей книжки «Программирование микроконтроллеров AVR: от Arduino к ассемблеру» была опубликована статья о подключении дисплеев к AVR с применением только «чистого» ассемблера. Под «чистым» имеется в виду наличие только простейшего редактора кода и программатора, и отсутствие необходимости во всяких навороченных инструментах вроде Atmel Studio. В конце я пообещал, что изложенный там материал продолжится изложением примеров, затронутых в книжке лишь вскользь или не вошедших в нее вовсе.

Одним из таких моментов является беспроводная связь между устройствами, вторым — цифровые датчики (в книжке большей частью изложено обращение лишь с аналоговыми). По нижеизлагаемым причинам для связи я остановился на модуле HC-12, а в качестве цифрового датчика использовал одну из бессмертных разработок «всех времен и народов» — датчик DS18b20.

Для упрощения отладки проекта его составляющие сначала моделировались на Arduino, и затем воспроизводились на ассемблере на более адекватной элементной базе.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 28

Управление LCD и OLED дисплеями на AVR-ассемблере

Reading time 27 min
Views 15K
Сразу предупреждаю, что не собираюсь разводить холивары насчет преимуществ AVR-ассемблера перед С/Arduino, или даже перед BASCOM-AVR и MikroPascal for AVR — каждый инструмент уместен в своей области. У ассемблерного подхода в ряде случаев имеются свои преимущества — в основном это небольшие проекты, а также системы, в которых требуется точный расчет времени. Немаловажное достоинство этого подхода — простота необходимого инструментария. Но один из крупнейших недостатков в сравнении с языками высокого уровня — отсутствие готовых библиотек хотя бы для базовых задач. Для того же Arduino они имеются на все случаи жизни, но, к сожалению, совмещать их с ассемблером оказывается сложно и потому нецелесообразно — проще уж все и сделать с помощью самого Arduino. Поэтому некоторое время назад я задался целью создать более-менее законченную экосистему для проектов на основе AVR-контроллеров с программированием на чистом ассемблере.

Основные результаты по созданию такой экосистемы изложены в книжке под названием «Программирование микроконтроллеров AVR: от Arduino к ассемблеру». Там же вы найдете подробное изложение целесообразности и границ применимости изложенного подхода. Руководствуясь приведенными в книге примерами, можно строить вполне законченные проекты с минимальной затратой сил и средств, и получить в результате девайс, ласкающий взор своей компактностью, экономичностью и скоростью работы. В этой статье я привожу один из примеров обращения с современными периферийными устройствами с помощью ассемблера, который работает лучше, быстрее и стабильнее, чем его аналог на Arduino.
Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 22

Еще раз о передатчиках и приемниках 433 МГц

Reading time 10 min
Views 177K
Простейший комплект из приемника и передатчика ISM-диапазона 433 МГц завоевал заслуженную популярность в среде любителей электроники. Комплекты дешевы (даже в «Чипе-Дипе» их можно купить рублей за 300, а на Ali, говорят, вообще за полтинник), просты и надежны. Кроме того (о чем вы, возможно, не подозреваете), это самый дальнодействующий и проникающий способ беспроводного обмена данными — сигнал на частоте 433 МГц куда лучше проходит через препятствия и действует на более далеком расстоянии, чем в популярном диапазоне 2,4 ГГц (433 МГц полностью задерживаются стенкой в полметра бетона, а Wi-Fi умирает уже на 10 сантиметрах). Допускаю, что недавно появившиеся модули MBee-868, будучи снабженными соответствующей (направленной) антенной, «стреляют» дальше, но они как минимум на порядок дороже, сложнее в подключении, требуют управления энергосбережением и предварительной настройки. И вдобавок частота 868 МГц вдвое хуже проходит через препятствия (хотя, конечно, несравненно лучше частоты 2,4 ГГц).



О приемниках-передатчиках 433 МГц написано очень много (в том числе и на хабре, конечно). Однако, правильно включать в схему этот комплект по какой-то странной причине, кажется, не умеет никто. Когда я в который раз прочел вот тут, что комплект «принимал на 8-ми метрах в пределах прямой видимости, 9-ый метр осилить не удалось», мое терпение лопнуло. Какие еще 8 метров?! В 40-50 я бы поверил, хотя в реальности, наверное, дальность еще больше.
Читать дальше →
Total votes 76: ↑74 and ↓2 +72
Comments 57

Опыт использования ЖК-дисплеев на основе продукции МЭЛТ

Reading time 18 min
Views 15K
Эта статья посвящена увлекательному приключенческому квесту, который мне пришлось пройти в процессе создания обновленного внешнего датчика для метеостанции, описанной вот в этой статье полтора года назад. По опыту эксплуатации предыдущей версии очень хотелось создать датчик с контрольным дисплеем, чтобы можно было без проблем периодически проверять (и поверять) наиболее капризный компонент станции — датчик скорости ветра. Приключения начались тогда, когда я стал подбирать для этой цели дисплей и по ряду причин, о которых далее, остановился на продукции родного МЭЛТ. Но прежде чем я перейду к описанию приемов нетрадиционного секса способов справиться с выбранными мной произведениями этой фирмы, стоит кратко остановиться на главной причине всей этой грандиозной модернизации, которую я затеял.
Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Comments 19

Метод векторного осреднения при измерении направления ветра

Reading time 6 min
Views 7.1K
Год назад мной была описана метеостанция с измерителем направления и скорости ветра. По опыту двух сезонов эксплуатации в нее были внесены некоторые изменения и улучшения, которые частично описаны там же в дополнениях к основному тексту.

Одно из таких изменений касается расчета среднего значения направления скорости ветра. К моему изумлению, в Сети я ничего по этой теме толкового не нашел, только на одном из форумов народ самостоятельно почти додумался до метода векторного осреднения (но только почти, задачу в общем виде и там не решили). Потому я посчитал полезным вынести эту тему в отдельную публикацию — вдруг кому еще пригодится. Метод может использоваться для осреднения любых векторных величин, не только ветра или течения.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 19

Русификация библиотеки LiquidCrystal_I2C для OLED-дисплеев Winstar

Reading time 5 min
Views 34K
Для строчных дисплеев Winstar очень соблазнительно сократить число управляющих соединений, которых даже при четырехпроводном включении получается не меньше шести (R/W можно не подключать, см. вот эту публикацию автора). Говорят (в том числе и сами винстары, см. оф. сайт), что контроллер WS0010 может управляться по SPI (а некоторые даже и по I2C!), но инструкций в документации на эту тему упорно не помещают, и как с этим управляться — непонятно. К тому же SPI помогает не сильно — вместо шести соединений получаем четыре привязанных к дисплею, потому что еще для каких-то целей SPI в любительской практике употребляют нечасто. Потому самое удобное решение в плане сокращения числа соединений для стандартных плат Arduino — использовать так называемый расширитель (экспандер) портов на основе шины I2C под названием PCF8574. Это позволяет сократить число необходимых соединений до двух (не считая питания), причем на основе выводов стандартного порта TWI, что не мешает подключать к нему же различные датчики, часы и т.п.
Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Comments 60

Станция для измерения скорости и направления ветра

Reading time 29 min
Views 48K
Обычная бытовая фирменная или самодельная метеостанция измеряет две температуры-влажности (в комнате и на улице), атмосферное давление и дополнительно имеет часы с календарем. Однако, настоящая метеостанция имеет еще много всего — датчик солнечной радиации, измеритель осадков и всякое подобное, что, в общем, требуется только для профессиональных нужд, за одним исключением. Измеритель параметров ветра (скорости, и, главное, направления) — очень полезное дополнение для загородного дома. Причем фирменные датчики ветра довольно дороги даже на Али-Бабе, и имеет смысл присмотреться к самодельным решениям.
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 43

Графический и текстовый режим дисплеев Winstar

Reading time 11 min
Views 29K
Графические дисплеи, в том числе и типа OLED, больше всего представленные на нашем рынке фирмой Winstar, имеют куда меньший спрос по отношению к строчным и публикаций по их применению также намного меньше. Между тем, именно графические OLED-дисплеи из-за отсутствия привязки к таблицам шрифтов предопределенного рисунка, предоставляют наилучший способ для получения эргономичных индикаторных устройств для самых разных надобностей. Причем оказалось, что графический режим в контроллере WS0010 иницируется проще и работает стабильнее, чем текстовый.

Прежде чем перейти к рассмотрению собственно графических дисплеев, рассмотрим вечнозеленую проблему с проблемами включения текстового режима контроллера WS0010, которая получила неожиданное и очевидное решение (ах, где были мои глаза!).
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Comments 11

Оценка методов измерения низких частот на Arduino

Reading time 12 min
Views 24K
Задача, собственно, возникла из необходимости считывать частоту вращения обтюратора с оптическим датчиком, установленного на самодельном чашечном анемометре. Сколько там дырок не сверли по окружности, но когда ветер слабенький, частота с выхода датчика будет составлять единицы герц (особенно, если датчик хорошо отбалансирован и облегчен для снижения порога трогания по максимуму).

Озадачившись таким вопросом, я первым делом выяснил, что ничего хорошего стандартные библиотеки в этом плане не предлагают. Есть, оно конечно, FreqMeasure и FreqPeriod, но они мне не понравились с первого взгляда: излишне усложненные и к тому же с почти полностью отсутствующей документацией. В довершение всего прилагаемые к ним примеры у меня просто не заработали с первого раза (я догадываюсь, почему, но возиться не стал — неинтересно копаться в чужих ляпах).

Пришлось делать самому. Малые частоты нужно измерять через период, потому идеальный конечный результат — нечто вроде функции pulseIn(), только измеряющей не длительность импульса, а период. Получилось несколько вариантов, которые и предлагаю аудитории в надежде, что кому-нибудь они пригодятся. Для каждого варианта определялись границы применимости и рассматривались достоинства и недостатки в сравнении друг с другом.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 13

О книге Саймона Монка «Программируем Arduino. Профессиональная работа со скетчами»

Reading time 6 min
Views 14K
По сути это комментарий к презентации книги, но получилось довольно многа букв, потому пришлось выделить в отдельную статью.

Книга довольно интересная и может быть рекомендована всем, кто, так сказать, «продолжает» работу с Arduino. Совсем начинающим она довольно бесполезна, а вот для расширения представления о том, как со всем этим хозяйством обращаться, подходит вполне. Но целевая аудитория не настолько разбирается в предмете, чтобы воспринять критично некоторые утверждения автора и расшифровать многочисленные ляпы переводчика в сговоре с редакторами. Причем автору промахи простительнее, так как он явно программист, а не электронщик, и не может разбираться в предмете досконально. А вот редакторы обязаны были такие места прокомментировать.

Все написанное далее не имеет цели как-то задеть автора и издательство, которые сделали хорошее дело. Я пишу это с надеждой облегчить жизнь читателю, которому посчастливится наткнуться на эти мои измышлизмы. Книга, повторяю, полезная и содержательная, и отдельные промахи не меняют этого моего отношения.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 25

О подключении и работе с текстовыми OLED-дисплеями Winstar

Reading time 9 min
Views 42K
Строчные (или текстовые) дисплеи предназначены для выдачи текстовой информации в виде строк. Они бывают нескольких типов (прежде всего, ЖК или самосветящиеся OLED), и обычно в их маркировке присутствуют цифры 1202, 1602, 1204 или похожие, указывающие на количество строк (в примерах 2 или 4) и знаков в каждой строке (12 и 16). Есть и однострочные дисплеи такого типа, но мы в дальнейшем изложении ориентируемся на более употребляемые двухстрочные.

Определяющая часть таких дисплеев совместима по управлению с контроллером HD44780 (фирма Hitachi). Самые популярные (по крайней мере, в нашей стране) дисплеи этой разновидности выпускает фирма Winstar. Причем ЖК-разновидности (название начинается с букв WH, например, WH1602) один в один совместимы с системой команд HD44780, а OLED-типы (название начинается с WEH, например, WEH001602) имеют усовершенствованный контроллер WS0010. К сожалению, или к счастью — сейчас будем разбираться.
Читать дальше →
Total votes 42: ↑40 and ↓2 +38
Comments 36

Русификация библиотеки openGLCD для Arduino

Reading time 5 min
Views 19K
Написание русскоязычного текста на графических дисплеях с контролером ks0108 или его аналогами все еще представляет существенные трудности. Библиотека openGLCD, которую рекомендуют официальные сайты Arduino, в оригинальной комплектации последней на данный момент версии не содержит никаких кириллических шрифтов, кроме шрифта cp437font8x8. На практике он малопригоден, потому что в русскоязычной части поддерживает кодировку Win-1251. Следовательно, чтобы выводить символы таким шрифтом, их нужно либо вставлять в текст восьмеричными или шестнадцатеричными кодами (и при этом остаются неясности со строчной буквой «я», как указывает в комментарии сам создатель шрифта), либо все равно писать отдельную функцию перекодировки, как это сделал arduinec для библиотеки Adafruit-GFX.

Кроме всего прочего, cp437font8x8 крупноват для экранчиков 128х64 точки. Оптимальным размером шрифта для вспомогательных надписей на таком дисплее остается System5x7. Мы здесь сосредоточимся на русификации именно системного шрифта, хотя читатель может по этому образцу самостоятельно русифицировать и любой другой шрифт (особенно, если у него экран побольше).

А в чем проблема?

Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 13

Information

Rating
Does not participate
Location
Жуковский, Москва и Московская обл., Россия
Date of birth
Registered
Activity