Démarrer avec Lopy4 Pycom

Envoyé par le 27 Sep 2021

Un petit tutoriel pas à pas pour bien démarrer avec les cartes disponibles au fablab la Lopy4 de Pycom.
Plus d’infos  ici

et des tutos ici

Merci à Sylvain Montagny de l’Université Savoie Mont Blanc pour l’accès à son Mooc  LoRa et LoRaWAN pour l’internet des objets 

Etape 1 : installation des outils logiciels

Les PC du fablab sont déjà installés avec Visual Studio Code. L’extension Pymakr2 est également installée. NE FAITES PAS d’UPDATE de version. Si vous allez installer cet outil sur votre PC perso, suivez les indications ci-dessous.

https://docs.pycom.io/gettingstarted/software/vscode/

Installation de Visual Studio Code  et de l’extension Pymakr qui permet de reconnaitre la carte.

Il existe parfois des problèmes de compatibilité entre VSC et Pymakr notamment lors des sauts de version de VSC avec une mise à jour de Pymakr qui tarde un peu.  Dans ce cas, vous pouvez rétrograder la version de VSC pour garder la compatibilité.

Selon la distribution Linux, peut nécessiter l’installation de pyserial.  et de dialog.

python -m pip install pyserial (ou python3 -m pip install pyserial)
sudo apt-get install dialog

Nécessite également NodeJS (sur Linux, à installer à partir d’un dépôt, sinon ici from the NodeJS website.).

apt-get install -y nodejs

Etape 2 : se connecter à la LoPy4 et lui donner quelques instructions

Pour comprendre l’utilisation de Pymakr dans VS Code (qui n’est pas si simple …), il faut consulter le Get Started et le what’s new.

Suivre les instructions pour communiquer avec la carte et tester des instructions en micro python directement sur la LoPy4 via le port USB :

https://docs.pycom.io/gettingstarted/

Connecter le device

Sélectionnez le device dans VSCode/Pymakr, puis cliquez sur connecter le device. Une fenêtre terminal doit s’ouvrir avec l’invite de commande >>> qui vous permet d’envoyer des commandes au device.

ATTENTION  la fonction run   n’existe plus dans la nouvelle version de Pymakr

Vous pouvez tester ces instructions :

>>> import pycom
>>> pycom.heartbeat(False)
>>> pycom.rgbled(0x330033)

Quelques raccourcis et commandes bien utiles …

REPL (Read Evaluate Print Loop) est le nom donné à l’invite interactive de MicroPython accessible sur les appareils Pycom. Il permet de lancer des commandes et de tester du code Python.

Voici les raccourcis clavier les plus utiles :

Ctrl-C : interrompt le code actuel en cours d’exécution, pour récupérer l’invite

Ctrl-D : sur une ligne vide, soft reset (pour un Hard reset, bouton noir RST juste à côté de la led RGB du LoPy)

Ctrl-F  : effectue un « safe-boot » du périphérique sans relancer boot.py et main.py

Tab : auto-complétion

Vous pouvez les retrouver en cliquant sur l’onglet Extensions puis Pymakr > Details.

Si vous n’avez plus accès à l’invite de commandes REPL >>> parce que votre code a planté la carte, vous pouvez tout d’abord essayer le safe boot (en étant bien dans la fenêtre d’invite de commande)  (ctrl+alt+F sur VSC), puis, une fois l’invite récupérée,  vous pouvez ré-initialiser la mémoire flash [5] :

>>> import os
>>> os.fsformat('/flash')

L’appui sur le bouton reset de la LoPy ré-initialise la carte mais relance le code chargé sur la mémoire flash ! Pour le safe boot, appuyer en même temps sur le reset de la LoPy et le safe boot de l’expansion board puis relâcher d’abord le reset de la LoPy, avant de relancer

Etape 3 : tester des exemples

Maintenant vous allez créer un projet Pymakr et y placer le code à charger sur le device. Dans le dossier de votre projet, il y aura les fichiers suivants : main.py , boot.py, et un dossier lib.

ATTENTION la structure du dossier qui est chargé dans le device est la suivante :

My-project
|-lib
|  |- some_library.py
|-boot.py
|-main.py

Créer le projet Pymakr

Dans VSCode/Pymakr, créez un nouveau projet Pymakr et choisissez le dossier (ex : Documents) qui contiendra votre projet. Project name = nom du projet et nom du dossier qui contiendra les sources (ex : My-Project). Validez par entrée. Validez l’emplacement du projet (ex : Documents/My-Project) Choisissez le template empty project. remplacez empty project dans pymakr.conf par le nom de votre projet (ex : My-Project, utilisez le même nom que le dossier). Associez le device qui est branché sur l’ordinateur avec le projet (ADD DEVICES).

Connecter le device

Sélectionnez le device dans VSCode/Pymakr, puis cliquez sur connecter le device. Une fenêtre terminal doit s’ouvrir avec l’invite de commande >>> qui vous permet d’envoyer des commandes au device (comme dans l’étape 2).

Compléter le main.py

Au moment de la création du projet, 3 fichiers ont été créés : main.py, boot.py et pymakr.conf.

Modifiez main.py en insérant le code que vous voulez tester (cf. 1er test ci-dessous avec le projet RGBLed)

Charger le device avec le code du projet (cf. 1er test ci-dessous)

Dans VSCode/Pymakr, sélectionnez le device et cliquez sur sync project to device.

Une fois le code chargé, il faut faire un hard reset. 2 options : bouton à côté de la LED, ou sur les … du device dans VSCode/Pymakr choisir Hard reset device.

Si le code est constitué d’une boucle infinie, alors vous n’avez plus accès à l’invite de commande. Le device est « occupé ». Pour retrouver la main, Ctrl+C dans le terminal. Le code étant chargé dans le device, vous pouvez le relancer par un hard reset. De même si vous déconnectez le device de l’ordinateur, puis si vous le remettez sous tension, le code va se relancer automatiquement.

1er test : utiliser la led RGB disponible pour vérifier que vous pouvez charger un programme sur la LoPy4

Le code est disponible ici [1].

2e test : récupérer l’adresse MAC LoRa du noeud

ATTENTION avant toute utilisation de la couche LoRA ou LoRaWAN, l’antenne  LoRa doit être branchée sur le connecteur correspondant à la fréquence 868 MHz.

from network import LoRa

import binascii

lora = LoRa(mode=LoRa.LORA, region=LoRa.EU868)

print(binascii.hexlify(lora.mac()).upper())

Etape 4 Constructeur et méthodes en lien avec LoRa pour la LoPy4

Sur cette page [4], on trouve des méthodes permettant d’initialiser les paramètres LoRa de la LoPy et de récupérer ou de modifier un certain nombre de paramètres.

  1. à partir de la datasheet de la LoPy4 [6], cherchez :
    1. le nom du chip Semtech qui réalise la transmission LoRa ;
    2. la sensibilité pour les spreading factor de 6 à 12 pour la bande 125 kHz (LNA Boost for band 1 à 868 MHz) ;
  2. à partir de la page [4], identifiez les paramètres que vous pouvez modifier en mode LoRa (dit LoRa RAW ou LoRa MAC).
  3. Faites la même chose pour le mode LoRaWAN.

Etape 5 : Say Hello! et paramétrage du LoRa MAC

Nous allons maintenant tester une transmission (TX -> RX) dite LoRa MAC ou LoRa RAW parmi les LoPy de la salle.

Le code est disponible ici [2].

Toutes les LoPy vont émettre puis recevoir des trames. Il faut donc au moins 2 LoPy qui émettent et reçoivent en même temps.

  1. Insérez votre prénom dans le code. Exemple : ‘Hello I am Charlotte!’  Vérifiez qu’une ou plusieurs LoPy de la salle ont bien reçu votre message !
  2. En utilisant la méthode lora.stats(), affichez les paramètres de la transmission LoRa MAC. Notez le RSSI, le spreading factor (tx et rx), le tx-power, et le time on air. Comparez votre RSSI avec la sensibilité récupérée dans la data sheet.
  3. Affichez la valeur des constantes LoRa.BW_125KHZ, LoRa.CODING_4_5 jusqu’à LoRa.CODING_4_8.

Note : lorsque vous modifiez votre code,  effectuez un safe boot (cf. Etape 2) avant de faire un run ou un upload.

TP Pour aller plus loin dans l’utilisation de la Lopy4 et de la couche PHY LoRa

consultez l’article https://telefab.fr/2021/10/04/aller-plus-loin-avec-la-lopy4/

Références bibliographiques

[1]https://docs.pycom.io/tutorials/basic/rgbled/

[2] https://docs.pycom.io/tutorials/networks/lora/lora-mac/

[3] https://docs.pycom.io/tutorials/networks/lora/module-module/

[4] https://docs.pycom.io/firmwareapi/pycom/network/lora/

[5] https://docs.pycom.io/gettingstarted/programming/safeboot/

[6] https://docs.pycom.io/gitbook/assets/specsheets/Pycom_002_Specsheets_LoPy4_v2.pdf

 


								

Laisser une réponse

Votre adresse e-mail ne sera pas publiée.