Я написал эту серию постов в первую очередь для себя или, по крайней мере, для того, кто пытается сделать что-то электронное для продажи. Если это вы, то я надеюсь, что это поможет вам в вашем путешествии! Если вы просто хотите увидеть конечный продукт, вы можете найти его по адресу https://hortus.dev/products/social-battery .
Пост длинный, поэтому я разбил его на части, чтобы было легче воспринимать. Это:
Я хотел поэкспериментировать со службой сборки печатных плат JLC — хотя я проектировал и производил голые печатные платы перед размещением и пайкой компонентов вручную, у меня есть несколько будущих проектов, паять которые вручную будет непрактично из-за количества и размер компонентов.
Удивительно, насколько дешева эта услуга, если подумать о том, что с ней связано, но она все равно достаточно дорогая, поэтому может быть немного сложно передать свои деньги, а затем ждать, чтобы выяснить, не допустили ли вы какую-то ошибку, которая испортит конечный результат.
Я решил, что начну с чего-нибудь простого, с чего-то, что я мог бы опробовать не только в сборке печатных плат, но и в электронной коммерции. Мой план состоял в том, чтобы придумать небольшой предмет, который я мог бы реально спроектировать и отправить в производство менее чем за день, а затем, надеюсь, достаточно легко продать на таком рынке, как Etsy.
Я ожидал, что разработка и производство будут сложными, а размещение продукта на Etsy будет простым, но все оказалось наоборот, как вы увидите, если продолжите читать!
Я быстро просмотрел Etsy, чтобы посмотреть, какие вещи, успешно продаваемые людьми, я мог бы сделать. Я нашел пару примеров людей, делающих электронные значки — идеальный проект! В основном они состояли из светодиодов со случайным или заранее заданным режимом мигания на плате новой формы.
Мне они показались нормальными, но я хотел попробовать что-то более интерактивное и значимое, что я мог бы продать за достаточно денег, чтобы получить разумную прибыль от небольшого количества первоначальных единиц.
Глядя на обычные значки, продаваемые на Etsy, я увидел кучу эмалированных значков «Социальная батарея» со скользящим индикатором. Они сразу же бросились мне в глаза как нечто, что а) я мог бы идентифицировать лично (люди бесконечно шутят о моей социальной батарее…), б) было бы очень весело в электронной версии и в) их было бы легко спроектировать — просто несколько светодиодов, переключатель и микроконтроллер, чтобы связать все это воедино!
Уверенный в своих силах, я составил краткую принципиальную схему в Kicad. Я решил использовать ATtiny13A — главным образом потому, что у меня под рукой было несколько процессоров из предыдущего проекта, а также потому, что у меня есть приличный опыт работы с подобными чипами.
Если вы с ним не знакомы, ATtiny13A — это небольшой 8-битный микропроцессор с 6 контактами ввода-вывода, принадлежащий семейству микроконтроллеров AVR. Он похож на чипы ATmega, которые исторически составляли основу большинства Arduino, за исключением того, что их возможности гораздо более ограничены.
Преимущество заключается в том, что чипы ATtiny меньше и дешевле, поэтому, если вам не нужно много памяти или периферийных устройств, то они великолепны! (хотя, возможно, сейчас он немного устарел из-за бесконечного разнообразия доступных чипов ARM).
Я выложил печатную плату для своей схемы в KiCad, затем заставил ее выложить герберы и файлы сверления (которые используются для изготовления печатной платы), а также спецификацию материалов и файлы размещения (которые используются для сборки компонентов на печатную плату). . Я отправил их в JLC PCB, чтобы посмотреть, смогут ли они их правильно обработать.
Файлы спецификации и размещения нужно было немного изменить по сравнению со стандартными, чтобы привести их в правильный формат (оказывается, я сделал это на собственном горьком опыте, и есть гораздо более простой плагин для KiCad, который делает все идеально в один клик).
JLC PCB поддерживает довольно большую библиотеку компонентов, которые они хранят на складе для заказов на сборку. Однако в моем случае ATtiny13a не было в наличии, поэтому мне пришлось заказать их. Это было довольно просто, используя их глобальную службу снабжения. Я смог найти поставщика с лучшей ценой за необходимое мне количество, а затем позволил JLC PCB заказать их на свой склад от моего имени.
Пока я ждал, я решил, что с таким же успехом можно создать макет своего проекта и начать работать над кодом, и я рад, что сделал это, потому что сразу обнаружил проблему! В моей конструкции использовались пять контактов ввода-вывода, доступных на ATtiny13a, для прямого управления светодиодами (шестой использовался для контроля кнопки).
Чего я не осознавал/не запомнил с момента последнего совершения этой ошибки (да, это случалось раньше), так это того, что один из этих входов/выходов также является контактом сброса. Вы можете использовать его, но он не способен подавать большой ток, и, подключив его к земле через светодиод, я держал чип в состоянии постоянного сброса.
Один из способов обойти это — сжечь предохранитель на чипе, который навсегда отключает функцию сброса вывода, превращая его в обычный ввод-вывод. Однако проблема в том, что вы можете запрограммировать чип только один раз (если только у вас нет высоковольтного программатора, которого у меня нет), и, учитывая мою склонность учиться вещам на собственном горьком опыте, это потенциально казалось довольно расточительным!
Другой вариант — найти способ сделать больше с меньшим количеством контактов, чтобы контакт сброса можно было оставить в покое. Этого можно добиться с помощью метода, называемого чарлиплексированием , который позволяет адресовать гораздо больше светодиодов, чем количество доступных контактов.
Затем вы можете сканировать эти светодиоды, включая и выключая их по отдельности с высокой частотой, чтобы создать впечатление, будто несколько из них включены одновременно, за счет постоянного видения .
В моем случае я подключаю четыре зеленых светодиода к 3 контактам, а красный светодиод - к выделенному контакту. Это не самый эффективный пример чарлиплексирования, поскольку я мог бы управлять всеми светодиодами с трех контактов, но сохранение красного цвета на выделенном контакте позволяет упростить код, когда дело доходит до программирования.
Я пересмотрел свою принципиальную схему и дизайн печатной платы, затем реэкспортировал необходимые файлы и отправил их в JLC PCB для изготовления и сборки первоначального набора из пяти прототипов.
Чуть больше недели спустя я получил свои прототипы и остался ими очень доволен! Было несколько вещей, которые, как я видел, мне нужно было изменить:
Я особо не планировал, как буду программировать платы. Я только что вытащил контакты для программирования AVR и надеялся на лучшее. Этого было достаточно для пяти прототипов, так как я мог прикрепить провода программирования с помощью малейшего кусочка припоя, но в масштабе это очень быстро стало бы очень утомительным.
Шип крепления сзади был припаян к заземляющей площадке. Это было бы хорошо, если бы тепловая масса шипа и заземляющего слоя на плате не мешала хорошему соединению. Он также выступает очень близко к положительной металлической клетке держателя батареи, а это означает, что существует большая вероятность случайного короткого замыкания, если люди размещают/прикрепляют значок на/к проводящим поверхностям.
Отрицательный контакт аккумулятора был недостаточно заметным, поэтому мне пришлось добавить к нему немного припоя, чтобы обеспечить хорошее соединение. Опять же — не конец света для малого количества прототипов, а боль, если мне придется делать это для нагрузок.
Все это были простые исправления для реализации. Я добавил подходящий заголовок для программирования, который можно было использовать с приспособлением для пого-штифтов для быстрого и повторяемого программирования.
Я отсоединил штырь от заземляющего слоя, чтобы это был отдельный небольшой отсоединенный медный островок, который легче нагревался и не вызывал короткого замыкания.
И я расширил отрицательный контакт аккумулятора, чтобы у него была большая площадь поверхности для надежного соединения.
Код довольно прост. Я отслеживаю режим, в котором находится значок, который представлен целым числом, которое уменьшается при каждом нажатии кнопки. Затем я зацикливаю и мигаю каждым светодиодом на своем пути, как того требует режим. Когда достигается режим 0, я возвращаю его к исходному номеру, а затем переводю ATtiny в спящий режим.
Повторное нажатие кнопки запускает прерывание, которое пробуждает чип и запускает весь процесс заново.
В целом, я был очень доволен результатами, а это означало, что пришло время посмотреть, смогу ли я их продать!
Вы можете прочитать о моем опыте в следующем посте этой серии .