يبدو أن المزيد والمزيد من الأشخاص يستخدمون هذا بدون خادم LMS، فقط لـ BT أو AirPlay أو Spotify. لا بأس ولكن عليك أن تدرك أن SqueegleiteESP32 هو في المقام الأول مشغل Logitech Media Server وقد تم تصميمه وفقًا لهذا المفهوم. جميع الأوضاع الأخرى عبارة عن وظائف إضافية مُدمجة بها، لذا فإن الأوضاع الأخرى لها عيوبها. لذا يرجى التأكد من قراءة هذا قبل فتح الموضوع
Squeezelite-esp32 عبارة عن مجموعة برامج صوتية مصممة للتشغيل على شرائح esp32 وesp32-s3 wifi (b/g/n) وBluetooth من espressif. ويقدم القدرات التالية
اعتمادًا على الأجهزة المتصلة بـ esp32، يمكنك إرسال الصوت إلى DAC محلي أو SPDIF أو مكبر صوت Bluetooth. الحد الأدنى من الأجهزة المطلوبة هو وحدة WROVER التي تحتوي على 4 ميجابايت من ذاكرة Flash و4 ميجابايت من ذاكرة PSRAM (https://www.espressif.com/en/products/modules/esp32). باستخدام هذه الوحدة المستقلة، ما عليك سوى استخدام الطاقة ويمكنك البث إلى مكبر صوت يعمل بتقنية Bluetooth. يمكنك أيضًا إرسال الصوت إلى معظم أجهزة I2S DAC وكذلك إلى أجهزة استقبال SPDIF باستخدام كابل أو محول ضوئي فقط.
لكن Squeelite-esp32 قابل للتوسيع بدرجة كبيرة ويمكنك إضافته
وتشمل الميزات الأخرى
للتحكم في المعادل أو استخدام العرض على LMS، يلزم وجود نموذج مشغل جديد ويتم توفير ذلك من خلال مكون إضافي يعد جزءًا من مستودعات الطرف الثالث الخاصة بـ LMS
(الآراء المقدمة هنا لذلك أنا = @philippe44) البناء الرئيسي لـ cubelite-esp32 هو نواة داخلية مكونة من 16 بت مع جميع الحسابات في 32 بت أو دقة تعويم. هذا هو اختيار التصميم الذي قمت به للحفاظ على أداء وحدة المعالجة المركزية (إنه يمتد بالفعل كثيرًا لمجموعة شرائح esp32) وتحسين استخدام الذاكرة نظرًا لأن لدينا فقط 4 ميجابايت من ذاكرة الوصول العشوائي القابلة للاستخدام. قد يعلق البعض بشكل صحيح على أن وحدة WROVER تحتوي على 8 ميجابايت من ذاكرة الوصول العشوائي، لكن المعالج قادر فقط على معالجة 4 ميجابايت ويجب أن يتم ترقيم الـ 4 ميجابايت المتبقية بواسطة كتل أصغر وليس لدي الصبر على ذلك.
الآن، عندما قمت بنقل نظام الضغط إلى esp32، قمت أيضًا بجعل النواة 16 أو 32 بت متوافقة في وقت الترجمة. حتى الآن، يعمل بنظام 32 بت ولكن تم إجراء اختبارات أقل. يمكنك اختيار تجميعه في وضع 32 بت. أنا لست مهتمًا جدًا بعينات 16 بت لأنها لا تقدم أي شيء (لدي خلفية هندسية في نظرية المعلومات).
القدرة | 16 بت | 32 بت | تعليق |
---|---|---|---|
الحد الأقصى لمعدل أخذ العينات | 192 ألف | 96 ألف | يعد 192 كيلو أمرًا صعبًا للغاية، خاصة عند دمجه مع شاشة العرض |
أقصى عمق بت | 16 | 24 | يتم اقتطاع 24 بت في وضع 16 بت |
spdif | 16 بت | 20 بت | |
mp3، aac، opus، ogg/vorbis | 48 ألف | 48 ألف | |
ألاك، فلاك، أوغ/فلاك | 96 ألف | 96 ألف | |
بي سي إم، واف، إيف | 192 ألف | 96 ألف | |
المعادل | ي | ن | 48 كيلو هرتز كحد أقصى (بعد إعادة التشكيل) - تم تخطي المعادلة على أكثر من 48 ألف مسار |
إعادة التشكيل | ي | ن | |
التلاشي المتقاطع | 10 ثانية | <5 ثانية | يعتمد على حجم المخزن المؤقت ومعدل أخذ العينات |
يجب أن يعمل esp32 عند 240 ميجا هرتز، مع Quad-SPI I/O عند 80 ميجا هرتز وساعة 40 ميجا هرتز. ومع ذلك، لا يزال هناك الكثير من العمل، خاصة مع العلم أنه يحتوي على فلاش تسلسلي وPSRAM، لذا أهنئ شركة Espressif على تحسين مجموعة الشرائح. الآن، للحصول على كل عمليات فك التشفير وإعادة التشكيل والمساواة والكسب والعرض والطيف/vu يعد توازنًا دقيقًا للغاية (جدًا) بين استخدام ذاكرة الوصول العشوائي الداخلية/الخارجية وأولويات المهام والتعامل مع المخزن المؤقت. إنه ليس مثاليًا، وكلما دفعت النظام إلى الحد الأقصى، زاد خطر عدم تشغيل بعض الملفات (انظر أدناه). بشكل عام، ستكون شاشة العرض دائمًا ذات الأولوية الأدنى وستلاحظ تباطؤًا في التمرير ومعدلات التحديث VU/Spectrum. الآن، حتى سلسلة العرض تحتوي على قسم مهم وتؤثر على القدرات. على سبيل المثال، قد تمنع شاشة ملونة بعمق 16 بت مع سرعة SPI منخفضة عمل 24/96 flac ولكنها لا تزال تعمل مع PCM 24/96
في وضع 16 بت، على الرغم من الإبلاغ عن 192 كيلو هرتز كحد أقصى للمعدل، إلا أنه يوصى بشدة بتحديد معدل أخذ العينات المُبلغ عنه إلى 96 كيلو هرتز (-Z 96000). لاحظ أن بعض التدفقات عبر الإنترنت عالية السرعة 24/96 كيلو بايت قد تتعثر بسبب أداء مكدس TCP/IP. عادةً ما يرجع ذلك إلى حقيقة أن الخادم يرسل حزمًا صغيرة من البيانات ولا يمكن لـ esp32 استقبال الصوت المشفر بسرعة كافية، بغض النظر عن إعدادات أولوية المهمة (لقد حاولت تعديل ذلك قليلاً). الخيار الأفضل في هذه الحالة هو السماح لـ LMS بتوكيل الدفق لأنه سيوفر قطعًا أكبر ودفقًا "أكثر سلاسة" يمكن التعامل معه بعد ذلك.
لاحظ أيضًا أن بعض برامج الترميز تستهلك وحدة المعالجة المركزية (CPU) أكثر من غيرها أو لم يتم تحسينها بالقدر نفسه. لقد بذلت قصارى جهدي لتعديلها، ولكن هذا المستوى من التحسين يتضمن كتابة بعض التجميعات وهو أمر مؤلم. أحد برامج الترميز المطلوبة للغاية هو AAC عندما يتم تشفير الملفات باستخدام SBR. فهو يسمح بإعادة بناء الجزء العلوي من الطيف وبالتالي معدل أخذ عينات أعلى، ولكن مواصفات برنامج الترميز تعتبر اختيارية، ويمكنك ببساطة فك تشفير النطاق الأدنى وقبول معدل أخذ عينات أقل - راجع خيار AAC_DISABLE_SBR أدناه.
هام: على esp32 (وليس esp32-s3)، يؤدي استخدام Spotify مع SPDIF إلى إنتاج صوت متقطع عند تمكين "الإحصائيات". يجب عليك تعطيلها
سيكون أي جهاز يعتمد على esp32 مزودًا بذاكرة فلاش بسعة 4 ميجابايت على الأقل وذاكرة PSRAM بسعة 4 ميجابايت على الأقل قادرًا على تشغيل Squeegle-esp32 وهناك العديد من اللوحات التي تتضمن مثل هذه الشريحة. تم ذكر عدد قليل منها أدناه، ولكن يجب أن يعمل أي منها. يمكنك العثور على المساعدة والتعليمات المختلفة هنا
من أجل الوضوح، وحدات WROOM لا تعمل لأنها لا تتضمن PSRAM. قد تضيفه بعض التصميمات خارجيًا، لكن هذا غير محتمل (جدًا).
وفقًا للوصف أعلاه، وحدة WROVER كافية لتشغيل Squeezelite-esp32، ولكن هذا يتطلب القليل من التعديل لتوسيعها لتحتوي على أزرار صوت أو أجهزة تناظرية (على سبيل المثال)
يرجى ملاحظة أنه عند الإرسال إلى مكبر صوت Bluetooth (المصدر)، يمكن استخدام 44.1 كيلو هرتز فقط، لذلك يمكنك إما السماح لنظام LMS بإعادة التشكيل، ولكن يجب عليك التأكد من أنه يرسل مسارات 44.1 كيلو هرتز فقط أو تمكين خيار إعادة التشكيل الداخلي (باستخدام -R) . إذا قمت بتوصيل DAC، فإن اختيار معدلات العينة يعتمد على قدراته. انظر أدناه لمزيد من التفاصيل.
ستعمل معظم أجهزة DAC خارج الصندوق بمجرد اتصال I2S، ولكن بعضها يتطلب إرسال أوامر محددة باستخدام I2C. راجع خيار DAC أدناه لفهم كيفية إرسال هذه الأوامر المخصصة. يوجد دعم مدمج لـ TAS575x وTAS5780 وTAS5713 وAC101 DAC.
الوحدات النمطية المستندة إلى esp32-s3 مثل هذه مدعومة أيضًا ولكنها تتطلب esp-idf 4.4. إنه ليس جزءًا من الإصدارات الرسمية بعد، ولكنه يجمعه ويعمل. لا يحتوي جهاز s3 على صوت بلوتوث. لاحظ أنه تم تحسين أداء وحدة المعالجة المركزية بشكل كبير.
هذا هو الرفيق الرئيسي للأجهزة لـ Squeezelite-esp32 وقد تم تطويره معًا. يمكن العثور على تفاصيل حول القدرات هنا وهنا.
إذا كنت تريد إعادة البناء، استخدم ملف التكوين squeezelite-esp32-SqueezeAmp-sdkconfig.defaults
.
ملاحظة: يمكنك استخدام الثنائيات التي تم إنشاؤها مسبقًا SqueezeAMP4MBFlash والتي تحتوي على كافة أجهزة الإدخال/الإخراج التي تم ضبطها بشكل صحيح. يمكنك أيضًا استخدام I2S4MBFlash الثنائي العام وفي هذه الحالة يجب تعيين معلمات NVS للحصول على نفس السلوك تمامًا
12=green,13=red,34=jack,2=spkfault
channel=7,scale=20.24
model=TAS57xx,bck=33,ws=25,do=32,sda=27,scl=26,mute=14:0
bck=33,ws=25,do=15
يمكن استخدام IR كإشارة تنبيه باستخدام (إعداد sleep_config
مع wake=0:0
). إنها عملية سحب لذا تبقى عند 1 عند عدم تلقي أي شيء مما يعني أنه لا يمكن استخدامها بالتزامن مع عمليات الإدخال والإخراج الأخرى. راجع النوم للحصول على مزيد من التفاصيل بشأن تقييد الاستيقاظ عند مدخلات متعددة.
تتوافق هذه السماعة المحمولة التي تعمل بالبطارية مع Squeegleite-esp32 والتي يوجد لها تصميم مخصص مزود مع كل تحديث. إذا كنت تريد إعادة البناء، فاستخدم ملف التكوين squeezelite-esp32-Muse-sdkconfig.defaults
.
ملاحظة: يمكنك استخدام الثنائيات التي تم إنشاؤها مسبقًا Muse4MBFlash والتي تحتوي على كافة أجهزة الإدخال/الإخراج التي تم ضبطها بشكل صحيح. يمكنك أيضًا استخدام I2S4MBFlash الثنائي العام وفي هذه الحالة يجب تعيين معلمات NVS للحصول على نفس السلوك تمامًا
muse
channel=5,scale=7.48,atten=3,cells=1
"mosi=15,miso=2,clk=14
(ربما يكون هذا اختياريًا)model=I2S,bck=5,ws=25,do=26,di=35,i2c=16,sda=18,scl=23,mck=0
{"init":[ {"reg":0,"val":128}, {"reg":0,"val":0}, {"reg":25,"val":4}, {"reg":1,"val":80}, {"reg":2,"val":0}, {"reg":8,"val":0}, {"reg":4,"val":192}, {"reg":0,"val":18}, {"reg":1,"val":0}, {"reg":23,"val":24}, {"reg":24,"val":2}, {"reg":38,"val":9}, {"reg":39,"val":144}, {"reg":42,"val":144}, {"reg":43,"val":128}, {"reg":45,"val":128}, {"reg":27,"val":0}, {"reg":26,"val":0}, {"reg":2,"val":240}, {"reg":2,"val":0}, {"reg":29,"val":28}, {"reg":4,"val":48}, {"reg":25,"val":0}, {"reg":46,"val":33}, {"reg":47,"val":33} ]}
[{"gpio":32, "pull":true, "debounce":10, "normal":{"pressed":"ACTRLS_VOLDOWN"}}, {"gpio":19, "pull":true, "debounce":40, "normal":{"pressed":"ACTRLS_VOLUP"}}, {"gpio":12, "pull":true, "debounce":40, "long_press":1000, "normal":{"pressed":"ACTRLS_TOGGLE"},"longpress":{"pressed":"ACTRLS_POWER"}}]
يعمل مع وحدة ESP32-A1S التي تتضمن برنامج ترميز الصوت وإخراج سماعة الرأس. لا تزال بحاجة إلى استخدام لوحة تجريبية مثل هذه أو مضخم صوت خارجي إذا كنت تريد اتصالاً مباشرًا بالسماعات. لاحظ أن هناك إصدارًا مزودًا ببرنامج الترميز AC101 وإصدار آخر مزود ببرنامج الترميز ES8388 مع متغيرين على الأرجح - هذه اللوحات في حالة من الفوضى (انظر أدناه)
تحتوي اللوحة الموضحة أعلاه على مجموعة الإدخال والإخراج التالية
(لاحظ أن بعض GPIO تحتاج إلى عمليات سحب)
لذلك سيكون التكوين المحتمل
21=amp,22=green:0,39=jack:0
[{ "gpio" : 5 , "normal" :{ "pressed" : " ACTRLS_TOGGLE " }},{ "gpio" : 18 , "pull" : true , "shifter_gpio" : 5 , "normal" :{ "pressed" : " ACTRLS_VOLUP " }, "shifted" :{ "pressed" : " ACTRLS_NEXT " }}, { "gpio" : 23 , "pull" : true , "shifter_gpio" : 5 , "normal" :{ "pressed" : " ACTRLS_VOLDOWN " }, "shifted" :{ "pressed" : " ACTRLS_PREV " }}]
ل AC101
model=AC101,bck=27,ws=26,do=25,di=35,sda=33,scl=32
لـ ES8388 (يبدو أن هناك متغيرات بنفس رقم الإصدار - فوضى كاملة)
model=ES8388,bck=5,ws=25,do=26,sda=18,scl=23,i2c=16
أوmodel=ES8388,bck=27,ws=25,do=26,sda=33,scl=32,i2c=16
هذه ساعة ذكية ممتعة تعتمد على ESP32. يحتوي على شاشة ST7789 مقاس 240 × 240 وصوت مدمج. ليس من المفيد جدًا الاستماع إلى أي شيء ولكنه يعمل. هذا مثال لجهاز يتطلب مجموعة أوامر I2C لـ DAC/APU الخاص به (انظر أدناه). يوجد خيار بناء إذا قررت إعادة بناء كل شيء بنفسك، وإلا فإن خيار I2S الافتراضي يعمل مع المعلمات التالية
model=I2S,bck=26,ws=25,do=33,i2c=53,sda=21,scl=22
{ "init" : [ { "reg" : 41 , "val" : 128 }, { "reg" : 18 , "val" : 255 } ], "poweron" : [ { "reg" : 18 , "val" : 64 , "mode" : " or " } ], "poweroff" : [ { "reg" : 18 , "val" : 191 , "mode" : " and " } ] }
dc=27,data=19,clk=18
SPI,driver=ST7789,width=240,height=240,cs=5,back=12,speed=16000000,HFlip,VFlip
يتطلب Squeezelite-esp32 مجموعة شرائح esp32 وPSRAM بسعة 4 ميجابايت. ESP32-WROVER يلبي هذه المتطلبات. للحصول على مخرج صوت، يمكن استخدام I2S DAC. تعمل أجهزة DAC PCM5102 I2S الرخيصة ولكن العديد من الأجهزة الأخرى تعمل أيضًا. يمكن توصيل PCM5012 DAC عبر:
I2S - روفر
سي سي - 3.3 فولت
3.3 فولت - 3.3 فولت
غند - غند
FLT-GND
دمب - غند
SCL-GND
BCK - (BCK - انظر أدناه)
DIN - (افعل - انظر أدناه)
LCK - (WS - انظر أدناه) FMT - GND
اكس ام تي - 3.3 فولت
استخدم ملف التكوين squeezelite-esp32-I2S-4MFlash-sdkconfig.defaults
.
والمشروع الرائع https://github.com/rochuck/squeeze-amp-too
للوصول إلى NVS، في واجهة مستخدم الويب، انتقل إلى الاعتمادات وحدد "إظهار محرر NVS". انتقل إلى علامة تبويب محرر NVS لتغيير معلمات NFS. في وصف بناء الجملة أدناه <> تعني قيمة بينما تصف [] المعلمات الاختيارية.
كما ذكرنا أعلاه، هناك عدد قليل من الإصدارات المخصصة التي يتم توفيرها اليوم: SqueezeAMP وMuse ولكن إذا قمت بإنشائها بنفسك، فيمكنك أيضًا إنشاء إصدار لـ T-WATCH2020. البناء الافتراضي هو برنامج ثابت عام يسمى I2S والذي يمكن تهيئته من خلال NVS لإنتاج نفس النتائج تمامًا مثل الإصدارات المخصصة. والفرق هو أنه يجب إدخال المعلمات ويمكن محوها عن طريق الخطأ. توفر واجهة المستخدم الرسومية مساعدة رائعة لتحميل "مجموعات التكوين المعروفة" أيضًا.
حسب اختيار التصميم، لا يوجد رمز مضمن فقط لإصدار معين، كل التعليمات البرمجية موجودة دائمًا. تتمثل الفلسفة في تقليل قدر الإمكان من التعليمات البرمجية الخاصة بالمنصة واستخدام #ifdef
المحدد محظور، مهما كان الأمر. لذا، إذا كنت ترغب في إضافة منصتك الخاصة، فيرجى إلقاء نظرة فاحصة على mainKConfig.projbuild
لترى كيف يمكنك، باستخدام المعلمات أدناه، جعل جهازك حلاً قائمًا على التكوين فقط. عندما لا يكون هناك أي خيار آخر، انظر إلى targets<target>
لإضافة التعليمات البرمجية الخاصة بك. لن أقبل العلاقات العامة للرمز الذي يمكن أن يتجنب إنشاء مثل هذا الرمز المخصص كلما أمكن ذلك. سيتم استخدام "هدف" NVS لاستدعاء التعليمات البرمجية الخاصة بالهدف بعد ذلك، ولكن مرة أخرى، هذا وقت تشغيل بحت، وليس وقت الترجمة.
تقوم معلمة NVS "i2c_config" بتعيين GPIO الخاص بـ i2c المستخدم للأغراض العامة (مثل العرض). اتركه فارغًا لتعطيل استخدام I2C. لاحظ أنه في SqueezeAMP، يجب أن يكون المنفذ 1. السرعة الافتراضية هي 400000 ولكن يمكن لبعض شاشات العرض أن تصل إلى 800000 أو أكثر. بناء الجملة هو
sda=<gpio>,scl=<gpio>[,port=0|1][,speed=<speed>]
يرجى ملاحظة أنه لا يمكنك استخدام نفس GPIO أو المنفذ مثل DAC.
يحتوي esp32 على 4 أنظمة SPI فرعية، أحدها لا يمكن الوصول إليه لذا فإن الترقيم هو 0..2 وSPI0 محجوز لـ Flash/PSRAM. تقوم معلمة NVS "spi_config" بتعيين GPIO الخاص بـ spi المستخدم للأغراض العامة (مثل العرض). اتركه فارغًا لتعطيل استخدام SPI. المعلمة DC مطلوبة للشاشات. بناء الجملة هو
data|mosi=<gpio>,clk=<gpio>[,dc=<gpio>][,host=1|2][,miso=<gpio>]
الافتراضي و"المضيف" الوحيد هو 1 حيث يتم استخدام الآخرين بالفعل بواسطة الفلاش وسبيرام. يتم استخدام المعلمة الاختيارية "miso" (MasterInSlaveOut) فقط عندما يكون ناقل SPI ثنائي الاتجاه ومشتركًا مع الأجهزة الطرفية الأخرى مثل Ethernet وموسع gpio. لاحظ أنه يمكن أيضًا تسمية "البيانات" بـ "mosi" (MasterOutSlaveIn).
تقوم معلمة NVS "dac_config" بتعيين gpio المستخدم لاتصال i2s مع DAC الخاص بك. يمكنك تحديد الإعدادات الافتراضية في وقت الترجمة ولكن المعلمة nvs لها الأسبقية باستثناء التكوينات المسماة
bck=<gpio>,ws=<gpio>,do=<gpio>[,mck=0|1|2][,mute=<gpio>[:0|1][,model=TAS57xx|TAS5713|AC101|WM8978|ES8388|I2S][,sda=<gpio>,scl=<gpio>[,i2c=<addr>]]
إذا لم يتم تعيين "النموذج" أو لم يتم التعرف عليه، فسيتم استخدام "I2S" الافتراضي. يتم استخدام الخيار "mck" لبعض برامج الترميز التي تتطلب ساعة رئيسية (رغم أنه لا ينبغي لها ذلك). افتراضيًا، يتم استخدام GPIO0 كـ MCLK ويمكن للإصدارات الحديثة فقط (بعد منتصف عام 2023) استخدام 1 أو 2. وكن على علم أيضًا بأن هذا لا يمكن أن يتعايش مع RMII Ethernet (راجع قسم إيثرنت أدناه). تعد معلمات I2C اختيارية ولا تحتاج إليها إلا إذا كانت DAC الخاصة بك تتطلب تحكم I2C (راجع "dac_controlset" أدناه). لاحظ أن معلمات "i2c" هي أرقام عشرية، ولا يُسمح بالتدوين السداسي.
حتى الآن، تعتبر TAS57xx وTAS5713 وAC101 وWM8978 وES8388 نماذج معترف بها حيث يتم إرسال عناصر التحكم في التسلسل/الحجم/الطاقة المناسبة. بالنسبة لبرامج الترميز الأخرى التي قد تتطلب أوامر I2C، يرجى استخدام المعلمة "dac_controlset" التي تسمح بإرسال تعريف الأوامر البسيطة عبر i2c لتشغيل وإيقاف تشغيل مكبر الصوت وسماعة الرأس باستخدام صيغة JSON:
{ <command>: [ <item1>, <item2>, ... <item3> ],
<command>: [ <item1>, <item2>, ... <item3> ],
... }
حيث <command>
هو أحد init، وpoweron، وpoweroff، وspeakeron، وspeakeroff، وheadseton، وheadsetoff ( يجب أن يكون مصفوفة حتى لعنصر واحد). العنصر هو أي من العناصر التالية
{"reg":<register>,"val":<value>,"mode":<nothing>|"or"|"and"}
{"gpio":<gpio>,"level":0|1}
{"delay":<ms>}
هذا هو تدوين JSON القياسي، لذا إذا لم تكن على دراية به، فإن Google هو أفضل صديق لك. انتبه إلى أن "..." تعني أنه يمكنك الحصول على أي عدد تريده من الإدخالات، فهو ليس جزءًا من بناء الجملة. كل قسم اختياري، ولكن ليس من المنطقي تعيين i2c في المعلمة 'dac_config' وعدم تعيين أي شيء هنا.
يسمح مفتاح reg
بكتابة السجلات على ناقل i2c. يسمح mode
المعلمة بالتسجيل بالقيمة أو به . لا تقم بتعيين mode
إذا كنت تريد الكتابة ببساطة. يمكن أن تكون المعلمة val
عبارة عن مصفوفة [v1، v2،...] لكتابة سلسلة من البايتات في انفجار i2c واحد (في هذه الحالة يتم تجاهل "الوضع"). لاحظ أن كافة القيم يجب أن تكون عشرية . يمكنك استخدام أداة التحقق من الصحة مثل هذه للتحقق من بناء الجملة الخاص بك. مفتاح gpio
هو ببساطة تعيين gpio كجزء من إجراء DAC delay
يسمح بالتوقف المؤقت بين العناصر.
يتم استخدام أمر "الطاقة" عند تشغيل/إيقاف تشغيل DAC بعد فترة الخمول (راجع خيار -C الخاص بـعصر الضغط) ويتم إرسال أوامر "مكبر الصوت/سماعة الرأس" عند التبديل بين مكبرات الصوت وسماعات الرأس (انظر اكتشاف مقبس سماعة الرأس).
ملحوظة: بالنسبة للتكوينات المسماة ((SqueezeAMP، Muse... all باستثناء I2S)، يتم تجاهل كل هذا. بالنسبة لبرامج الترميز المعروفة، يمكن الكتابة فوق التسلسلات المضمنة باستخدام dac_controlset
يرجى ملاحظة أنه لا يمكنك استخدام نفس GPIO أو المنفذ مثل I2C.
تقوم معلمة NVS "spdif_config" بتعيين GPIO الخاص بـ i2s المطلوب لـ SPDIF.
يتم توفير SPDIF من خلال إعادة استخدام واجهة i2s بطريقة غير قياسية، لذلك على الرغم من الحاجة إلى طرف واحد فقط (DO)، يجب تهيئة وحدة التحكم بالكامل، لذلك يجب أن تكون ساعة البت (bck) وساعة الكلمات (ws) تعيين كذلك. نظرًا لأن i2s وSPDIF متنافيان، يمكنك إعادة استخدام نفس الإدخال/الإخراج إذا كان جهازك يسمح بذلك.
يمكنك تحديد الإعدادات الافتراضية في وقت الترجمة ولكن المعلمة nvs لها الأسبقية باستثناء التكوينات المسماة (SqueezeAMP، Muse ...)
اتركه فارغًا لتعطيل استخدام SPDIF، ويمكنك أيضًا تحديدها في وقت الترجمة باستخدام "make Menuconfig". بناء الجملة هو
bck=<gpio>,ws=<gpio>,do=<gpio>
ملحوظة: بالنسبة للتكوينات المسماة، يتم تجاهل ذلك
الحد الأقصى لعمق البت هو 24 بت، حتى في وضع 32 بت (وهذا أحد قيود SPDIF - شكرًا @UrbanLienert على التحديث من 20 إلى 24 بت). الآن، يمكنك أيضًا الحصول على SPDIF باستخدام شريحة متخصصة توفر واجهة I2S مثل DAC ولكنها تبث SPDIF (بصري ومحوري). يشير إلى الفصل DAC بعد ذلك.
إذا كنت تريد الإقناع، يمكنك أيضًا استخدام خدعة الرجل الفقير لتوليد إشارة من 3.3V GPIO. كل ما يفعله هو تقسيم 3.3 فولت لتوليد 0.6 فولت من الذروة إلى الذروة ثم إزالة التيار المستمر
100nF
GPIO ----210ohm-----------||---- coax S/PDIF signal out
|
110ohm
|
Ground -------------------------- coax signal ground
تقوم معلمة NVS "display_config" بتعيين المعلمات للعرض الاختياري. يمكن أن يكون I2C (انظر هنا للحافلة المشتركة) أو SPI (انظر هنا للحافلة المشتركة).
I2C,width=<pixels>,height=<pixels>[address=<i2c_address>][,reset=<gpio>][,HFlip][,VFlip][driver=SSD1306|SSD1326[:1|4]|SSD1327|SH1106]
SPI,width=<pixels>,height=<pixels>,cs=<gpio>[,back=<gpio>][,reset=<gpio>][,speed=<speed>][,HFlip][,VFlip][driver=SSD1306|SSD1322|SSD1326[:1|4]|SSD1327|SH1106|SSD1675|ST7735|ST7789[:x=<offset>][:y=<offset>]|ILI9341[:16|18][,rotate]]
يمكنك تعديل كيفية عرض مقياس vu ومحلل الطيف، بالإضافة إلى حجم العمل الفني من خلال قائمة مخصصة في إعدادات المشغل (لا تنس إضافة المكون الإضافي).
تحدد معلمة NVS "metadata_config" كيفية عرض البيانات التعريفية لـ AirPlay وBluetooth. بناء الجملة هو
[format=<display_content>][,speed=<speed>][,pause=<pause>][,artwork[:0|1]]
%artist%
، %album%
، %title%
. باستخدام سلسلة التنسيق هذه، يتم استبدال الكلمات الأساسية بقيمتها لإنشاء السلسلة التي سيتم عرضها. لاحظ أنه ستتم إزالة النص العادي الذي يتبع الكلمة الأساسية التي تكون فارغة أثناء تشغيل المسار. على سبيل المثال، إذا قمت بتعيين التنسيق= %artist% - %title%
ولم يكن هناك فنان في البيانات التعريفية، فسيتم عرض <title>
فقط وليس - <title>
.يمكنك استخدام أي جهاز استقبال IR متوافق مع بروتوكول NEC (38 كيلو هرتز) أو RC5. Vcc وGND والإخراج هي الأطراف الوحيدة التي تحتاج إلى التوصيل، بدون سحب أو مكثف ترشيح، إنه اتصال مستقيم.
يتم إرسال رموز IR "كما هي" إلى LMS، لذلك لن يعمل سوى جهاز التحكم عن بعد Logitech SB من Boom أو Classic أو Touch. أعتقد أن الملف Slim_Devices_Remote.ir الموجود في دليل "الخادم" الخاص بـ LMS يمكن تعديله للتكيف مع الرموز الأخرى، لكنني لم أحاول ذلك.
في وضع AirPlay وBluetooth، يتم دعم أجهزة التحكم عن بعد الأصلية فقط، ولم أقم بإضافة خيار إنشاء الخرائط الخاصة بك
راجع "ضبط GPIO" أدناه لتعيين GPIO المرتبط بجهاز استقبال الأشعة تحت الحمراء (الخيار "ir").
يتم استخدام المعلمة "set_GPIO" لتعيين GPIO لوظائف مختلفة.
يمكن ضبط GPIO على توفير GND أو Vcc عند التمهيد. يعد هذا مناسبًا لتشغيل الأجهزة التي تستهلك أقل من 40 مللي أمبير من الموصل الجانبي. كن حذرًا لأنه لا يتم إجراء عمليات التحقق من التضارب فيما يتعلق بوحدة معالجة الرسومات (GPIO) التي تقوم بتغييرها، لذلك قد تتسبب في إتلاف اللوحة الخاصة بك أو إنشاء تعارض هنا.
يمكن استخدام المعلمة <amp>
لتعيين GPIO الذي سيتم ضبطه على المستوى النشط (الافتراضي 1) عند بدء التشغيل. سيتم إعادة ضبطه عندما يصبح الضغط خاملاً. يتم تعيين مهلة الخمول في سطر أوامر الضغط من خلال -C <timeout>
يمكن استخدام المعلمة <power>
لتعيين GPIO الذي سيتم ضبطه على المستوى النشط (الافتراضي 1) عند تشغيل المشغل وإعادة تعيينه عند إيقاف تشغيله (في LMS، لا ينطبق ذلك على AirPlay أو Spotify أو BT).
إذا كان لديك مقبس صوت يدعم الإدخال (استخدم :0 أو :1 لتعيين المستوى عند إدخاله)، فيمكنك تحديد GPIO الذي يتصل به. يتيح استخدام المعلمة jack_mutes_amp كتم صوت مكبر الصوت عند إدخال سماعة الرأس (على سبيل المثال).
يمكنك ضبط مؤشر الحالة الأخضر والأحمر أيضًا مع الحالة النشطة لكل منهما (:0 أو:1) أو تحديد مجموعة الشرائح إذا كنت تستخدم مصباح RGB قابل للتوجيه.
تقوم المعلمة <ir>
بتعيين GPIO المرتبط بمستقبل IR. لا حاجة لإضافة pullup أو مكثف
بناء الجملة هو:
<gpio>=Vcc|GND|amp[:1|0]|power[:1:0]|ir[:nec|rc5]|jack[:0|1]|green[:0|1|ws2812]|red[:0|1|ws2812]|spkfault[:0|1][,<repeated sequence for next GPIO>]
يمكنك تحديد الإعدادات الافتراضية للمقبس ومصابيح spkfault في وقت الترجمة ولكن معلمة nvs لها الأولوية باستثناء التكوينات المسماة ((SqueezeAMP، Muse ...) حيث يتم فرضها في وقت التشغيل. لاحظ أن GPIO 36 و39 يتم إدخالهما فقط ولا يمكن استخدامهما عند التعيين على خطأ في المقبس أو مكبر الصوت، يتحقق استقصاء 100 مللي ثانية من قيمتها ولكن هذا مكلف
من الممكن إضافة موسعات GPIO باستخدام ناقل I2C أو SPI. يجب أن يتم استخدامها بشكل أساسي للأزرار ولكن يمكنها أيضًا دعم مخرجات الأغراض العامة. يمكن ترقيم وحدات GPIO الإضافية هذه بدءًا من قيمة عشوائية (40 وما فوق حيث أن esp32 لديه GPIO 0..39). ثم يمكن استخدام وحدات GPIO "الافتراضية" الجديدة هذه من (على سبيل المثال) 100 إلى 115 في تكوين الزر أو set_GPIO أو إعدادات التكوين الأخرى.
يمكن لكل موسع أن يدعم ما يصل إلى 32 GPIO. لاستخدام موسع للأزرار، يجب توفير مقاطعة، ووضع الاستقصاء غير مقبول. لا يزال من الممكن تكوين موسع بدون انقطاع، ولكن المخرجات فقط ستكون قابلة للاستخدام. لاحظ أنه يمكن مشاركة نفس المقاطعة عبر الموسعات، طالما أنهم يستخدمون الصرف المفتوح أو المجمعات المفتوحة (وهو ما يفعلونه جميعًا على الأرجح)
المعلمة "gpio_exp_config" عبارة عن قائمة مفصولة بفاصلة منقوطة (;) مع بناء الجملة التالي لكل موسع
model=<model>,addr=<addr>,[,port=system|dac][,base=<n>][,count=<n>][,intr=<gpio>][,cs=<gpio>][,speed=<Hz>]
لاحظ أن PWM ("led_brightness" أدناه) غير مدعوم لوحدات GPIO الموسعة ولا يمكن استخدامها لإشارات التوقيت العالية السرعة أو الدقيقة مثل CS، وD/C، وإعادة الضبط، والاستعداد. يتم دعم الأزرار والتشفير الدوار والتحكم في مكبر الصوت والطاقة. اعتمادًا على مجموعة الشرائح الفعلية، قد يتم دعم السحب لأعلى أو لأسفل لذا قد تضطر إلى إضافة مقاومات خارجية (فقط MCP23x17 هو الذي يقوم بالسحب). لا تعد شريحة pca8575 شريحة رائعة، فهي تولد قدرًا لا بأس به من المقاطعات الزائفة عند استخدامها لإخراج GPIO. عند استخدام موسع SPI، يجب تكوين الناقل باستخدام ناقل SPI المشترك
راجع set_GPIO لمعرفة كيفية ضبط مصابيح LED الخضراء والحمراء (بما في ذلك مصابيح RGB القابلة للتوجيه). بالإضافة إلى ذلك، يمكن التحكم في سطوعها باستخدام المعلمة "led_brigthness". بناء الجملة هو
[green=0..100][,red=0..100]
ملحوظة: بالنسبة للتكوين المسمى، لا يمكن تغيير GPIO المتأثر بمؤشر LED الأخضر والأحمر ولكن يتم تطبيق خيار السطوع
يمكن تكوين شريط LED واحد مع ما يصل إلى 255 مصباح LED قابل للتوجيه لتقديم تصورات محسنة. يتضمن مصور VU Meter مؤشرًا لحالة البطارية (انظر البطارية). حاليًا يتم دعم مصابيح LED WS2812B فقط. قم بتعيين تكوين جهاز LED Strip، أو بناء جملة NVS led_vu_config
type=[WS2812],length=<n>,gpio=<dataPin>[,scale=<gain>]
حيث <n>
هو عدد مصابيح LED في الشريط (1..255). يمكن إضافة قيمة كسب <scale>
(النسبة المئوية) لتعزيز استجابات التأثير.
مطلوب آخر تحديث لبرنامج LMS الإضافي لتعيين وضع المتخيل والسطوع في صفحة إعدادات ESP32 للمشغل، أو شاشة يمكن التحكم فيها (راجع قوائم Extra/SqueezeESP32). يضيف البرنامج المساعد أوامر LMS CLI إضافية.
يأمر | ملحوظات |
---|---|
<playerid> led_visual [<mode>] [<السطوع>] | تبديل أو تحديد "وضع" المتخيل. يمكن التحكم في سطوع المتخيل (0..255) باستخدام علامة "السطوع". |
<playerid> دمكس <R،G،B،R،G،B، ... R،G،B> [<إزاحة>] | يضبط لون LED بدءًا من موضع "الإزاحة" مع تسلسلات الألوان "R" (أحمر)، و"G" (أخضر)، و"B" (أزرق). أضف قيم RGB إضافية إلى السلسلة المحددة لتعيين مصابيح LED متعددة. |
يتم دعم جهاز تشفير دوار عام واحد، وهو التحول التربيعي بالضغط. عادةً ما تحتوي أجهزة التشفير هذه على طرفين لأجهزة التشفير (A وB)، وC مشترك يجب ضبطه على الأرض ودبوس SW اختياري للضغط. يجب سحب A وB وSW لأعلى، لذلك يتم توفير السحب التلقائي بواسطة ESP32، ولكن يمكنك إضافة المقاومات الخاصة بك. يساعد القليل من التصفية على A وB (~470nF) على الارتداد الذي لا يتم بواسطة البرنامج.
عادةً ما يتم ترميز برنامج التشفير بشكل ثابت للضغط على اليسار واليمين والضغط على LMS ولخفض مستوى الصوت/أعلى/التبديل بين BT وAirPlay وSpotify. إن استخدام خيار "مستوى الصوت" يجعل من الصعب ترميز خفض مستوى الصوت/رفعه/تبديل التشغيل طوال الوقت (حتى في نظام إدارة التعلم). يتيح خيار "الضغط لفترة طويلة" وضعًا بديلاً عند الضغط على SW لفترة طويلة. في هذا الوضع، يكون اليسار هو السابق، واليمين هو التالي، ثم اضغط على زر التبديل. كل ضغطة طويلة على SW تتناوب بين الأوضاع (يعتمد السلوك الفعلي للوضع الرئيسي على "مستوى الصوت").
هناك أيضًا إمكانية استخدام خيار "knobonly" (حصريًا مع "الحجم" و"الضغط الطويل"). يحاول هذا الوضع توفير التنقل الكامل بمقبض واحد والذي يكون ملتويًا بعض الشيء بسبب مبادئ LMS UI. يمتثل الضغط على اليسار واليمين والضغط لقواعد التنقل الخاصة بـ LMS، وخاصة الضغط الذي ينتقل دائمًا إلى عنصر القائمة الفرعية السفلي، حتى عند التنقل في مكتبة الموسيقى. وهذا يسبب تحديًا لأنه لا يوجد زر "تشغيل" أو "رجوع" أو "إيقاف مؤقت". الحل البديل هو كما يلي:
يمكن ضبط سرعة النقر المزدوج (أو من اليسار إلى اليمين) باستخدام المعلمة الاختيارية "knobonly". هذا ليس الحل الأمثل، ونرحب بالأفكار الأخرى. انتبه إلى أنه كلما قمت بتعيين سرعة النقر المزدوج لفترة أطول، كلما كانت استجابة الواجهة أقل. والسبب هو أنني أحتاج إلى انتظار هذا التأخير قبل أن أقرر ما إذا كان ذلك بنقرة واحدة أو مزدوجة. ويمكنه أيضًا تفسير "التردد" في التنقل في القائمة بسهولة على أنه "إيقاف مؤقت".
استخدم المعلمة rotary_config بالصيغة التالية:
A=<gpio>,B=<gpio>[,SW=gpio>[[,knobonly[=<ms>]]|[[,volume][,longpress]]]]
ملاحظة HW: جميع وحدات gpio المستخدمة في الجهاز الدوار تحتوي على سحب داخلي، لذا عادةً لا تكون هناك حاجة لتوفير Vcc إلى جهاز التشفير. ومع ذلك، إذا كانت لوحة التشفير التي تستخدمها تحتوي أيضًا على سحب خاص بها أقوى من لوحات ESP32 (وهذا هو الحال على الأرجح)، فسيكون هناك تداخل بين gpio، لذا يجب عليك إحضار Vcc. انظر إلى الرسم التخطيطي للوحة الخاصة بك وستفهم أن عمليات السحب هذه للوحة تنشئ قائمة منسدلة "رابحة" عندما يتم تأريض أي دبوس آخر.
يعد SW gpio اختياريًا، ويمكنك إعادة التأثير عليه على زر خالص إذا كنت تفضل ذلك، ولكن خيارات مستوى الصوت والضغط الطويل والمقبض فقط لا معنى لها لأن المفتاح المفقود يلعب دورًا مهمًا في هذه الأوضاع. لا يزال بإمكانك الحصول على وضع "مستوى الصوت"، لكنك لن تتمكن من استخدامه لأي شيء باستثناء رفع مستوى الصوت وخفضه. لذا انتبه إلى أن استخدام بناء الجملة [] مضلل بعض الشيء أعلاه.
راجع أيضًا "ملاحظة مهمة" في قسم "الأزرار" وتذكر أنه عند تنشيط "lms_ctrls_raw" (انظر أدناه)، لا ينطبق أي من خيارات المقبض، ومستوى الصوت، والضغط لفترة طويلة، ويتم إرسال رموز الأزرار الأولية (وليس الإجراءات) ببساطة إلى LMS
لاحظ أنه في esp32، يتم إدخال GPIO 36 و39 فقط ولا يمكن استخدام المقاطعة، لذلك لا يمكن ضبطهما على A أو B. عند استخدامهما لـ SW، يتم استخدام استقصاء 100 مللي ثانية وهو مكلف
يتم دعم جهاز تشفير دوار واحد مخصص للحجم، إزاحة تربيعية بالضغط. تم ترميز برنامج التشفير بشكل ثابت لرفع مستوى الصوت وخفضه وتبديل التشغيل لـ LMS وBT وAirPlay وSpotify (راجع الملاحظة أعلاه للتصفية وملاحظة HW بالإضافة إلى GPIO 36 و39 على esp32)
استخدم المعلمة Volume_rotary بالصيغة التالية:
A=<gpio>,B=<gpio>[,SW=gpio>]
يتم وصف الأزرار باستخدام سلسلة JSON بالصيغة التالية
[
{ "gpio" : <num>,
"type" : " BUTTON_LOW | BUTTON_HIGH " ,
"pull" :[ true|false ],
"long_press" : <ms>,
"debounce" : <ms>,
"shifter_gpio" : <-1|num>,
"normal" : { "pressed" : " <action> " , "released" : " <action> " },
"longpress" : { <same> },
"shifted" : { <same> },
"longshifted" : { <same> },
},
{ ... },
{ ... },
]
حيث (جميع المعلمات اختيارية باستثناء gpio)
حيث يكون <action>
إما اسم تكوين آخر للتحميل (REMAP) أو واحد بين
ACTRLS_NONE, ACTRLS_POWER, ACTRLS_VOLUP, ACTRLS_VOLDOWN, ACTRLS_TOGGLE, ACTRLS_PLAY,
ACTRLS_PAUSE, ACTRLS_STOP, ACTRLS_REW, ACTRLS_FWD, ACTRLS_PREV, ACTRLS_NEXT,
BCTRLS_UP, BCTRLS_DOWN, BCTRLS_LEFT, BCTRLS_RIGHT,
BCTRLS_PS1, BCTRLS_PS2, BCTRLS_PS3, BCTRLS_PS4, BCTRLS_PS5, BCTRLS_PS6, BCTRLS_PS7, BCTRLS_PS8, BCTRLS_PS9, BCTRLS_PS10,
KNOB_LEFT, KNOB_RIGHT, KNOB_PUSH,
ACTRLS_SLEEP,
لاحظ أن ACTRLS_Sleep ليس زرًا فعليًا يمكن إرساله إلى LMS ، ولكنه خطاف لتفعيل وضع السكون العميق (انظر النوم).
واحدة قمت بإنشائها مثل هذه السلسلة ، استخدمها لملء معلمة NVS جديدة بأي اسم أقل من 16 (؟) أحرف. يمكنك الحصول على أكبر عدد ممكن من هذه التكوينات. ثم قم بتعيين معلمة config "ACTRLS_CONFIG" باسم التكوين الافتراضي الخاص بك
على سبيل المثال ، تكوين يسمى "أزرار":
[{ "gpio" : 4 , "type" : " BUTTON_LOW " , "pull" : true , "long_press" : 1000 , "normal" :{ "pressed" : " ACTRLS_VOLDOWN " }, "longpress" :{ "pressed" : " buttons_remap " }},
{ "gpio" : 5 , "type" : " BUTTON_LOW " , "pull" : true , "shifter_gpio" : 4 , "normal" :{ "pressed" : " ACTRLS_VOLUP " }, "shifted" :{ "pressed" : " ACTRLS_TOGGLE " }}]
يحدد زرينين
في حين أن التكوين يسمى "buttons_remap"
[{ "gpio" : 4 , "type" : " BUTTON_LOW " , "pull" : true , "long_press" : 1000 , "normal" :{ "pressed" : " BCTRLS_DOWN " }, "longpress" :{ "pressed" : " buttons " }},
{ "gpio" : 5 , "type" : " BUTTON_LOW " , "pull" : true , "shifter_gpio" : 4 , "normal" :{ "pressed" : " BCTRLS_UP " }}]
يحدد زرينين
فيما يلي واجهة صعبة ولكن وظيفية 2-buttons لمتعة فك التشفير الخاصة بك:
actrls_config
:
buttons
buttons
:
[{ "gpio" : 4 , "type" : " BUTTON_LOW " , "pull" : true , "long_press" : 1000 ,
"normal" :{ "pressed" : " ACTRLS_VOLDOWN " },
"longpress" :{ "pressed" : " buttons_remap " }},
{ "gpio" : 5 , "type" : " BUTTON_LOW " , "pull" : true , "long_press" : 1000 , "shifter_gpio" : 4 ,
"normal" :{ "pressed" : " ACTRLS_VOLUP " },
"shifted" :{ "pressed" : " ACTRLS_TOGGLE " },
"longpress" :{ "pressed" : " ACTRLS_NEXT " }}
]
buttons_remap
:
[{ "gpio" : 4 , "type" : " BUTTON_LOW " , "pull" : true , "long_press" : 1000 ,
"normal" :{ "pressed" : " BCTRLS_DOWN " },
"longpress" :{ "pressed" : " buttons " }},
{ "gpio" : 5 , "type" : " BUTTON_LOW " , "pull" : true , "long_press" : 1000 , "shifter_gpio" : 4 ,
"normal" :{ "pressed" : " BCTRLS_UP " },
"shifted" :{ "pressed" : " BCTRLS_PUSH " },
"longpress" :{ "pressed" : " ACTRLS_PLAY " },
"longshifted" :{ "pressed" : " BCTRLS_LEFT " }}
]
ملاحظة مهمة : يدعم LMS أيضًا إمكانية إرسال رموز زر "RAW". إنه معقد بعض الشيء ، لذا تحمل معي. يمكن معالجة الأزرار إما عن طريق SequezeSp32 وتعيينها إلى "دالة" مثل play/appe أو يمكن إرسالها فقط إلى LMS كرمز عادي (RAW) ويتم التعامل مع المنطق الكامل للضغط/الإصدار/longpress بواسطة LMS ، أنت لا ترمز. T لديك أي سيطرة على ذلك.
تتمثل فائدة وضع "RAW" في أنه يمكنك إنشاء لاعب أقرب ما يمكن إلى طفرة (EG) ولكن لا يمكنك استخدام وظيفة إعادة التقييم أو Longpress مجموعة محدودة من الأزرار. في وضع "RAW" ، كل ما تحتاجه حقًا هو التعيين بين GPIO والزر. فيما يتعلق بـ LMS ، لا يهم أي خيار آخر في حمولة JSON هذه. الآن ، عند استخدام BT أو AirPlay ، لا تزال بنية JSON الكاملة الموضحة أعلاه تنطبق بالكامل ، وبالتالي فإن التحول ، LongPress ، لا يزال يعمل.
كن على دراية أنه عند استخدام الوضع غير "RAW" ، يتم استخدام CLI (واجهة سطر الأوامر) من LMS ويجب أن يكون متاحًا بدون كلمة مرور
لا يوجد خيار جيد أو سيء ، إنه اختيارك. استخدم المعلمة NVS "LMS_CTRLS_RAW" لتغيير هذا الخيار
لاحظ أن GPIO 36 و 39 يتم إدخالهم فقط ولا يمكنهم استخدام المقاطعة. عند استخدامها لزر ما ، يتم بدء استطلاع 100 مللي ثانية وهو مكلف. من المحتمل أيضًا أن لا تعمل الصحافة الطويلة بشكل جيد للغاية
يتم دعم Wired Ethernet بواسطة ESP32 مع خيارات مختلفة ، لكن SqueezeSp32 يدعم فقط رقاقة LAN8720 مع واجهة RMII مثل هذه أو جسور spi-ethernet مثل Davicom DM9051 That أو W5500 مثل هذا.
ملاحظة: لا يتم دعم أزرار اللمس التي يمكن العثور عليها على بعض اللوحة مثل Lyrat v4.3 حاليًا.
GPIO | إشارة RMII | ملحوظات |
---|---|---|
GPIO21 | TX_EN | emac_tx_en |
GPIO19 | TX0 | emac_txd0 |
GPIO22 | TX1 | emac_txd1 |
GPIO25 | آر إكس0 | emac_rxd0 |
GPIO26 | RX1 | emac_rxd1 |
GPIO27 | CRS_DV | emac_rx_drv |
GPIO0 | ref_clk | الساعة 50 ميجا هرتز |
model=lan8720,mdc=<gpio>,mdio=<gpio>[,rst=<gpio>]
يعد توصيل دبوس إعادة ضبط لـ LAN8720 اختياريًا ولكن موصى به لتجنب أن GPIO0 (ساعة الإدخال 50 ميجا هرتز) يغلق ESP32 في وضع التنزيل في وقت التمهيد.
مطلوب APLL لـ ESP32 لمرتب الصوت ، لذلك نحتاج إلى LAN8720 يوفر أ