Accéder au contenu principal

Débuter avec Lopy 4

Débuter avec Lopy 4

Débuter avec Lopy 4

Je profites de cette période de confinement pour ressortir de mon placard mon Lopy4 qui trainait dans un tiroir. J'ai avec une carte d'extension Pytrack. A noter qu'il est bien pratique d'avoir une des cartes d'extension pour pouvoir s'y connecter facilement. Les barbus pourront toujours s'y connecter directement avec un adaptateur USB-série, mais ici on fait la méthode simple, on prend une des cartes d'extension.

Mettre à jour la carte d'extension

Bon, comme je ne sais plus dans quel état j'ai laissé mon matos, une (re)mise à jour s'impose. On commence par le Pytrack, la page officielle est bien faite. Je résume pour tous ceux (comme moi) qui auront la flemme de tout lire, surtout si ça se passe bien.
  1. Installer dfu-util :
sudo apt install dfu-util
  1. Mettre à jour :
    1. Débranchez le câble de la carte
    2. Appuyez et maintenez le bouton (S1 pour l'expansion board)
    3. Branchez le câble USB et attendez une seconde avant de relâcher le bouton
    4. sudo dfu-util -D pytrack_0.0.8.dfu
    Ça c'est la traduction de la documentation d'origine. Pour la blague, moi j'ai dû maintenir le bouton enfoncé le temps de la mise à jour (qui prend 2 secondes au passage)
Voilà, notre carte d'extension est maintenant fonctionnelle !

Mettre à jour Lopy4

Je vous mets la manière officielle puis je vous montre pour mon cas (qui est bien pourri ^^).

Mode nominal

Voilà, ça devrait fonctionner ;)

Mode dégradé

Comme j'avais joué un peu avec mon Lopy lors de mon dernier projet (je m'en étais servi en tant que microcontrôleur ESP32 directement avec le framework d'Espressif), je dois d'abord effacer la mémoire. Pour pimenter le tout, je fais toutes mes expériences depuis un Raspberry PI 3 #modedégradé. C'est partit pour le délire !

Outil Pycom sur Raspberry Pi

Vous trouverez le binaire sur une ancienne version, la seule qui supporte l'architecture armhf. On extrait l'archive, l'exécutable qui nous intéresse est pycom-fwtool-cli. On peut alors poursuivre.

Effacer la mémoire

Comme j'ai eu la bonne idée de faire tourner un programme en boucle infini, j'ai que des souci. Heureusement, l'outil permet d'effacer la mémoire (erase_fs). Evidemment, chez moi ça ne fonctionne pas directement, il faut utiliser le mode pic. Du coup, la commande complète est :
./pycom-fwtool-cli -v --pic -p /dev/ttyACM0 erase_fs
Le -v est pour le mode détaillé (verbose) ; --pic pour activer ce mode ; -p /dev/ttyACM0 pour définir le port sur lequel est connecté la carte ; erase_fs c'est pour effacer le système de fichier.
Et là normalement, sous vos yeux ébahis, vous devriez avoir quelque chose du genre :
Running in PIC mode Erasing the flash fs can take up to 30 seconds. Product ID: 19 HW Version: 3 FW Version: 0.0.8 Connecting.... Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Auto-detected Flash size: 8MB Erasing 508 kb at address 380000 Erasing 512 kb at address 400000 Erasing 512 kb at address 480000 Erasing 512 kb at address 500000 Erasing 512 kb at address 580000 Erasing 512 kb at address 600000 Erasing 512 kb at address 680000 Erasing 512 kb at address 700000 Erasing 512 kb at address 780000 Flash file system erasure successful

Flasher le Pycom

L'outil pycom-fwtool-cli nous permet de réaliser le flashage du Pycom. En ragrdant la doc officielle, c'est écrit que l'option flash permet d'écrire le firmware, à condition qu'il soit au format .tar(.gz) et qu'ils se trouvent sur la page Github. C'est pas faux, sauf qu'ils sont au formet .elf. On a la poisse ou on ne l'a pas...
Heureusement que le forum est d'une aide précieuse !! Il y a deux solutions :
Je vous l'avoue, par flemme, je prends le dépôt. Je suis dans une configuration de test, je n'ai pas de contrainte de sécurité spécifique. Evidemment, pour un système que l'on souhaite mettre en prod, on fera sa propre compilation :). Du coup, je peux flasher en faisant :
./pycom-fwtool-cli -v --pic -p /dev/ttyACM0 flash -t LoPy4-1.20.2.rc3.tar.gz (oui, je dois conserver le mode pic, ftdi ne fonctionne pas)
Running in PIC mode Product ID: 0 HW Version: 240 FW Version: 0.0.0 Connecting.... Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Erasing 256 kb at address 1000 Erasing 256 kb at address 41000 Erasing 256 kb at address 81000 Erasing 256 kb at address c1000 Erasing 256 kb at address 101000 Erasing 256 kb at address 141000 Erasing 256 kb at address 181000 Erasing 256 kb at address 1c1000 Auto-detected Flash size: 8MB Flash params set to 0x023f Compressed 22032 bytes to 15626... Wrote 22032 bytes (15626 compressed) at 0x00001000 in 0.3 seconds (effective 588.1 kbit/s)... Hash of data verified. Leaving... Compressed 3072 bytes to 134... Wrote 3072 bytes (134 compressed) at 0x00008000 in 0.0 seconds (effective 2401.9 kbit/s)... Hash of data verified. Leaving... Compressed 1737712 bytes to 1139830... Wrote 1737712 bytes (1139830 compressed) at 0x00010000 in 20.9 seconds (effective 665.5 kbit/s)... Hash of data verified. Leaving...
Tout semble s'être bien passé :)

Vérification

On peut vérifier que le mode est bien fonctionnel désormais. Pour ma part, j'utilise l'utilitaire screen de Linux :
screen /dev/ttyACM0 115200
(appuyez sur Entrée pour voir apparaitre le prompt >>>). On peut alors taper help() pour constater que l'on a bien notre MicroPython fonctionnel !
Hé oui, le hello world! de l'embarqué par excellence, c'est faire clignoter une LED... On a besoin de deux librairies : time pour la boucle d'attente, et pycom qui nous sert à interagir avec le matériel embarqué sur le module (et les cartes d'extension). L'exemple de base est donc :
import pycom import time pycom.heartbeat(False) while True: pycom.rgbled(0xFF0000) # Red time.sleep(1) pycom.rgbled(0x00FF00) # Green time.sleep(1) pycom.rgbled(0x0000FF) # Blue time.sleep(1)

Conclusion

Tout ça pour ça vous allez me dire... Effectivement, j'ai passé plus de temps à mettre à jour tout le bouzin qu'à l'utiliser. Mais au moins, si vous avez les mêmes galères que moi, vous aurez quelques pistes.
La prochaine fois, on fera un tout de ce que peut nous permettre le matériel.
A+ !!

Commentaires

Posts les plus consultés de ce blog

Utiliser le ST-LINK V2 d'une carte Nucléo avec un autre STM32

Utiliser le STLINK-V2 d'une carte Nucléo avec un autre STM32 Utiliser le ST-LINK V2 d'une carte Nucléo avec un autre STM32 Hello, Comme c'était Noël, je me suis offert un lot de STM32f103c8t6 , également appelée Blue Pill (acheté sur Amazon pour bénéficier de la livraison Prime mais vous l'aurez pour moins cher sur eBay, à condition d'attendre le délai de livraison de plusieurs semaines...), ainsi que le livre Beginning STM32 qui explique comment mettre en oeuvre ces petites cartes avec des outils uniquement Open Source . Dès le premier chapitre, l'auteur nous explique qu'il nous faut un ST-Link V2 pour programmer la Blue Pill . Argh ! Dans ma précipitation à passer ma commande, je n'ai pas vu cette subtilité... Qu'à cela ne tienne, j'ai déjà une carte Nucleo qui, comme toute les cartes de ce type, intègre un programmateur ST-Link V2. Voyons comment mettre en oeuvre tout ça. Utiliser le ST-LINK V2 d'une carte Nucléo

Coder en C sur un Lopy (Pycom)

Présentation du matériel Hello ! Dans cet article je vais vous parler de mes premiers pas en développement embarqué d'ESP32 en utilisant du matériel de chez Pycom. N'hésitez pas à me faire part de vos remarques et suggestions dans les commentaires ! Voici le sommaire : Présentation du matériel Cartes de développement Cartes d'extension Pourquoi ? Matériel utilisé Installation du framework ESPRESSIF pour ESP32 Démarrer un projet existant Liaison série Câblage du module Configuration du projet Flasher le programme Monitor Conclusions Présentation du matériel Cartes de développement Lopy est un microcontrôleur qui embarque un micro système Python, finement appelé MicroPython . Ce système léger permet de faciliter l'accès au développement embarqué, en utilisant un langage de programmation facile d'accès et qui possède une communauté importante (ce qui permet de trouver facilement de l'aide), j'ai nommé Python !

MicroPython sur NUCLEO-F411RE

MicroPython sur NUCLEO-F411RE MicroPython sur NUCLEO-F411RE Aujourd'hui, j'ai décidé de tester MicroPython sur une carte STM32 que j'avais sous la main : la Nucleo-64 version STM32F411 . Pour les spécifications : ARM Cortex M4 à 100 MHz 512k de mémoire flash, 128k de SRAM 2 extensions de connecteurs aux formats Arduino Uno et ST morpho. Quand je penses que c'est la fréquence d'horloge d'un de mes premiers ordinateurs... 😥 Nostalgie, quand tu nous tiens. Bref, voyons voir comment fait-on tourner un MicroPython sur la bête ! MicroPython sur NUCLEO-F411RE Flasher la carte En mode DFU En mode hexadécimale Utiliser MicroPython sur STM32 Connexion série LED Conclusion Flasher la carte En mode DFU ⚠️ Attention ⚠️ cette manipulation nécessite soit une carte type USB breakout , soit de sacrifier un câble USB en dénudant la partie opposée à celle connectée sur l'ordinateur, soit de faire un peu de soudure avec une