Что эмулятор умеет и чего не умеет
Список ведётся руками и обновляется вместе с моделью. Он здесь потому, что «библиотека собралась» и «датчик ответил» — разные вещи, и узнавать разницу лучше до того, как потратите вечер.
Работает
| Блок | Чем пользуетесь |
|---|---|
| GPIO, матрица выходов, прерывания по выводу | digitalRead, digitalWrite, attachInterrupt |
| LEDC (ШИМ) | analogWrite, ledcWrite, серво, зуммер |
| Таймеры TIMG, сторожевой таймер | millis, micros, esp_task_wdt |
| UART0, UART1, UART2 | Serial, HardwareSerial(1), мост между портами |
| I2C0 и I2C1 | LCD 1602, OLED SSD1306, датчики на шине |
| RMT: передача и приём | лента NeoPixel, ИК-пульты |
| PCNT | аппаратный счётчик импульсов, тахометр |
| АЦП, касание, датчик Холла, термодатчик | analogRead, touchRead, hallRead |
| Флеш-память, разделы, NVS, SPIFFS | Preferences, файловая система |
| Глубокий сон | пробуждение по таймеру и по выводу |
| Wi-Fi через виртуальную сеть | WiFi, WiFiClient, configTime, HTTP |
| eFuse, генератор случайных чисел | MAC-адрес, esp_random |
Не работает
| Блок | Что из-за этого нельзя |
|---|---|
| SPI2 и SPI3 | TFT-экраны, SD-карта, MAX7219, RC522, nRF24 |
| I2S | цифровые микрофоны и усилители |
| MCPWM | драйверы двигателей с аппаратным мостом |
| TWAI (CAN) | промышленные шины |
| AES, SHA, RSA | HTTPS и всё, что через TLS |
| Модуляция несущей в RMT | отправка команды ИК-пультом (приём работает) |
Несмоделированный блок не роняет прошивку: его регистры работают как обычная память, что записали — то и прочитали. Скетч соберётся, запустится и ничего не покажет. Поэтому список выше стоит прочитать раньше, чем начать искать ошибку у себя.
Bluetooth
Нет и не планируется по той же причине, что радиочасть Wi-Fi: контроллер работает через двоичные библиотеки Espressif, исходников и описания регистров нет.
Если чего-то не хватает
Напишите — очередь на моделирование составляется по тому, сколько проектов открывает каждый блок. Сейчас первым в ней стоит SPI.