Initial release 1.2.2
This commit is contained in:
+301
@@ -0,0 +1,301 @@
|
||||
# Spécifications — Wemos D1 R32 ESP32
|
||||
|
||||
## Microcontrôleur
|
||||
|
||||

|
||||
|
||||
> Les images du dossier `image/` correspondent à une **Wemos D1 R32 ESP32**, au format Arduino UNO, et non à une D1 Mini compacte. Les indications de GPIO du firmware restent valables : c'est toujours le numéro GPIO ESP32 qui compte.
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|---|---|
|
||||
| Module | ESP32-WROOM-32 |
|
||||
| Puce détectée | ESP32-D0WDQ6 revision v1.0 |
|
||||
| Famille Espressif | ESP32 classique / ESP32 original series |
|
||||
| Architecture | Xtensa LX6 dual-core 32 bits |
|
||||
| Fréquence CPU | jusqu'à 240 MHz (configurable : 80 / 160 / 240 MHz) |
|
||||
|
||||
Identification locale effectuée avec `esptool` sur `/dev/ttyUSB0` :
|
||||
|
||||
```text
|
||||
Chip type: ESP32-D0WDQ6 (revision v1.0)
|
||||
Features: Wi-Fi, BT, Dual Core + LP Core, 240MHz
|
||||
Crystal frequency: 40MHz
|
||||
USB-série: CH340, VID:PID=1A86:7523
|
||||
```
|
||||
|
||||
Source constructeur : [Espressif — ESP32 Series Datasheet](https://documentation.espressif.com/esp32_datasheet_en.html) et [Espressif — ESP32-WROOM-32 Datasheet](https://documentation.espressif.com/esp32-wroom-32_datasheet_en.html). Le module ESP32-WROOM-32 embarque un **ESP32-D0WDQ6**, avec un microprocesseur **Xtensa dual-core 32-bit LX6** jusqu'à 240 MHz, WiFi 2,4 GHz et Bluetooth/BLE.
|
||||
|
||||
### Position par rapport aux autres familles ESP32
|
||||
|
||||
Sur Internet, on voit souvent les variantes `ESP32-C3`, `ESP32-C6`, `ESP32-S2`, `ESP32-S3`, `ESP32-H2`, etc. Ta carte **n'appartient à aucune de ces familles** : elle utilise la famille ESP32 historique.
|
||||
|
||||
| Famille | Architecture typique | Connectivité typique | Ta carte ? |
|
||||
|---|---|---|---|
|
||||
| ESP32 / ESP32-D0WDQ6 | Xtensa LX6 dual-core | WiFi + Bluetooth Classic + BLE | ✅ Oui |
|
||||
| ESP32-C3 | RISC-V single-core | WiFi + BLE | Non |
|
||||
| ESP32-C6 | RISC-V | WiFi 6 + BLE + 802.15.4 | Non |
|
||||
| ESP32-S2 | Xtensa LX7 single-core | WiFi, pas Bluetooth classique | Non |
|
||||
| ESP32-S3 | Xtensa LX7 dual-core | WiFi + BLE, orienté IA/vectoriel | Non |
|
||||
| ESP32-H2 | RISC-V | BLE + 802.15.4, pas WiFi | Non |
|
||||
|
||||
Conséquence pratique : pour PlatformIO, le choix actuel `board = esp32dev` et `framework = arduino` est cohérent avec cette carte. Les guides ou pinouts spécifiques `C3`, `C6`, `S2`, `S3` ou `H2` ne doivent pas être appliqués directement à ton câblage.
|
||||
|
||||
## Mémoire
|
||||
|
||||
| Type | Capacité |
|
||||
|---|---|
|
||||
| Flash SPI (interne au module) | 4 MB |
|
||||
| ROM | 448 KB |
|
||||
| SRAM | 520 KB |
|
||||
|
||||
> GPIO6–11 réservés au bus Flash — ne jamais les utiliser.
|
||||
|
||||
## Dimensions
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|---|---|
|
||||
| PCB | format Arduino UNO |
|
||||
| Pas des broches | 2,54 mm |
|
||||
| Compatibilité breadboard | Non directement, carte large type UNO |
|
||||
| Compatibilité shields | Shields Arduino UNO, selon brochage et tensions |
|
||||
|
||||
## Add-on de câblage : screw shield
|
||||
|
||||

|
||||
|
||||
Le shield à borniers montré dans `image/screwshield.png` est un **screw shield / proto shield au format Arduino UNO**. Il est adapté à cette carte parce que la Wemos D1 R32 reprend l'empreinte mécanique Arduino UNO : le shield vient s'enficher sur les deux rangées latérales et expose les broches sur des borniers à vis.
|
||||
|
||||
### Compatibilité
|
||||
|
||||
| Point | Compatibilité | Commentaire |
|
||||
|---|---|---|
|
||||
| Format physique | ✅ Oui | La D1 R32 est au format Arduino UNO |
|
||||
| Alimentation 3V3 / 5V / GND | ✅ Oui | Les borniers reprennent les broches d'alimentation |
|
||||
| Signaux numériques | ✅ Oui | Utilisables si la correspondance GPIO est respectée |
|
||||
| Zone de prototypage | ✅ Oui | Pratique pour la résistance pull-up 4,7 kΩ des DS18B20 |
|
||||
| Shields Arduino 5 V | ⚠️ Prudence | L'ESP32 n'est pas tolérant 5 V sur ses GPIO |
|
||||
|
||||
### Point d'attention important
|
||||
|
||||
Le shield peut afficher des noms de broches **Arduino** (`A0`, `A1`, `D13`, etc.), alors que le firmware utilise les vrais numéros **ESP32 GPIO** (`GPIO4`, `GPIO27`, `GPIO21`, etc.).
|
||||
|
||||
Pour éviter une erreur de câblage :
|
||||
|
||||
1. Repérer la broche voulue sur le pinout D1 R32 ci-dessous.
|
||||
2. Vérifier à quel bornier du screw shield elle correspond.
|
||||
3. Câbler selon le numéro GPIO utilisé dans `include/config.h`.
|
||||
|
||||
Sur la D1 R32, **GPIO27 est exposé sur la broche Arduino `D6`**. Sur le screw shield, le bornier à utiliser pour le bus DS18B20 est donc **D6**. Il faut se fier à la table de correspondance ci-dessous, pas seulement au numéro GPIO écrit dans le firmware.
|
||||
|
||||
### Utilisation dans le projet esp_jardin
|
||||
|
||||
Dans ton cas, le screw shield sert surtout à fiabiliser le câblage extérieur des sondes DS18B20 :
|
||||
|
||||
- les trois fils `VCC` des sondes vont sur un bornier relié au `3V3`,
|
||||
- les trois fils `GND` vont sur un bornier `GND`,
|
||||
- les trois fils `DATA` vont sur le bornier **D6**, correspondant à `GPIO27`,
|
||||
- la résistance **4,7 kΩ** peut être placée dans la zone de prototypage entre `3V3` et `DATA`.
|
||||
|
||||
## Alimentation
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|---|---|
|
||||
| USB | 5 V Micro-USB |
|
||||
| Broche VIN | 5 V – 12 V (non régulé) |
|
||||
| Sortie 3V3 | 3,3 V régulé (usage externe limité) |
|
||||
| Régulateur | ME6211 (500 mA) ou AMS1117-3.3 (800 mA) selon version |
|
||||
| Courant actif WiFi | ~80 mA pic |
|
||||
| Deep sleep | < 10 µA |
|
||||
|
||||
### Réponse à la question d'alimentation
|
||||
|
||||
**L'USB suffit largement.**
|
||||
Une batterie solaire avec sortie USB 5 V alimente parfaitement la carte via le port Micro-USB. Le régulateur embarqué gère la tension 5 V → 3,3 V. La broche VIN (5 V–12 V) est une entrée alternative pour une alimentation sans connecteur USB (adaptateur secteur, alimentation industrielle, etc.) — elle n'est pas nécessaire ici.
|
||||
|
||||
Consommation typique du projet esp_jardin :
|
||||
- ESP32 WiFi actif : ~80 mA
|
||||
- 3 × DS18B20 : ~5 mA chacune
|
||||
- **Total : ~95–100 mA**, bien en dessous des 500 mA du régulateur.
|
||||
|
||||
Une batterie solaire USB standard de 10 000 mAh offre environ **4 jours d'autonomie** sans soleil.
|
||||
|
||||
## Connectivité sans fil
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|---|---|
|
||||
| WiFi | 802.11 b/g/n — 2,4 GHz uniquement |
|
||||
| Bluetooth | 4.2 (BR/EDR + BLE) |
|
||||
| Antenne | PCB intégrée (version WROOM-32 standard) |
|
||||
|
||||
La version WROOM-32**U** dispose d'un connecteur U.FL pour antenne externe.
|
||||
|
||||
## GPIO disponibles
|
||||
|
||||

|
||||
|
||||
> Pour le câblage, se fier aux étiquettes **GPIOxx** du pinout. Les libellés type `IO4`, `IO27`, `SDA`, `SCL` ou `RX/TX` sont des repères de connecteur, mais le firmware PlatformIO utilise les numéros GPIO ESP32.
|
||||
|
||||
### Synthèse RIOT-OS / ESP32
|
||||
|
||||
Source : [RIOT-OS — ESP32 SoC Series, Common Peripherals](https://api.riot-os.org/group__cpu__esp32.html#esp32_peripherals) et [RIOT-OS — ESP32 family](https://api.riot-os.org/group__cpu__esp32__esp32.html).
|
||||
|
||||
La documentation RIOT-OS confirme les points suivants pour l'ESP32 utilisé par la D1 R32 :
|
||||
|
||||
| Sujet | Synthèse utile pour esp_jardin |
|
||||
|---|---|
|
||||
| GPIO disponibles | L'ESP32 expose 34 GPIO, mais tous ne sont pas équivalents. Certains sont réservés, entrée seule ou liés au boot. |
|
||||
| GPIO34 à GPIO39 | Entrée uniquement. Bons candidats pour de l'analogique, mais pas pour piloter un bus OneWire ou une sortie. |
|
||||
| ADC1 | GPIO32 à GPIO39. C'est le bon choix pour de futures sondes analogiques, notamment humidité du sol. |
|
||||
| ADC2 | GPIO0, 2, 4, 12 à 15, 25 à 27. À éviter pour l'analogique quand le WiFi est actif, car ADC2 est aussi utilisé par le WiFi. |
|
||||
| GPIO4 | Utilisable en entrée/sortie numérique, mais laissé libre dans ce projet depuis le passage du bus DS18B20 sur GPIO27. |
|
||||
| GPIO25 / GPIO26 | Sorties DAC matérielles disponibles. Utilisables aussi en numérique/PWM si le DAC n'est pas utilisé. |
|
||||
| I2C par défaut | SDA=GPIO21, SCL=GPIO22. À réserver pour capteurs I2C futurs. |
|
||||
| SPI général | VSPI utilise classiquement GPIO18/19/23/5. HSPI utilise GPIO14/12/13/15. |
|
||||
| Flash interne | GPIO6 à GPIO11 sont liés à la flash SPI et ne doivent pas être utilisés pour le projet. |
|
||||
| Bootstrapping | GPIO0, GPIO2, GPIO12 et GPIO15 ont des contraintes au démarrage. À éviter pour des signaux critiques ou tirés dans un état risqué. |
|
||||
|
||||
Conclusion pour le projet :
|
||||
|
||||
- `GPIO27 / D6` est utilisé pour les DS18B20 en **numérique OneWire**.
|
||||
- `GPIO4 / A1` reste compatible en numérique, mais n'est plus utilisé pour éviter l'ambiguïté ADC2.
|
||||
- Pour l'humidité du sol analogique, utiliser `GPIO32` ou `GPIO33`, pas `GPIO4`, `GPIO25`, `GPIO26` ou `GPIO27`.
|
||||
- Ne jamais utiliser `GPIO6`, `GPIO7`, `GPIO8`, `GPIO9`, `GPIO10`, `GPIO11`.
|
||||
|
||||
### Correspondance Arduino UNO / GPIO ESP32
|
||||
|
||||
Cette table reprend la configuration de compatibilité Arduino UNO de la D1 R32. Elle est utile avec le screw shield, car les borniers sont souvent marqués avec les noms Arduino (`A1`, `D6`, `SDA`, etc.).
|
||||
|
||||
| Fonction | GPIO ESP32 | Broche Arduino | Remarque |
|
||||
|---|---:|---|---|
|
||||
| ADC_LINE(0) / LED | GPIO2 | A0 | LED intégrée, éviter pour signaux critiques |
|
||||
| ADC_LINE(1) | GPIO4 | A1 | Libre, ancien choix DS18B20 |
|
||||
| ADC_LINE(2) | GPIO35 | A2 | Entrée seule, ADC1 |
|
||||
| ADC_LINE(3) | GPIO34 | A3 | Entrée seule, ADC1 |
|
||||
| ADC_LINE(4) | GPIO36 | A4 | Entrée seule, ADC1 |
|
||||
| ADC_LINE(5) | GPIO39 | A5 | Entrée seule, ADC1 |
|
||||
| DAC_LINE(0) / PWM | GPIO25 | D3 | DAC1 |
|
||||
| DAC_LINE(1) | GPIO26 | D2 | DAC2 |
|
||||
| I2C SDA | GPIO21 | SDA | I2C futur |
|
||||
| I2C SCL | GPIO22 | SCL | I2C futur |
|
||||
| PWM | GPIO16 | D5 | Libre possible |
|
||||
| PWM | GPIO27 | D6 | Bus DS18B20 actuel du projet |
|
||||
| PWM | GPIO13 | D9 | ADC2, éviter pour analogique avec WiFi |
|
||||
| SPI CS | GPIO5 | D10 | SPI VSPI CS |
|
||||
| SPI MOSI | GPIO23 | D11 | SPI VSPI MOSI |
|
||||
| SPI MISO | GPIO19 | D12 | SPI VSPI MISO |
|
||||
| SPI CLK | GPIO18 | D13 | SPI VSPI CLK |
|
||||
| UART0 TX | GPIO1 | D1 | USB/programming, éviter |
|
||||
| UART0 RX | GPIO3 | D0 | USB/programming, éviter |
|
||||
| UART1 TX | GPIO10 | D4 | Réservé flash sur ESP32-WROOM, ne pas utiliser |
|
||||
| UART1 RX | GPIO9 | D5 | Réservé flash sur ESP32-WROOM, ne pas utiliser |
|
||||
|
||||
> La ligne `UART1 GPIO10/GPIO9` existe dans certaines configurations théoriques Arduino UNO, mais sur ESP32-WROOM les GPIO6 à GPIO11 sont utilisés par la flash interne. Pour ce projet, ils doivent rester interdits.
|
||||
|
||||
### Interfaces de communication
|
||||
|
||||
| Interface | GPIO |
|
||||
|---|---|
|
||||
| UART0 (USB/prog) | TX=GPIO1, RX=GPIO3 |
|
||||
| UART2 possible | TX=GPIO17, RX=GPIO16 |
|
||||
| I2C (défaut) | SDA=GPIO21, SCL=GPIO22 |
|
||||
| SPI VSPI | MOSI=GPIO23, MISO=GPIO19, SCK=GPIO18, CS=GPIO5 |
|
||||
| SPI HSPI | MOSI=GPIO13, MISO=GPIO12, SCK=GPIO14, CS=GPIO15 |
|
||||
|
||||
### ADC — contrainte WiFi critique
|
||||
|
||||
| ADC | GPIO | WiFi actif |
|
||||
|---|---|---|
|
||||
| **ADC1** | GPIO32, 33, 34, 35, 36, 39 | ✅ Utilisable |
|
||||
| **ADC2** | GPIO0, 2, 4, 12, 13, 14, 15, 25, 26, 27 | ❌ Inutilisable en mode analogique |
|
||||
|
||||
> GPIO27 (OneWire DS18B20 du projet) appartient à ADC2 mais utilisé en numérique — pas de conflit.
|
||||
> Pour les futures sondes sol (humidité analogique) : utiliser GPIO32–39 (ADC1 uniquement).
|
||||
|
||||
### DAC
|
||||
|
||||
| Canal | GPIO |
|
||||
|---|---|
|
||||
| DAC1 | GPIO25 |
|
||||
| DAC2 | GPIO26 |
|
||||
|
||||
### Broches strapping (contraintes au boot)
|
||||
|
||||
| GPIO | Contrainte |
|
||||
|---|---|
|
||||
| GPIO0 | HIGH = boot normal / LOW = mode flash (bouton BOOT) |
|
||||
| GPIO2 | LED intégrée — éviter pour signaux critiques |
|
||||
| GPIO12 | LOW au boot obligatoire |
|
||||
| GPIO15 | Contrôle logs de boot |
|
||||
|
||||
## Interface USB
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|---|---|
|
||||
| Puce USB-UART | CH340C (certains clones : CH9102X ou CP2104) |
|
||||
| Connecteur | Micro-USB |
|
||||
| Auto-reset | Oui (circuit DTR/RTS) |
|
||||
|
||||
## LED et boutons
|
||||
|
||||
| Composant | Détail |
|
||||
|---|---|
|
||||
| LED bleue | GPIO2 — logique inversée (LOW = allumée) |
|
||||
| Bouton RST | Reset hardware |
|
||||
| Bouton BOOT (IO0) | Maintenir + RST pour entrer en mode flash |
|
||||
|
||||
## Correspondance avec le projet esp_jardin
|
||||
|
||||
| Fonction | GPIO | Statut |
|
||||
|---|---|---|
|
||||
| OneWire DS18B20 | GPIO27 / D6 | ✅ Utilisé |
|
||||
| I2C SDA (BH1750/SHT31) | GPIO21 | Réservé (futur) |
|
||||
| I2C SCL | GPIO22 | Réservé (futur) |
|
||||
| ADC sol (humidité) | GPIO32 ou GPIO33 | ADC1 — futur |
|
||||
| Relais | GPIO25 / GPIO26 | Futur |
|
||||
| Interruptions | GPIO14 | Futur |
|
||||
|
||||
### Branchement actuel des DS18B20
|
||||
|
||||
Les trois sondes DS18B20 se branchent en parallèle sur le même bus OneWire.
|
||||
|
||||
| Wemos D1 R32 | Screw shield | DS18B20 |
|
||||
|---|---|---|
|
||||
| 3V3 | 3V3 | VCC des 3 sondes |
|
||||
| GND | GND | GND des 3 sondes |
|
||||
| GPIO27 | D6 | DATA des 3 sondes |
|
||||
|
||||
Ajouter une résistance **4,7 kΩ** entre **3V3** et **D6 / GPIO27**.
|
||||
|
||||
```text
|
||||
3V3 ─────┬──────── VCC sonde 1
|
||||
├──────── VCC sonde 2
|
||||
├──────── VCC sonde 3
|
||||
│
|
||||
└─[ 4.7 kΩ ]─┐
|
||||
│
|
||||
D6 / GPIO27 ───────────┼──────── DATA sonde 1
|
||||
├──────── DATA sonde 2
|
||||
└──────── DATA sonde 3
|
||||
|
||||
GND ─────┬──────── GND sonde 1
|
||||
├──────── GND sonde 2
|
||||
└──────── GND sonde 3
|
||||
```
|
||||
|
||||
Couleurs fréquentes des sondes waterproof :
|
||||
|
||||
| Couleur | Signal |
|
||||
|---|---|
|
||||
| Rouge | VCC / 3V3 |
|
||||
| Noir | GND |
|
||||
| Jaune ou blanc | DATA / D6 / GPIO27 |
|
||||
|
||||
### Choix retenu
|
||||
|
||||
Le bus DS18B20 utilise désormais **GPIO27 / D6** :
|
||||
|
||||
```cpp
|
||||
#define ONE_WIRE_BUS 27
|
||||
```
|
||||
|
||||
Ce choix libère `A1 / GPIO4`, garde `GPIO21/22` pour l'I2C, et garde `GPIO32/33` pour les futures mesures analogiques.
|
||||
Reference in New Issue
Block a user