Т.е. если нужно бесконтактным способом контролировать какие-то объекты в промышленных цехах, без длиннющих проводов собирать статистику в базу данных для анализа, то почему бы и не попробовать всем уже давно привычные… Android-смартфоны.
Если владеть какими-то навыками программирования под Android, то как бы, всё железо для промышленного контроллера у смартфона на борту уже есть: и датчики, и мобильная связь, и батарея для кое-какой автономности. Ну, дисплей, конечно, тоже, на какое-то время нужен.
Но, хотя, если бы вдруг кто-то произвел надежное компактное Android-устройство с железом в точности как у смартфона, но без дисплея — было бы идеально. И, да — это не просто HDMI-WiFi-dongle для телевизора, а именно с батареей, GSM-модулем, и камерой.
По заданию — никаких датчиков применить нельзя, горячо. Очень горячо. Т.е. бесконтактно надо контролировать — ничего кроме камеры не подойдет. Для камеры вполне хватит QR-кодов, чтобы контролировать нужные объекты. Но при этом контроллер надо расположить в прохладном месте, с нормальными температурами. Это всё, оказывается, реально.
Мобильный Интернет сейчас в пределах городов, даже на предприятиях — вполне терпимый, по крайней мере, оператора вполне можно подобрать с терпимым уровнем сигнала. И даже 4G уже можно использовать, хотя, конечно, уровень сигнала балансировать может на грани отключения — но об этом позже. Так что — отправка данных на сервер (с предварительным накоплением в локальной БД) по мере наличия Интернета — не проблема.
После предварительной разработки софта и тестирования — выясняются, что температурные условия для смартфона вполне обеспечиваются, температуры до 40 градусов. Современные литиевые батареи на смартфонах вполне декларируются до 45 °С, а при 50 — современные смартфоны, контролирующие температуру встроенным в батарею датчиком — начинают «кричать» про перегрев и программно отключают зарядку, если она подключена. Значит, надо учесть охлаждение. Так что реализуемость уже вполне доказана, система проста в общей структуре, все кусочки системы в голове прекрасно укладываются — значит, «вперёд, и с песней», кодить.
Доходит очередь до разработки корпуса контроллера, включаем в него Android-смартфон с адаптером питания, с продуманным вводом внутрь кабеля питания. И систему охлаждения. Которая, как окажется позже, очень даже нужна, и не только для охлаждения железа.
Приходит время, и система уже начерно работает полностью, сервер показывает пользователям таблички и графики данных, проверяет диапазоны измеренных параметров, и уведомляет пользователей о грядущих f...k-up-ах, и тут постепенно… начинают проявляться нюансы структурно «простой» системы…
Нет, с батареей нет проблем, смартфон постоянно подключен к зарядному устройству, внутренний контроллер батареи молодец, пыхтит и свою непрерывную работу делает. Но оказывается, что для уверенного распознавания QR-кодов важны одновременно и ракурс камеры, и освещение, и тени, частично закрывающие код, и состояние кода, который под высокой температурой постепенно выгорает.
Потом через месяц «боевого» тестирования вдруг обнаруживается, что качество распознавания QR-кодов все это время постепенно ухудшалось, и теперь совсем не годится: оказывается, что в воздухе постоянно присутствует мельчайшая пыль, которая при коротком беглом осмотре цеха и не видна, но которая постепенно оседает на стекле, закрывающем объектив камеры. Слой пылищи медленно накапливается и… понятно чем это заканчивается, в конце концов.
Вот тут система охлаждения и пригодилась, не только для охлаждения, но теперь еще и для защиты от пыли, создавая «избыточное» давление воздуха изнутри, обдувая объектив и не давая пыли оседать на линзу.
В течение всех этих событий, разумеется, идет непрерывная отладка софта, алгоритмов, на железе, к которому у разработчиков нет физического доступа — всё только через удалённый контроль. По паре релизов в день, т.к. общий алгоритм работы оборудования в цеху, заранее описанный, прекрасно понятный на чертежах и рисунках, содержит в реальности тоже кучку мелких нюансов. И алгоритмы проверок в коде плодятся непрерывно.
Для удаленного управления и обновления софта в Android используется TeamViewer Host (использовался !), с ним не было проблем, наверное, месяцев 4-5, всё чудесно подключалось, доступ к экрану смартфона был. Всё работало через 4g-интернет одного российского федерального оператора, в бесплатном режиме. Разумеется, мы думали, что рано или поздно надо будет приобрести бизнес-лицензию, т.к. сочинять самим целую систему удаленного управления — нецелесообразно.
Всё было неплохо, пока разработчики TeamViewer не начали что-то там обновлять в своей системе и у нас не пропал доступ. Ну, логично, мы подумали, что это связано с бесплатным ограничением, пока и честь знать — и приобрели лицензию (долго и не полностью цензурно удивляясь её стоимости). Но это не помогло — это было начало технических проблем у TeamViewer, которые требовали переустановки клиента и настроек и подтверждения на экране смартфона. К которому не было ни физического, ни виртуального доступа.
Доступ к системе удалось потом восстановить только физически добравшись до смартфона — я же забыл упомянуть, что смартфон был новым из магазина, с официальной прошивкой. Без root-доступа ко всем функциям операционки. И это работало неплохо, до некоторой поры.
Короче говоря про TeamViewer (TV) — после этих первых мучений оплату бизнес-аккаунта удалось вернуть (только по телефону, никакие способы добиться поддержки через Интернет — нереальны). Стало ясно, что нужны альтернативы TV. Позже когда ситуация повторилась — мы зачем-то второй раз наступили на эти грабли с приобретением бизнес-аккаунта TeamViewer, но стало ясно, что мучаемся не мы одни, а куча пользователей, с горами Android-устройств с бизнес-лицензией. И работа с этим софтом была приостановлена.
И стало ясно, что для любого промышленного оборудования самое главное — это возможность сделать reboot. В том числе и по внешней удаленной команде. Чтобы вернуть себе доступ в систему, невзирая на любые глюки софта. И в соответствии с этим было принято решение сделать смартфон с root и разработать свой дополнительный софт удаленного управления, через свой собственный сервер, разумеется с возможностью перезагрузки смартфона.
И такой софт был разработан, и его польза не раз подтвердилась: кроме удаленного управления через сервер, были реализованы команды через SMS-сообщения.
Всё это время только один компонент системы не вызывал нареканий и работал практически круглосуточно, и даже удивлял, т.к. уже прошло больше полугода непрерывной работы системы через 4G. Смартфон был подконтролен, данные текли, возможность удаленного reboot несколько раз помогала преодолеть глюки собственного основного софта, работающего с камерой и QR-кодами. Интернет пропадал очень редко и буквально на считанные десятки секунд.
Но ничто не «вечно под луной», и однажды система пропала. Совсем. Ни данных на сервере, ни данных от геотрекинга Google, ни ответа через собственный remotecontrol-софт. Ну, пришло время сделать сброс системы через команду в SMS-сообщении. А вот фиг. И это не помогло. И команда на включение Интернет-соединения не помогла.
При этом входящий звонок на номер SIM-карты, вставленной в смартфон вполне себе проходил, сколько раз ни проверяй.
Я уже думал, что злобные кулхацкеры забрались в систему, удалили весь мой Android-софт, и под конец «хлопнули дверью» — вырубили мобильный Интернет.
Наконец-то оператор связи ответил, что «приносим наши извинения, техническая проблема с сотой, которую вы используете». Но звонок работает, а SMS — нет.
И тут я вспомнил, что в своё время предусмотрел в софте принудительное включение WiFi, не знаю зачем — это соединение же не используется в цехах предприятия. А к WiFi смартфон когда-то на этапе разработки, разумеется, подключался. Остается попробовать на другом смартфоне включить точку доступа WiFi, поименовать её именем моей домашней сети, задать соответствующий сети пароль и… и БИНГО — железяка вышла на связь!
Ни одна SMS-ка после того глюка оператора — не добралась до Android, мой софт их не получил.
И всего-лишь сделав reboot железки, пока был WiFi-Интернет — удалось восстановить работу SIM-карты оператора и мобильного Интернета.
И теперь в софт удаленного управления включена возможность перезагрузки с помощью обычного входящего звонка, чтобы и такой косяк оператора не мешал работе.
Заключение: система работает порядка 10 месяцев, батарея смартфона ОК, камера ОК. Так что не обязательно собирать или приобретать дорогой промышленный компьютер, подключать в него внешнюю периферию — вполне можно обойтись современным Android-смартфоном.
Но «геморроя» и всяческих неприятных нюансов избежать, я уверен, нигде не удастся.
И я для себя сделал вот такой вывод: этапы настройки смартфона Android для автономной удаленной работы в составе промышленного контроллера
- Выбор устройства для индустриального использования — только с возможностью получения Root (для возможности перезагрузки)
- Обновить всё, что автоматически можно и отключить обновления
- Получить Root на устройстве (!)
- Отдельный (корпоративный) аккаунт Google Play Market — настроить (для контроля местоположения устройства), обновить всё ПО и обязательно отключить обновления
- Включить режим разработчика и в нем: «Не отключать экран при зарядке»
- Отключить блокировку экрана: тип «без блокировки»
- Блокировка SIM-карты – без ПИН-кода (номер SIMки — сохранить !)
- Настройка мобильного Интернета SIM-карты: постоянно включен Интернет
- Установка своего софта RemoteControl — удаленное управление рутованным Андроидом через свой сервер
- Установка других приложений удаленного управления (AirDroid, Teamviewer Host) и настройка
- Установка основного приложения-хозяина устройства (неудаляемый администратор, но необязательно)
- Разрешение неограниченной фоновой работы приложения-хозяина
- Автостарт при загрузке
- Установить лаунчер (приложение-хозяин) по умолчанию (если есть такая возможность, настроить в последний момент)
- Установка своей утилиты RemoteReset — перезагрузка рутованного Андроида SMS-сообщением и по звонку (!) — проверить перезагрузку и автостарт всего вышеперечисленного (и проверить работу через Интернет)
- Включить WiFi и подключится к сетям заранее: особенно к мобильной точке доступа со смартфона оператора настройки (для альтернативного доступа смартфона к Интернет при локальной активации этой точки доступа)
- Зарядить батарею
- Запустить основное приложение-хозяин
- Отключить устройство до момента включения при инсталляции
P.S.: более подробными деталями, конечно, не дают поделится коммерческие\юридические обязательства.
stilic
Лет семь назад еще выполнял подобный заказ — разработка для смартфона на Андроид для целей промышленного применения.
Никакого рута там и не нужно, как правило. Все равно телефон не подключен к железу непосредственно (просто нечем), никакие дополнительные драйвера не нужны.
Ставится приложение в т.н. kiosk-mode, делается лаунчером. И всё.
peacemakerv Автор
Сколько проработало у вас на глазах по времени? Как батарейка себя вела?
stilic
Э? 7 лет. Работает и сейчас.
Они к заряднику подключены всё время.
Если экран постоянно включён (как у нас), то и выбора иного нет. Батареи не хватит на столько-нибудь значительный срок.
peacemakerv Автор
Вау! Непрерывно? Смартфон не менялся? А версия Андроида какая?
Удаленное управление не использовалось? Т.е. софт вообще не обновлялся, не исправлялся ?!
stilic
А что вас удивляет? Промышленные системы долго живут.
Один экземпляр поменяли из-за выхода из строя, но остальные работают все 7 лет. Возможно, меняли блоки питания, но для этого не нужно меня вызывать, они могли поменять блок питания, но я об этом и не знаю. Наверняка перезагружали, для этого тоже не нужно меня вызывать. Но не жаловались на необходимость частых перезагрузок. С учетом сложностей доступа постоянные перезагрузки их бы быстро замучали. Видимо, работает стабильно.
Наверное версия 4, не помню.
Софт обновлялся 1 раз, не удаленно. Удаленное управление даже не настраивалось, не нужно. Там огромные потери из-за простоев и сбоев, поэтому софт изначально: а) упрощен; б) отлажен тщательно.
Длительные сроки это нормально для промышленных систем. У меня есть проекты, что и с 2004 года функционируют с нечастными обновлениями. Но там не смартфоны.
peacemakerv Автор
Спасибо за ответы.
Это хорошо, когда есть реальная возможность отладки не на боевом окружении.
stilic
Эта возможность зависит от разработчика прежде всего.
Заказчик вообще не представляет что есть понятие отладка софта. С его точки зрения «заплатил и всё работает».
Это ваша задача, как разработчика, выяснить хоть под дулом писталета у виска заказчика а что именно ему нужно. Это ваша задача как разработчика выстроить процедуры тестирования.
Если вы до сих пор занимались только пользовательским софтом или веб-сайтами, то да, добро пожаловать в новый мир, мир промышленного оборудования. Со своими очень четкими и ограниченными процедурами, стабильными и не меняющимися десятилетиями. И с огромными стоимостями простоя или поломки оборудования или недогрузки оборудования — из-за вашего софта.
Поэтому для промышленной разработки есть отличия:
а) Это существенно дороже.
б) Это существенно тщательнее.
в) Это работает годами и даже десятилетиями без участия человека.
FDA847
Делали несколько систем на базе простых планшетов. Просто вскрывали их и вынимали батарею. Чтобы пожара не было в случае выхода её из строя. У приборов свой резервный свинцовый аккумулятор был. Делали в 2014 году. Уже шесть лет работает в режиме 24/7. Планшеты какие-тот китайские были.
peacemakerv Автор
Агааа, т.е. самое интересное вы как раз и выкорчевали :)
FDA847
Ну а что в нём интересного может быть? У меня в ноутбуке Acer аккумулятор за два года непрерывной работы вспучился и разорвал нижнюю крышку. В Lenovo за три года почти непрерывной работы просто помер. Поэтому у меня лично нет доверия этим аккумуляторам.
ne_kotin
IOIO board через OTG