Автоматизируй это!
525 subscribers
50 photos
49 videos
1 file
62 links
"Автоматизируй это!" сделан для тех, кто любит создавать материальные объекты — по работе или для развлечения.

Оглавление: https://t.me/automate_courses/40
Основной курс: https://automate.courses

Абонентский ящик: @prplkn
Download Telegram
Придумал нам на весну серию мероприятий под общим супер-оригинальным названием #прототип

Чтобы общаться, учиться и строить разные штуки. Надеюсь, не только онлайн.

В выходные начнём.
Media is too big
VIEW IN TELEGRAM
Начнем #прототип с конкурса для дизайнеров по профессии или зову души!

Зачем это вам?

- вы же любите создавать вещи, еще одна разминка!
- возможность научиться оживлять свои объекты
- познакомиться для проектов и общения

Зачем это мне?
- чтобы об Автоматизируй это! узнало больше людей, которые создают или хотят создавать материальные объекты
- познакомиться с такими людьми, чтобы затем наделать дел

Как происходит конкурс?
Кратко:
1. Смотрите ролик и создавайте свой вариант светильника.
2. Постите изображение/видео 3D-модели/прототипа в какой-то соцсети со ссылкой на этот пост: https://t.me/automate_courses/122
3. Сообщаете об этом в https://t.me/prplkn до 20.03 включительно.

4. Я публикую работы здесь в канале и внутри курса как вдохновение для других.
5. Здесь проводим голосование.

Подробно в документе, если будете участвовать, прочтите обязательно.

Приз и подарки
Кто выполнит пункты 1-2-3, сразу получит интенсив АЭ42, потому что это уже немало!

Победителя ждет полный курс Автоматизируй это!
У одного из подписчиков на чердаке живет хорек. В смысле, буквально, в доме. Хорек наносит ущерб спокойствию, а возможно и хозяйству. Подписчик вознамерился прогонять его автоматически, но совсем без программирования: обнаруживать датчиком движения, как на автоматических дверях, и пугать мотором с эксцентриком, вроде того вибромотора, который я прислонял к батарее.

Задачка в самом деле решаемая без контроллера, но есть нюанс: автору хочется узнать больше о частоте посещений. Подписчик представляет себе это так: светодиод мигает раз, если был один визит, дважды, если было два визита, и мигает постоянно, если визитов было больше. Кнопкой можно сбросить этот счетчик. Использовать дисплей, хотя бы 7-сегментный, автор идеи не планирует.

Можно взять пару микросхем и по-прежнему без программирования сделать подсчет, даже и с дисплеем, но в таком случае гибкость будет не очень гибкая: изменения-дополнения в функционале потребуют переделывать электронную часть. Если уж брать микросхему, лучше программируемую — контроллер. Договорились, что я покажу, как это будет выглядеть с программой.

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

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

Рассмотрю без натурных экспериментов, чисто суть установки. У меня конечно есть голуби на полке за остеклением балкона, но съемочного задора пока нет, напишу в паре постов словами и картинками.
Обнаруживаем хорька

Опцию с камерой мы отбросили, поэтому прикинем, что бывает еще.

1. Автор идеи намерен проверить инфракрасный датчик движения, с которым мы все имели дело, проходя через автоматические двери, или когда ВНЕЗАПНЫЙ ФОНАРЬ где-нибудь за городом. Такой датчик способен уловить перемещения теплого объекта и сообщить об этом. Нужно учесть вот что:

- будет ли перед датчиком перемещаться какой-то другой теплый объект, который не надо спугивать?
- достаточно ли теплоты хорька, чтобы датчик его "заметил"?
- какая у датчика диаграмма направленности, т.е. "поле зрения", всё ли пространство, подлежащее наблюдению, в него попадет?

Про такие нюансы выбора говорим в уроке Осн6. Какие практики помогут реализовать проект?

Последние два вопроса можно попробовать снять, поставив несколько одинаковых датчиков: поближе к полу и с пересечением "полей зрения".
В любом случае без эксперимента невозможно определить, сработает ли он на хорька.

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

Можно использовать не готовый датчик, а приспособить для этого дальномер ("стало ближе, чем было, значит кто-то появился") или пару из светодиода (или лазера) и фоторезистора, помните "глазки" в стенках старых турникетов? Когда мы пересекали линию между ними без оплаты, турникет срабатывал. По такому же принципу я тестировал лед на прозрачность, только там нужны были сами данные, без реакции на них.

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

Все эти варианты железок, как их подключать, и т.п. разбираем в рубрике "Модули и идеи" курса.

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

Здесь показаны все рассмотренные варианты, само собой, будет выбран какой-то один.

Вкратце — что бы мы ни выбрали, изолированная задача "обнаружить гостя" даст результат в виде логического (булевого) значения. Об этих значениях и том, что с ними делать, есть целый урок еще в базовой части курса: Баз6. Как вещь может принять решение?

В любом случае нужно протестировать выбранный способ и лучше это сделать сразу, просто в интерактивном режиме посмотреть, как будут меняться значения на этих выходах.

Далее посмотрим, как пугать.
Как пугать хорька

1. Автор исходной идеи намерен дребезжать мотором с эксцентриком. В этом случае надо посмотреть как запускать мотор из программы, обсудим ниже. Что касается физической коммутации, в случае, если мотор потребляет большой ток или ему для питания нужно напряжение, отличное от напряжения питания платы, потребуется силовой ключ или реле или драйвер мотора и отдельный источник питания.

В полном курсе этим непонятным словам посвящен урок Осн2. Как обеспечить вещь электричеством? и соседний с ним выпуск "Модулей и идей" под №3. Там я свел эти вопросы к набору правил, чтобы обойтись без учебника физики.

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

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

Можно подключить более мощный динамик, чем пищалка, но по-прежнему останется вопрос с желательностью и эффективностью звуков в слышимом диапазоне.

3. Стробоскоп скорее всего будет неприятным для любого зрячего гостя. С этим никаких проблем, можно использовать в параллель с дребезгом эксцентрика или звуком, а можно обойтись им одним. Если зона поражения достаточно компактная, будет достаточно одной-двух-трех "Пираний" (яркие светодиоды, хорошо видны в бестолковом новогоднем ролике). Если нужно замигать всю комнату, можно взять ленту или какие-то другие более мощные светильники (и еще раз обратиться к Осн2 и МиИ№3 по поводу их подключения).

4. Если гость гидрофобный, точка его прибытия известна, а помещение позволяет, можно выливать на него воду. Помпа, клапан, опрыскивание, опрокинуть таз мотором и т.п.

Посмотрим, в чем будет заключаться управление этими способами запугивания из программы.
Управляем устрашением

Понимаю, что для тех читателей, кто не проходил АЭ!, написанное выглядит страшно, но это совсем простые вещи, которые разбираются в самом начале курса.

В частности, про if-else речь идет в том же Баз6. Как вещь может принять решение? А все остальные слова про ноды, входы и выходы — и вовсе разобраны в первых трех уроках, с которыми можно ознакомиться бесплатно.

Так вот, управление устрашением вновь свелось к изменению единственного значения на одном входе одной ноды (см. иллюстрацию).

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

Разберу вечером.
Мы выяснили, что любой из вариантов действий по изгнанию хорька заключается в передаче на исполнительное устройство какого-то нового значения на период запугивания и возврат к исходному значению на время ожидания.

Теперь надо понять, как увязать это со срабатыванием датчика.

А как будет вести себя сам датчик: срабатывать один раз на визит, или посетитель будет хаотично метаться, заставляя датчик срабатывать раз за разом?

Поскольку это незивестно, можно сделать так: учитывать не больше одного срабатывания за промежуток времени. Скажем, засекли хорька, включили устрашение на 10 секунд, любые срабатывания датчика в ходе него нас не интересуют. Пожалуй, нужно еще дать секунд 10 на эвакуацию, потому что стробоскоп может дезориентировать, и первое же движение после его выключения запустит стробоскоп вновь, и хорек в итоге помрет от истощения или обилия впечатлений — лучше после светового шоу еще некоторое время игнорировать датчик. А когда отведенное на побег время истекло, можно снова быть готовыми к изгнанию, слушать датчик.

Итого, схема такая:
- засекли
- (посчитали визит, об этом завтра)
- 10 секунд активного действия, датчик в игноре ("задержка на действие")
- еще 10 секунд тишины на эвакуацию без реакции на датчик ("задержка на эвакуацию")
- снова ожидание.
Опять же надо проверять, возможно, в этом умозрительном плане есть дыры.

Кстати, в схеме без контроллера, как у подписчика, мотор будет запускаться на те несколько секунд, что датчик будет держать высокий уровень после срабатывания, затем выключится, на новом пойманном движении еще несколько секунд работы мотора, и так до бесконечности. Это если работать с датчиком движения, остальные задержки не дадут, и удерживать мотор включенным нужно будет, добавляя в электрическую схему какие-то компоненты. Если же использовать контроллер, ноду датчика тоже можно связать прямиком с нодой исполнителя, тоже вариант. Но если уж контроллер есть, рассматриваем более хитрый способ.

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

Здесь то, что в итоге уйдет на исполнительное устройство, можно посмотреть в watch, а то, что приходит от датчика — представлено в виде tweak-boolean (слева вверху), поскольку, как мы помним, любой из датчиков в данном проекте можно свести к булевому значению. Его можно подергать в симуляции, прикинувшись датчиком.

В следующем посте выложу патч файлом.
ferret-sim.xodball
13.7 KB
Можете скачать XOD на xod.io и открыть в нем этот файл. В меню Deploy -> Simulate запускается симуляция.

Во время симуляции (нужно быть онлайн) выделяете верхнюю левую ноду, меняете в ней значение в панельке Inspector (слева внизу), смотрите результат в watch, справа внизу.

Что там должно быть и почему — см. в двух постах выше и примечаниях в самом файле.

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

Если хорек сподвиг вас на установку XOD, посмотрите и бесплатное начало курса, поупражняйтесь.

Завтра сделаем подсчет посещений со сбросом и соберем всё вместе: датчик, исполнение, вот эту прослойку между ними и подсчет.
Подсчет хорьков

Счетчик посещений со сбросом разделим на две задачи: (1) собственно, подсчет и сброс и (2) отображение подсчитанного — оно может быть реализовано разными способами.

Я бы вообще прикрутил bluetooth, чтобы можно было не подходя к установке запрашивать на телефоне текущее число со счетчика и с телефона же его сбрасывать. Здесь же можно было бы выключать спецэффекты перед тем, как сами идем на чердак.

Если кому-то из слушающих курс захочется модифицировать таким образом, урок Осн7. Как передавать данные между устройствами? поможет. А сейчас сделаем, как предложил подписчик.

Замечу, что учитывать будем не все срабатывания датчика, а только те, которые не проигнорировали в основном сценарии — чтобы не считать всю хорьковскую суету.

Пояснения по (1) см. на иллюстрации, а (2) реализуем в следующем посте тем способом, который предложил автор идеи:
- 1 посещение = 1 мигание светодиода
- 2 посещения = 2 мигания
- >2 посещений = непрерывное мигание
Такой способ мигания можно было бы реализовать по-разному. Я сделаю так:

- состояние светодиода (вкл или выкл) представим во времени как ленту из клеточек, в каждой из которых записана 1, если в течение этого промежутка нужно светиться, и 0, если не нужно
- получается, нас интересует лента длиной 6 клеточек, где каждая вторая клеточка всегда будет с 0 (это пауза между вспышками)
- если счетчик еще никого не посчитал, лента будет выглядеть как 000000
- если было не менее 1 визита, заполняется первая клетка: 100000
- если посещений >1: 101000
- если >2: 101010 — а поскольку лента зациклена, такой паттерн будет выглядеть как непрерывное мигание, два предыдущих — как одна или две вспышки с паузой между группой вспышек, а самый первый — как выключенный светодиод

На светодиод в каждый момент транслируется содержимое только одной из клеточек, по "ленте" как бы перемещается "рамка". Она просто перещелкивается дальше раз в интервал, а с 5 клетки на 0.

Как это можно реализовать в XOD см. на иллюстрации.
Задача с изгнанием хорька в моем варианте целиком будет выглядеть вот так.

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

Связаны они неким предположенным сценарием.

Счетчик посещений сбрасываем кнопкой, а отображаем его на светодиоде способом автора.

На втором скрине всё то же самое, но упакованное в отдельные ноды. В уроке Осн5. Как создавать собственные ноды? можно узнать, как это сделать.

В общем, постарался рассмотреть задачку со всех сторон, все непонятные нюансы должны стать понятными при прохождении Автоматизируй это!
Media is too big
VIEW IN TELEGRAM
После солнечной прогулки захотелось немного рекреационного приборостроения и за ленивым субботним ютубом #взялсделал прототип для Системы Изгнания Хорька, добавив в нее управление с телефона, теперь могу успокоиться.

Давайте так, на сегодня и завтра xopek отгрызает
- 1500 рублей от стоимости полного курса, если хотите научиться делать это же и лучше
- 290 рублей от кругозорно-творческого интенсива, если хотите размять воображение и прикинуть, что вообще можно создать.

То и другое сработает по выделенному жирным слову. На подарки и базовый курс в этот раз не распространяется.

UPD.: Забыл показать, что в телефоне видно не только 0-1-2-«много» визитов, а точное число, сколько бы там их ни было, но досъёмывать уже не стану.
На дворе 21 марта, а значит пора выбирать победителя конкурса про светильник! https://t.me/automate_courses/122

Мы можем рассмотреть все предложенные варианты. Кто же победил?
Anonymous Poll
21%
Никто
79%
Дружба
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня/В Петрограде/На Надеждинской/Ни за грош

Сегодня хотел обсудить с "дядей из телевизора" вопрос: как с помощью всех этих железно-программных штук извлечь пользу лично для себя, для своего развития, в отрыве от прикладных задач. Думаю над мероприятием на эту тему.

Это про те "психологические бонусы" из начала курса плюс в ключе "творческого развития", о чем не рассказывал явно.

Дядя из телевизора это Кирилл Коротков, вероятно, знакомый вам как первый ведущий канала Амперки, и незнакомый вам как медиа-креатор и энтузиаст технической эстетики. Когда-то мы с ним уже обсуждали похожую тему, и вот пришло время новой итерации.

Так вот, внезапно придумал, что мы можем заодно потестить эфиры в телеграме, потому что можно сразу посоветоваться с вами, теми, для кого это предполагаемое мероприятие хочется сделать.

Давайте встретимся в 20 часов по Мск сегодня прямо здесь, в канале!

Это будет не лекция и не постановка, экспромт на тему, пообщаемся вживую.

(Приложено секретное архивное видео от 13.04.2016)
Live stream finished (1 hour)
Audio
Для тех, кто не пришел вчера в эфир, оставил четверть в записи. Там есть про:
- часть "психологических бонусов"
- "проклятие знания" с экспериментом в реальном времени
- гуманитариев
- опыты переживания опыта
- первые пробы общения со слушателями (класс!)
- гиков
А также:
- часть баек для фанаток Кирилла
- два каминг аута
- магическая сцена после титров

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

Аудиоперебивки у меня пока нет, поэтому некоторые склейки с перескоком между темами неочевидные.

А вообще оказалось, что мы потрогали гораздо больше вопросов, чем планировалось, некоторые из них можно было бы развернуть на целую беседу. Формат мне понравился, попробую как-нибудь повторить. Кирилл, спасибо и за идеи, и за участие в эфире, приходи еще!