![](https://habrastorage.org/webt/4u/o1/6a/4uo16asnqs-33a09i_m-y-5q-sy.jpeg)
Приветствую, Хабр!
Как бы ни было печально признавать, но не все мои личные проекты превращаются в готовые изделия. Это происходит по нескольким причинам. Основная — нехватка времени. Второстепенная — безумство идеи. Эти причины возникают одна из другой. Появляется безумная идея, на которую нужно много времени. Хочу немного рассказать о своих незавершенных проектах, может кому-то окажется полезным, познавательным, а главное — «решабельным». Проектов, конечно, больше, но в статье собрал самые интересные.
Проект NFC-термометра
Шел далекий ковидный 2020 год (кажется, уже прошло много лет). Так как наша компания (не Selectel) непосредственно связана с разработкой, у нас мгновенно появилось пара проектов по этой тематике. К нам обращались по поводу очистителей воздуха, УФ-фильтров, ионизаторов и т. д.
Я стал усиленно думать на эту тему и меня осенило. Что чаще всего использовали в школах, садах, магазинах, торговых комплексах и на различных мероприятиях? Правильно — термометры для определения температуры тела. Это был первый признак болезни.
Идея родилась мгновенно. Разработать беспроводной датчик температуры с NFC. Я не забываю о том, что все метрологические средства должны иметь соответствующие сертификаты, но речь не об этом. Идея была проста. На гибкой подложке размещается NFC приемо-передатчик, микроконтроллер и датчик температуры. Вся конструкция приклеивается на предплечье (например). Прикладываем телефон — определяем температуру. Если перейти на RFID, то можно читать на расстоянии более метра. Плюс (а точнее минус) там другие габариты антенны.
![](https://habrastorage.org/webt/xf/fk/0n/xffk0n7bjyvd05mwmyyjzc9xcdc.jpeg)
Рис 1. NFC датчик температуры.
Устройство построено на основе микросхемы NFC Tag – NT3H2111W0FHKH, датчика температуры SI7051-A20-IMR и микроконтроллера. Суть была проста, Tag позволяет записывать в свою память, которую далее можно считать ридером NFC. У меня это даже получилось. При питании устройства от отладчика я свободно писал данные температуры с SI7051 и читал телефоном.
Ошибка была на этапе выбора тэга. Как известно, запитывание и обмен данными по NFC происходит по одной антенне (она разведена на плате). Микросхема отвечает достаточно быстро, соответственно первый раз я читал пустые (старые) поля, а второй раз — уже записанную ранее температуру. Я делал еще пару итераций платы с различными ухищрениями вплоть до коммутации антенны к tag после записи температуры в ячейки, но все было тщетно.
До сих пор разглядываю плату, смотрю код и думаю, можно ли что-то доработать. Но момент, как говорится, упущен.
Проект управления емкостным сенсором
Пока не столкнулся с подобной задачей, даже не представлял, насколько она сложна в реализации. Как можно тапать по емкостному тачу? Правильно — пальцем. А если мы хотим немного автоматизировать процесс? Ставим сервопривод, который тапает специальным стилусом по экрану. А если нужно покрыть весь экран? Тогда добавляем несколько шаговых двигателей и делаем подобие 3D-принтера с необходимым алгоритмом.
Есть другая реализация. Не буду углубляться в подробности, но, оказывается, уже существуют геймпады на основе этого метода. Яркий пример — Flydigi WASP 2.
![](https://habrastorage.org/webt/r8/ab/rq/r8abrq_l48d5vf03hgtzbp2io1c.jpeg)
Рис 2. Геймпад Flydigi WASP 2.
Думаю, что вы уже уловили суть. Устройство позволяет нажимать несколько кнопок на экране и «елозить» в небольшой области джойстиком. Как видно из картинки, покрытие маленькое и для текущей задачи не подходит.
![](https://habrastorage.org/webt/85/km/wj/85kmwj8igbroqmzaqdyp5lihztu.jpeg)
Рис 3. Контактные площадки для управления тачем.
Для начала нужно вообще понять, будет ли работать данная система для всего экрана. Было решено раздвинуть контакты (Рис 3.) так, чтобы покрыть ½ экрана и использовать два устройства.
Джойстик имеет внутри переменное сопротивление, а точнее два. На его вход подается напряжение порядка 2,5 В, а на двух выходах снимается. 1,25В по обоим напряжениям — это точка с нулевыми координатами. Так как механику необходимо было исключить, джойстик заменил двумя электронными потенциометрами AD5241BRZ10, в которые писались нужные сопротивления по I2C. Кратковременное включение этой микросхемы позволяло выдать нужное сопротивление, тем самым установить положение джойстика на некоторый момент, затем — снять его.
Забегая вперед, скажу, что идея вполне годная, если разрабатывать с нуля плату (слева на рисунке 3). Моих познаний в программировании точно не хватило бы для решения задачи. Я сделал стенд, в который помещается телефон. Принимая команды, например, по UART, Arduino nano меняет сопротивления резисторов, эмулируя джойстик. Тем самым — тапает по экрану.
![](https://habrastorage.org/webt/as/nl/lz/asnllzcxprjcjtr2bocq002qwnk.jpeg)
Рис 4. Стенд для тестирования.
Это работает. Область покрытия экрана расширилась, область работы джойстика стала больше. Единственный минус именно этого решения — это немного «рваные» нажатия на тач. Но это не критично, зато можно делать «свайп» без проблем.
На оригинальном геймпаде установлен микроконтроллер и пачка мультиплексоров, то есть аппаратная часть не очень сложная. Таким образом, если переписать ПО (либо разработать целиком плату управления), можно данную задачу решить.
Проект «Beam-on-Floor»
Этот проект я еще не до конца забросил, но отложил в долгий ящик. Почему-то пропало не только время, но и желание. Может, идея кому-то покажется интересной. У посудомоечных машин есть некая функция, которая называется Beam-on-Floor, что дословно переводится как «луч на полу». Служит она для отображения работы посудомойки — это бывает необходимо, так как, например, сушка, нагрев воды и т.д. протекают бесшумно.
Обычный таймер стирки почти всегда скрыт и виден только в момент установки программы (до закрытия дверцы). Так вот функция луча есть далеко не на всех моделях. Можно пойти простым путем: взять сигнал от индикатора/светодиода на панели и через транзистор управлять лазерной указкой (или светодиодом), направив ее (его) в пол. Я захотел разработать устройство, которое бы не требовало вмешательств в устройство машины.
Если посудомойка работает, она потребляет энергию. Основные потребители — это мотор, нагреватель, клапаны, сама плата управления и т. д. Но что будет, если измерять ток потребления и на основе данной информации зажигать/гасить луч?
Существуют так называемые трансформаторы тока, которые позволяют бесконтактно измерять мощность на нагрузке, которая проходит через провод. По сути, это является почти обычным трансформатором.
![](https://habrastorage.org/webt/gu/1w/l4/gu1wl4pgh33wfbjllziiyt7xuvm.jpeg)
Рис 5. Суть метода (картинка из интернета).
Сделал плату, спаял, написал прошивку и понял, что через трансформатор нужно пропускать только один провод из двух. Бывает, можно подлезть к нужному проводу внутри корпуса машинки (снизу есть доступ), но это сложно, особенно когда она уже установлена. Для фото, к сожалению, нашел только плату без компонентов, разведена была в корпус от Ethernet-розетки. Справа — «разъемный» трансформатор тока, который можно просто защелкнуть на кабеле.
![](https://habrastorage.org/webt/of/w8/dn/ofw8dnmsshr11hcrvgc9z0gd-5k.jpeg)
Рис 6. Плата измерителя тока в корпусе.
Думаю, буду все переделывать: уберу токовой трансформатор и поставлю микросхему измерения тока типа ACS712, а само устройство помещу в удлинитель (вроде пилота на одну розетку), к которому и будет подключаться посудомойка.
В устройстве, кстати, используется AC/DC-преобразователь LNK306PN. Очень хорошо себя показал в различных устройствах.
Идея Ambilight
К сожалению, так и осталась на уровне идеи. Если кто-то не знает, что такое Ambilight, то ниже картинка.
![](https://habrastorage.org/webt/hw/it/wy/hwitwy2uij_q4kuxsq9j4yuopcs.jpeg)
Рис 7. Ambilight.
Это технология фоновой подсветки для телевизора, которая была изобретена и запатентована компанией Philips. На данный момент есть несколько похожих реализаций данной функции с помощью адресной светодиодной ленты на задней стенке корпуса ТВ. Я знаю несколько решений.
- Анализ изображения по HDMI. Существуют приставки, которые подключаются в разрыв по HDMI, анализируют сигнал, а дальше управляют светодиодами. Отличное решение, но есть и минус: одно устройство — одна приставка. Не работает с эфирным ТВ и USB по понятным причинам.
- Приставка для ПК. Тоже адресная светодиодная лента, но приставка подключается по USB к ПК. Специализированное программное обеспечение анализирует картинку и подсвечивает экран. Такие же варианты есть для Android-телевизоров, но там множество ограничений.
- Анализ изображения камерой. Мне кажется, тут единственный минус — это кронштейн камеры. Все остальное — замечательно. Нет зависимости от интерфейсов и источника сигнала.
![](https://habrastorage.org/webt/lx/e7/vt/lxe7vt4nhpewrdsrmzognhzm7ju.jpeg)
Рис 8. Система «Nanoleaf 4D Screen Mirror»
Я же подумал, что можно обойтись без внешних обвесов в виде камеры и приставки снаружи, дополнив функционал самого телевизора.
![](https://habrastorage.org/webt/o6/_v/al/o6_valjg408myblproxx-dt3xcy.png)
Рис 9. Анализ изображения с помощью ПЛИС.
В одном из проектов мне нужно было вывести на две LVDS-матрицы одинаковое изображение. Так вот, можно просто соединить матрицы (при условии, что они очень похожи) параллельно, и они будут замечательно работать. Появилась идея разветвить LVDS и встроить в телевизор плату, которая будет анализировать сигналы с MAIN и управлять все теми же адресными светодиодами. Думаю, тут не обойтись без ПЛИС. Начал разбираться с софтом и понял, что для меня это непосильная задача.
Немного позже пришла идея, что можно конвертировать сигнал LVDS в HDMI аппаратно, используя, например IT6263 или что-то похожее. После — подключить к имеющейся в продаже приставке с HDMI, но руки так и не дошли. Как всегда, на все интересное для души не хватает времени.
Спасибо за внимание и успехов! Пусть все ваши идеи воплощаются! Делитесь в комментариях, какие проекты не удалось довести до конца, — будет интересно почитать.
Комментарии (29)
Javian
30.07.2024 08:57+1Проект «Beam-on-Floor»
У меня в 2003 году появилась стиральная машина BOSH, которая никак не сообщала об окончании стирки, кроме как зажигания светодиода. Я придумал поставить напротив него фотодиод, запускавший генератор сигнала (пищалку) на транзисторах.
the_bat Автор
30.07.2024 08:57+1Да, отличное решение! Я тоже думал встроить в столешницу фотодиод/транзистор и как-нибудь реализовать мониторинг.
questfulcat
30.07.2024 08:57+1а не проще было расковырять панель машинки и попробовать припаять зуммер параллельно светодиоду? Или гарантия мешала?
Javian
30.07.2024 08:57+1Ожидал ,что там всего там SMD под слоем лака и это не стоило потраченного время на вскрытие, демонтаж, очистку контактов и пайку.
MaFrance351
30.07.2024 08:57+1Напомнило какой-то девайс для машинистов, который так же контролировал фотодиодом зажигание лампы бдительности и начинал пищать, давая лишние несколько секунд, чтобы чуть более спокойно жмякнуть кнопку бдительности (и тем самым сберечь нервы и премию).
MaFrance351
30.07.2024 08:57+1Прекрасно.
Как по мне, проекты, когда что-то не получилось, тоже иногда стоят публикации. Это убережёт желающих повторить от тех же самых ошибок.
Ну и очередное напоминание, что не всегда железки собираются шутя и работают с первого раза, иногда это долгие вечера с паяльником и отладчиком, которые зачастую потом описываются просто как "После некоторых разбирательств стало понятно...".
the_bat Автор
30.07.2024 08:57+1Совершенно верно. Бывает для того кто публикует что-то вполне очевидно, но на деле это не так.
sepulkary
30.07.2024 08:57+2Я тоже когда-то развлеклся всякими-разными железячными проектами на базе микроконтроллеров: игрушечный сотовый телефон, твердотельный датчик радиации на Arduino, радиоуправляемый указатель поворотов для велосипедистов, GPS-трекеры, охранные сигнализации с голосовым меню и прочее.
К сожалению, бизнес-подход Adafruit (продажа железок с опенсорсными исходниками) у нас не развит, а Kickstarter не доступен...
the_bat Автор
30.07.2024 08:57+3Эх, у меня вот тоже идея сделать сотовый до сих пор есть. Потом подумаешь, а для чего? Ваша версия с дозиметром интересная.
sepulkary
30.07.2024 08:57+1Потом подумаешь, а для чего?
Можно просто так, прикрыть гештальт :)
Еще можно попробовать заработать, сделав что-то интересное и востребованное, если у вас есть возможность самостоятельно или через посредника обнародовать свой проект на Kickstarter или Indiegogo; там довольно много относительно несложных разработок, людям нравится.
NickDoom
30.07.2024 08:57Надо и мне свои наработки по сотовому выложить. У меня там была темка впихнуть ось в килобайты, а защиту для простоты реализовать по принципу «каждому исполнимому коду доступна его директория и её поддиректории». То есть, грубо говоря, c:\ — только для root :) А чтобы делать какие-то исключения — из-под рута создаём симлинки на другие директории.
Всё это должно было крутиться на сигнальном процессоре, который умеет складывать две пары регистров за один такт и делать прочие вещи, изначально предназначенные для ЦСП, но работающие для какого-нибудь наложения полупрозрачных текстур в игрушках ничуть не хуже…
MaFrance351
30.07.2024 08:57+1У меня так же есть идея сделать MP3-плеер. Не то чтобы он был мне так сильно нужен, просто давнее желание со времён начала увлечения МК.
А телефон - это само собой... Возможно, даже когда-нибудь соберу его.
NutsUnderline
30.07.2024 08:57+1когда я мечтал сделать свой телефон то уровень телефонов (бюджетных) не позволял получить что я хочу (например, внезапно, нормальную синхронизацию контактов) . ну и со встроенным счетчиком гейгера кстати. сделал кое какие наброски софта, научился рабоать с outlook. купил SDK для модемов в которые можно было свои скрипты заливать. купил cog дисплей от melt. и забил.
спустя лет 10 купил набор для сборки телефона xiadow. в нем можно уже на Си компилировать,, сделать оболочку свою. это почти не разработка, так, уровня Ардуино. Но прогресс улетел далеко вперед, объективной причины заняться - нет.
NutsUnderline
30.07.2024 08:57мне особо обидно за датчик nfc, это что особенное, а проблема выглядит чисто софтовой.
ambilight уже вроде сделали и и на плис. Но это уже точно тот случай когда проще выбрать такой телек и наслаждаться. в случае пк есть проект hyperion который организует софтовый видеозахват с экрана. ну и аппаратные видеозахваты в таких случаях используют, раньше были с аналоговым по rca, сейчас и hdmi полно недорогих
у меня изначально использовалась штука под названием ambix с управлением под usb., и можно писать свои софты, но не взлетело
Anton1906
30.07.2024 08:57А для датчика температуры нельзя было сделать приложение на телефон, которое бы считывало данные несколько раз, а на экран выводило бы только температуру, полученную во время последнего считывания?
the_bat Автор
30.07.2024 08:57Была такая идея, но я подумал об этом слишком поздно. Долго мучился, чтобы работало с первого чтения. Упустил момент.
questfulcat
Мне кажется, куда драматичнее ситуация, когда есть проекты функционально завершённые, и которыми сам регулярно пользуешься, но публиковать их в том виде, в каком они есть, как-то рука не поднимается. А долго вылизывать код и приводить к должному виду, чтобы не стыдно было выложить на всеобщее обозрение - не хватает какого-то бескорыстного трудолюбивого порыва.
pechkinkorp
я свои личные проекты, чтобы не пропали просто выложил у себя в канале.
Да может не идеальные, но опереться можно на них. В работе уже не нужны, пусть люди изучают.
(я не прогер, я конструктор)
the_bat Автор
Согласен, может кто-то воспользуется Вашим проектом для реализации своего. Бывает натыкаешься на интересные реализации чего-либо, а потом используешь у себя.
the_bat Автор
Мне кажется, что многим будут интересны проекты даже в таком виде.
MaFrance351
А ещё вариант - когда есть что-то и полностью рабочее, и даже то, чего не стесняешься, а выложить всё равно не хочется. Потому что думаешь, что ничего в этом особенного (хотя не всегда это так), что все уже такое делали, ну и прочее такое.
NickDoom
…и в результате
NickDoom
Ужасная парадигма. Поэтому «блокнот» в несколько гигабайт(!) выкладывают совершенно бесстыдно, а нормальный — не выкладывают, потому что «закритикуют за недостаточный уровень пафоса в проекте». Не надо так.
Вот на меня посмотрите — ни стыда, ни совести, есть идея — сделал пост, есть попытка — сделал статью, кому надо — подберут, кому не надо — критикуйте сколько влезет, я в состоянии «на глаз» отличить дельную критику, улучшающую проект, от придирок. За хорошее указание на свой недочёт не грех и карму поднять — человек старался, помог ведь…
И пофиг мне замечания к качеству кода в той же «четвертинке Октодона», всё равно если кто-то возьмётся продолжать — ему всё с нуля писать на GLSL, так что в коде должно быть понятно, где руки, где ноги и где функция ошибки, а работать этому коду не придётся — GLSL-версия за пять минут сделает больше, чем моё писево могло бы потенциально сделать за когда-нибудь, поэтому смысл переживать за код? Да, он говно. Я могу что-то переписать или вычленить ради героического героя, готового писать GLSL-версию и запросившего «чистовик», но «на всякий случай, чтобы пальцами не показывали» — да тогда вообще никогда статья не родится и проект тихо сдохнет, а дохнуть надо громко и публично :-D как тот же Октодон :-D
questfulcat
Вы хотите сказать, что наличие совести у разработчика перед его аудиторией - это ужасная парадигма?
dv0ich
Я думаю, хорошо бы уметь отличать добросовестность от зажатости и самоедства. Первое норм, второе делает хуже и тебе и другим.
У меня до сих пор не всегда получается.
NickDoom
Именно так. Весь первый абзац после дисклеймера.
Ну или «я боюсь осрамиться» vs «я боюсь навредить».
Хотя в силу отсутствия совести как личного качества (не на уровне парадигмы) я сначала пост оставил, а потом и вовсе выложил те наработки как есть :)
questfulcat
А как можно их отличить? Если добросовестность и есть форма зажатости, ограничения себя. По сути добросовестность - взятие на себя неких обязательств и выполнение их, в данном случае - перед потребителями твоего продукта, пусть и бесплатного.
Вот, к примеру, представьте, есть у человека одна полезная утилита, но сложная настолько, что он и сам порой забывает некоторые аспекты её работы, и приходится лезть в код разбираться. Будет ли добросовестным выкатить её релиз для общественности, в котором кроме него вряд ли кто-то что-то поймёт, а скорее, только время потеряет? В таком случае автор берет на себя обязательство не публиковать его до поры, пока не сделает удобным для неподготовленного пользователя. Что это - добросовестность? Зажатость? Самоедство? Или всё это и есть одно?