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,9%Да, система работает, батарея ОК2
    • 8,8%Да, проблемы с батареей3
    • 8,8%Не участвовал, но видел подобную систему успешно работающую3
    • 76,5%Чо?26
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 61

      0
      Лет семь назад еще выполнял подобный заказ — разработка для смартфона на Андроид для целей промышленного применения.

      Никакого рута там и не нужно, как правило. Все равно телефон не подключен к железу непосредственно (просто нечем), никакие дополнительные драйвера не нужны.

      Ставится приложение в т.н. kiosk-mode, делается лаунчером. И всё.
        0
        Сколько проработало у вас на глазах по времени? Как батарейка себя вела?
          +1
          Сколько проработало у вас на глазах по времени? Как батарейка себя вела?

          Э? 7 лет. Работает и сейчас.

          Они к заряднику подключены всё время.
          Если экран постоянно включён (как у нас), то и выбора иного нет. Батареи не хватит на столько-нибудь значительный срок.
            0
            7 лет. Работает и сейчас.

            Вау! Непрерывно? Смартфон не менялся? А версия Андроида какая?
            Удаленное управление не использовалось? Т.е. софт вообще не обновлялся, не исправлялся ?!
              +1
              Вау! Непрерывно? Смартфон не менялся? А версия Андроида какая?
              Удаленное управление не использовалось? Т.е. софт вообще не обновлялся, не исправлялся ?!

              А что вас удивляет? Промышленные системы долго живут.

              Один экземпляр поменяли из-за выхода из строя, но остальные работают все 7 лет. Возможно, меняли блоки питания, но для этого не нужно меня вызывать, они могли поменять блок питания, но я об этом и не знаю. Наверняка перезагружали, для этого тоже не нужно меня вызывать. Но не жаловались на необходимость частых перезагрузок. С учетом сложностей доступа постоянные перезагрузки их бы быстро замучали. Видимо, работает стабильно.

              Наверное версия 4, не помню.
              Софт обновлялся 1 раз, не удаленно. Удаленное управление даже не настраивалось, не нужно. Там огромные потери из-за простоев и сбоев, поэтому софт изначально: а) упрощен; б) отлажен тщательно.

              Длительные сроки это нормально для промышленных систем. У меня есть проекты, что и с 2004 года функционируют с нечастными обновлениями. Но там не смартфоны.

                0
                Спасибо за ответы.
                софт изначально: а) упрощен; б) отлажен тщательно.

                Это хорошо, когда есть реальная возможность отладки не на боевом окружении. И c полным списком реальных событий.
                  +1
                  Это хорошо, когда есть реальная возможность отладки не на боевом окружении. И c полным списком реальных событий.


                  Эта возможность зависит от разработчика прежде всего.

                  Заказчик вообще не представляет что есть понятие отладка софта. С его точки зрения «заплатил и всё работает».

                  Это ваша задача, как разработчика, выяснить хоть под дулом писталета у виска заказчика а что именно ему нужно. Это ваша задача как разработчика выстроить процедуры тестирования.

                  Если вы до сих пор занимались только пользовательским софтом или веб-сайтами, то да, добро пожаловать в новый мир, мир промышленного оборудования. Со своими очень четкими и ограниченными процедурами, стабильными и не меняющимися десятилетиями. И с огромными стоимостями простоя или поломки оборудования или недогрузки оборудования — из-за вашего софта.

                  Поэтому для промышленной разработки есть отличия:

                  а) Это существенно дороже.
                  б) Это существенно тщательнее.
                  в) Это работает годами и даже десятилетиями без участия человека.

              +1

              Делали несколько систем на базе простых планшетов. Просто вскрывали их и вынимали батарею. Чтобы пожара не было в случае выхода её из строя. У приборов свой резервный свинцовый аккумулятор был. Делали в 2014 году. Уже шесть лет работает в режиме 24/7. Планшеты какие-тот китайские были.

                0
                Агааа, т.е. самое интересное вы как раз и выкорчевали :)
                  0
                  Ну а что в нём интересного может быть? У меня в ноутбуке Acer аккумулятор за два года непрерывной работы вспучился и разорвал нижнюю крышку. В Lenovo за три года почти непрерывной работы просто помер. Поэтому у меня лично нет доверия этим аккумуляторам.
            0
            Все равно телефон не подключен к железу непосредственно (просто нечем)

            IOIO board через OTG
            0

            Незнаю как на современных смартфонах, но на Nexus 7 2013 отключали батарею и подключали зарядку напрямую к контроллеру(планшет был популярный и на его основе делали car pc)

              0
              Вместо получения рута еще есть вариант использовать самсунги с Knox SDK. Правда, не знаю процедуру получения доступа к лицензии при таком кейсе использования, но полный доступ к функциям устройства обеспечен.
                0
                Т.е. там есть возможность reboot без root?
                Я помню, что TV как раз начал требовать с какой-то версии на экране подтвердить использование Knox.
                  +1
                  Т.е. там есть возможность reboot без root?
                  Я помню, что TV как раз начал требовать с какой-то версии на экране подтвердить использование Knox.


                  Для действительно автономного оборудования перезагрузки изнутри ОС недостаточно.
                  ОС тоже может зависнуть.

                  Вам нужен внешний watchdog, если уж вам нужна полная гарантия.

                  Нужно вынуть батарею и подключить блок питания через релюшку, которой будет управлять внешний watchdog.

                  Если нужно бесперебойное питание и батарея смартфона нужна, то сделать иначе: вскрыть корпус смартфона и припаять внешний watchdog вместо кнопки reset.

                    0
                    внешний watchdog

                    Вот тут как раз вопрос, что считать Вочдогу условием зависания _снаружи_.
                    Все же, современные операционки гугловые, вроде бы непричинно уже не виснут, в своей массе. Главное — не обновлять работающий зарекомендовавший себя уже софт.
                      +1
                      Все же, современные операционки гугловые, вроде бы непричинно уже не виснут, в своей массе. Главное — не обновлять работающий зарекомендовавший себя уже софт.

                      1. Вообще оценка «вроде, современные ОС не виснут» — это не серьезно. В зависимости от задачи оцениваем возможные потери от зависания.
                      2. Учтите, что не все зависит от ОС. Есть же еще и железо.
                      3. Да и все же виснут ОС. Изредка, но виснут. Ибо слишком сложные. Идея watchdog в том, что он очень простой, там виснуть почти нечему.
                      4. Вопрос только в том, какие в вашей конкретной системе нужны гарантии. Если можно просто подойти и ткнуть reset вручную, а зависшее оборудование не является проблемой (я бы не полагался на то, что люди вовремя заметят зависание и не поленятся его устранить сразу же) — то и watchdog не нужен.
                      5. Что считать зависанием зависит от вашей задачи. Простейший случай — ping делать. Более сложный случай — как это и положено в серьезных системах — в приложении сделать отдельную точку мониторинга (много примеров как это сделано для микросервисов, сходная концепция с вашей задачей, гуглить microservices health check)
                        0
                        Простейший случай — ping делать

                        Пока не понял. Вочдог же снаружи, на кнопке ресет, тупой, в тырнет не ходит.
                        Как он должен взаимодействовать с операционкой Android, от которой ждем зависания?
                          +1
                          Пока не понял. Вочдог же снаружи, на кнопке ресет, тупой, в тырнет не ходит.
                          Как он должен взаимодействовать с операционкой Android, от которой ждем зависания?


                          Watchdog всегда имеет обратную связь с контролируемым устройством. Иначе и смысла в нем нет.

                          Например, по сети передачи данных (как вы это реализуете — через локальный Wi-Fi или через прямое подключение к сети смартфона по USB — это уже детали).

                          Подключение может быть как прямым к контролируемому устройству. Так и опосредованным: например, watchdog может проверять есть ли свежие данные на сервере, куда сливает данные ваше устройство.

                          Типичный универсальный watchdog состоит Ethernet и реле, помимо микроконтроллера.

                          Узкоспециализированные watchdog как-то напрямую подключаемые к контролируемому устройству, могут быть и без Ethernet.

                            0
                            ОК, т.е. это далеко не тот тупой «собак», про который я думал :).
                            А не приходилось вам решать вопрос вот этот — см. ниже (включение Android при возобновлении питания)?
                              +1
                              ОК, т.е. это далеко не тот тупой «собак», про который я думал :).
                              А не приходилось вам решать вопрос вот этот — см. ниже (включение Android при возобновлении питания)?


                              Для жестких случаев проще взять плату типа «Малинка» и приделать к ней тач-скрин.

                              Получится подороже, чем смартфон.

                              Зато все входы-выходы под рукой. В том числе GPIO для управления внешними устройствами. Чего в смартфоне нет.

                              Но при желании использовать именно смартфон — это тот же watchdog можно использовать. Вывести от кнопки включения проводки до watchdog.

                              Алгоритм прост:

                              1) Watchdog выключает питание (аккумулятора разумеется нет)
                              2) Держит паузу
                              3) Включает питание
                              4) Держит паузу
                              5) Зажимает контакт кнопки «Вкл» на смартфоне
                              6) Держит паузу
                              7) Отключает контакт кнопки «Вкл» на смартфоне
                                0

                                Если не смущает идея пайки в телефоне, можно придумать что-то вроде такого: сигнал «всё в норме» берём с выхода на вибромотор, в приложении на смартфоне добавляем короткую вибрацию в ответ на ping с сервера. Внешняя схема watchdog наблюдает за своевременностью сигнала и делает выкл-вкл в случае таймаута. Сам watchdog на каком-нибудь простом и надёжном 8-битном микроконтроллере сделать (чтобы без ОС и прочих излишеств, минимальный хорошо проработанный код). Было бы классно вообще на жёсткой логике, но для такого сигнал вибро не очень удобен — будет трудновато отловить зависание с вечной вибрацией.
                                Ещё один способ «подать голос» из телефона наружу — в некоторых моделях (навскидку из головы — Alcatel 1S, Huawei P Smart, но их явно больше таких) на плате есть тестовые точки RxD/TxD отладочного UARTа. При наличии рута можно в ответ на ping писать определённую последовательность в соответствующее устройство /dev/ttyXX и следить за этим снаружи (опять же мелким MCU).

                      +1

                      Да, есть, примерно так выглядит у меня в проекте:


                      EnterpriseDeviceManager enterpriseDeviceManager = EnterpriseDeviceManager.getInstance(context);
                      PasswordPolicy passwordPolicy = enterpriseDeviceManager.getPasswordPolicy();
                      passwordPolicy.reboot("Reboot reason");

                      В странном полиси метод находится, но работает именно так, так и назван. Приложение, конечно, совсем с другим предназначением, но вот проверил — вызов метода сопровождается перезагрузкой без лишних вопросов (S8+, Android 9). У меня код вызывается из UI, но, думаю, если из какого-то foreground сервиса по пушу вызвать, результат будет тот же.
                      В Knox вообще много всего интересного есть. У меня еще включена такая штука как запрет закрытия приложения:


                      EnterpriseDeviceManager enterpriseDeviceManager =
                          EnterpriseDeviceManager.getInstance(context);
                      ApplicationPolicy applicationPolicy = enterpriseDeviceManager.getApplicationPolicy();
                      List<String> selfPackageList =
                          Collections.singletonList(context.getPackageName());
                      applicationPolicy.addPackagesToForceStopBlackList(selfPackageList);

                      И никто больше не в состоянии приложение прибить, даже нехватка ресурсов.

                        0
                        никто больше не в состоянии приложение прибить, даже нехватка ресурсов

                        А вот тут есть засада: если в системе используется несколько приложений
                        • главное
                        • удаленное управление через Интернет
                        • отдельное управление через SMS\звонок

                        , и иногда нужен на экране интерфейс других приложений, то «пришпиленный» киоск-хозяин помешает их работе.
                        Должен быть механизм исключений, разрешение работы еще каких-то приложений.
                          0
                          «пришпиленный» киоск-хозяин помешает их работе

                          Это не Kiosk mode, для Kiosk mode есть тоже все необходимое в knox:
                          KioskMode kioskModeService = enterpriseDeviceManager.getKioskMode();
                          (у меня это api тоже используется, но точечно, типа запрета на multiwindow в системе).
                          Запрет force stop у меня для того, чтобы если приложение в фоне висит, система не смогла его прибить, если вдруг решит, что для чего-то другого ресурсы важнее. А если все же когда-то нужно будет прибить приложение, можно таким же макаром вызвать applicationPolicy.removePackagesFromForceStopBlackList(...).

                            0
                            Отладка вот этого всего в Knox возможна только на живой самсунговской железке?
                              +1

                              Ну как бы да, еще есть что-то вроде онлайн-фермы samsung-устройств, но такие вещи там не потестируешь. Мне начальство купило, поэтому я не жалуюсь)
                              Кстати, есть вариант посмотреть на android enterprise, насколько я знаю, там api плюс-минус идентично Knox (не знаю, кто у кого скопировал, но у самсунга, по моему, это было раньше). С ним работают не только самсунги. Но мне кажется, получить лицензию сложнее.

                    0
                    _
                      0
                      «И теперь в софт удаленного управления включена возможность перезагрузки с помощью обычного входящего звонка, чтобы и такой косяк оператора не мешал работе.»

                      Вот это, потенциальная атака «отказ в обслуживании», причем реализовываться будет и просто так — всякие автороботы звонят с предложением «бесплатных услуг по медосмотру».
                        0
                        Т.е. при вызове можно подделать номер телефона, с которого идет вызов?
                        Разумеется, вызывающий номер проверяется.
                          0
                          Можно подделать, это хорошо, что проверяется, подобрать будет сложнее, но с другой стороны при однократной утечке данного номера — все устр-ва будут под угрозой такой атаки.
                        0

                        Как в подобных случаях решается проблема долгого отсутствия электричества, когда аккумулятор разряжается, телефон выключается и обратно сам не включается при появлении электричества? В свое время это помешало использовать смартфон в качестве видеонаблюдения на удаленном объекте.

                          0
                          О пропадании питания и процессе разряда смартфон начнёт сигнализировать задолго до смерти.
                          Ну, а при полном разряде — да, придется кнопочкой, как обычно, его включать.
                          А вообще — это очень интересный вопрос: включение при возобновлении питания.
                            0

                            Выше отвечал о watchdog, не увидел. Туда же и включение при возобновлении встроится без проблем — при холодном старте самого watchdog выдаём импульс на вход кнопки питания и задерживаем переход к «сторожевым» функциям на время, гарантирующее старт телефона.

                              0

                              Ну, внешним микроконтроллером это понятно ). Тем же ESP8266 можно пинговать телефон по WiFi, а на кнопку включения нажимать сервой, чтобы не вмешиваться в конструкцию телефона. Я думал может в андроидах есть секретная настройка, чтобы телефон включался сам при подаче питания. Этого реально не хватает. Так как если делать внешний MCU в качестве watchdog, то большинство задач им же и решаются. Тот же ESP8266 (не говоря про ESP32) без проблем тянут Espruino и MicroPython, а значит из коробки поддерживают псевдомногозадачность (таймеры, асинхронность и прочие синтаксические плюшки). Поэтому по комфорту написания сложного кода не сильно уступают созданию программы для телефона.


                              А ещё в телефонах вымораживают искусственные ограничения, которые накладывают браузеры. Потому что использовать камеру (фактически единственное преимущество смартфона) можно вполне успешно из голого javascript. Там и OpenCV успешно подтягивается, и нейросети работают через Tensorflow JS, и все это крутится довольно шустро. Не говоря про сетевые возможности. Если бы не задушенные в ноль возможности по автономной работе браузера в андроидах, то написание небольших скриптов для очень многих задач было бы очень простым делом.

                                0
                                В watchdog на ESP/WiFi/MicroPython смущают как раз все эти создающие «комфорт написания сложного кода» вещи. Как бы ему самому при такой сложности тоже watchdog не потребовался (про надёжность нажатия кнопки сервой вообще молчу). Речь была как раз о максимально примитивном «в пару строчек на асме» — считаем такты от фронта до фронта, если слишком долго — даём сброс.

                                Включающиеся самостоятельно при возобновлении питания Андроиды существуют — Blackberry например, но там это достигается не настройкой ОС, оно живёт глубже. Хотя и на не-Blackberry есть например вот такая возможность: основной режим зарядки (который с красивой индикацией, в противоположность режиму глубокого разряда, где от силы светодиод мигает) реализуется средствами ОС, для него просто отдельная ветвь в init.xx.rc скриптах (без запуска launcher и пр.). При наличии рута можно попробовать поправить скрипты и заставить ОС стартовать в полный режим.
                                  +1

                                  Ну, справедливости ради, для большинства задач автоматизации даже atmega8 дикий оверхед. Просто все уже привыкли использовать микроконтроллеры для пустяшных задач. Хотя даже такие примитивные контроллеры порой и зависают, и глючат. И встроенный в них watchdog совсем не лишний. Думаю, эта тенденция будет нарастать и дальше. Если достаточно надёжно работает, то и ладно. Себя вот все чаще ловлю на том, что если нужен интерфейс или настройка устройства в процессе работы, то чем городить механические кнопки и экраны, как раньше, проще написать web интерфейс на том же esp8266 на микропитоне/javascript и настраивать с телефона через wifi.


                                  Или ближе к телефонной теме: понадобилось недавно сделать отпугиватель для заведшейся крысы на даче. Первым порывом было поставить инфракрасный датчик движения и включать пьезоэлектрическую пищалку при обнаружении движения. Все комплектующие есть, задача тривиальная. Но в итоге поставил обычный смартфон с написанной программой, который при обнаружении движения по камере включает резкий звук. Бонусом записалось видео убегающего зверька. По которому можно было бы отлаживать процесс, если бы не сработало сразу. А ещё включив светодиод вспышки, получил бесплатную подсветку ночью.


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

                                    0
                                    Спасибо за поддержку :)

                                    в смартфонах встроено столько разнообразных комплектующих, это неплохо. Хотя это не отменяет и более простых устройств, конечно. Смотря какая задача.

                                    Вот поэтому мне уже давно интересна какая-то модульная Андроидная конструкция, где можно к базовой операционке прицепить внешние модули необходимые. И, опять же, без дисплея. Но с релюшками, например. Или тепловизором. Или доп. кнопками.
                                    Ну, т.е. теже игрушки ардуинообразные, но с управлением Андроидом. И практически без пайки.
                                    Но такого нету.
                          +2
                          Ох, парни, вы ходите по очень тонкому льду… :)
                          Как собираетесь заменять вышедшее из строя устройство, если оно кончилось на своих складах (ну и в продаже его конечно уже нет)?
                          Судя по политике гугла по закручиванию гаек по поводу работы фоновых процессов в новых версиях андроид — всё становится зыбко.
                          Хотя да, очень привлекательно — всё под рукой (GPS, 2/3/4G, SMS, камера, разве что на аккум лучше не надеяться).

                          Мы в своё время делали (точнее, портировали) ява-сервер на андроид в качестве карманного сервера для приёма телематики с приборов.
                          Насторожили невеликая скорость работы и опасения за ресурс флеш-памяти.
                          В конце концов перешли на полупромышленные платы с линюксом, на которых прекрасно завелась arm-java, а для неспешного общения с периферией (кнопки, лампочки) достаточно было GPIO через файловую систему. 3G через внешний модем. Вачдог — внешней железкой. IP-камера — внешняя + ffmpeg. Правда, нам повезло, что GPS и SMS были не нужны, хотя, подключаемо.
                            0
                            вышедшее из строя устройство

                            Ну за без малого год в непрерывно включенном состоянии пока не сдохли. Ни батарея, ни камера, непрерывно дергающая фокусом в поисках QR-кода.
                            И тут как раз же нет проблем — подобных массовых устройств на замену — ну сколько угодно, малые вопросы только в адаптации кнопок под корпус (или наоборот).

                            в новых версиях андроид — всё становится зыбко

                            Факт, похоже в Android 10 еще больше гайки закручены, и вероятно могут быть проблемы для такого использования. Например, в Android10, прервать звонок, если не путаю, нереально сторонним приложением.
                            Хотя может, root все же рулит? Т.е. своё приложение системным сделать и алга…
                              0
                              Ох, парни, вы ходите по очень тонкому льду… :)
                              Как собираетесь заменять вышедшее из строя устройство, если оно кончилось на своих складах (ну и в продаже его конечно уже нет)?

                              Любым другим Android-смартфоном?
                                +1
                                Можно, если не помешают:
                                — внезапно новая версия андроида с новыми погремушками. Лечится своевременным модернизацией/тестированием софта под новые версии;
                                — новый корпус с другим расположением кнопок, если внешняя корпусировка.

                                Хотя, согласен с вами, если делать всё по уму и _заранее_ — то нигде «заполыхать» не должно.

                                Для меня последней каплей стал проект с выгребанием данных с прибора через usb на андроид. Полагаю, никто из производителей не думал о таком изврате, посему работало всё через раз, через переподключения и перезагрузки
                                (надо было через блютуз или wifi делать, привыкли старпёры к проводам :).
                                  0
                                  Я затем и поделился инфой в статье, что всё же стандартные и уже бытовые технологии смартфонов уже стали довольно надежными для применения даже в индустрии.
                                  Искал инфу раньше, спрашивал везде (год назад и далее) — даже про батарею никто не отвечал. Но, все-таки, реализуемо…
                                    0
                                    Я затем и поделился инфой в статье, что всё же стандартные и уже бытовые технологии смартфонов уже стали довольно надежными для применения даже в индустрии.


                                    К надежности это отношения не имеет.
                                    Бытовая электроника давно уже не более и не менее надежна кроме работы в агрессивных средах.

                                    К дешевизне, из-за массового производства, когда вы можете себе просто положить на склад про запас несколько экзепляров смартфонов — это да.
                                      0
                                      К надежности это отношения не имеет.


                                      Это почему же?

                                      последней каплей стал проект с выгребанием данных с прибора через usb на андроид. Полагаю, никто из производителей не думал о таком изврате, посему работало всё через раз, через переподключения и перезагрузки


                                      Если вот выше другие бытовые варианты — хуже.
                                      Все-таки вы имейте ввиду, что не в любой индустрии нужна надежность и себестоимость как в космической отрасли. Условия и варианты разные бывают.
                                        0
                                        Если вот выше другие бытовые варианты — хуже.


                                        Зачем бытовые?
                                        Есть промышленные компьютеры, с GPIO на борту. Само то, что нужно для управления железом.

                                        Другое дело, что цена этого железа выше массово производимых смартфонов.

                                        Впрочем, исходя из того, что уже есть «Малинки» и подобные платы, то выбор в сторону Андроид — не однозначный. Разве что если вам нужен только тач-скрин и не нужно управление железом.

                                        В то же время на «Малинке» будет куда как проще и с подключением к железу и с обновлением ОС, когда новая версия ОС вам не желательна в Android и с watchdog.
                                          0
                                          Ну, я так прикидываю, что не обладая знаниями по Линукс, и не желая заниматься железом низкоуровнево — готовый Андроид со всем нужным железом для меня — перевешивает заметно.
                                          А написание и отладка гор софта и борьба с попутными нюансами — в любом случае будет.
                                          Хотя есть к чему стремиться — если есть нормальный remotecontrol — дисплей не нужен, и можно бы получить еще более дешевый и компактный Андроид. Но только теоретически.
                                            +2
                                            Ну, я так прикидываю, что не обладая знаниями по Линукс

                                            В вашей статье большое значение уделяется получению root.
                                            Это как раз и есть администрирование Linux, на базе которого построен Android.

                                            и не желая заниматься железом низкоуровнево — готовый Андроид со всем нужным железом для меня — перевешивает заметно.


                                            Тут же вопрос вовсе не в ваших знаниях.

                                            Если вам нужно управление железом промышленным — то вам нужно управление железом промышленным. На Андроиде у вас не получится подключиться к станку — там просто нет этих портов ввода-вывода. Так что учитесь.

                                            Если вам не нужно управление железом промышленным, то рассматривайте Linux «Малинки» как обычную операционную систему. Где нет никакой низкоуровневости.

                                            Android имеет только 1 преимущество — готовый интерфейс пользователя и куча библиотек под этот интерфейс, с которыми вы умеете работать.

                                            Если вам нужно какую нибудь красивую панель управления с тач-скрином сделать — да, тут смысл в смартфоне на базе Android есть. Дешевле будет именно что купить смартфон и написать программу со всеми этими красивыми UI.

                                            Если вам нужно именно что управлять железом — тут Android подходит слабо.

                                            В том проекте, про который я вам выше рассказывал, у нас 2 компьютера:

                                            1) Андроид реализует интерфейс с пользователем.
                                            2) Физически управляет промышленным железом совсем отдельный компьютер, физически подключенный к релюшками и датчикам железа.

                                            Вы тут можете конечно сказать, что датчики и релюшки могут быть Блютучевыми на промышленном оборудовании.

                                            Но не все так просто.
                                            Тут и радиопомехи и безопасность и питание датчиков и их цена.
                                            Это уже делает не очень выгодным экономию, которую вы получите, используя смартфон.
                                              0
                                              Android имеет только 1 преимущество — готовый интерфейс пользователя и куча библиотек под этот интерфейс

                                              Ну ведь нет же! Андроид имеет уже и датчики, и батарею, и интерфейсы, и камеру, и вывод звука… И что главное — давно отлаженные схемотехнически на предыдущих моделях (это про надежность). И с уже давно отлаженным программным API для быстрого и опять же надежного получения цифровых данных от этих узлов (статусы, уровни сигналов, проценты...).

                                              управлять железом — тут Android подходит слабо


                                              Внешним железом — да, но…

                                              1) Андроид реализует интерфейс с пользователем.
                                              2) Физически управляет промышленным железом совсем отдельный компьютер, физически подключенный к релюшками и датчикам железа.


                                              … но как у вас реализовано взаимодействие этих двух блоков?
                                                0
                                                Андроид имеет уже и датчики, и батарею, и интерфейсы, и камеру, и вывод звука…


                                                Датчики там связаны с самим корпусом и функционалом именно смартфонным.

                                                Если ваше оборудование перемещается и вам нужно это отслеживать, то польза от датчиков есть.

                                                Если это фиксированное оборудование — то смысла в датчиках нет.

                                                Аккумулятор не плюс. Его заряжать, его менять (а промышленные компьютеры работают и десятилетиями). У станка все равно свое питание есть. Так что аккумулятор имеет смысл только в специфических применениях.

                                                Если датчики беспроводные — а как еще гибко подключать к Андроиду датчики — то аккумулятор быстро выжирается.

                                                Бесперебойник легко к любому станку прикручивается.
                                                И защитит не только компьютер, а и двигатель и пр.

                                                И что главное — давно отлаженные схемотехнически на предыдущих моделях (это про надежность)

                                                Типичная материнская плата с впаянным процессором (типа «Малинки») тоже отлажена.

                                                … но как у вас реализовано взаимодействие этих двух блоков?

                                                Wi-Fi
                                                  0
                                                  Аккумулятор не плюс. Его заряжать, его менять (а промышленные компьютеры работают и десятилетиями).

                                                  Вы же сами привели в пример 7ми летнюю уже систему с смартфоном и батареей :), которая проблем не доставляет.
                                                  А варианты разные бывают, и, повторюсь, далеко не всегда с космическими требованиями.

                                                  плата с впаянным процессором

                                                  Я не про процессор, а именно про периферию и её надежность реализации — датчики и пр.

                                                  Wi-Fi

                                                  Ну, т.е. опять же все тот же самый беспроводной интерфейс, который уже давно — бытовой.
                                                  Т.е. остается только найти\выбрать\сделать исполнительную WiFi-релейную (или с пр. периферией) плату… и получится система как у вас. Но с «интеллектом» только в Андроидной стороне.
                                                    0
                                                    Вы же сами привели в пример 7ми летнюю уже систему с смартфоном и батареей :), которая проблем не доставляет.


                                                    Так аккумулятор там не используется.
                                                    7 лет вообще не срок. Промышленное оборудование и по 30 лет работает.

                                                    Я не про процессор, а именно про периферию и её надежность реализации — датчики и пр.


                                                    Этой надежности полным полно и в несмартфонных реализациях.

                                                    Датчики смартфона применимы только для носильного промышленного оборудования.

                                                    Что там может быть быть использовано для стационарного оборудования, кроме датчика освещенности? Для стационарного оборудования — смысла в датчиках смартфона нет (кроме датчика освещенности).

                                                    Но для носильного — как раз размер того, что получится в итоге со смартфоном — не хороший пример.

                                                    Ну, т.е. опять же все тот же самый беспроводной интерфейс, который уже давно — бытовой.


                                                    Wi-Fi требует полноценного сетевого стека.

                                                    Там внутри будет целая ОС. Значит такой датчик будет и не дешев.
                                                    Ну и он сам вполне бы мог выполнять то, что вы собираетесь научить делать Android.

                                                    Смысл в стандартном телефоне на базе Android — только в интерфейсе пользователя.

                                                    Иначе — нужно делать аппаратную реализацию специальную. Стандартной смартфонной не получится ограничиться.

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

                                                    Вот программная часть Android — да, это уже давно используется в промышленных системах.

                                                    Смартфоное желео — нет. Оно бесполезно для промышленного оборудования.
                                                    Только под интерфейс с пользователем можно использовать.

                                                      0
                                                      Так аккумулятор там не используется.


                                                      Пииипееец… Т.е. значит пока так и нет ответа на вопрос как ведет себя Андроид на пару лет забытый в розетке…

                                                      Wi-Fi требует полноценного сетевого стека.

                                                      Согласен, и вот мы подходим к выводу, что… датчиком вполне может быть сам смартфон целиком. Да, где-то очень избыточный, если нужно множество датчиков, но в некоторых решениях — вполне годящийся. Из-за скорости внедрения, обобщая всю переписку выше.

                                                      Что там может быть быть использовано для стационарного оборудования, кроме датчика освещенности?


                                                      Я же говорю — разные есть варианты. К примеру, я планирую участвовать в разработке системы (уже в 3ей её версии, с 2007 года), где смартфон как датчик выглядит интересным из-за того, что одновременно в нем пригодятся: акселерометр, магнитометр, термодатчик в батарее, wifi, и сам заряд батареищи, а так же беспроводная зарядка.
                              +1

                              Уж поверьте старику. В том варианте, что вы делаете, возможно только в какойнибудь мелкой частной шаражке. Всё что подключается к технологическому оборудованию должно быть сертифицировано, с соответствующим набором испытаний.
                              Смартфон может быть использован исключительно только как дополнительный переносной пульт оператора и/или устройство сбора данных состояния оборудованя (как расширение имеющегося функциолнала оборудования), при установке в него соответствующей специально разработанной програмки.

                                0
                                должно быть сертифицировано, с соответствующим набором испытаний.

                                Тут согласен, если производство такого плана, что такие строгости — то должно все более серьезное делаться. Хотя я пока не представляю какого типа сертификация должна быть. Или суть в использовании уже сертифицированных как-то узлов?
                                Так смартфоны все поголовно сертифицированы, те «белые», что официально поставляются в страну.
                                  0
                                  Так смартфоны все поголовно сертифицированы

                                  Не для этого сертифицированы.

                                  Ну например, там упор делается на отсутствие вредного излучения радиочасти, превышающего санитарные нормы.

                                  Очевидно, что ни к какой промышленной сертификации это отношения не имеет.

                                  Там другие задачи сертификации:

                                  Например, если же вы будете управлять через смартфон каким-нибудь опасным устройством, например, прессом, что развивает сотни тонн.

                                  Или подогревом какой нибудь цистерны, что кипятит ядовитую жидкость.

                                  peacemakerv
                                  А вот в данном случае, по-моему, требования к смартфону — теже самые, строгие и высокие. И именно потому, что он бытовой.

                                  Не факт. Если, к примеру, оборудование чувствительно к радиопомехам.
                                  Для человеческой головы — приемлимо.
                                  А для оборудования какого-то — просто куча брака на выходе из-за радиошума.
                                    0
                                    Например, если же вы будете управлять через смартфон каким-нибудь опасным устройством, например, прессом, что развивает сотни тонн.
                                    Или подогревом какой нибудь цистерны, что кипятит ядовитую жидкость.


                                    Ухххх. Нее, я пока везде имею ввиду, что на смартфонах удобно делать дополнительные системы «наружнего» контроля какого-то объекта или процесса.
                                    Никак не промышленное управление этими производственными механизмами — тут, конечно, это должно быть все специальное, от производителей этого оборудования.
                                    0

                                    Должны соответствовать всем требованиям по безопасности (электро и пожарной), по эл. магнитной совместимости, по климатике… таким же как и управляемое оборудование. А смартфон это всего лишь бытовое устройсво с соответствующим сертификатом.

                                      0
                                      А вот в данном случае, по-моему, требования к смартфону — теже самые, строгие и высокие. И именно потому, что он бытовой.
                                      0

                                      Ещё дополню, если ещё не надоел. Не знаю какие в России стандарты теперь, а на западе есть такие (определяющие требования к продукции,): бытовая, индустриальная, аутомотиве (автомобильная), авиционная и космическая) и военная. И плюс специальные стандарты и требования для специфических технологий и условий экспоуатации.
                                      В этих стандартах определяются все параметры, методы испытаний и порядок сертификации.

                                        0
                                        Нисколько не надоели, спасибо за комментарии, комментарии почти всегда (когда их по каким-то причинам много) полезнее статьи.
                                        Наверное и у нас есть подобные стандарты.
                                        Но я еще раз уточню, что если промышленный объект работает на своем сертифицированном оборудовании, позволяет в помещениях работать WiFi и\или мобильной 3G\4G-связи, там есть уголки с «обычными» температурой и влажностью (для размещения доп. аппаратуры), то… бытовой смартфон вполне уже годится для дополнительного контроллера, реализующего новые доп. информационные услуги «поверх» существующей технической инфраструктуры. По-моему мнению.
                                        Но странно, что никто про это еще не писал и не делился опытом.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое