Комментарии 33
Жутко интересно, что же это было за помещение? Ведь требовалось ещё короткое замыкание делать и обслуживать его. Хотя судя по видео это квартира.
Мы долго искали ангары, посуточные квартиры и гаражи, которые не жалко, но как всегда в итоге нашлось через знакомых
Гирлянда была отвлекающим манёвром? В дискорде мигание приняли за модуляцию, морзянку какую-нибудь.
Так бесперебойник в итоге пригодился? Не было особо одаренных взломщиков, которые снаружи рубильник в подъезде дёрнули?
Там 220? Выглядит жутковато :)
А кто этот, лучший пентестер страны, если не секрет?
Исключение возможности взломать iot устройства в квесте для itшников — это скорее минус.
А потом спрашивают, чем ардуина плоха. Да тем, что ее любители начинают засовывать ее в любой проект, не думая головой, надо, не надо, есть решения лучше, нет решений лучше…
В итоге ради задачи "GPIO с компа" берётся контроллер, добавляется куча библиотек, JSON-парсер, все это обвешивается релюшками и самодельной логикой, и получается франкенштейн.
Хотя хватило бы FTDI GPIO с библиотекой на питоне, или, если хочется по-взрослому, контроллера типа Wirenboard, у которого внутри линукс, и там непринужденно пишется любая логика, которая управляет любыми датчиками и реле.
По опыту работы в квестах, разработчики железок очень не любят нормальные контроллеры — потому что после перевода на эти контроллеры логики, квест почему-то перестаёт ломаться в части электроники совсем, и им начинают платить не за "приезжай, почини, срочно", а только за добавление новых функций, что очень сильно ломает их бюджет.
Ну и ремонт попроще.
В итоге у нас получилось 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 микроконтроллера. Проверялось отвалился ли он очень просто — обновление состояния загрузки процессора, и соответственно оборотов вентилятора приходило по шедуллеру раз в секунду. Ну и конечно на контроллере был настроен ватчдог.
Железо проекта: как мы строили комнату с хакерским квестом