
پروژه متنباز ESPectre راهی ارائه کرده است که با آن میتوان بردهای ESP32 را بدون افزودن ماژول حسگر حرکت، به حسگر حرکت برای اتاقهای خانه تبدیل کرد. این پروژه از رادیوی وایفای برد برای تشخیص حرکت استفاده میکند و نیازی به ماژولهایی مانند HC-SR501 یا حسگر مادون قرمز غیرفعال (PIR) ندارد.
ESPectre چگونه حرکت را تشخیص میدهد؟
در حسگرهای متداول مبتنی بر PIR، حسگر به گرمای متحرک در میدان دید واکنش نشان میدهد و به همین دلیل اگر فردی بیحرکت بنشیند یا دراز بکشد، ممکن است حرکتی تشخیص داده نشود. ESPectre بهجای تکیه بر گرما، از اطلاعات وضعیت کانال (Channel State Information یا CSI) استفاده میکند. هر بسته وایفای حاوی CSI است که نحوه طی مسیر سیگنال بیسیم میان روتر و برد را توصیف میکند. وقتی فردی در اتاق حرکت میکند، مسیر رادیویی مختل و مقدار CSI تغییر میکند؛ ESPectre این تغییر را روی خود برد ESP32 تحلیل کرده و آن را بهصورت وضعیت حرکت و امتیاز حرکت گزارش میکند.
این پردازش بهصورت محلی انجام میشود و هیچ دادهای به ابر ارسال نمیشود. همچنین در این روش از میکروفون یا دوربین استفاده نمیشود. ESPectre از بردهای ESP32، ESP32-S2، S3، C3، C5 و C6 روی شبکه معمولی ۲.۴ گیگاهرتز وایفای ۴ (Wi-Fi 4) پشتیبانی میکند. برد قرائتها را در حالی ثبت میکند که روتر در حال ارسال بستهها است.
راهاندازی با ESPHome و چند خط YAML
ESPectre چهار گزینه firmware دارد: Native، ESPHome، Matter و MicroPython. در گزارش تجربی، انتخاب ESPHome به این دلیل مناسبتر دانسته شده که شامل مؤلفه ESPectre است و باعث میشود همه موجودیتها (Entities) مستقیماً در Home Assistant ظاهر شوند. برای راهاندازی، میتوان یک binary_sensor با پلتفرم espectre و یک ورودی حرکت تعریف کرد که حداقل پیکربندی محسوب میشود. برای رسم نمودار امتیاز حرکت نیز میتوان یک sensor و یک دکمه برای کالیبراسیون مجدد افزود.
ESPHome به ESP-IDF 5.5.3 یا جدیدتر نیاز دارد و بردهای C5 و C6 فقط با ESP-IDF کار میکنند. همچنین باید حالت تشخیص انتخاب شود. حالت پیشفرض Lightweight است که پردازنده و حافظه کمتری مصرف میکند و آستانه خود را از حدود ۱۰ ثانیه ورودی ساکت کالیبره میکند؛ بنابراین پس از بوت باید اتاق را بیحرکت نگه داشت. در مقابل، حالت High Accuracy از شبکه عصبی روی دستگاه (On-device Neural Network) استفاده میکند و مرحله اتاق ساکت را حذف میکند. در گزارش تجربی، دقت تشخیص این حالت پس از تغییر به آن بیشتر عنوان شده است.
محدودیتها و ملاحظات اجرایی
ESPectre نحوه استفاده ESP32 از رادیوی وایفای را تغییر میدهد. بهطور پیشفرض برای تولید ترافیک، دروازه وایفای را پینگ میکند تا جریان پیوستهای از بستهها برای CSI فراهم شود. آشکارساز حدود ۱۰۰ بسته در ثانیه انتظار دارد؛ از این رو میتوان به پرسوجوهای DNS روی UDP یا TCP، حالت خام آزمایشی (Raw Frame) یا حالت خارجی (External) که در آن میزبان دیگری ریتم ارسال را تعیین میکند، تغییر مسیر داد.
مؤلفه ESPectre بهصورت خودکار ذخیره انرژی وایفای و تجمیع فریم (Frame Aggregation/AMPDU) را غیرفعال میکند. مستندات رسمی هشدار میدهد که این ویژگیها روی کل firmware اعمال میشوند و میتوانند توان عبوری (Throughput) را کاهش دهند؛ بنابراین آپدیتهای از راه دور (OTA)، وبسرور و پخش صوتی روی همان برد ممکن است کندتر اجرا شوند. هنوز میتوان مؤلفههای دیگر را روی همان برد ESP32 اجرا کرد، اما فقط یک مؤلفه espectre میتواند از رادیو استفاده کند. چون ذخیره انرژی خاموش میماند، این ساختار برای گرهای با تغذیه USB مناسبتر است تا گرهای باتریمحور.
اگر خانه چند نقطه دسترسی (Access Point) دارد، برد باید نزدیک قویترین نقطه دسترسی قرار گیرد؛ در حالت مطلوب بین ۴۰- تا ۷۰- دسیبل میلیوات (dBm). در غیر این صورت، اگر آن نقطه دسترسی در دسترس نباشد، برد به نقطه دسترسی دیگری متصل نخواهد شد. ESPectre اسکنهای رومینگ (Roaming) را متوقف میکند، زیرا هر اسکن پنجره CSI را خالی میکند.
تشخیص حرکت، نه حضور دائمی
ESPectre فقط حرکت را تشخیص میدهد و حضور دائمی را شناسایی نمیکند. بر اساس مستندات ESPHome، تشخیص حرکت به محل قرارگیری برد، نقطه دسترسی و محیط رادیویی وابسته است. این روش نمیتواند بگوید فردی فقط نشسته یا خوابیده است و همچنین نمیتواند تعداد افراد را بشمارد یا آنها را شناسایی کند. معمولاً یک برد برای هر اتاق کافی است و میتواند راهرو، انبار کوچک و فضاهایی را که برای روشنایی مبتنی بر حرکت برنامهریزی شدهاند نیز پوشش دهد.
این راهکار برای میز کار یا مبل مناسب نیست، زیرا ممکن است برد تشخیص ندهد که فرد همچنان آنجاست. در گزارش تجربی، برای پر کردن این شکاف از یک حسگر حضور چندوجهی با حسگر رادار میلیموج (mmWave) و ردیابی بلوتوث استفاده شده است. حتی بدون شناسایی یا شمارش افراد، داده ESPectre میتواند الگوهای رفتاری یا نبودن کسی در خانه را نشان دهد. میتوان دادهها را محلی نگه داشت و آن را با اعضای خانواده به اشتراک گذاشت.
جمعبندی
ESPectre جایگزین حسگر رادار میلیموج نیست و حتی چنین ادعایی ندارد؛ اما به بردهای ESP32 بلااستفاده نقشی بهعنوان حسگر حرکت بدون سختافزار اضافه میدهد. اگر Home Assistant در حال اجرا است و برد ESP32 در دسترس دارید، میتوانید یکی را فلش کنید، اجازه دهید کالیبره شود و امتیاز حرکت را بررسی کنید. اگر نتایج غیرقابلاعتماد بود، پیش از تغییر تنظیمات، ابتدا محل قرارگیری برد را جابهجا کنید؛ زیرا مکانگذاری نخستین متغیری است که باید تغییر کند.