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 STM32Utiliser le ST-LINK V2 d'une carte Nucléo avec un autre STM32Hello,
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 avec un autre STM32Présentation …

Utiliser un raspberry pi en mode headless

20191016-headless_raspberry_piUn raspberry pi sans tête 😱(C'est à dire sans écran ni clavier)Pourquoi faire ça ? En fait, parfois (ou même souvent), on a bien envie que notre petit Raspberry à tout faire soit mis dans un coin et qu'il fasse ce qu'on lui demande. Ça marche souvient bien, mais quand même, des fois, il faut bien s'y connecter pour mettre à jour le système ou voir pourquoi ça ne fait pas ce qu'on veut. Et si vous êtes un peu feignant comme moi (comme tout bon informaticien qui se respecte en fait), vous avez forcément la flemme de sortir l'écran, le câble HDMI et de tout connecter. Nous allons donc voir deux méthodes qui permettent de s'en passer.Matériel nécessaireun raspberry pi (voire un kit raspberry pi)une carte SDun adaptateur USB-TTLquatre câbles dupond (pour connecter le raspberry pi à l'adaptateur USB-TTL)Utiliser un raspberry pi en mode headlessMatériel nécessaireSSHJe connais mon adresse IPJe ne connais pas mon adresse IPConnexi…