pysource présente 37 exemples de traitement d’images.
Suite à l’écoute de ces présentations, il devient facile de débuter dans le traitement d’images, qu’il s’agisse d’une image jpg ou d’une série de « cadres » d’une caméra.
pysource présente 37 exemples de traitement d’images.
Suite à l’écoute de ces présentations, il devient facile de débuter dans le traitement d’images, qu’il s’agisse d’une image jpg ou d’une série de « cadres » d’une caméra.
Le moindrement que le programme comporte plusieurs lignes, la mémoire disponible réservée pour le code est insuffisante. C’est le cas quand nous voulons avoir des interfaces Web et Bluetooth fonctionnelles simultanément. BluetoothSerial.h prend beaucoup de mémoire.
Par défaut, 1310720 octets sont réservés pour le code programme dans le «DOIT ESP32 DEVKIT V1». La mémoire flash 4MB est partitionnée et une bonne proportion de l’espace mémoire est réservée pour l’OTA (update Over the Air -> démo) et le SPIFFS (Serial Peripheral Interface Flash File System -> démo).
Lors de la compilation du programme, l’IDE ARDUINO lit le fichier
boards.txt du répertoire > C:\Users\NomDutilisateur\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.1
AppData est un répertoire système, par défaut il est masqué. Pour le voir, il faut cocher «Éléments masqués» dans l’explorateur Windows. Si ce n’est déjà fait, cochez aussi «Extensions de noms de fichiers».
Pour exécuter le partitionnement, le compilateur se réfère à la section correspondante au type de carte sélectionnée par l’utilisateur (dans le menu Outils de l’interface IDE).
##############################################################
esp32doit-devkit-v1.name=DOIT ESP32 DEVKIT V1
esp32doit-devkit-v1.upload.tool=esptool_py
esp32doit-devkit-v1.upload.maximum_size=1310720
esp32doit-devkit-v1.upload.maximum_data_size=327680
esp32doit-devkit-v1.upload.wait_for_upload_port=true
esp32doit-devkit-v1.serial.disableDTR=true
esp32doit-devkit-v1.serial.disableRTS=true
esp32doit-devkit-v1.build.mcu=esp32
esp32doit-devkit-v1.build.core=esp32
esp32doit-devkit-v1.build.variant=doitESP32devkitV1
esp32doit-devkit-v1.build.board=ESP32_DEV
esp32doit-devkit-v1.build.f_cpu=240000000L
esp32doit-devkit-v1.build.flash_mode=dio
esp32doit-devkit-v1.build.flash_size=4MB
esp32doit-devkit-v1.build.boot=dio
esp32doit-devkit-v1.build.partitions=default
esp32doit-devkit-v1.build.defines=
esp32doit-devkit-v1.menu.FlashFreq.80=80MHz
esp32doit-devkit-v1.menu.FlashFreq.80.build.flash_freq=80m
esp32doit-devkit-v1.menu.FlashFreq.40=40MHz
esp32doit-devkit-v1.menu.FlashFreq.40.build.flash_freq=40m
esp32doit-devkit-v1.menu.UploadSpeed.921600=921600
esp32doit-devkit-v1.menu.UploadSpeed.921600.upload.speed=921600
esp32doit-devkit-v1.menu.UploadSpeed.115200=115200
esp32doit-devkit-v1.menu.UploadSpeed.115200.upload.speed=115200
esp32doit-devkit-v1.menu.UploadSpeed.256000.windows=256000
esp32doit-devkit-v1.menu.UploadSpeed.256000.upload.speed=256000
esp32doit-devkit-v1.menu.UploadSpeed.230400.windows.upload.speed=256000
esp32doit-devkit-v1.menu.UploadSpeed.230400=230400
esp32doit-devkit-v1.menu.UploadSpeed.230400.upload.speed=230400
esp32doit-devkit-v1.menu.UploadSpeed.460800.linux=460800
esp32doit-devkit-v1.menu.UploadSpeed.460800.macosx=460800
esp32doit-devkit-v1.menu.UploadSpeed.460800.upload.speed=460800
esp32doit-devkit-v1.menu.UploadSpeed.512000.windows=512000
esp32doit-devkit-v1.menu.UploadSpeed.512000.upload.speed=512000
esp32doit-devkit-v1.menu.DebugLevel.none=None
esp32doit-devkit-v1.menu.DebugLevel.none.build.code_debug=0
esp32doit-devkit-v1.menu.DebugLevel.error=Error
esp32doit-devkit-v1.menu.DebugLevel.error.build.code_debug=1
esp32doit-devkit-v1.menu.DebugLevel.warn=Warn
esp32doit-devkit-v1.menu.DebugLevel.warn.build.code_debug=2
esp32doit-devkit-v1.menu.DebugLevel.info=Info
esp32doit-devkit-v1.menu.DebugLevel.info.build.code_debug=3
esp32doit-devkit-v1.menu.DebugLevel.debug=Debug
esp32doit-devkit-v1.menu.DebugLevel.debug.build.code_debug=4
Deux lignes sont importantes pour l’assignation de la mémoire:
Fichier par défaut pour le partitionnement
C:\Users\NomDutilisateur\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.1\tools\partitions\default.csv
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x140000,
app1, app, ota_1, 0x150000,0x140000,
eeprom, data, 0x99, 0x290000,0x1000,
spiffs, data, spiffs, 0x291000,0x16F000,
Placer dans un répertoire nommé «Affiche_Partitions», transférer dans le ESP32 et exécuter.
#include <esp_partition.h>
void setup() {
Serial.begin(115200);
const esp_partition_t *partition = NULL;
partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_0, "app0");
if (partition != NULL) {
Serial.printf("APP partition addr: 0x%08x; size: %d; label: %s\n", partition->address, partition->size, partition->label);
}
partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_1, "app1");
if (partition != NULL)
{
Serial.printf("OTA partition addr: 0x%08x; size: %d; label: %s\n", partition->address, partition->size, partition->label);
}
else
{
Serial.printf("No OTA partition found !\n");
}
partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, (esp_partition_subtype_t)0x99, "eeprom");
if (partition != NULL) {
Serial.printf("EEprom partition addr: 0x%08x; size: %d; label: %s\n", partition->address, partition->size, partition->label);
}
partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_SPIFFS, "spiffs");
if (partition != NULL) {
Serial.printf("SPIFFS partition addr: 0x%08x; size: %d; label: %s\n", partition->address, partition->size, partition->label);
}
}
void loop() {}
Afin de récupérer de l’espace mémoire pour le code, il est possible de modifier simplement le partitionnement de la mémoire.
Proposition de trois partitionnements. Il faut sacrifier la mémoire pour l’OTA ou diminuer la mémoire pour le SPIFFS.
Fichiers sources à placer dans le répertoire (s’ils sont absents) :
->
C:\Users\NomDutilisateur\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.1\tools\partitions
https://github.com/espressif/arduino-esp32/tree/master/tools/partitions
PROCÉDURE
Le choix du partitionnement se fera à l’aide du menu outil, mais avant il faut ajouter des lignes de code dans le fichier boards.txt. Pour certains types de cartes, ces lignes sont déjà présentes, mais pour la carte «DOIT ESP32 DEVKIT V1» elles sont manquantes.
esp32doit-devkit-v1.menu.PartitionScheme.default=Default (32-32-36)
esp32doit-devkit-v1.menu.PartitionScheme.default.build.partitions=default
esp32doit-devkit-v1.menu.PartitionScheme.no_ota=No OTA (Large APP) (50-00-50)
esp32doit-devkit-v1.menu.PartitionScheme.no_ota.build.partitions=no_ota
esp32doit-devkit-v1.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
esp32doit-devkit-v1.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA) (76-00-24)
esp32doit-devkit-v1.menu.PartitionScheme.huge_app.build.partitions=huge_app
esp32doit-devkit-v1.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
esp32doit-devkit-v1.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (Large APPS with OTA) (47-47-05)
esp32doit-devkit-v1.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
esp32doit-devkit-v1.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
Les nouveaux choix sont accessibles dans le menu «Outils» suite à la sélection de la carte «DOIT ESP32 DEVKIT V1»
Vous pouvez valider les changements en exécutant le programme d’affichage du partitionnement du ESP32
Le module «ESP32 DEVKIT V1» vient en version 30 broches et 36
broches.
Le module 30 broches n’intègre pas les broches SCK/CLK, SD0/SD0, SD1/SD1, SHD/SD2, SWP/SD3 ET SCS/CMD aussi nommées GPIO6 à GPIO11. Ces broches sont connectées au SPI flash dans le ESP-WROOM-32 et elles ne sont pas recommandées pour tout autre usage.
Remarque importante, le GPIO0 n’existe pas sur la version 30 broches, la broche correspondante sur cette version est une MALT ( GND) !
La plaquette supporte les deux versions. Afin de l’adapter à la version 30 broches, il suffit d’ajouter 3 cavaliers.
S’il est requis d’avoir une source 3.3V qui fournit plus de 800ma, on omet le cavalier ajouté à droite. On relie directement la nouvelle source 3.3V dans le trou en bas à droite. Je prévois, à la version 8,2, ajouter un jeu de broches/cavalier pour alimenter le NRF24L01 avec une source 3.3V autre que celle fournie par le «ESP32 DEVKIT V1» même quand on utilise le 36 broches. Option parfois nécessaire pour augmenter la stabilité et la portée du NRF24L01.
Les modèles «ESP32 DEVKIT V1» que j’utilise :
Le 36 broches vendu par Geekcreit sur «banggood.com»
Le 30 broches ESP32S ESP32 2.4GHz Dual-Mode WiFi CH340G/CP2102 +Bluetooth Module IPEX Antenna | eBay https://ebay.us/z8qVj5
Le lien va sur Ebay.ca, sélection à faire : CP2102
Présentation des différentes étapes de fabrication de la plaquette du circuit imprimé de ma carte multifonctionnelle ESP32
Le logiciel employé pour la conception du circuit est FRITZING. Logiciel open-source qui permet de faire le schéma de prototypage, le schéma électrique et le circuit imprimé. Versatile, il offre la possibilité de créer de nouveaux composants si ceux qui vous sont requis ne sont pas dans les bibliothèques de composants déjà existants.
Pour l’édition de nouveaux composants, j’ai utilisé le logiciel libre de dessin vectoriel INKSCAPE
Pour la fabrication, j’ai choisi la méthode de transfert d’encre sur le cuivre par la chaleur en employant un fer à repasser. J’ai consulté ce vidéo qui m’a grandement aidé.
Le papier de transfert PCB FAB -IN A -BOX donne de bons résultats. Il est disponible chez KGE ÉLECTRONIQUE à Saint-Hubert. Les feuilles venant en format 8,5 * 11 pouces, j’ai retaillé en plus petit format les feuilles pour augmenter le nombre de plaquettes de circuit imprimé réalisables par feuille. La feuille retaillée est collée avec du ruban collant au centre d’une feuille 8,5 * 11 pouces standard. J’imprime préalablement le circuit sur la feuille standard pour me donner des repères pour l’alignement de mon papier de transfert. La feuille est introduite face vers le bas dans le panier de l’imprimante. J’ajuste la configuration de l’imprimante laser pour une impression au centre et en sélectionnant la plus haute résolution HQ1200 ppp.
Le microcontrôleur «ESP32 DEVKIT V1 DOIT» est un circuit programmable compatible à l’environnement ARDUINO. Il accepte les composantes offertes pour les ARDUINO. Le module de développement «ESP32 DEVKIT V1 DOIT» est construit autour du circuit ESP32. L’unité ESP32 se programme avec l’interface IDE ARDUINO. Un grand avantage de ce circuit, c’est qu’il intègre la connectivité sans fil WIFI et Bluetooth.
ESP32 – Documentation du manufacturier
Débuter avec le «ESP32 Development Board»
Comment installer les bibliothèques ESP32 dans l’IDE ARDUINO