Никто не услышит твой крик, или Учимся паять космонавта

Этим летом ко мне обратился старый знакомый с просьбой о помощи. Он знал, что я занимаюсь сбором денег и помощью коллегам-​электронщикам, ремонтникам и связистам из ДНР и ЛНР — оборудованием, инструментом, расходкой — и спрашивал, не можем ли мы помочь с покупкой электронных конструкторов для детей.

Дети — из семей переселенцев с Донбасса, живущих в пункте временного размещения (если вы представили палаточный лагерь в голом поле, то нет, это вполне обычный пансионат в Подмосковье), и его попросили в рамках организации для них досуга провести несколько уроков по электронике, начиная с обучения пайки. Примерно сто человек, разного возраста и с совершенно разным уровнем подготовки, но понятно, что до занятия дойдёт, скажем, половина.

Первоначальной его идеей была закупка типовых наборов «учимся паять» из десятка деталей, позволяющих собрать мультивибратор, мигающий несколькими светодиодами, и стоящих что-​то типа 250 рублей штука.

Вид этого набора, увы, вызвал во мне прилив уныния. Ну да, наверное, первое занятие для 8‑леток, которые целенаправленно пришли в радиокружок — ок. Но полсотни детей разных возрастов, для приличной части из которых это должно быть просто потенциально интересное развлечение? Мультивибратор?

И мы начали думать. И придумали космонавта.

Исходные условия:

  • большинство детей не умеет паять, значит, в первую очередь — это набор для обучения пайке, то есть небольшое число компонентов, всё строго выводное и простое в установке на плату;
  • но это не «первый урок радиокружка», потому что не для всех пришедших детей целью является именно научиться паять — значит, результат должно представлять собой минимально оригинальную игрушку;
  • стоимость набора при этом должна быть сопоставима с исходным бюджетом, т.е. порядка 250 рублей на одну штуку;
  • вишенкой на торте — на разработку и изготовление у нас было две, максимум три недели до начала уже запланированных занятий.

Ну, в общем, всё как обычно, семь прямых красных линий, из них одна зелёная, а другая в форме котёнка, чтобы было не скучно.

Первый вариант заказчик предложил сам — основанный, как обычно в таких случаях, на существующих рыночных решениях (любой заказчик примерно в 146 % случаев при просьбе подсказать что-​то новое показывает то, что он видел в магазине на прошлой неделе). Нам с дизайнером это показалось интересным, но несколько вторичным — и мы провели небольшой мозговой штурм о том, как сделать игрушку более оригинальной.

На мозговой штурм потребовалось полтора часа. На рисование вариантов, их причёсывание и демонстрацию заказчику — ещё полтора дня.

Представленное заказчик оценил немногословно, но высоко.

Итак, что же мы придумали?

Во-​первых, игрушка должна совершать какие-​то минимально интересные действия, чтобы просто не быть забытой сразу после её сборки. Тут, по-​большому счёту, два варианта — или интерактивная «аналоговая» реакция на действия пользователя, или микроконтроллер и программное определения «поведения» игрушки. Первое обычно или очень быстро надоедает, или предполагает относительно сложную схему, выбивая нас из бюджета и по деньгам, и по точкам пайки, поэтому мы взялись за второе.

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

Им стал PIC10F200 — 8 ножек, 8 бит, 384 байта флэша, 16 байт памяти, DIP-​корпус, ну и главный параметр: 33 рубля штука и есть в наличии сразу в двух местах, Чип-​и-​Дипе и Промэлектронике.

Ни объём памяти, ни тот факт, что никто из нас с PIC10 в своей жизни не работал, разумеется, нас смутить не мог. Ещё раз: 33 рубля. Летом 2022-​го, с поставкой со склада в России за три рабочих дня.

Богатый выбор ножек ввода-​вывода (4 штуки) позволял нам реализовать не только двухцветный светодиод, но и тактовую кнопку для управления им. Строго говоря, одна ножка даже оставалась.

На придумывание, что же космонавт будет делать при нажатии этой кнопки, с учётом вышеупомянутых ограничений времени ушло также немного — ChatGPT в 16 байт ОЗУ не влезает, но вот реализовать мигание азбукой Морзе вполне можно. Зашив несколько коротких сообщений и выбирая при нажатии кнопки случайное из них (вариант осознанного выбора был отвергнут как вносящий ненужную сложность при столь небогатом словаре космонавта).

Так проект получил рабочий девиз: «Потому что в космосе никто не услышит твой крик».

На столе космонавт должен был стоять, опираясь на батарейку — в качестве таковой была выбрана банальная CR2032 в пластиковом держателе. Кстати, это повлияло на цену: так как опора должна быть сзади, то точки пайки держателя оказываются спереди, а значит, плату космонавта придётся делать двустороннюю и с металлизацией отверстий.

Схема достаточно тривиальна, отмечу лишь, что подключение кнопки не совсем случайно: во-​первых, чтобы не убивать батарейку, контроллер должен быть в глубоком сне, пока кнопка не нажата — и это исключает ножку GP2, так как она не умеет пробуждать контроллер по смене уровня. Во-​вторых, резисторы на входах PIC10F200 бывают только подтягивающими вверх, поэтому кнопка может замыкаться только на землю. В‑третьих, GP3 не может работать выходом, поэтому светодиод на неё всё равно не повесишь. Кроме того, не стоит забывать, что при внутрисхемном программировании на GP3 подаётся около 13 В.

Итак, общее число точек пайки: 22. Самый раз, и да, впоследствии большим плюсом оказалось то, что физически впаять что-​то не туда в космонавте крайне сложно — все компоненты сильно отличаются по размерам и формам. Микроконтроллер разве что перевернуть (светодиод тоже можно перевернуть, но у него общий вывод посередине, так что только цвет свечения поменяется на неуставной).

Стоимость изготовления 70 наборов, включая упаковку, инструкции, кусочек припоя — около 21 тысячи рублей, то есть 300 рублей за экземпляр. Очень неплохо, особенно с учётом, что платы заказывались на срочном производстве в «Резоните» (и они одни стоили 14048 рублей, а также ребята, запуск заказа в производство в 11 утра в воскресенье — вы там вообще отдыхаете?!). Понятно, что мы сравниваем себестоимость с розничной ценой мультивибратора — ну так и мы в этом проекте не зарабатываем, а лишь тратим, так что для нас что то, что другое — себестоимость.

Микроконтроллеры, конечно, поставлялись уже прошитыми, «правильно собранное устройство наладки не требует».

Исходные коды — на C, написаны в MPLab X IDE, родной среде для PIC.

С четырьмя прошитыми сообщениями («HELLO», «SOS», «QRZ?» и «Я ЗАНЯТ») программа чувствует себя вольготно: остаётся ещё 1 байт ОЗУ и 39 байт флэша. Впрочем, дефайном можно выбрать более прямолинейный алгоритм декодирования азбуки Морзе, тогда объём свободного флэша сократится до 15 байт, что, впрочем, тоже немало. Первые два бита кодируют цвет, которым передаётся сообщение — зелёный, красный или жёлтый.

Генератор случайных чисел (для выбора одного из четырёх сообщений после нажатий кнопки) реализован элементарно — это однобайтовая переменная, наяривающая в цикле counter++ всё время, пока кнопка нажата.

Между нажатиями кнопки космонавт может жить с установленной батарейкой практически вечно, ибо PIC10F200 во сне потребляет ничтожно мало (около 0,5 мкА по паспорту, но в реальности ещё меньше; ёмкость CR2032 — 260 мА•ч).

Результат

И отзыв от заказчика:

Двоих погибших космонавтов, конечно, жалко (можно дом отдыха переименовать в «Отель у погибших космонавтов», кстати), но в целом результат даже превзошёл ожидания.

А с мультивибраторами — которые всё же закупили в небольшом количестве и уже без нашего участия — вышла накладка: на космонавтах дети привыкли, что все детали разные, не туда их впаять невозможно.

Файлы

Исходники прошивки — GitHub.

Картинка печатной платы — PNG.

Герберы печатной платы — ZIP.

Руководство по сборке и пусконаладке — PDF.

Скомпилированная прошивка — HEX.