البارومتر في الهاتف الذكي هو مستشعر MEMS يقيس الضغط الجوي لتحديد الارتفاع والتنبؤ بالطقس. تسجل البارومترات الحديثة الضغط في نطاق من 300 إلى 1100 هكتوباسكال بدقة 1 هكتوباسكال، مما يتوافق مع خطأ في تحديد الارتفاع أقل من متر واحد. وفقًا لبيانات Bosch Sensortec BMP580، 2024، تبلغ الدقة المطلقة لمستشعرات الضغط الحديثة ±0.5 هكتوباسكال، مما يسمح بتحديد الارتفاع بدقة 0.4 متر.
أهم النقاط
البارومتر في الهاتف المحمول هو مستشعر ضغط مطلق مصغر يعتمد على تقنية MEMS (النظم الكهروميكانيكية الدقيقة). يقيس الضغط الجوي بالهكتوباسكال (hPa)، وهو ما يعادل الميليبار. أول هاتف ذكي جماهيري مزود ببارومتر — Samsung Galaxy Note 2 (2012) — أطلق اتجاه دمج المستشعر في الأجهزة الرائدة.
قادة السوق هم Bosch Sensortec (سلسلة BMP) و STMicroelectronics (سلسلة LPS). يبلغ حجم مستشعر BMP580 النموذجي 2.0×2.0×0.7 مم، ويستهلك 1.3 ميكروأمبير في وضع الطاقة المنخفضة، ونطاقه 300–1250 هكتوباسكال. الدقة النسبية هي ±0.08 هكتوباسكال، مما يسمح باكتشاف تغيرات الارتفاع بمقدار 0.7 متر. وفقًا لورقة بيانات BMP580 (2024)، لا يتجاوز مستوى الضوضاء 0.2 باسكال.
| المعامل | القيمة |
|---|---|
| النطاق | 300–1250 هكتوباسكال |
| الدقة المطلقة | ±0.5 هكتوباسكال |
| الدقة النسبية | ±0.08 هكتوباسكال |
| استهلاك الطاقة | 1.3 ميكروأمبير (طاقة منخفضة) |
| الحجم | 2.0×2.0×0.7 مم |
| الواجهة | I²C / SPI |
الوظيفة الرئيسية هي تحسين تحديد الارتفاع في الملاحة. في الولايات المتحدة، توصي لجنة الاتصالات الفيدرالية (FCC) منذ عام 2015 بتزويد الهواتف الذكية ببارومترات لتحسين دقة تحديد الموقع أثناء مكالمات الطوارئ 911 — الدقة الرأسية تنقذ الأرواح في المباني متعددة الطوابق.
في قلب بارومتر MEMS يوجد غشاء سيليكوني بسمك 1–3 ميكرون ينحني تحت تأثير الضغط الجوي. الغشاء مدمج مع تجويف مفرغ — ضغط مرجعي. لقياس الانحناء تُستخدم الطرق السعوية أو الكهروإجهادية.
في المستشعرات السعوية (Bosch BMP)، يعمل الغشاء كقطب مكثف متحرك. عندما يتغير الضغط، تتغير الفجوة بين الغشاء والقطب الثابت بمقدار 0.1–1 نانومتر، مما يسبب تغيرًا في السعة بمقدار 5–50 فيمتوفاراد. تعمل دائرة تحويل C/V (السعة إلى الجهد) على تضخيم الإشارة إلى مستوى كافٍ لـ ADC ذي 24 بت.
تحتوي بارومترات MEMS على مستشعر درجة حرارة مدمج، لأن ضغط الغاز يعتمد مباشرة على درجة الحرارة وفقًا للقانون P = ρRT. بدون تعويض، يتسبب تغير درجة الحرارة بمقدار 1 درجة مئوية في خطأ قدره 0.1 هكتوباسكال — أي ما يعادل 0.8 متر من الارتفاع. تستخدم المستشعرات الحديثة معاملات معايرة مخزنة في ذاكرة OTP (قابلة للبرمجة لمرة واحدة) للتصحيح الرقمي في نطاق من -40 إلى +85 درجة مئوية.
GPS يحدد الارتفاع بناءً على تثليث إشارات الأقمار الصناعية — الخطأ الرأسي يتراوح بين 10 و30 مترًا بسبب هندسة الأقمار الصناعية وتأخيرات الأيونوسفير. البارومتر يوفر الارتفاع بدقة 0.5–1 متر باستخدام المعادلة البارومترية. في السيناريوهات ذات الرؤية المحدودة للسماء (الوديان الحضرية، الأماكن المغلقة)، قد لا يكون GPS متاحًا — البارومتر يعمل دائمًا.
يتم حساب الارتفاع باستخدام المعادلة: h = (T₀ / L) × (1 − (P / P₀)^(R×L / g))، حيث T₀ هي درجة الحرارة عند مستوى سطح البحر، L هو تدرج درجة الحرارة، P هو الضغط المقاس، P₀ هو الضغط عند مستوى سطح البحر. بشكل مبسط: تغير الضغط بمقدار 1 هكتوباسكال يقابل حوالي 8.4 مترًا على الارتفاعات المنخفضة. للحساب الدقيق، نحتاج إلى بيانات محطات الأرصاد الجوية لـ P₀.
تستخدم أنظمة الملاحة الحديثة (خرائط Google، خرائط Yandex) خوارزمية هجينة: GPS يوفر الارتفاع المطلق بخطأ 15 مترًا، والبارومتر يوفر التغير النسبي بدقة 0.5 متر. يقوم مرشح كالمان بدمج الإشارتين، مما يعطي ارتفاعًا بدقة 1–3 أمتار في الوقت الفعلي.
data class BaroReading(
val pressure: Float,
val altitude: Float
)
private val P0_SEA_LEVEL = 1013.25f
fun calculateAltitude(pressure: Float): Float {
return SensorManager.getAltitude(
P0_SEA_LEVEL, pressure
)
}
fun calibratePressure(
gpsAltitude: Float, baroPressure: Float
): Float {
// معايرة P0 حسب ارتفاع GPS
val expectedPressure = P0_SEA_LEVEL *
Math.pow(1f - (0.0065f * gpsAltitude) / 288.15f, 5.255f)
.toFloat()
return P0_SEA_LEVEL * baroPressure / expectedPressure
}
يوفر Android الوصول إلى البارومتر عبر Sensor.TYPE_PRESSURE. يتم إرجاع البيانات بالهكتوباسكال (hPa)، أي ما يعادل الميليبار. القيمة النموذجية عند مستوى سطح البحر حوالي 1013.25 هكتوباسكال. ينتمي المستشعر إلى فئة المستشعرات البيئية — لا يتطلب معايرة من المستخدم ويعمل فورًا بعد التهيئة.
البارومتر لا يتطلب معدل استقصاء عاليًا — SENSOR_DELAY_UI (67 مللي ثانية) أو SENSOR_DELAY_NORMAL (200 مللي ثانية) كافية تمامًا. يتغير الضغط الجوي ببطء، على الأكثر 0.5–1 هكتوباسكال في الساعة مع تغيرات الطقس أو 1–2 هكتوباسكال في الدقيقة عند التحرك في المصعد. التردد المفرط يستنزف البطارية فقط.
class BarometerActivity : AppCompatActivity() {
private val sensorManager by lazy {
getSystemService(SENSOR_SERVICE) as SensorManager
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val barometer = sensorManager
.getDefaultSensor(Sensor.TYPE_PRESSURE)
barometer?.let { sensor ->
sensorManager.registerListener(
this, sensor,
SensorManager.SENSOR_DELAY_NORMAL
)
}
}
override fun onSensorChanged(event: SensorEvent) {
val pressure = event.values[0]
val altitude = SensorManager
.getAltitude(1013.25f, pressure)
updateUI(pressure, altitude)
}
}
ليست كل أجهزة Android تحتوي على بارومتر — المستشعر غائب في الموديلات الاقتصادية والعديد من أجهزة الفئة المتوسطة. قبل الاستخدام، تحقق من التوفر عبر PackageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER) أو من خلال sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) — إرجاع null يعني عدم وجود المستشعر.
يُستخدم البارومتر في مجموعة واسعة من التطبيقات — من الأرصاد الجوية إلى متتبعات اللياقة البدنية والملاحة الداخلية. يستخدم تطبيق WeatherPro بيانات البارومتر لبناء رسم بياني للضغط على مدار 24 ساعة، مما يسمح بالتنبؤ بتغيرات الطقس قبل 6–12 ساعة بدقة تصل إلى 80%.
عند تغير الطقس، يتغير الضغط الجوي بمقدار 1–3 هكتوباسكال خلال 6–12 ساعة. يعطي الإعصار المضاد (منطقة الضغط المرتفع) قراءات 1020–1040 هكتوباسكال، والإعصار (الضغط المنخفض) — 970–1010 هكتوباسكال. يجب مراعاة هذه التغيرات عند حساب الارتفاع: إذا كان ضغط مستوى سطح البحر أمس 1013 هكتوباسكال واليوم 1025 هكتوباسكال، فإن خطأ تحديد الارتفاع بدون تصحيح P₀ سيكون حوالي ناقص 100 متر. تحصل تطبيقات الملاحة الحديثة على الضغط المرجعي P₀ عبر الإنترنت من أقرب محطة أرصاد جوية.
في مراكز التسوق والمطارات، يُستخدم البارومتر لتحديد الطابق الذي يتواجد فيه المستخدم. فرق الضغط بين طوابق المبنى النموذجي (ارتفاع الطابق 3–4 أمتار) هو 0.35–0.5 هكتوباسكال — كافٍ للكشف الموثوق. من خلال الجمع بين البارومتر وتثليث Wi-Fi، تحدد الملاحة الداخلية الموقع بدقة تصل إلى 5 أمتار.
جيل جديد من البارومترات المقاومة للماء (Infineon DPS368، 2024) يتحمل الغمر حتى 10 أمتار وله دقة ±0.05 هكتوباسكال. يقرب تطوير تقنية MEMS البارومترات من دقة معايير الكوارتز — من المتوقع أنه بحلول عام 2027 سينخفض الخطأ النموذجي إلى ±0.2 هكتوباسكال.
الأسئلة الشائعة
يمكنك التحقق باستخدام تطبيقات Sensor Test من Google Play. البارومتر موجود في جميع الهواتف الرائدة Samsung Galaxy S و Note (بدءًا من S3)، و Google Pixel (جميع الموديلات)، و iPhone 6 والأحدث. في الموديلات الاقتصادية، عادةً ما يكون المستشعر غائبًا.
باستخدام المعادلة البارومترية: الضغط الجوي يتناقص مع الارتفاع. عند مستوى سطح البحر، الضغط 1013.25 هكتوباسكال، على ارتفاع 500 متر — حوالي 955 هكتوباسكال. كل 8.4 متر من الصعود تقلل الضغط بحوالي 1 هكتوباسكال. للدقة، نحتاج إلى معايرة بأقرب محطة أرصاد جوية.
نعم، في تطبيقات محطات الأرصاد الجوية. الانخفاض الحاد في الضغط بمقدار 3–5 هكتوباسكال في 3 ساعات يشير إلى اقتراب إعصار وتدهور الطقس. ارتفاع الضغط هو علامة على التحسن. ومع ذلك، للتنبؤ الدقيق نحتاج إلى بيانات خدمات الأرصاد الجوية.
لا — المعايرة تتم تلقائيًا. يبرمج المصنعون معاملات المعايرة في المصنع. ومع ذلك، إذا كنت تعيش على ارتفاع 1000+ متر فوق مستوى سطح البحر، فمن الجدير تعيين الضغط المرجعي في تطبيق الملاحة لتحسين الدقة.
SENSOR_DELAY_NORMAL (200 مللي ثانية) هو الأمثل — الضغط الجوي يتغير ببطء. لتتبع الحركة في المصعد، 200 مللي ثانية كافية. التردد المفرط (FASTEST) لا يعطي ميزة ولكنه يزيد استهلاك الطاقة بنسبة 20–30%.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا