ESP-NOW

أربعة أوامر للتواصل عبر ESP-NOW خارج الشبكة — بلا راوتر، وبلا ارتباط WiFi. المدى: 200 متر فأكثر برؤية مباشرة عند 1 Mbps.


espchat / ec — دردشة مشفّرة خارج الشبكة

CMD> ec              # دردشة تفاعلية، بثّ عامّ على القناة 1
CMD> ec bg           # وضع مُستمِع في الخلفية

الأوضاع

الوضع الوصف
عامّ بثّ على القناة 1 (افتراضي). أي ESP32/ESP8266 بـ ESP-NOW على القناة نفسها يستقبل/يرسل.
خاصّ أُحادي مشفّر بـ AES-128 (ESP-NOW CCMP). يُشتقّ LMK عبر SHA-256(PIN + MACs مرتّبة).

مسار الاقتران (الوضع الخاصّ)

  1. يفتح البادئ نافذة الاقتران — يُعرَض PIN من 4 أرقام.
  2. يُدخِل المستقبِل نفس PIN.
  3. رحلة ذهاب وإياب مشفّرة من 3 محاولات تتحقّق من PIN (* pair ok / * pin ack).
  4. PIN خاطئ: يُسقِط عتاد ESP-NOW الإطار — بلا تأكيد مُرسَل.

يظهر شريط طلب اقتران (كهرماني) عند استقبال طلب اقتران وارد.

المفاتيح

المفتاح الإجراء
[+] / [-] تغيير القناة (يومض أصفر)
كرة التتبّع أعلى/أسفل تمرير سجلّ الرسائل
نقر كرة التتبّع إجراء الاقتران
ضغط كرة التتبّع 1.5 ثانية الخروج

الإشعارات

الحدث الصوت
رسالة عامّة PING (نغمة قصيرة)
رسالة خاصّة / جهة معروفة INFO
طلب اقتران WARNING (نغمة مزدوجة)

وضع الخلفية

يُنصِت ec bg سلبيًّا دون شغل الشاشة. يظهر شريط منبثق وتُعزَف PING على الرسائل العامّة الجديدة؛ وINFO على جهة خاصّة.

الملفّات

المسار المحتوى
/apps/espchat/contacts.csv جهات محفوظة (MAC، الاسم، LMK). في الذاكرة فقط بلا SD — تُمسَح عند إعادة التشغيل.
/apps/espchat/pub/chN.log سجلّ رسائل القناة العامّة N
/apps/espchat/prv/<MAC>.log سجلّ المحادثة الخاصّة لكل نظير

espsniff / es — مترصّد أُطُر ESP-NOW سلبي

CMD> es              # ترصّد على القناة 1
CMD> es 6            # ترصّد على القناة 6

التقاط مختلط سلبي لأُطُر إجراءات ESP-NOW. لا يُرسِل.

المفاتيح

المفتاح الإجراء
[c] الانتقال للقناة التالية / تثبيت القناة
[+] / [-] تغيير القناة
[j] / [k] أو كرة التتبّع تحريك تحديد الصفّ
[Enter] عرض تفاصيل الإطار
[a] / [l] تصفّح
[s] حفظ الالتقاط الحالي إلى SD
[f] تصفية الأُطُر
[x] مسح قائمة الأُطُر
[q] الخروج

الملفّات

المسار المحتوى
/apps/espsniff/NNN.csv سجلّ أُطُر مفكوكة (مُرقَّم، لا يُستبدَل)
/apps/espsniff/NNN.pcap التقاط PCAP خام (نفس رقم الجلسة)

esptest / est — تشخيص إرسال/استقبال ESP-NOW

CMD> est             # اختبار بثّ على القناة 1
CMD> est 6           # اختبار بثّ على القناة 6

يبثّ إطار اختبار كل ثانيتين ويسجّل كل أُطُر ESP-NOW المستقبَلة. استخدمه للتحقّق من المدى والقناة وتوافق النظراء.


espvoice / ev — جهاز لاسلكي ESP-NOW (صوت HD)

CMD> ev              # لاسلكي على القناة 1
CMD> ev 6            # لاسلكي على القناة 6

صوت نصف-مزدوج بالضغط-للتحدّث عبر ESP-NOW. بلا راوتر، بلا اقتران — كل T-Deck على القناة نفسها يسمع كل إرسال (بثّ). يتطلّب ميكروفون ES7210 (موجود على كلا الجهازين).

المرمّز (Codec)

ITU-T G.722 واسع النطاق — 16 kHz / 64 kbps (الوضع 1)، عبر libg722 المضمّنة (ملكية عامّة). إطار 20 مِلّي ثانية = 320 عيّنة PCM ← 160 بايت ← حزمة ESP-NOW واحدة. صوت حقيقي بعرض نطاق 7 kHz (صوت HD) في ميزانية الحزمة نفسها لـ G.711 ضيّق النطاق — ضعف الدقّة. وG.722 عديم الحالة عبر الفقد، فالإطار المفقود مجرّد فجوة 25 مِلّي ثانية بلا انحراف.

الضغط-للتحدّث تبديل

لوحة I2C في T-Deck لا تُبلِّغ عن رفع المفتاح، فالضغط-المستمرّ للتحدّث مستحيل. اضغط SPACE لبدء الإرسال؛ واضغطها ثانيةً للعودة للاستماع.

إشارات اللاسلكي

  • شاشة المتحدّث تعرض شريط TRANSMITTING أحمر.
  • شاشة المستمع تعرض >> RECEIVING <mac> أثناء وصول الصوت.
  • عند الترك، يبثّ المتحدّث علامة نهاية الإرسال (EOT) (×3 — ESP-NOW فاقد). ويعزف الطرفان نغمة Roger. وإن فُقدت كل حزم EOT، ينهي المستمع الإرسال بعد 500 مِلّي ثانية صمت.

تحكّم الصوت (محلّي — لا يمسّ vol العام)

التحكّم المفاتيح المدى ملاحظات
صوت الاستقبال [+] / [-] 0–150 % 100 % = مستوى مفكوك كامل نظيف؛ >100 % يعزّز (يصير أصفر). محدود بـ 150 %.
كسب ميكروفون الإرسال [o] / [p] 0–37.5 dB كسب ES7210، مطبَّق حيًّا. الطريقة النظيفة لتكون أعلى على الطرف البعيد. راقب شريط الميكروفون: إن ثبّت أحمر على الكلام العادي، تراجع خطوة.

كلاهما يُصفَّر للافتراضي (الصوت 100 %، الكسب 30 dB) كل تشغيل.

ملاحظات

  • نصف-مزدوج: أثناء الإرسال لا تسمع الصوت الوارد (متوقّع للاسلكي).
  • الميكروفون (I2S1) والمكبّر (I2S0) طرفيّان منفصلان ويبقيان مُثبَّتين طوال الجلسة.
  • بلا استخدام SD — بلا مخاوف GDMA.

التوافقية — صيغة سلك القناة العامّة

أي جهاز ESP32 أو ESP8266 بـ ESP-NOW على القناة نفسها ينضمّ للدردشة العامّة بإرسال إطار ثنائي 114 بايت:

type(1) + seq(1) + name[12] + text[100]
  • type = 0x01 (دردشة عامّة)
  • seq = رقم تسلسل متزايد
  • name = اسم المُرسِل مُبطَّن بأصفار (12 بايت)
  • text = نصّ الرسالة مُبطَّن بأصفار (100 بايت)
  • MAC الوجهة: FF:FF:FF:FF:FF:FF (بثّ)

تتطلّب الدردشة الخاصّة اشتقاق LMK بـ SHA-256، وليست متوافقة مع أجهزة الغير التي لا تنفّذ الاشتقاق نفسه.

قناة الصوت (ev) تستخدم إطارًا منفصلًا على MAC البثّ نفسه:

type(1) + kind(1) + seq(1) + g722[160]
  • type = 0x02 (صوت)
  • kind = 0x00 إطار صوت · 0x01 علامة نهاية الإرسال (Roger)
  • g722 = 160 بايت = إطار G.722 واحد 20 مِلّي ثانية. يُتجاهَل لـ EOT.

أي جهاز ينفّذ G.722 الوضع 1 عند 16 kHz على type 0x02 يتوافق.


ملاحظات

  • الأوامر الأربعة تعمل على نطاق 2.4 GHz ISM. ويجب تطابق القناة على كل النظراء.
  • يتقاسم BLE و WiFi هوائيًّا واحدًا — أوقِف أي أمر BLE قبل أوامر ESP-NOW.
  • كتابات SD في es تتبع قاعدة GDMA: يُوقَف الوضع المختلط وجيزًا لكل تفريغ.
  • جهات ec المحفوظة إلى SD تبقى بعد إعادة التشغيل؛ وبلا SD تكون للجلسة فقط.