Pull to refresh

Comments 33

Могли-бы оставить как комнату-музей:)
По договору аренды мы должны были освободить ее и оставить чистой и пустой :)

Жутко интересно, что же это было за помещение? Ведь требовалось ещё короткое замыкание делать и обслуживать его. Хотя судя по видео это квартира.

Это Хакспейс Нейрон.

Мы долго искали ангары, посуточные квартиры и гаражи, которые не жалко, но как всегда в итоге нашлось через знакомых

Ребята из RuVDS прекрасные, но второй раз мы бы не выдержали наверное :)

Гирлянда была отвлекающим манёвром? В дискорде мигание приняли за модуляцию, морзянку какую-нибудь.

Да! Мы ее вставили, чтобы повторить мигание на корпусе обычного старого системника. Собственно поэтому было так забавно наблюдать, как пытались найти в ней морзянку)
Ближе к зиме. Когда кстати лучше, в выходные или будни?

Выходные! Легче погрузиться с головой, работа не страдает.

30 декабря, в качестве подарка на Новый Год.

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

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

Нет:) нас слава богу так и не нашли. Но рубильник мы сами дёргали, когда проверяли ИБП.

Мне казалось системник — бутафория, только корпус. Если в нём всё равно была начинка, почему не стали запускать сайт именно на нём?
Исключение возможности взломать iot устройства в квесте для itшников — это скорее минус.
Для надежности. Изначально конечно собирались прямо там крутить сайт, потом решили сделать надежнее и проще

А потом спрашивают, чем ардуина плоха. Да тем, что ее любители начинают засовывать ее в любой проект, не думая головой, надо, не надо, есть решения лучше, нет решений лучше…
В итоге ради задачи "GPIO с компа" берётся контроллер, добавляется куча библиотек, JSON-парсер, все это обвешивается релюшками и самодельной логикой, и получается франкенштейн.
Хотя хватило бы FTDI GPIO с библиотекой на питоне, или, если хочется по-взрослому, контроллера типа Wirenboard, у которого внутри линукс, и там непринужденно пишется любая логика, которая управляет любыми датчиками и реле.


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

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

Ну и ремонт попроще.

В итоге у нас получилось 21 gpio на выходы, 1 на вход и ещё выход на светодиодную ленту. Подключенных библиотек было 3 — ArduinoJson, FastLED и avr/wdt.
Вот именно из стремления «попроще» и вырастают монстры:
1)Пересылаются данные — значит UART. UART это вряд ли RS232<->UART-TTL, скорее всего это USB-UART, который не то, чтобы стабильный (а китайские микросхемы совсем не стабильные). Когда он отвалится — никто не знает, может через час, может через сутки. Детектировать это сложно, что-то делать еще сложнее — непонятно, где проблема, и если проблема на стороне контроллера, как его ребутать-то, если он же и GPIO реализует. Второе устройство добавить сложно — нумерацией устройств занимается система, и линукс-то будет это делать как попало, если ему специально что-то не указать, а в винде вообще все плохо.
Еще из-за реализации Arduino bootloader любое открытие порта ведет к перезагрузке контроллера.
И таких вот тонкостей, которые могут выстрелить в непонятный момент — тонна.

2)Собственный протокол — это велосипеды в области идентификации сущностей: есть ли соглашение по поводу передачи данных на исполнительные устройства и соглашение по поводу названия устройств?
Велосипеды по разбору протокола: например, что служит терминатором JSON-строки? /n? Время посылки? Что будет, если потеряется произвольный символ? (это очень частая ситуация в случае помех, например)
Непонятно, что делать с подтверждением посылки и проверкой ее на корректность, с проверкой что команда исполнена.

Хотя можно взять WB, у которого связь с внешним миром Ethernet/TCP/MQTT, что сразу снимает добрую часть всех этих проблем, начиная от потери пакетов и заканчивая соглашениями о наименовании. Плюс, отлаженная низкоуровневая логика, которая гарантирует, что при получении такого пакета щелкнет вот это реле. Плюс, нормальные контакты, а не месиво проводков.

Т.е. я верю, что у вас все работало в этот раз нормально. Или лечилось втыканием-вытыканием «ардуинки». Но такой подход все равно ведет к тому, что вероятность сломать следующий проект очень сильно повышается. Когда объект существует в единственном экземпляре, и на него не жалко потратить лишние 10к, стоит все-таки для управления входами/выходами по определенной логике взять промышленный контроллер вместо обучающего набора по разработке под МК для детей.
В нашем случае монстр если и получился, то только по хитросплетению проводов. Фактически те сущности которые отрабатывались на бекэнде и стали управляемыми объектами в микроконтроллере. Чтобы систему не замучали бесконечными запросами мы поставили таймаут на переключение со стороны сервера.
Чтобы избежать перезагрузок ардуинки использовался USB-UART на микросхеме cp2102, который был подключен к UART1 микроконтроллера. Проверялось отвалился ли он очень просто — обновление состояния загрузки процессора, и соответственно оборотов вентилятора приходило по шедуллеру раз в секунду. Ну и конечно на контроллере был настроен ватчдог.
Ну, как знаете, я не ж. и не у вас работаю ¯\_(ツ)_/¯
Что смог, посоветовал.
Sign up to leave a comment.