Pro Notes 🚀

2025-05-02 15:13:04

Отличный выбор с **ESP32-C3-Zero** и **CircuitPython**! 😊 Да, проблема с отсутствием автоматического монтирования как USB-диска (как у некоторых других плат) действительно раздражает, но её можно решить несколькими способами.  

### 🔹 **Почему ESP32-C3-Zero не появляется как USB-диск?**  
1. **Отсутствие встроенного USB-UART чипа** (как CP2102/CH340 у других плат).  
2. **CircuitPython требует USB-масс-хранилища (MSC)**, но на ESP32-C3 это не всегда работает "из коробки".  
3. **Прошивка может не включать поддержку MSC** (Mass Storage Class) по умолчанию.  

---  
### 🔹 **Способы заливки файлов без ampy/rshell**  

#### **1. Включение USB-MSC в CircuitPython (если поддерживается)**  
Некоторые сборки CircuitPython для ESP32-C3 позволяют включить режим USB-диска вручную. Попробуй:  
1. Подключи плату по USB.  
2. Открой **REPL** (через `screen /dev/ttyACM0` или Thonny).  
3. Выполни в REPL:  
   ```python
   import storage
   storage.enable_usb_drive()  # Активирует USB-диск (если функция есть)
   ```  
4. Перезагрузи плату (возможно, появится диск).  

#### **2. Использование Web Workflow (самый удобный способ!)**  
CircuitPython 8.0+ поддерживает загрузку файлов **через браузер** по Wi-Fi!  
1. Обнови прошивку до **новой версии CircuitPython** (скачай с [оф. сайта](https://circuitpython.org/board/espressif_esp32c3_devkitm_1/)).  
2. В файле `boot.py` или `code.py` добавь:  
   ```python
   import wifi
   from supervisor import set_usb_identification
   
   # Настрой Wi-Fi (указать свои SSID и пароль)
   wifi.radio.connect("SSID", "PASSWORD")
   
   # Включи Web Workflow
   import socketpool
   import microcontroller
   microcontroller.on_next_reset(microcontroller.RunMode.NORMAL)
   ```  
3. После перезагрузки в REPL появится IP-адрес.  
4. Введи этот IP в браузере — откроется **веб-интерфейс для загрузки файлов**!  

#### **3. Альтернатива: UART + `circup` или `mpfshell`**  
Если USB-диск не работает, можно заливать файлы через UART:  
1. Установи **`circup`** (менеджер пакетов для CircuitPython):  
   ```bash
   pip install circup
   circup install --auto
   ```  
2. Или используй **`mpfshell`** (аналог ampy, но удобнее):  
   ```bash
   pip install mpfshell
   mpfshell -o ttyUSB0
   ```  
   Команды в `mpfshell`:  
   - `put main.py` – загрузить файл.  
   - `get main.py` – скачать файл.  
   - `ls` – список файлов.  

#### **4. Ручная прошивка с поддержкой USB-MSC**  
Если твоя сборка CircuitPython не поддерживает USB-диск, попробуй **кастомную прошивку**:  
1. Скачай прошивку с поддержкой MSC (например, [здесь](https://circuitpython.org)).  
2. Прошей через `esptool.py`:  
   ```bash
   esptool.py --chip esp32c3 --port /dev/ttyACM0 write_flash 0x0 firmware.bin
   ```  

---  
### 🔹 **Совет для будущих проектов**  
Если хочешь "автоматический" USB-диск, выбирай платы **с чипом USB-UART** (например, **ESP32-C3-DevKitM-1** или **Seeed XIAO ESP32-C3**). У них CircuitPython работает как флешка "из коробки".  

---  
### **Вывод**  
- **Лучший вариант** → **Web Workflow** (заливка по Wi-Fi).  
- **Если не работает** → `circup`/`mpfshell` через UART.  
- **Экспериментально** → кастомная прошивка с USB-MSC.  

Попробуй и расскажи, какой способ сработал! Если остались вопросы — помогу разобраться. 😉🚀  

P.S. Если хочешь, могу подсказать, как настроить **автоматическую синхронизацию файлов** через VS Code!

        
← Previous
Back to list