Как стать автором
Обновить

Android в промышленном контроллере

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

Т.е. если нужно бесконтактным способом контролировать какие-то объекты в промышленных цехах, без длиннющих проводов собирать статистику в базу данных для анализа, то почему бы и не попробовать всем уже давно привычные… 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 для автономной удаленной работы в составе промышленного контроллера

  1. Выбор устройства для индустриального использования — только с возможностью получения Root (для возможности перезагрузки)
  2. Обновить всё, что автоматически можно и отключить обновления
  3. Получить Root на устройстве (!)
  4. Отдельный (корпоративный) аккаунт Google Play Market — настроить (для контроля местоположения устройства), обновить всё ПО и обязательно отключить обновления
  5. Включить режим разработчика и в нем: «Не отключать экран при зарядке»
  6. Отключить блокировку экрана: тип «без блокировки»
  7. Блокировка SIM-карты – без ПИН-кода (номер SIMки — сохранить !)
  8. Настройка мобильного Интернета SIM-карты: постоянно включен Интернет
  9. Установка своего софта RemoteControl — удаленное управление рутованным Андроидом через свой сервер
  10. Установка других приложений удаленного управления (AirDroid, Teamviewer Host) и настройка
  11. Установка основного приложения-хозяина устройства (неудаляемый администратор, но необязательно)
  12. Разрешение неограниченной фоновой работы приложения-хозяина
  13. Автостарт при загрузке
  14. Установить лаунчер (приложение-хозяин) по умолчанию (если есть такая возможность, настроить в последний момент)
  15. Установка своей утилиты RemoteReset — перезагрузка рутованного Андроида SMS-сообщением и по звонку (!) — проверить перезагрузку и автостарт всего вышеперечисленного (и проверить работу через Интернет)
  16. Включить WiFi и подключится к сетям заранее: особенно к мобильной точке доступа со смартфона оператора настройки (для альтернативного доступа смартфона к Интернет при локальной активации этой точки доступа)
  17. Зарядить батарею
  18. Запустить основное приложение-хозяин
  19. Отключить устройство до момента включения при инсталляции

P.S.: более подробными деталями, конечно, не дают поделится коммерческие\юридические обязательства.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
А вы участвовали в разработке систем с Android, непрерывно запитанным по несколько месяцев или лет подряд?
5.88% Да, система работает, батарея ОК 2
8.82% Да, проблемы с батареей 3
8.82% Не участвовал, но видел подобную систему успешно работающую 3
76.47% Чо? 26
Проголосовали 34 пользователя. Воздержались 18 пользователей.
Теги:
Хабы:
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 4K
Комментарии Комментарии 61