ESP32 simulator, the classic one, on an Xtensa core
يحاكي Mokxi لوحة DOIT ESP32 DevKit V1 بثلاثين طرفاً: ESP32-WROOM-32 بنواة Xtensa LX6 عند 240 MHz، ومصفوفة GPIO وIO_MUX وكل UART الثلاثة ومجموعة المؤقت 0 وADC1 ووحدة تحكم LEDC PWM، عند العناوين الحقيقية. نواة واحدة لا اثنتان، وبلا راديو (WiFi هنا محاكى، ويقول ذلك)، ويبيّن العقد بدقة أين تقع كل حافة.
- 10منطقة طرفية محاكاة
- 24مشروع جاهز للتشغيل
- زمن حقيقيعلى جهازك أنت
ما الذي يُحاكى
مأخوذ من وثيقة العقد الخاصة باللوحة ومكتوب بكلمات بسيطة، مع ما هو ناقص بجانبه.
مُحاكى
- النواة
- Xtensa LX6 بنظام النوافذ ABI، وأربعة وستون سجل عناوين، ومعالجات فيض النافذة ونقصها، وتعليمة واحدة في الدورة عند 240 MHz
- الذاكرة
- 128 KB من ذاكرة التعليمات عند 0x4008_0000 و192 KB من ذاكرة البيانات عند 0x3FFB_0000، منفصلتان كما يفصلهما ESP-IDF
- مصفوفة GPIO وIO_MUX
- أربعون طرفاً بالتقسيم الحقيقي إلى سجلين، مع مقاومات الرفع والخفض وتمكين الدخل لكل وسادة، ورفض GPIO من 34 إلى 39 كمخارج لأن الرقاقة لا تملك مشغّلاً عليها
- UART0
- بسرعة الباود المضبوطة، ومتصل بالشاشة التسلسلية
- UART1 وUART2
- Serial1 وSerial2 على أي أطراف يسمّيها begin()، عبر مصفوفة GPIO: إطارات حقيقية على السلك، بتاً ببت، بالمعدل الذي يعطيه المقسِّم فعلاً، مع مخزن الاستقبال الخاص بمشغّل النواة
- مجموعة المؤقت 0
- المؤقت 0 بنبضة ميكروثانية خلف millis() وmicros()؛ وdelay() توقف النواة على CCOMPARE0 بدل أن تشغلها بالدوران
- ADC1
- اثنا عشر بتاً على القنوات الثماني الحقيقية (GPIO 36 و37 و38 و39 و32 و33 و34 و35) مع التوهينات الأربعة، و11 dB وفق منحنى قطعة حقيقية حتى 4095 عند نحو 3.1 V
- LEDC
- المجموعة عالية السرعة: أربعة مؤقتات وثماني قنوات على أي طرف له مشغّل خرج، خلف analogWrite وledcAttach وledcWrite
- مصفوفة المقاطعات
- مصادرها موجّهة كما يوجّهها العتاد، فتكون attachInterrupt ثلاث كتابات لا واحدة
- WiFi محاكى
- WiFi.h وHTTPClient.h وWebServer.h على شبكة مكتوبة بالبرمجيات: بلا راديو ولا 802.11، وإنترنت حقيقي فقط عند تسجيل الدخول وتفعيله
غير مُحاكى
- أي راديو. لا يوجد 802.11 ولا راديو Bluetooth في النموذج. WiFi وBluetooth يُحاكيان بدلاً من ذلك (واجهة Arduino على شبكة من تطويرنا لا تصل إلى الإنترنت الحقيقي إلا عند تسجيل الدخول وتفعيله، وهاتف في لوحة Bluetooth بالمحرر)، وكل صفحة تذكرهما تقول ذلك.
- النواة الثانية. في ESP32 الحقيقية نواتا LX6؛ وهذا النموذج يشغّل نواة PRO، فأي شيء يبدأ مهمة على النواة 1 لن يعمل.
- FPU: ملف ثنائي بفاصلة عائمة عتادية مبني في مكان آخر يفشل عند أول تعليمة فاصلة عائمة. الأكواد المبنية هنا برمجية الفاصلة العائمة، فتعمل حسابات float.
- الذاكرة المخبئية والفلاش وPSRAM، وRTC وULP، والنوم العميق، وADC2، وحساسا اللمس وهول، وI2C وSPI وI2S وRMT.
- عدة عناوين (ترتيب وسادات IO_MUX، وتخطيطات مجموعة المؤقت وLEDC، وإزاحات SENS، وأرقام مصفوفة المقاطعات، ومؤشرات إشارات مصفوفة GPIO التي تستخدمها LEDC) هي اعتقاد هذا النموذج لا شيء يستطيع الدفاع عنه. ويسمّيها القسم 6 من العقد واحداً واحداً.
افتح واحدة واضغط «تشغيل»
كل واحد منها يفتح في المحرر تماماً كما هو مرسوم هنا.
كل المشاريع المدمجة على ESP32 DevKit V1
لكل منها صفحة خاصة بالدائرة العاملة والكود وقائمة القطع.
- مقبض ESP32مبتدئ
- زر وLED عبر ESP-NOWمتوسط
- مراقب طاقة PZEM-004T مع ESP32متوسط
- رسم باللمس ILI9488 مع ESP32متوسط
- رسم باللمس ST7796S مع ESP32متوسط
- مقياس مستوى ميكروفون I2S مع ESP32متوسط
- مشغّل موجة جيبية I2S مع ESP32متوسط
- نظام طوارئ مرورية مع RFID على ESP32متوسط
- خادم ويب للطقس بـ DHT22 على ESP32متوسط
- خادم ويب بـ LED اثنين على ESP32مبتدئ
- خادم ويب غير متزامن على ESP32: BME280 ومنزلق وريلايمتوسط
- جرس باب Telegram مع حساس PIR على ESP32متوسط
- ساعة NTP على شاشة TM1637 مع ESP32مبتدئ
- مصباح تسلسلي عبر Bluetooth على ESP32مبتدئ
- مصباح BLE UART على ESP32متوسط
- وميض MicroPython على ESP32مبتدئ
- مقاطعة زر بـ MicroPython على ESP32مبتدئ
- تلاشي PWM بـ MicroPython على ESP32مبتدئ
- DHT22 على ESP32 مع MicroPythonمبتدئ
- OLED من نوع SSD1306 على ESP32 مع MicroPythonمبتدئ
- طقس عبر WiFi بـ MicroPython على ESP32متوسط
- محلل طيف الصوتمتقدم
- عيون متحركةمتقدم
- An ESP32 and an Arduino Uno talking over serialمتوسط
قطع موصَّلة بـ ESP32 DevKit V1 خطوة بخطوة
في كل صفحة التوصيل بأسماء أطراف ESP32 DevKit V1 نفسها، والكود، والأخطاء الشائعة، والدائرة العاملة.
- ESP32 DHT22
- ESP32 SSD1306 OLED
- ESP32 I2C LCD
- سيرفو ESP32
- ESP32 HC-SR04
- NeoPixel مع ESP32
- زر ESP32
- مقاومة متغيرة ESP32
- بازر ESP32
- ريلاي ESP32
- حساس PIR مع ESP32
- ESP32 MPU6050
- ESP32 BMP280
- ESP32 DS18B20
- مستقبل IR مع ESP32
- لوحة مفاتيح ESP32
- شاشة TM1637 مع ESP32
- محرك خطوي 28BYJ-48 مع ESP32
- ESP32 RC522 RFID
- ESP32 LDR
- ESP32 BME280
- عصا تحكم ESP32
- شاشة 7 مقاطع مع ESP32
- ESP32 DS3231 RTC
دروس تستخدم هذه اللوحة
كل درس ينتهي بدائرة تعمل، على هذه اللوحة نفسها.
الأسئلة
هل هو مجاني؟
نعم. كل لوحة وكل قطعة في الباقة المجانية، بلا حاجة إلى حساب.
هل أستطيع ترجمة كودي الخاص لها؟
نعم. عدّل الكود واضغط «تشغيل»: يُترجم في التبويب بـ clang لـ Xtensa، وتعرض لوحة البناء كل خطوة. لا يُرفع شيء. وحسابات الفاصلة العائمة تعمل: يبنيها المتصفح برمجياً، كما في كل لوحة أخرى هنا.
هل يحاكي WiFi أو Bluetooth؟
كليهما، محاكيين، ويقول بوضوح إنهما كذلك. Bluetooth هاتف في لوحة Bluetooth بالمحرر لا راديو. يستخدم كودك نداءات Arduino الحقيقية (WiFi.begin وWiFi.status وHTTPClient وWebServer)، وتنضم اللوحة إلى شبكة وتجلب صفحة وتقدّم صفحة. وتحت ذلك لا راديو ولا 802.11. أربعة عناوين مختلقة تحت .mokxi تجيب داخل هذا التبويب. وعند تسجيل الدخول تستطيع تفعيل «الإنترنت الحقيقي» في لوحة السحابة، فتخرج طلبات HTTP وHTTPS إلى مضيفين حقيقيين عبر بوابة Mokxi.
لماذا لا يعمل pinMode(34, OUTPUT)؟
لأنه لا يعمل على الرقاقة أيضاً. لدى GPIO من 34 إلى 39 مخزن دخل ولا مشغّل خرج إطلاقاً. يرفض Mokxi الكتابة كما يفعل السيليكون، ويعدّها، ويضع علامة كهرمانية صغيرة على اللوحة بدل أن يدعك تظن أن الطرف يقود شيئاً.
لماذا تصل مقاومتي المتغيرة إلى 4095 قبل نهاية مجراها؟
لأن القراءة الخام في ESP32 حقيقية عند التوهين الافتراضي 11 dB تشبع عند نحو 3.1 V، قبل سكة 3.3 V، وتنحني في الطريق: منتصف المقاومة يقرأ نحو 1890 لا 2048. يحاكي Mokxi هذا المنحنى، ويطبع مثال المقبض الرقم الخام فلا يبقى لغزاً.
هل هذه لوحة 30 طرفاً أم 38؟
لوحة DOIT DevKit V1 بثلاثين طرفاً. أما Espressif DevKitC بـ 38 طرفاً فبوصة كاملة بين صفّيها وتُخرج ستة أطراف إضافية: أرقام GPIO هي أرقام الرقاقة نفسها، لكن المواضع مختلفة.
هل يشغّل النواتين؟
واحدة. تعمل نواة PRO؛ ولا يوجد APP CPU ولا FreeRTOS للجدولة بينهما، فكود setup()/loop() لا بأس به لكن xTaskCreatePinnedToCore لا.
اللوحات الأخرى
كل واحدة منها تعمل اليوم، وكلها مجانية.
تبحث عن مقدمة أقصر؟ شاهد صفحة محاكي ESP32 DevKit.
شريحة RISC-V بسرعة 160 MHz، على خريطة الذاكرة الحقيقية.
Arduino الكلاسيكية، مع ATmega328P بسرعة 16 MHz.
شريحة Uno على لوحة صغيرة تُركّب على لوحة التجارب.
Arduino الكبيرة، بـ 54 طرفًا رقميًا وأربعة منافذ تسلسلية.
لوحة بشكل Uno، شريحتها تتولى اتصال USB التسلسلي بنفسها.
لوحة RISC-V ثانية، بـ 31 طرفًا و WiFi مُحاكى.
ESP32-S3 بسرعة 240 MHz، مع USB تسلسلي و RGB LED.
شريحة ESP8266 في NodeMCU بسرعة 80 MHz، مع WiFi مُحاكى.
جرّبه على برنامجك الثابت
ما تبنيه هنا يعمل على اللوحة التي على مكتبك دون تغيير. بلا تثبيت ولا حاجة إلى حساب.