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

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

Абонентский ящик: @prplkn
Download Telegram
Обнаруживаем хорька

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

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
Для тех, кто не пришел вчера в эфир, оставил четверть в записи. Там есть про:
- часть "психологических бонусов"
- "проклятие знания" с экспериментом в реальном времени
- гуманитариев
- опыты переживания опыта
- первые пробы общения со слушателями (класс!)
- гиков
А также:
- часть баек для фанаток Кирилла
- два каминг аута
- магическая сцена после титров

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

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

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

Казалось бы, при чем здесь АЭ, угадаете?
This media is not supported in your browser
VIEW IN TELEGRAM
Сначала легкомысленный пост.

Попалось видео из второй версии съемок, которая никогда не была опубликована. В этом кусочке:
- использованы слова "покажу вам фокус"
- регулируемое мигание делается еще четырьмя, а не тремя нодами
- до радикального переписывания структуры курса еще месяц (переписана после 3 версии)
- до запуска пилота еще три месяца
- до начала изоляции весны 2020 еще три дня
- у ведущего уже нет бороды, но еще есть волосы😆

А серьезный пост сформулирую к вечеру.