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.- Installer
dfu-util
:
sudo apt install dfu-util
-
Mettre à jour :
- Débranchez le câble de la carte
- Appuyez et maintenez le bouton (
S1
pour l'expansion board) - Branchez le câble USB et attendez une seconde avant de relâcher le bouton
sudo dfu-util -D pytrack_0.0.8.dfu
Mettre à jour Lopy4
Je vous mets la manière officielle puis je vous montre pour mon cas (qui est bien pourri ^^).Mode nominal
- Connecter le module sur sa carte d'extension
- Connecter la carte d'extension à l'ordinateur avec le câble USB
- Utiliser l'outil
Pycom Upgrade
(les liens pour les différents OS sont au début de cette page) - Une fois flashé, débranchez puis rebranchez le Lopy
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 estpycom-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'outilpycom-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 :
- Générer son propre
.tar.gz
depuis l'.elf
original - Utiliser un dépôt qui a fait le job
./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'utilitairescreen
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 !Premier programme : blink !
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
Enregistrer un commentaire