Забавные и полезные «ардуинные поделки»

image-loader.svg

В этой публикации я хочу рассказать о нескольких «ардуинных поделках», которые вы, возможно, найдете достаточно забавными или полезными. Как правило, все они просты, и доступны для повторения даже начинающему «ардуинщику». Хочу сразу успокоить читателей — о самодельных станциях погоды, контроллерах бойлеров, и устройств для полива растений речи тут идти не будет; при желании, вы найдете на «Хабре» (не говоря уж про интернет) «стопятсот» статей про подобные гаджеты. Впрочем, мои проекты тоже не отличаются особой оригинальностью (за исключением, как я думаю, одного).

Нужно сказать, что вместо оригинальных «ардуин» я предпочитаю использовать ESP32 dev board: при гораздо более низкой цене, они предоставляют намного большую функциональность. Как-то, я купил на «Алибабе» мелкооптовую партию в сто штук по неплохой цене, затем 80 продал на eBay, а 20 оставил себе для поделок и подарков увлеченных «ардуиненьем» друзьям и приятелям. ESP32 при этом обошлись мне бесплатно (даже что-то, вроде, заработал –, но тут же потратил для закупки контроллеров, дисплеев etc. — на PayPal-е деньги на залеживаются).

Впрочем, все проекты, упомянутые в этой статье, очень легко портировать на оригинальные «ардуины».

Я не буду приводить в этой статье код, схематику, и использованные детали (BOM, bill of materials), поскольку все это есть в описании проектов на гитхабе, и нет смысла перегружать статью излишней информацией. Правда, все описания там на английском, но, поскольку это мой английский (говорю я on English, наверное, все-же намного понятнее, нежели пишу), то у вас проблем возникнуть не должно. Кроме того, там полно красочных картинок! ​ Ну, а если будет что неясно, то спрашивайте по-русски тут или даже на гитхабе.

Итак, поделка №1: «Цифровой магический шар»

ce295f0fd439b7d268a7757851700c8c.jpg

Как-то, борясь с «ковидной скукой», «наардуинил» вот такую электронную игрушку, цифровой «Magic 8 Ball». Если вы не видели подобный шар «вживую», то, должно быть, вспомните по великолепному фильму «Interstate 60» с Гэри Олдменом, Кристофером Ллойдом, Майклом Джей Фоксом и Джеймсом Марсденом.

Из предыстории проекта: моим детям кто-то подарил оригинальный «Magic 8 Ball», но моя малышка (младшая дочь, ей тогда было 5 лет с «хвостиком») еще не умела читать по-английски, и потому она расстроилась, что не может «использовать магию» и спросить «волшебный шарик» о будущем ее чрезвычайно важных детских надежд и мечтаний. Она спросила папу (т.е. меня), не смогу ли я «заставить шарик заговорить по-русски». Ну, а папа сдуру пообещал — вот и пришлось делать («пацан сказал — пацан сделал!»).

Проект получился не очень сложный, но достаточно занимательный и «насыщенный» разными контроллерами. Исходные коды и схематика доступны на гитхабе: https://github.com/sensboston/magic8ball

Главные отличия от подобных проектов «magic 8 ball» (а их хватает) заключаются в многоязычности, реалистичной (если, конечно, это можно так назвать) анимации, голосовой поддержке и имплементацией нового (как я надеюсь) типа UI.

Прошу прощения за качество презентации, но я не только не видеоблогер, но даже и не учусь ​

Поделка №2: «умный» стартер мотора автомобиля

image-loader.svg

Уже весьма продолжительное время (более 18 лет), на всех моих автомобилях была установлена опция удаленного запуска двигателя. Получив и опробовав, в первый раз, эту опцию с Toyota Matrix, я, в дальнейшем, буквально требовал от дилеров установки подобной опции на всех машинах, что я покупал или брал в лиз (а подавляющее большинство из них были Nissan Altima разных лет, см. эту статью).

И, действительно, эта опция чрезвычайна удобна как зимой, в мороз, так и летом, в жару: можно из дому прогреть или охладить салон перед поездкой. Меня долго занимал вопрос:, а возможно-ли этот процесс как-то автоматизировать (для меня было особенно важно из-за регулярных поездок в офис: утром, порой, просто «заматываешься» в спешке и забываешь нажать на кнопку)?

Коммерческие решения, существующие на рынке, я рассматривать не стал: мало того, что они достаточно дорогостоящие, но еще и требуют подписки на платный сервис (ежемесячная оплата порядка $10 или даже $20), а также полностью проприетарные. Поди знай, кто и когда будет включать мой автомобиль через 3G?!

«Высокотехнологичный» способ — эмулировать сигнал от кнопки на «брелке» (car remote key fob) — использовать, оказывается, далеко не так просто: современные RF протоколы car remotes надежно (ну, сравнительно надежно) шифруются «плавающим ключом», и для подобного взлома требуются весьма нетривиальные знания. Может быть, кто-то напишет на эту тему статью на «Хабре»? Можно было, конечно, просто вскрыть второй «брелок», припаять «ардуину» проводами прямо к PCB «брелка», и «нажимать» кнопку через DIO. Но, поскольку «Альтимы» я «лизовал», не хотелось «мутить» с брелком, ведь при лизе сдавать автомобиль нужно в полной комплектации, и, по возможности, наилучшем виде (иначе выставят счет).

В результате, я решил остановиться на самом простом варианте — «тупом» и прямолинейном роботе-«кнопконажималке». Поскольку 3D принтером я до сих пор так и не обзавелся, поэтому конструкцию «робота» пришлось собирать из кусочков полудюймовой деревянной доски. Эти кусочки были надёжно скреплены шурупами, потом вся конструкция, в «истинных традициях» русских инженеров, была доведена до кондиции напильником (я не шучу!), покрашена и «финиширована» для приятных тактильных ощущений нашим «лучшим старым другом», черной изолентой. Кстати, в RL эта штука выглядит намного круче, чем на фотках.

В качестве главного «привода» был выбран сервомотор MG995 — крутящего момента у него хватит не только, чтобы нажать на кнопку, но и намного больше. Второе достоинство данного «серва», что для управления им практически ничего не нужно — только подключить control wire к нужному пину dev board, а для питания и земли подойдет обычный 5-вольтовый блок (т.е. не нужны платы ни бриджей, ни драйверов).

Самой сложной частью проекта было создание кривошипно-шатунного механизма (для преобразования кругового движения в линейное — ну, чтобы нажать кнопку). Попытки найти что-то готовое в интернете не привели к успеху (просто нет такого, либо есть что-то похожее, но по фантастической цене!), поэтому пришлось прибегнуть к «наколенному» решению — была взята и распилена пластиковая опора копеечной ветровой вертушки («на его месте мог бы быть я!» © — т.е. могла бы быть любая пластиковая трубка и стержень), с помощью обычной сигаретной зажигалки были расплавлены концы пластикового прутка, а потом просто зажаты пассатижами. Немного шлифовки надфилем, тонкое сверло, пластиковые болтики для сопряжения, Epoxy клей (это важно, сопряжение должно быть надежным) — и великолепный «кривошатун» в нашем распоряжении!

К слову сказать, конструкция в общем получилась, как любят говорить американцы, «solid as a rock» («твердая, как скала»). И работает, как хорошие часы: очень крепкая, надежная и софт не глючит.

Изначально я подумывал о простой «тупой нажималке», которую потом можно было-бы интегрировать в openHAB (ну, или другой проект «Smart Home»). Но потом еще подумал: «У меня в распоряжении есть мощный SoC, с достаточным количеством памяти и Wi-Fi, так в чем же дело?!» и засел ваять «умную программку».

Эту программку вы можете найти вот тут: https://github.com/sensboston/CarStarter

Как она работает (вкратце): стартует web server, через который доступна страница конфигурации. Поскольку я решил обойтись «минималистическим решением», и не добавлять ни контроллер real time clock, ни temperature sensor, требуется подключение к интернету через Wi-Fi. Программа синхронизирует время с NTP сервером (я использую time.google.com), а «забортную» температуру получает от openweathermap.org (это абсолютно бесплатно, нужно просто зарегистрировать эккаунт). В назначенное время программка «командует» мотору «нажать» сначала кнопку «close doors», а потом «engine start» (такую последовательность предусмотрел Nissan). Для других производителей автомобилей, вы можете легко изменить эту последовательность (но, AFAIK, у всех она примерно одинаковая).

Самое обидное, что из-за проклятого COVID-19, и, соответственно, работы из дому, мне так и не довелось воспользоваться в «штатном режиме» этой нетривиальной разработкой, ну, а сейчас уже поздно. Впрочем, выбрасывать я ее не собираюсь: кто знает, может, через полтора года и пригодится ​

Поделка №3: «умный» Wi-Fi ремоут для «глупых» устройств с инфракрасными пультами

bff4ae00ee5dd9373ddbe383fa3cd2aa.jpeg

Это совсем уж простая и незамысловатая поделка, но она позволит вам достаточно легко превратить ваше «глупое» устройство с пультом инфракрасного управления, в «новый, молодежный и хипстерский» smart home device, притом, практически, без затрат. Хотя, конечно, если вас больше заинтересует готовый гаджет, то со спокойной совестью (ну, или почти, ибо «китайская проприетарщина»!) порекомендовать вот такое устройство, Broadlink RM mini ¾, который на eBay/Ali можно купить примерно за $15. Что любопытно, компания Broadlink даром, что китайская, но имеет до удивления приличную и грамотную тех. поддержку, отвечающую профессионально и «по делу» в течение 12 часов.

Вот ссылка на проект: https://github.com/sensboston/SmartRemote

Там же лежит крохотный snippet, для чтения IR кодов с реальных пультов.

Код до неприличия простой и прямолинейный; даже у людей с минимальным опытом «ардуиненья» не должен вызывать вопросов.

Подобных решений полным-полно в интернете, всевозможной степени простоты или сложности, а также «баговости». Моих «инноваций» тут немного; единственно, замечу, поскольку я не художник и не веб-дизайнер, для меня всегда было большой проблемой нарисовать «не позорную» landing HTML страничку с кнопками. В данном случае я хитро обошел эту проблему, путем создания «фотореалистичной» копии оригинального пульта (в фотках — как это выглядит на телефоне), HTML area и простецкого java script.

4f5db4ac14d66a7ef98abb91c6c026f0.jpg

Интеграция с Google Home (или Alexa, или Siri) самая простецкая, через https://io.adafruit и https://ifttt.com (т.е. мы добавляем не, собственно, smart device, а лишь actions), но работает, на удивление, весьма неплохо. Думаю, что поддержку smart home можно «запилить» и через более «правильную» интеграцию, но лично мне это пока не интересно, да, и если честно сказать, не особо нужно — «работает — не трогай! © «Первая Заповедь Программиста»

Инструкции по интеграции смотрите вот тут: https://iotdesignpro.com/projects/google-assistant-controlled-led-using-ESP32-and-adafruit-io, там все очень просто.

Да, «обсмартить» (что-то меня на неологизмы потянуло! ​) таким путем можно практически все. В своих экспериментах я проверил порядка шести или семи самых разнообразных IR-ремоутов — от кондиционеров, телевизоров, детских игрушек, электрического камина, светодиодной ленты — все считывается и воспроизводится безошибочно. Есть лишь одно ограничение: у дешевых IR-трансмиттеров (диодов) очень маленькие дальность и угол работы (в отличие от того же Broadlink RM mini 3, IR диод которого «окучивает» достаточно большую комнату), так, что придется «лепить» подобное «умное» решение непосредственно на сам дивайс. Бюджетных вариантов «дальнобойного» IR трансмиттера мне найти не удалось.

Вот, собственно, пока и все на сегодня. Впрочем, среди моих других проектов на гитхабе вы, возможно, сможете найти еще что-нибудь интересное. Ну, и у меня вообще есть много забавных проектов, но не все пока выложено на гитхаб. Если вам не лень, то «простарьте» понравившиеся вам проекты — всего лишь клик мышкой, а мне приятно!

Дата-центр ITSOFT — размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.

© Habrahabr.ru