sonyps4.ru

Смартфона датчик приближения как ик порт. Что такое G-Sensor и для чего он нужен в мобильных устройствах

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

Датчик света в смартфоне

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

Датчик приближения

Это сенсор, который находится рядом с датчиком света и отключает экран. Он посылает сигнал предмету, если он отражается, то датчик реагирует отключением экрана. Например, так происходит, когда подносишь смартфон к уху.

Акселерометр (G-сенсор)

Данный сенсор представляет собой эл. механический прибор, фиксирующий все движения смартфона. Его задача переключать экран при наклоне устройства, фиксировать жесты, участвовать в управлении игр, подсчитывать шаги. Он бывает 2-х и 3-х осевым. В последнем случае при покое одна из осей будет показывать 9-10 м/с2. Например, на неподвижный телефон акселерометр не реагирует, поэтому в играх точность снижена. Практически всегда работает в паре с гироскопом.

Гироскоп в телефоне

Эта электромеханическая схема определяет положение смартфона в пространстве, учитывает его неподвижность. Он очень точен, погрешность не более 1-2°. Вместе с акселерометром используется в игровых приложениях, при управлении жестами.

Магнитометр в телефоне

Определяет магнитное поле земли, измеряет положение в 3-х мерном пространстве. Главная функция этого сенсора – наиболее точно определить местоположение при отсутствии GPS-сигнала. Другими словами, это цифровой компас, информирующий, в каком направлении относительно севера перемещается смартфон. С помощью его и специального приложения можно искать проводку в стенах.

Это были наиболее продвинутые датчики, находящиеся даже в бюджетных смартфонах. Более дорогие гаджеты могут иметь дополнительные сенсоры.

Барометр (датчик давления)

Вместе с магнитометром он помогает смартфону быстрее определить свое местонахождение, поймать GPS-сигнал. Прямое назначение – показывать атмосферное давление и высоту над уровнем моря. Чем выше поднимаешься, тем меньше давление. На показания влияет атмосферное давление, поэтому данные могут быть не точными.

Температурные датчики

Хороший смартфон напичкан цифровыми термометрами. Конструктивно это резисторы с двумя выводами, в зависимости от температуры между выводами меняется сопротивление. Так мы узнаем температуру батареи, процессора и разных контроллеров. Именно он отключает зарядку, чтобы не закипел электролит батареи. Очень редко встречаются датчики окружающей среды. Они себя не зарекомендовали, ведь внутренняя температура в смартфоне и температура от рук искажают данные.

Гигрометр

Измеряет влажность воздуха, особо не распространен, последний раз использовался в Galaxy S4. Ориентируясь на его показания можно включить прибор для увлажнения или осушения воздух в помещении.

Пульсометр

Это сенсор для измерения сердечного сокращения (пульса). С его помощью корректируют нагрузки в процессе тренировок. Этим датчиком смартфон должен плотно прилегать к кровеносным сосудам. Предустановлен в Galaxy S5, S7 (S7 Edge). Чаще всего применяется в трекерах и смарт-часах.

Сканер отпечатков пальцев

Данный сенсор завоевывает все больше популярности. Он мгновенно разблокирует девайс без ввода пароля и надежно защищает данные на устройстве. Сегодня даже малоизвестные производители смартфонов стараются оснастить им свои детища. Первым среди смартфонов его получил iPhone 5S.

Сканер сетчатки глаза

В 2016 году печально известный Samsung Galaxy Note 7 был оснащен этим датчиком. По скорости он не уступает сканеру отпечатка пальцев. ИК-луч сканирует радужную сетчатку глаза, фиксирует ее и кодирует в алгоритм, с которым в последствие и сравнивается. Примечательно, что он работает даже в темноте, идентифицирует через прозрачные очки и линзы.

Современный смартфон премиум-класса имеет не менее 12 датчиков, среди лидеров iPhone, Samsung Galaxy, HTC. А сколько датчиков на вашем смартфоне?

Статьи и Лайфхаки

Многие задаются вопросом, что же такое датчик расстояния на телефоне, датчик движения и присутствия и чем они отличаются друг от друга. В физике это три разных устройства.

Но что касается смартфонов, то правильней сказать, что все это один сенсор.

То есть «железка» одна, но выполняет много разных функций в зависимости от типа и того, какие задачи перед ним поставил производитель гаджета.

Наверно все знакомы с работой подобных приборов. Это и двери в супермаркете, открывающиеся при обнаружении движения, и водопроводный кран включающий воду при приближении рук.

В нашем случае, это - сенсор, фиксирующий приближение объекта. А дальше, в зависимости от требования ПО, совершает определенное действие.

За что отвечает на телефоне датчик расстояния

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

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

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

На многих современных смартфонах и планшетах он выполняет и другие задачи:

  • включает экран планшета при приближении руки;
  • переворачивает страницы электронной книги просто от взмаха руки над экраном смартфона;
  • Дает возможность выключить устройство, не касаясь его, а только проведя рукой перед сенсором.

Проблемы, возникающие при использовании датчика расстояния

У многих пользователей возникают неполадки связанные с работой этого сенсора. Не блокируется экран при разговоре, не разблокируется после окончания разговора и другие примеры некорректной работы. Способов поправить ситуацию несколько :
  • прочистить щеточкой и продуть само отверстие, где находится сенсор;
  • откалибровать датчик расстояния.
Как это сделать рассмотрим на примере Android 4.0.
  • Необходимо положить смартфон на ровную поверхность,
  • открыть «настройки», далее «Экран» и выбрать «ALS PS calibration»,
  • поднести к датчику приближения ладонь, лист бумаги или другой предмет.
  • Удерживая его неподвижно на расстоянии 1-5 см от экрана, выбрать «Calibrate».
Если в меню настроек вашего устройства нет такой функции, нужно скачать приложение для калибровки с официального сайта производителя.

Если калибровка не помогла решить проблему, то лучше посетить сервисный центр.

Современный смартфон уже сложно назвать просто компьютером, ведь он умеет гораздо больше своего стационарного предка: и температуру может измерить, и высоту над уровнем моря подсказать, и влажность воздуха определить, а если вдруг забудешь свою ориентацию в пространстве или силу тяжести потеряешь - все исправит. А помогают ему в этом, как ты уже, наверное, догадался, датчики aka сенсоры. Сегодня мы познакомимся с ними поближе, а заодно и проверим, действительно ли мы находимся на Земле. 😉

Датчики всякие нужны!

Для работы с аппаратными датчиками, доступными в устройствах под управлением Android, применяется класс SensorManager , ссылку на который можно получить с помощью стандартного метода getSystemService :

SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

Чтобы начать работать с датчиком, нужно определить его тип. Удобнее всего это сделать с помощью класса Sensor , так как в нем уже определены все типы сенсоров в виде констант. Рассмотрим их подробнее:

  • Sensor.TYPE_ACCELEROMETER - трехосевой акселерометр, возвращающий ускорение по трем осям (в метрах в секунду в квадрате). Связанная система координат представлена на рис. 1.
  • Sensor.TYPE_LIGHT - датчик освещенности, возвращающий значение в люксах, обычно используется для динамического изменения яркости экрана. Также для удобства степень освещенности можно получить в виде характеристик - «темно», «облачно», «солнечно» (к этому мы еще вернемся).
  • Sensor.TYPE_AMBIENT_TEMPERATURE - термометр, возвращает температуру окружающей среды в градусах Цельсия.
  • Sensor.TYPE_PROXIMITY - датчик приближенности, который сигнализирует о расстоянии между устройством и пользователем (в сантиметрах). Когда в момент разговора гаснет экран - срабатывает именно этот датчик. На некоторых девайсах возвращается только два значения: «далеко» и «близко».
  • Sensor.TYPE_GYROSCOPE - трехосевой гироскоп, возвращающий скорость вращения устройства по трем осям (радиан в секунду).
  • Sensor.TYPE_MAGNETIC_FIELD - магнитометр, определяющий показания магнитного поля в микротеслах (мкТл) по трем осям (имеется в смартфонах с аппаратным компасом).
  • Sensor.TYPE_PRESSURE - датчик атмосферного давления (по-простому - барометр), который возвращает текущее атмосферное давление в миллибарах (мбар). Если немного вспомнить физику, то, используя значение этого датчика, можно легко вычислить высоту (а ежели вспоминать ну никак не хочется, можно воспользоваться готовым методом getAltitude из объекта SensorManager ).
  • Sensor.TYPE_RELATIVE_HUMIDITY - датчик относительной влажности в процентах. Кстати, совместное применение датчиков относительной влажности и давления позволяет предсказывать погоду - конечно, если выйти на улицу. 😉
  • Sensor.TYPE_STEP_COUNTER (с API 19) - счетчик шагов с момента включения устройства (обнуляется только после перезагрузки).
  • Sensor.TYPE_MOTION_DETECT (с API 24) - детектор движения смартфона. Если устройство находится в движении от пяти до десяти секунд, возвращает единицу (по всей видимости, задел для аппаратной функции «антивор»).
  • Sensor.TYPE_HEART_BEAT (с API 24) - детектор биения сердца.
  • Sensor.TYPE_HEART_RATE (с API 20) - датчик, возвращающий пульс (ударов в минуту). Этот датчик примечателен тем, что требует явного разрешения android.permission.BODY_SENSORS в манифесте.

Перечисленные датчики являются аппаратными и работают независимо друг от друга, часто без всякой фильтрации или нормализации значений. «Для облегчения жизни разработчиков»™ Google ввела несколько так называемых виртуальных сенсоров, которые предоставляют более упрощенные и точные результаты.

Например, датчик Sensor.TYPE_GRAVITY пропускает показания акселерометра через низкочастотный фильтр и возвращает текущие направление и величину силы тяжести по трем осям, а Sensor.TYPE_LINEAR_ACCELERATION использует уже высокочастотный фильтр и получает показатели ускорения по трем осям (без учета силы тяжести).

При разработке приложения, эксплуатирующего показания сенсоров, вовсе не обязательно бегать по улице или прыгать в воду с высокой скалы, так как эмулятор, входящий в поставку Android SDK, умеет передавать приложению любые отладочные значения (рис. 2–3).


Ищем датчики

Чтобы узнать, какие сенсоры есть в смартфоне, следует использовать метод getSensorList объекта SensorManager :

List sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

Полученный список будет включать все поддерживаемые датчики: как аппаратные, так и виртуальные (рис. 4). Более того, некоторые из них будут иметь различные независимые реализации, отличающиеся количеством потребляемой энергии, задержкой, рабочим диапазоном и точностью.

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

List pressureList = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);

вернет все доступные барометрические датчики. Причем аппаратные реализации окажутся в начале списка, а виртуальные - в конце (правило действует для всех типов датчиков).


Чтобы получить реализацию датчика по умолчанию (такие датчики хорошо подходят для стандартных задач и сбалансированы в плане энергопотребления), используется метод getDefaultSensor :

Sensor defPressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

Если для заданного типа датчика существует аппаратная реализация, по умолчанию будет возвращена именно она. Когда нужного варианта нет, в дело вступает виртуальная версия, ну а если, увы, ничего подходящего в девайсе не окажется, getDefaultSensor вернет null .

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

Снимаем показания

Чтобы получать события, генерируемые датчиком, необходимо зарегистрировать реализацию интерфейса SensorEventListener с помощью того же SensorManager . Звучит сложновато, но на практике реализуется одной строчкой:

Sensor defPressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE); sensorManager.registerListener(workingSensorEventListener, defPressureSensor, SensorManager.SENSOR_DELAY_NORMAL);

Здесь мы полученный ранее барометр по умолчанию регистрируем с помощью метода registerListener , передавая в качестве второго параметра сенсор, а в качестве третьего - частоту обновления данных.

В классе SensorManager определены четыре статические константы, определяющие частоту обновления:

  • SensorManager.SENSOR_DELAY_FASTEST - максимальная частота обновления данных;
  • SensorManager.SENSOR_DELAY_GAME - частота, обычно используемая в играх, поддерживающих гироскоп;
  • SensorManager.SENSOR_DELAY_NORMAL - частота обновления по умолчанию;
  • SensorManager.SENSOR_DELAY_UI - частота, подходящая для обновления пользовательского интерфейса.

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

Оставшийся нерассмотренным первый параметр представляет собой реализацию интерфейса SensorEventListener , где мы наконец-то получим конкретные цифры:

Private final SensorEventListener workingSensorEventListener = new SensorEventListener() { public void onAccuracyChanged(Sensor sensor, int accuracy) { } public void onSensorChanged(SensorEvent event) { // Получаем атмосферное давление в миллибарах double pressure = event.values; } };

В метод onSensorChanged передается объект SensorEvent , описывающий все события, связанные с датчиком: event.sensor - ссылка на датчик, event.accuracy - точность значения датчика (см. ниже), event.timestamp - время возникновения события в наносекундах и, самое главное, массив значений event.values . Для датчика давления передается только один элемент, тогда как, например, для акселерометра предусмотрено сразу три элемента для каждой из осей. В следующих разделах мы рассмотрим примеры работы с различными датчиками.

Метод onAccuracyChanged позволяет отслеживать изменение точности передаваемых значений, определяемой одной из констант: SensorManager.SENSOR_STATUS_ACCURACY_LOW - низкая точность, SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM - средняя точность, возможна калибровка, SensorManager.SENSOR_STATUS_ACCURACY_HIGH - высокая точность, SensorManager.SENSOR_STATUS_UNRELIABLE - данные недостоверны, нужна калибровка.

После того как отпадает необходимость работы с датчиком, следует отменить регистрацию:

SensorManager.unregisterListener(workingSensorEventListener);

Меряем давление и высоту

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

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.

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

Что это за датчик?

Датчик Холла - датчик определения положения который основан на эффекте Эдвина Холла. Используется в смартфоне в роли магнитометра, как основа для работы электронного компаса и не только. Его задача - фиксировать наличие магнитного поля и определять его изменение.

Эффект Холла был открыт еще 1879 году в тонких пластинках золота, но использовать его в технике смогли только через 75 лет, когда наладили производство полупроводниковых пленок с нужными для него свойствами. Ему нашли применение в автомобилях - он помогал делать измерения угла положения распредвала/коленвала.

В смартфоне используется упрощенный аналог устройства, определяющий только наличие магнитного поля без определения напряженности по осям. Реализация довольно проста: помещенный в магнитное поле проводник, по которому проходит электрических ток, способствует тому, что электроны отклоняются к одной из граней пластины. Электроны в этой части накапливают отрицательный заряд, на противоположной грани - положительный. Процесс продолжается до момента, пока образовавшееся электрическое поле не компенсирует магнитную составляющую силы Лоренца. Образованная разность потенциалов (которую именуют холловским напряжением) на краях пластины фиксируется датчиком Холла. В телефоне он реализован микросхемой, на выходе которой создается сигнал в двух состояниях:

  • единица (1 - есть сигнал);
  • ноль (0 - сигнала нет).

В зависимости от считанной информации с датчика смартфон выполняет запрограммированное действие.

Сейчас этот эффект применяется в разных технических реализациях. Кроме современных телефонов, повседневное применение нашлось:

  • в системах электронного зажигания ДВС;
  • в приводах дисководов;
  • двигателях кулеров компьютерной техники;
  • в электроизмерительных приборах для реализации бесконтактного измерения силы тока;
  • в ионных реактивных двигателях.

Для чего он нужен в телефоне?

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

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

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

  1. Цифровой компас. Используется навигационными программами для ускорения позиционирования и более точного определения направления движения. При помощи датчика, GPS поиск происходит быстрее.
  2. Взаимодействие с аксессуарами. Приобретя магнитный чехол для смартфона, датчик позволит смартфону включать и отключать дисплей в зависимости от удаления/приближения магнита на аксессуаре.

Эффект "выключения дисплея" можно заметить при закрытой крышке в раскладных телефонах.

Взаимодействие датчика и магнитного чехла

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

Как вы уже догадались, при закрытии чехла происходит обратное и экран блокируется.


В Некоторых чехлах сделаны окошка, для отображения информации при закрытой крышки чехла. Отображение информации и блокировка экрана происходит по тому же принципу. Датчик холла определяет положение смартфона и "решает", блокировать ли дисплей телефона, или оставить включенным.


Если вы переживаете, что магнит на флипе навредит смартфону, сбросте этот груз с плечь. Магнит не вредит смартфону! Чтобы в этом убедится, посмотрите видео.

Статьи и Лайфхаки

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

Функции датчика расстояния в телефоне

  1. Так, во время разговора экран гаснет не потому, что телефон видит ухо. В данном случае датчик расстояния различает приближение объекта (не важно ухо это или любой другой объект) и сигнализирует об этом системе. Система дает команду отключить дисплей.

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

  2. После окончания разговора, когда пользователь убирает телефон от уха, система получает обратный сигнал и включает дисплей. Так что, как правило, пользователь даже не успевает заметить, что экран выключался, только если специально проследит.
  3. В современных устройствах этот сенсор выполняет множество других задач. На планшетах дает сигнал системе включать и выключать экран при приближении руки, а во время чтения помогает листать электронную книгу взмахом руки.

Часто встречающиеся трудности использования датчика расстояния

  • Вероятнее всего, сенсор «не видит» приближающиеся объекты из-за грязи. В таком случае его можно просто почистить щеточкой и он будет работать, как новенький. Эта процедура намного проще, чем кажется, ее можно выполнить и самому.
  • Если сенсор чист и все равно не работает или работает некорректно. Можно попробовать его откалибровать.

Калибровка датчика приближения

  • Положить устройство на стол.
  • Открыть настройки.
  • Выбрать «ALS PS calibration».
  • Поднести к датчику любой непрозрачный предмет, до нужного расстояния.
  • Выбрать «Calibrate».
В разных устройствах меню может выглядеть по разному и названия функций также могут отличаться. Может быть, что в меню телефона вообще не найдется подобной функции. Тогда нужно скачать необходимое приложение с официального сайта.

Если и после калибровки сенсор не работает некорректно, то самое лучшее решение – обращение в сервисный центр.



Загрузка...