debuter_en_python:micropython
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| debuter_en_python:micropython [2024/11/09 16:01] – gerardadmin | debuter_en_python:micropython [2026/07/23 14:50] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ======== MicroPython sur ESP8266 ou ESP32 ======== | ||
| - | < | ||
| - | |||
| - | Premiers pas avec MicroPython sur l' | ||
| - | ============================================== | ||
| - | [Reference Micropython](https:// | ||
| - | |||
| - | L' | ||
| - | vice versa, la puce ESP32 est une excellente plate-forme pour utiliser MicroPython. | ||
| - | Le didacticiel vous guidera dans la configuration de MicroPython, | ||
| - | WebREPL, connexion au réseau et communication avec Internet, en utilisant | ||
| - | les périphériques matériels et le contrôle de certains composants externes. | ||
| - | |||
| - | C'est parti ! | ||
| - | |||
| - | Exigences | ||
| - | ------------ | ||
| - | |||
| - | La première chose dont vous avez besoin est une carte avec une puce ESP32. Le MicroPython | ||
| - | Le logiciel prend en charge la puce ESP32 elle-même et n' | ||
| - | la caractéristique d'une carte est la façon dont les broches GPIO sont connectées à l' | ||
| - | monde, et s'il comprend un convertisseur USB-série intégré pour rendre le | ||
| - | UART disponible sur votre PC. | ||
| - | |||
| - | Les noms des broches seront donnés dans ce tutoriel en utilisant les noms des puces (par exemple GPIO2) | ||
| - | et il devrait être simple de trouver à quelle broche cela correspond sur votre | ||
| - | conseil particulier. | ||
| - | |||
| - | Alimentation de la carte | ||
| - | ------------------ | ||
| - | |||
| - | Si votre carte est équipée d'un connecteur USB, il est fort probable qu' | ||
| - | ceci lorsqu' | ||
| - | Veuillez vous référer à la documentation de votre carte pour plus de détails. | ||
| - | |||
| - | Obtenir le firmware | ||
| - | -------------------- | ||
| - | |||
| - | La première chose à faire est de télécharger le firmware MicroPython le plus récent | ||
| - | .bin à charger sur votre appareil ESP32. Vous pouvez le télécharger à partir du | ||
| - | [Page de téléchargement de MicroPython](https:// | ||
| - | À partir de là, vous avez 3 choix principaux : | ||
| - | |||
| - | * Versions de firmware stables | ||
| - | * Versions quotidiennes du firmware | ||
| - | * Versions quotidiennes du firmware avec prise en charge de SPIRAM | ||
| - | |||
| - | Si vous débutez avec MicroPython, | ||
| - | versions de firmware. Si vous êtes un utilisateur avancé et expérimenté de MicroPython ESP32 | ||
| - | qui aimerait suivre de près le développement et aider à tester de nouveaux | ||
| - | fonctionnalités, | ||
| - | utilisez soit le firmware standard, soit le firmware avec support SPIRAM, et dans | ||
| - | dans ce dernier cas, vous aurez accès à plus de RAM pour les objets Python. | ||
| - | |||
| - | Déploiement du firmware | ||
| - | ---------------------- | ||
| - | |||
| - | Une fois que vous avez le firmware MicroPython, | ||
| - | Il y a deux étapes principales pour ce faire : vous devez d' | ||
| - | mode bootloader, et deuxièmement, | ||
| - | la procédure pour ces étapes dépend fortement de la carte en question et vous | ||
| - | il faut se référer à sa documentation pour plus de détails. | ||
| - | |||
| - | Heureusement, | ||
| - | et les broches RTS câblées d'une manière spéciale, le déploiement du firmware devrait être aussi simple que | ||
| - | toutes les étapes peuvent être effectuées automatiquement. Les cartes qui ont de telles fonctionnalités | ||
| - | incluent les Adafruit Feather HUZZAH32, M5Stack, Wemos LOLIN32 et TinyPICO | ||
| - | cartes, ainsi que les kits de développement Espressif DevKitC, PICO-KIT, WROVER-KIT. | ||
| - | |||
| - | Pour de meilleurs résultats, il est recommandé d' | ||
| - | appareil avant d' | ||
| - | |||
| - | Actuellement, | ||
| - | cet outil [ici](https:// | ||
| - | |||
| - | en utilisant pip:: | ||
| - | |||
| - | pip installe esptool | ||
| - | |||
| - | Les versions commençant par 1.3 prennent en charge Python 2.7 et Python 3.4 (ou plus récent). | ||
| - | Une version plus ancienne (au moins 1.2.1 est nécessaire) fonctionne bien mais nécessitera Python | ||
| - | 2.7. | ||
| - | |||
| - | En utilisant esptool.py, vous pouvez effacer le flash avec la commande : | ||
| - | |||
| - | esptool.py --port / | ||
| - | |||
| - | Et puis déployez le nouveau firmware en utilisant :: | ||
| - | |||
| - | esptool.py --chip esp32 --port / | ||
| - | |||
| - | Remarques : | ||
| - | |||
| - | * Vous devrez peut-être modifier le paramètre « port » en quelque chose d' | ||
| - | PC | ||
| - | * Vous devrez peut-être réduire le débit en bauds si vous obtenez des erreurs lors du flashage | ||
| - | (par exemple jusqu' | ||
| - | * Pour certaines cartes avec une configuration FlashROM particulière, | ||
| - | changer le mode flash (par exemple en ajoutant ``-fm dio`` dans la commande) | ||
| - | * Le nom de fichier du firmware doit correspondre au fichier que vous avez | ||
| - | |||
| - | Si les commandes ci-dessus s' | ||
| - | votre planche ! | ||
| - | |||
| - | Invite série | ||
| - | ------------- | ||
| - | |||
| - | Une fois que vous avez le firmware sur l' | ||
| - | via UART0 (GPIO1=TX, GPIO3=RX), qui peut être connecté à un port USB-série | ||
| - | convertisseur, | ||
| - | |||
| - | À partir de là, vous pouvez maintenant suivre le tutoriel ESP8266, car ces deux puces Espressif | ||
| - | sont très similaires lorsqu' | ||
| - | se trouve dans : | ||
| - | |||
| - | Dépannage des problèmes d' | ||
| - | ---------------------------------------------------- | ||
| - | |||
| - | Si vous rencontrez des problèmes lors du flashage ou de l' | ||
| - | après cela, voici des recommandations de dépannage : | ||
| - | |||
| - | * Soyez attentif et essayez d' | ||
| - | Problèmes : mauvaise qualité de la source d' | ||
| - | En parlant de source d' | ||
| - | ondulation et bruit/EMI en général. L' | ||
| - | la source est un port USB. | ||
| - | |||
| - | * Les instructions de clignotement ci-dessus utilisent une vitesse de clignotement de 460800 bauds, ce qui est | ||
| - | bon compromis entre vitesse et stabilité. Cependant, selon votre | ||
| - | module/ | ||
| - | Le débit peut être trop élevé et entraîner des erreurs. Essayez un débit plus courant de 115 200 bauds. | ||
| - | Dans de tels cas, il est préférable d' | ||
| - | |||
| - | * Pour détecter un contenu flash incorrect (par exemple provenant d'un secteur défectueux sur une puce), | ||
| - | ajoutez le commutateur « --verify » aux commandes ci-dessus. | ||
| - | |||
| - | * Si vous rencontrez toujours des problèmes lors du flashage du firmware, veuillez | ||
| - | se référer à [la page du projet esptool.py](https:// | ||
| - | pour une documentation supplémentaire et un outil de suivi des bogues où vous pouvez signaler les problèmes. | ||
| - | |||
| - | * Si vous parvenez à flasher le firmware mais que l' | ||
| - | des erreurs même après plusieurs tentatives peuvent survenir, vous avez peut-être une puce FlashROM défectueuse. | ||
| - | |||
| - | Modulation de largeur d' | ||
| - | ====================== | ||
| - | |||
| - | La modulation de largeur d' | ||
| - | broche numérique. Cela se fait en basculant rapidement la broche de bas en haut. | ||
| - | Il y a deux paramètres associés à cela : la fréquence du basculement, | ||
| - | et le cycle de service. Le cycle de service est défini comme la durée pendant laquelle la broche est haute | ||
| - | par rapport à la durée d'une seule période (temps bas et temps haut). Maximum | ||
| - | le cycle de service est lorsque la broche est haute tout le temps, et le minimum est lorsqu' | ||
| - | bas tout le temps. | ||
| - | |||
| - | * Exemple plus complet avec les 16 canaux PWM et les 8 temporisateurs :: | ||
| - | |||
| - | à partir de l' | ||
| - | essayer: | ||
| - | f = 100 # Hz | ||
| - | d = 1024 // 16 # 6,25% | ||
| - | broches = (15, 2, 4, 16, 18, 19, 22, 23, 25, 26, 27, 14, 12, 13, 32, 33) | ||
| - | pwms = [] | ||
| - | pour i, épingle dans enumerate(pins) : | ||
| - | pwms.append(PWM(Pin(pin), | ||
| - | imprimer(pwms[i]) | ||
| - | enfin: | ||
| - | pour pwm dans pwms : | ||
| - | essayer: | ||
| - | pwm.deinit() | ||
| - | sauf: | ||
| - | passer | ||
| - | |||
| - | La sortie est : | ||
| - | |||
| - | | ||
| - | * PWM (Pin (15), fréquence = 100, service = 64, résolution = 10, mode = 0, canal = 0, minuterie = 0) | ||
| - | * | ||
| - | * PWM (Pin (2), fréquence = 100, service = 128, résolution = 10, mode = 0, canal = 1, minuterie = 0) | ||
| - | * | ||
| - | * PWM (Pin (4), fréquence = 200, service = 192, résolution = 10, mode = 0, canal = 2, minuterie = 1) | ||
| - | * | ||
| - | * PWM (broche (16), fréquence = 200, service = 256, résolution = 10, mode = 0, canal = 3, minuterie = 1) | ||
| - | * | ||
| - | * PWM (Pin (18), fréquence = 300, service = 320, résolution = 10, mode = 0, canal = 4, minuterie = 2) | ||
| - | * | ||
| - | * PWM (broche (19), fréquence = 300, service = 384, résolution = 10, mode = 0, canal = 5, minuterie = 2) | ||
| - | * | ||
| - | * PWM (Pin (22), fréquence = 400, service = 448, résolution = 10, mode = 0, canal = 6, minuterie = 3) | ||
| - | * | ||
| - | * PWM (Pin (23), fréquence = 400, service = 512, résolution = 10, mode = 0, canal = 7, minuterie = 3) | ||
| - | * | ||
| - | * PWM (Pin (25), fréquence = 500, service = 576, résolution = 10, mode = 1, canal = 0, minuterie = 0) | ||
| - | * | ||
| - | * PWM (Pin (26), fréquence = 500, service = 640, résolution = 10, mode = 1, canal = 1, minuterie = 0) | ||
| - | * | ||
| - | * PWM (broche (27), fréquence = 600, service = 704, résolution = 10, mode = 1, canal = 2, minuterie = 1) | ||
| - | * | ||
| - | * PWM (broche (14), fréquence = 600, service = 768, résolution = 10, mode = 1, canal = 3, minuterie = 1) | ||
| - | * | ||
| - | * PWM (broche (12), fréquence = 700, service = 832, résolution = 10, mode = 1, canal = 4, minuterie = 2) | ||
| - | * | ||
| - | * PWM (broche (13), fréquence = 700, service = 896, résolution = 10, mode = 1, canal = 5, minuterie = 2) | ||
| - | * | ||
| - | * PWM (Pin (32), fréquence = 800, service = 960, résolution = 10, mode = 1, canal = 6, minuterie = 3) | ||
| - | * | ||
| - | * PWM (Pin (33), fréquence = 800, service = 1023, résolution = 10, mode = 1, canal = 7, minuterie = 3) | ||
| - | |||
| - | |||
| - | |||
| - | * Exemple de changement de fréquence en douceur :: | ||
| - | |||
| - | à partir du temps importer le sommeil | ||
| - | à partir de l' | ||
| - | |||
| - | F_MIN = 500 | ||
| - | F_MAX = 1000 | ||
| - | |||
| - | f = F_MIN | ||
| - | delta_f = 1 | ||
| - | |||
| - | p = PWM(broche(5), | ||
| - | imprimer(p) | ||
| - | |||
| - | tant que Vrai : | ||
| - | p.fréq(f) | ||
| - | |||
| - | dormir(10 / F_MIN) | ||
| - | |||
| - | f += delta_f | ||
| - | si f >= F_MAX ou f <= F_MIN : | ||
| - | delta_f = -delta_f | ||
| - | |||
| - | Voir l'onde PWM sur la broche (5) avec un oscilloscope. | ||
| - | |||
| - | * Exemple de changement de service en douceur :: | ||
| - | |||
| - | à partir du temps importer le sommeil | ||
| - | à partir de l' | ||
| - | |||
| - | SERVICE_MAX = 2**16 - 1 | ||
| - | |||
| - | duty_u16 = 0 | ||
| - | delta_d = 16 | ||
| - | |||
| - | p = PWM(Pin(5), 1000, duty_u16=duty_u16) | ||
| - | imprimer(p) | ||
| - | |||
| - | tant que Vrai : | ||
| - | p.duty_u16(duty_u16) | ||
| - | |||
| - | dormir (1 / 1000) | ||
| - | |||
| - | duty_u16 += delta_d | ||
| - | si duty_u16 >= DUTY_MAX : | ||
| - | duty_u16 = DUTY_MAX | ||
| - | delta_d = -delta_d | ||
| - | elif duty_u16 <= 0: | ||
| - | duty_u16 = 0 | ||
| - | delta_d = -delta_d | ||
| - | |||
| - | Voir l'onde PWM sur la broche (5) avec un oscilloscope. | ||
| - | |||
| - | Remarque : il n'est pas nécessaire de spécifier le mode Pin.OUT. Le canal est initialisé | ||
| - | en mode PWM en interne une fois pour chaque broche transmise au constructeur PWM. | ||
| - | |||
| - | Le code suivant est erroné :: | ||
| - | |||
| - | pwm = PWM(Pin(5, Pin.OUT), freq=1000, duty=512) # Pin(5) en mode PWM ici | ||
| - | pwm = PWM(Pin(5, Pin.OUT), freq=500, duty=256) # Pin(5) en mode OUT ici, PWM est désactivé | ||
| - | |||
| - | Utilisez plutôt ce code :: | ||
| - | |||
| - | pwm = PWM(Pin(5), freq=1000, duty=512) | ||
| - | pwm.init(fréquence=500, | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | </ | ||
/home/chanteri/www/fablab37110/data/attic/debuter_en_python/micropython.1731164491.txt.gz · Dernière modification : de gerardadmin
