[Перевод] Делаем волшебный шар на основе Arduino Pro Mini
Я смотрел какой-то фильм, у одного из героев которого был волшебный шар, отвечающий на вопросы. Мне тогда подумалось, что неплохо было бы сделать такой же, но цифровой. Я порылся в своих запасах электронных компонентов и посмотрел, есть ли у меня то, что нужно для сборки такого шара. В дни пандемии мне не хотелось заказывать что-то без крайней нужды. В результате я обнаружил трёхосевой акселерометр, дисплей для Nokia 5110, плату Arduino Pro Mini и ещё кое-какие мелочи. Этого мне должно было хватить и я принялся за работу.
Аппаратная часть проекта
Вот список компонентов, из которых состоит мой проект:
- Плата Arduino Pro Mini.
- Разъём GX-12 (вилка).
- Трёхосевой акселерометр MMA7660.
- Дисплей PCD8544 для Nokia 5110/3310.
- Зарядное устройство для литий-полимерных аккумуляторов TP4056.
- Конвертер DD0505MD.
- Литий-полимерный аккумулятор типоразмера 14500.
Экран
Экран, который я решил использовать в этом проекте, хранится у меня уже давно. Когда я его обнаружил, я тут же задался вопросом о том, почему я до сих пор его нигде не использовал. Я отыскал библиотеку для работы с ним, подключил к нему питание. После этого я тут же нашёл ответ на свой вопрос. Дело было в его контрастности и в том, что для его работы нужны дополнительные компоненты. Я нашёл эту библиотеку для работы с дисплеем и узнал о том, что к аналоговому контакту можно подключить потенциометр. Я решил использовать акселерометр для настройки контраста дисплея. А именно, если перейти в меню настроек, то наклон устройства влево приводит к уменьшению соответствующего значения, а наклон вправо — к увеличению. На устройство я добавил кнопку, по нажатию на которую текущие настройки контрастности сохраняются в EEPROM.
Меню, управляемое акселерометром
Мне показалось, что перемещение по меню с использованием кнопок — это слишком скучно. Поэтому я решил попробовать использовать для работы с меню гироскоп. Такая схема взаимодействия с меню оказалась очень удачной. Так, наклон устройства влево открывает меню настройки контраста. В результате в это меню можно перейти даже в том случае, если контрастность дисплея сильно отклонится от нормы. Для выбора различных созданных мной приложений я тоже использовал акселерометр. Вот библиотека, которую я применял в этом проекте.
Приложения
Сначала я хотел сделать нечто, способное играть роль волшебного шара. Но потом решил, что могу оснастить то, что у меня получится, дополнительными возможностями, представленными различными приложениями. Например, я написал программу, имитирующую бросок игральной кости, случайным образом выдающую число от 1 до 6. Ещё одна моя программа умела отвечать на задаваемые ей вопросы «Да» и «Нет». Она помогает принимать решения в сложных ситуациях. В моё устройство можно добавить и другие приложения.
Аккумулятор
Проблема моих проектов заключается в том, что я всегда использую в них несъёмные литий-полимерные аккумуляторы. А потом, когда эти проекты оказываются на некоторое время забытыми, с аккумуляторами может случиться что-нибудь нехорошее. В этот раз я решил поступить иначе и сделать так, чтобы аккумулятор из устройства, при необходимости, можно было бы вынуть. Он, например, может пригодиться в каком-нибудь новом проекте. К тому времени я уже спроектировал корпус для аккумулятора, но мне надо было его доделать, оснастив дверцей. Первые экземпляры корпуса получились неоправданно сложными и громоздкими. Поэтому я его перепроектировал. Он может пригодиться и в других моих проектах.
Корпус для аккумулятора
Крышку корпуса я изначально хотел закрепить с помощью магнита, но я очень не люблю использовать всяческие дополнительные компоненты там, где можно обойтись без них. Поэтому я решил сделать крышку на защёлке. То, что у меня получилось вначале, не очень хорошо подходило для трёхмерной печати. Поэтому я переделал крышку. В результате её удалось хорошо напечатать.
Крышка корпуса для аккумулятора
Результатом я остался доволен, но использование в моих проектах такого аккумуляторного отсека ограничивает возможности по их проектированию, так как крышка отсека должна быть на верхней части устройства. Я попытался встроить аккумуляторный отсек в корпус устройства так, чтобы крышка выходила бы на боковую часть корпуса, но ничего хорошего из этого не вышло.
Печать корпуса для аккумулятора
Крышка аккумуляторного отсека находится на верхней части устройства
Решение вопросов питания
Мне не хотелось подключать к основной плате элементы для организации питания устройства, так как это увеличило бы её размеры и повысило бы стоимость проекта. Я подумал, что идеально было бы, если бы мне удалось встроить в проект уже имеющиеся у меня зарядник TP4056 и конвертер DD0505MD. Так мне не пришлось бы тратиться на дополнительные компоненты.
Решение вопросов питания устройства
Я это сделал. Платы оказались там, где им и положено быть, я соединил их, применив пайку, короткими жёсткими проводами, что позволило сделать получившуюся конструкцию весьма компактной. Подобную конструкцию можно встроить и в другие мои проекты.
Внутренняя часть корпуса с местом под элементы, обеспечивающие устройство питанием
Доработка проекта и последствия неудачного размещения компонентов в корпусе
В ходе работы над проектом с ним произошла одна неприятность. Я, после того, как всё собрал, уронил устройство на пол. После этого перестал работать дисплей. Поначалу я подумал, что дело в дисплее. Поэтому я его переподключил, но это ничего не исправило. Проблема этого проекта заключалась в неудачном размещении компонентов. А именно, я, чтобы сэкономить место, смонтировал дисплей над Arduino. Для того чтобы добраться до Arduino, мне надо было отпаять дисплей. Но перепайка дисплея проблему не решила. В этом проекте я использовал новую плату Arduino. У меня есть ещё одна такая плата, которую я использую для экспериментов с макетной платой. Когда я подключил экран к ней — всё заработало. Мне, так как я использовал поверхностный монтаж, пришлось отпаять от этой платы пины. Вытаскивая пины из платы, я устроил короткое замыкание, соединив пины VCC и GND. Единственное, что мне оставалось — заказать новую плату. Но на это у меня не было времени. Тогда я решил взять чип с платы, на которой случилось замыкание, и переставить его на «мёртвую» плату. Эту задачу я решил с помощью термовоздушной паяльной станции. К моему удивлению, всё заработало. Мне лишь понадобилось воспользоваться пином, выполняющим перезагрузку платы.
Плата со снятым чипом
В обычных условиях я не пустился бы в такие крайности. Но моей плате Arduino была всего неделя. Поэтому я и пошёл на этот эксперимент. Пожалуй, пандемия сделала меня более склонным к экспериментам и более изобретательным.
Крепление для шнурка
Я оснащаю свои проекты креплениями для шнурков. Ведь никогда заранее не знаешь о том, когда и где будешь ими пользоваться.
Итоги
Вот как выглядит работа с получившимся у меня волшебным шаром.
Здесь можно найти файлы для 3D-печати корпуса. Сюда можете заглянуть для того чтобы увидеть код.
Применяете ли вы Arduino Pro Mini в своих проектах?